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 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 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 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 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 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. */ 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. */ 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. */ 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; 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; 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; 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; 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; 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; 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()) ) } 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 ) 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() 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) + ) } } 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, _)) } } diff --git a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql index 64705f078c6..3126573ac5a 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql @@ -124,7 +124,8 @@ module UncontrolledArithConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - result = getExpr(source).getLocation() + isSource(source) and + result = [getExpr(source).getLocation(), source.getLocation()] } } 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)) } } 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) + ) } } 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) + ) } } 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, _)) } } 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) ) } 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, _) ) } diff --git a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql index d12340035bd..682d8387433 100644 --- a/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql +++ b/cpp/ql/src/Security/CWE/CWE-319/UseOfHttp.ql @@ -91,10 +91,9 @@ module HttpStringToUrlOpenConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSourceLocation(DataFlow::Node source) { - result = source.asIndirectExpr().getLocation() + isSource(source) and + result = [source.asIndirectExpr().getLocation(), source.getLocation()] } - - Location getASelectedSinkLocation(DataFlow::Node sink) { none() } } module HttpStringToUrlOpen = TaintTracking::Global; 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; 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)) ) 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)) } 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; diff --git a/docs/codeql/codeql-overview/system-requirements.rst b/docs/codeql/codeql-overview/system-requirements.rst index 100b75445b2..9f477a9b39b 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 as a host platform. + 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. 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) ) } 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() } } /** 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() } } /** 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() } } 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 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 diff --git a/java/ql/lib/semmle/code/java/Concurrency.qll b/java/ql/lib/semmle/code/java/Concurrency.qll index 7322f16068c..da2783bc308 100644 --- a/java/ql/lib/semmle/code/java/Concurrency.qll +++ b/java/ql/lib/semmle/code/java/Concurrency.qll @@ -2,6 +2,57 @@ overlay[local?] 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. */ + private Method getLockMethod() { + result.getDeclaringType() = this and + result.hasName(["lock", "lockInterruptibly", "tryLock"]) + } + + /** Gets a method that is unlocking this lock type. */ + private Method getUnlockMethod() { + result.getDeclaringType() = this and + result.hasName("unlock") + } + + /** Gets an `isHeldByCurrentThread` method of this lock type. */ + private 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 + not result instanceof MockitoVerifiedMethodCall + } +} /** * Holds if `e` is synchronized by a local synchronized statement `sync` on the variable `v`. @@ -49,3 +100,136 @@ 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()) + } + + /** 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() + } + + /** 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, 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 + 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 new file mode 100644 index 00000000000..ceff3e4ffa3 --- /dev/null +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -0,0 +1,286 @@ +/** + * Provides classes and predicates for detecting conflicting accesses in the sense of the Java Memory Model. + */ +overlay[local?] +module; + +import java +import Concurrency + +/** 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 | sc.getACall() = c | + sc.propagatesFlow(_, output, _, _) and + output.matches("Argument[this]%") + ) + } +} + +/** Holds if the type `t` is thread-safe. */ +predicate isThreadSafeType(Type t) { + t.(RefType).getSourceDeclaration().getName().matches(["Atomic%", "Concurrent%"]) + or + t.(RefType).getSourceDeclaration().getName() = "ThreadLocal" + or + // 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 + t instanceof ClassAnnotatedAsThreadSafe +} + +/** Holds if the expression `e` is a thread-safe initializer. */ +private predicate isThreadSafeInitializer(Expr e) { + exists(string name | + e.(Call).getCallee().getSourceDeclaration().hasQualifiedName("java.util", "Collections", name) + | + name.matches("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 this.getType() instanceof LockType 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() { + // 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 mentioned in a synchronized statement + not this = any(SynchronizedStmt sync).getExpr() + } +} + +/** + * A class annotated as `@ThreadSafe`. + * Provides predicates to check for concurrency issues. + */ +class ClassAnnotatedAsThreadSafe extends Class { + ClassAnnotatedAsThreadSafe() { this.getAnAnnotation().getType().getName() = "ThreadSafe" } + + // 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 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()`. + */ + private predicate unlockedAccess( + ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write + ) { + m.getDeclaringType() = this and + ( + // 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 + // recursive case + 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 + c = e and + not Monitors::locallyMonitors(e0, _) + ) + ) + } + + /** Holds if the class has an unlocked access to the field `f` via the expression `e` in the method `m`. */ + private 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 unlockedPublicAccess( + ExposedField f, Expr e, Method m, ExposedFieldAccess a, boolean write + ) { + 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`. */ + private 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 + // + /** + * Holds if the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the method `m`. + */ + private predicate hasOnelockedAccess( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + //base + this.hasUnlockedAccess(f, e, m, write) and + Monitors::locallyMonitors(e, monitor) + or + // recursive case + exists(MethodCall c, Method m0 | this.hasOnelockedAccess(f, _, 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 the class has an access, locked by exactly one monitor, to the field `f` via the expression `e` in the public method `m`. */ + private predicate hasOnelockedPublicAccess( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + this.hasOnelockedAccess(f, e, m, write, monitor) and + m.isPublic() and + 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 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`. */ + private predicate hasOnepluslockedAccess( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + //base + 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.hasOnepluslockedAccess(f, _, m0, write, monitor0) and + m = c.getEnclosingCallable() and + not m0.isPublic() and + c.getCallee().getSourceDeclaration() = m0 and + c = e and + m.getDeclaringType() = this + | + monitor = monitor0 + or + Monitors::locallyMonitors(e, monitor) + ) + } + + /** Holds if the class has a write access to the field `f` that can be reached via a public method. */ + predicate hasPublicWriteAccess(ExposedField f) { + this.hasUnlockedPublicAccess(f, _, _, true) + or + this.hasOnelockedPublicAccess(f, _, _, true, _) + or + exists(Method m | m.getDeclaringType() = this and m.isPublic() | + 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`. */ + private predicate escapesMonitor( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + //base + 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.escapesMonitor(f, _, m0, write, monitor) | + m = c.getEnclosingCallable() and + not m0.isPublic() and + c.getCallee().getSourceDeclaration() = m0 and + c = e and + 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`. */ + private predicate escapesMonitorPublic( + ExposedField f, Expr e, Method m, boolean write, Monitors::Monitor monitor + ) { + this.escapesMonitor(f, e, m, write, monitor) and + m.isPublic() + } + + /** Holds if no monitor protects all accesses to the field `f`. */ + predicate notFullyMonitored(ExposedField f) { + forex(Monitors::Monitor monitor | this.hasOnepluslockedAccess(f, _, _, _, monitor) | + this.escapesMonitorPublic(f, _, _, _, monitor) + ) + } +} 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; diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll index fbb8509f48f..65e73f84149 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll @@ -19,7 +19,9 @@ module ArithmeticOverflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(ArithExpr exp | result = exp.getLocation() | overflowSink(exp, sink.asExpr())) + exists(ArithExpr exp | result = [exp.getLocation(), sink.getLocation()] | + overflowSink(exp, sink.asExpr()) + ) } } @@ -43,7 +45,9 @@ module ArithmeticUnderflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - 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 6b7b337ad65..3c1ceaddc2f 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticUncontrolledQuery.qll @@ -25,7 +25,9 @@ module ArithmeticUncontrolledOverflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - exists(ArithExpr exp | result = exp.getLocation() | overflowSink(exp, sink.asExpr())) + exists(ArithExpr exp | result = [exp.getLocation(), sink.getLocation()] | + overflowSink(exp, sink.asExpr()) + ) } } @@ -46,7 +48,9 @@ module ArithmeticUncontrolledUnderflowConfig implements DataFlow::ConfigSig { } Location getASelectedSinkLocation(DataFlow::Node sink) { - 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 0c1f14c902b..60f1e179397 100644 --- a/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll +++ b/java/ql/lib/semmle/code/java/security/BrokenCryptoAlgorithmQuery.qll @@ -36,7 +36,11 @@ module InsecureCryptoConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - 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 a1c75f93802..b6b9d02e289 100644 --- a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll @@ -63,10 +63,14 @@ 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) { - 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 31457036937..babf129f19e 100644 --- a/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ConditionalBypassQuery.qll @@ -51,7 +51,7 @@ module ConditionalBypassFlowConfig implements DataFlow::ConfigSig { predicate observeDiffInformedIncrementalMode() { any() } Location getASelectedSinkLocation(DataFlow::Node sink) { - 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 e952971c389..97a6d159bc9 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll @@ -22,7 +22,10 @@ module BoundedFlowSourceConfig implements DataFlow::ConfigSig { Location getASelectedSinkLocation(DataFlow::Node sink) { 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 913d50b3159..74b8af7e588 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionQuery.qll @@ -19,7 +19,10 @@ module ImproperValidationOfArrayConstructionConfig implements DataFlow::ConfigSi Location getASelectedSinkLocation(DataFlow::Node sink) { 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/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() + ) } } 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() ) } 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() } } /** 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() ) } 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() } } /** diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index f5968898adc..dc771a46606 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.(UnsafeDeserializationSink).getLocation() + or result = sink.(UnsafeDeserializationSink).getMethodCall().getLocation() } } 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() - } } /** 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/Likely Bugs/Concurrency/SafePublication.java b/java/ql/src/Likely Bugs/Concurrency/SafePublication.java new file mode 100644 index 00000000000..76980412e8c --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.java @@ -0,0 +1,17 @@ +public class SafePublication { + private volatile Object value; + private final int server_id; + + 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 new file mode 100644 index 00000000000..4b422530411 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/SafePublication.qhelp @@ -0,0 +1,57 @@ + + + + + +

    +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 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, 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:

    + + + +
    + + + +
  • + 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..5e2a89ce372 --- /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 // 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 + 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/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..fafa4701ed2 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/ThreadSafe.ql @@ -0,0 +1,51 @@ +/** + * @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 + +predicate unmonitoredAccess(ExposedFieldAccess a, string msg, Expr entry, string entry_desc) { + exists(ClassAnnotatedAsThreadSafe cls, ExposedField f | + cls.unlockedPublicAccess(f, entry, _, a, true) + or + 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 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.singleMonitorMismatch(f) + or + 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 Top alert_element, Top alert_context, string alert_msg, string context_desc +where + unmonitoredAccess(alert_element, alert_msg, alert_context, context_desc) + or + notFullyMonitoredField(alert_element, alert_msg, alert_context, context_desc) +select alert_element, alert_msg, alert_context, context_desc 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()) 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..0b7ea330981 --- /dev/null +++ b/java/ql/src/Likely Bugs/Concurrency/UnsafePublication.java @@ -0,0 +1,17 @@ +public class UnsafePublication { + private Object value; + private int server_id; + + 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 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/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 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 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..3d73caaffe5 --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -0,0 +1,45 @@ +| 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/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 | +| 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 | 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 | +| 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/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 | +| 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/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/Alias.java b/java/ql/test/query-tests/ThreadSafe/examples/Alias.java new file mode 100644 index 00000000000..802bae2fbb3 --- /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; + } finally { + this.lock.unlock(); + } + } +} \ 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..92c6b82800c --- /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; // $ Alert + this.y = this.y - 1; // $ Alert + } + + public void n4() { + this.y = 0; // $ Alert + this.y += 1; // $ Alert + this.y = this.y - 1; // $ Alert + } + + public void setY(int y) { + this.y = y; // $ Alert + } + + public void test() { + if (y == 0) { // $ Alert + lock.lock(); + } + y = 0; // $ Alert + 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/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/FaultyTurnstileExample.java b/java/ql/test/query-tests/ThreadSafe/examples/FaultyTurnstileExample.java new file mode 100644 index 00000000000..20b258135f6 --- /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++; // $ MISSING: Alert + lock.unlock(); + } + + public void dec() { + count--; // $ Alert + } +} + +@ThreadSafe +class FaultyTurnstileExample2 { + private Lock lock1 = new ReentrantLock(); + private Lock lock2 = new ReentrantLock(); + private int count = 0; // $ Alert + + public void inc() { + lock1.lock(); + count++; + 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..a73b45e60ed --- /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) { // $ Alert + 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..1e1792d0d2e --- /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 +// properly 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; // $ Alert + private int notRelatedToOther = 10; // $ Alert + private int[] content = new int[10]; // $ Alert + + public void add(int value) { + lock1.lock(); + length++; + content[length] = value; + lock1.unlock(); + } + + public void removeCorrect() { + lock1.lock(); + length--; + content[length] = 0; + lock1.unlock(); + } + + public void notTheSameLockAsAdd() { // use locks, but different ones + lock2.lock(); + length--; + content[length] = 0; + lock2.unlock(); + } + + public void noLock() { // no locks + length--; // $ Alert + content[length] = 0; // $ Alert + } + + public void fieldUpdatedOutsideOfLock() { // adjusts length without lock + length--; // $ Alert + + 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--; // $ Alert + + lock1.lock(); + content[length] = 0; // $ Alert + } + + public void onlyUnlocked() { // never locked, only unlocked + length--; // $ Alert + + content[length] = 0; // $ Alert + lock1.unlock(); + } + + public void notSameLock() { + length--; // $ Alert + + lock2.lock();// Not the same lock + content[length] = 0; // $ Alert + lock1.unlock(); + } + + public void updateCount() { + lock2.lock(); + notRelatedToOther++; + lock2.unlock(); + } + + public void updateCountTwiceCorrect() { + lock2.lock(); + notRelatedToOther++; + lock2.unlock(); + lock1.lock(); + notRelatedToOther++; + 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++; // $ Alert + } + + public void updateCountTwiceUnLock() { + lock2.lock(); + notRelatedToOther++; + lock2.unlock(); + notRelatedToOther++; // $ Alert + lock1.unlock(); + } + + public void synchronizedNonRelatedOutside() { + notRelatedToOther++; // $ Alert + + synchronized(this) { + length++; + } + } + + public void synchronizedNonRelatedOutside2() { + int x = 0; + x++; + + synchronized(this) { + length++; + } + } + + public void synchronizedNonRelatedOutside3() { + synchronized(this) { + length++; + } + + notRelatedToOther = 1; // $ Alert + } + + public void synchronizedNonRelatedOutside4() { + synchronized(lock1) { + length++; + } + + notRelatedToOther = 1; // $ Alert + } + +} 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..caea22ac851 --- /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 could look like an unprotected path to a call to dec() + } else { + lock.lock(); + dec(); + lock.unlock(); + } + } + + private void increase() { + lock.lock(); + count = 10; + lock.unlock(); + entry(); // this could look 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/ManyLocks.java b/java/ql/test/query-tests/ThreadSafe/examples/ManyLocks.java new file mode 100644 index 00000000000..a7e19b3424b --- /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 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..04bc1c3c454 --- /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); + lock.unlock(); + } + + public void remove(int 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 new file mode 100644 index 00000000000..31e8cebee3e --- /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); + lock.unlock(); + } + + public void 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 new file mode 100644 index 00000000000..52b35a84bb7 --- /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; // $ Alert + + public void add(int value) { + lock.lock(); + length++; + 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..e6b0567ef89 --- /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 visibility. + */ + int publicField; + + private int y; + final int immutableField = 1; + + // As of the below examples with synchronized as well. Except the incorrectly 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; + 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; // $ Alert + } + + /** + * Incorrectly locks y. + * @param y + */ + public void setYWrongLock(int y) { + this.y = y; // $ Alert + lock.lock(); + lock.unlock(); + } + + public synchronized int getImmutableField() { + return immutableField; + } + + public synchronized int getImmutableField2() { + return immutableField; + } + + public void testMethod() { + this.y = y + 2; // $ Alert + } +} 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 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() ) } 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() ) } diff --git a/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll index 1d396da5b20..e1dcdd339d9 100644 --- a/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/ShellCommandInjectionFromEnvironmentQuery.qll @@ -33,7 +33,7 @@ module ShellCommandInjectionFromEnvironmentConfig implements DataFlow::ConfigSig Location getASelectedSinkLocation(DataFlow::Node sink) { exists(DataFlow::Node node | isSinkWithHighlight(sink, node) and - result = node.getLocation() + result = [node.getLocation(), sink.getLocation()] ) } } 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() 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() } } 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() 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() } } 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; 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; 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. */ 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. */ 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() 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; 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; 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() ) } diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml index dd81e23fad6..35e547076d9 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -15,5 +15,5 @@ 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"] + - ["<_ 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 19f7ececcd2..b1fea8ac538 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml @@ -9,6 +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"] - - ["::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..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"] - - ["::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"] diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index bcc18342c00..d550f56b09d 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::dissatisfiesBlanketConstraint(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 = @@ -1812,8 +1907,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 +1938,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) } @@ -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/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index d015a0bf656..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::` @@ -151,25 +155,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 getSelfTraitBoundArg() { + 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 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 + not exists(this.getPathPositionalTypeArgument(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.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. + */ + 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 +277,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.getSelfTraitBoundArg().resolveTypeAt(suffix) and + typePath = TypePath::cons(TSelfTypeParameter(resolved), suffix) ) } } @@ -296,6 +344,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/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll b/rust/ql/lib/codeql/rust/internal/typeinference/BlanketImplementation.qll index 8f2483c3f68..b88424caa34 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 dissatisfiesBlanketConstraint(ArgumentType at, ImplItemNode impl) { + exists(ArgumentTypeAndBlanketOffset ato, Trait traitBound | + ato = MkArgumentTypeAndBlanketOffset(at, _) and + SatisfiesBlanketConstraintInput::relevantConstraint(ato, impl, traitBound) and + SatisfiesBlanketConstraint::dissatisfiesConstraint(ato, TTrait(traitBound)) + ) + } } 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; 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) ) 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..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 | @@ -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 | @@ -47,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 | @@ -87,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 | | @@ -106,8 +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:36 | +| 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 | | @@ -119,17 +117,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: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: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: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: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 | | 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 | | @@ -159,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 | | @@ -183,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 | | @@ -221,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 | | @@ -237,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 | | @@ -251,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 | | @@ -274,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 | | @@ -290,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 | | @@ -512,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] | @@ -598,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 } } 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..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: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: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/blanket_impl.rs b/rust/ql/test/library-tests/type-inference/blanket_impl.rs index 12449efe7d2..49fcd8af0a6 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 + let x3 = (&&S1).m2(); // $ target=MyTrait2RefRefS1::m2 + 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 + } +} + pub mod sql_exec { // a highly simplified model of `MySqlConnection.execute` in SQLx diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index fd34676284a..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 } } @@ -652,6 +690,50 @@ mod type_parameter_bounds { } } +mod trait_default_self_type_parameter { + // A trait with a type parameter that defaults to `Self`. + 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 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 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 type=_ms:T.MyStruct + } +} + mod function_trait_bounds { #[derive(Debug, Clone, Copy)] struct MyThing { @@ -2753,6 +2835,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 170651621c8..6b6d9a13593 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 | @@ -1739,4014 +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: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: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: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: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: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: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 | 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: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: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: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: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: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: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: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: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: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: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: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: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:1651:5:1656:5 | Vec2 | +| 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: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: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: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: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: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 | 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() } } 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) { diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index ff9ccf3c192..d1d1b338707 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -704,14 +704,26 @@ module Make1 Input1> { /** * Holds if `app` is _not_ a possible instantiation of `constraint`. + * + * 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. */ 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 +805,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 +1009,42 @@ 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) { + 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 +1086,29 @@ 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 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 + * `dissatisfiesConstraint` will hold. + */ + pragma[nomagic] + predicate dissatisfiesConstraint(HasTypeTree tt, Type constraint) { + hasNotConstraintMention(tt, constraint) and + exists(Type t | + hasTypeConstraint(tt, t, constraint) and + t != constraint + ) + } } /** Provides the input to `MatchingWithEnvironment`. */ @@ -1160,7 +1231,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 +1248,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)) ) @@ -1269,7 +1340,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 +1350,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 +1385,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) 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. diff --git a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll index 989d928a8c7..50a421a05dc 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStorageDatabaseQuery.qll @@ -52,12 +52,13 @@ 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.(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 c3665589482..578fe0b36e0 100644 --- a/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll +++ b/swift/ql/lib/codeql/swift/security/CleartextStoragePreferencesQuery.qll @@ -34,12 +34,13 @@ 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.(CleartextStoragePreferencesSink) + .(DataFlow::PostUpdateNode) + .getPreUpdateNode() + .getLocation() } } 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; 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; 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; 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() } } /** 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() } } /** 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() } } /** 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