diff --git a/cpp/ql/lib/change-notes/2026-06-30-mad-qualified-field-names.md b/cpp/ql/lib/change-notes/2026-06-30-mad-qualified-field-names.md new file mode 100644 index 00000000000..f31fcd6490c --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-06-30-mad-qualified-field-names.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* Models-as-data flow summaries now use fully qualified field names (for example, `MyNamespace::MyStruct::myField`) instead of unqualified field names such as `myField`. We recommend updating existing flow summaries to use fully qualified field names. Unqualified field names are still supported, but that support will be removed in a future release. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2026-06-30-variables-as-mad-sources-and-sinks.md b/cpp/ql/lib/change-notes/2026-06-30-variables-as-mad-sources-and-sinks.md new file mode 100644 index 00000000000..fc93dbf303e --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-06-30-variables-as-mad-sources-and-sinks.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* Removed support for using variables as sources and sinks in models-as-data. Users of this feature should convert such sources and sinks to models defined using the QL language. \ No newline at end of file diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 4a89e91c74e..29da7f7204c 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -931,31 +931,6 @@ private Element interpretElement0( signature = "" and elementSpec(namespace, type, subtypes, name, signature, _) ) - or - // Member variables - elementSpec(namespace, type, subtypes, name, signature, _) and - signature = "" and - exists(Class namedClass, Class classWithMember, MemberVariable member | - member.getName() = name and - member = classWithMember.getAMember() and - namedClass.hasQualifiedName(namespace, type) and - result = member - | - // field declared in the named type or a subtype of it (or an extension of any) - subtypes = true and - classWithMember = namedClass.getADerivedClass*() - or - // field declared directly in the named type (or an extension of it) - subtypes = false and - classWithMember = namedClass - ) - or - // Global or namespace variables - elementSpec(namespace, type, subtypes, name, signature, _) and - signature = "" and - type = "" and - subtypes = false and - result = any(GlobalOrNamespaceVariable v | v.hasQualifiedName(namespace, name)) } cached diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll index d91dc41febe..66b33b1ed52 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll @@ -6,6 +6,7 @@ private import cpp as Cpp private import codeql.dataflow.internal.FlowSummaryImpl private import codeql.dataflow.internal.AccessPathSyntax as AccessPath private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate +private import semmle.code.cpp.ir.dataflow.internal.DataFlowNodes private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific as DataFlowImplSpecific private import semmle.code.cpp.dataflow.ExternalFlow @@ -20,8 +21,22 @@ module Input implements InputSig { class SinkBase = Void; + class FlowSummaryCallBase = CallInstruction; + predicate callableFromSource(SummarizedCallableBase c) { exists(c.getBlock()) } + FlowSummaryCallBase getASourceCall(SummarizedCallableBase sc) { + result.getStaticCallTarget() = sc + } + + DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + result.asSummarizedCallable() = c + } + + DataFlowCallable getSourceCallEnclosingCallable(FlowSummaryCallBase call) { + result.asSourceCallable() = call.getEnclosingFunction() + } + ArgumentPosition callbackSelfParameterPosition() { result = TDirectPosition(-1) } ReturnKind getStandardReturnValueKind() { result = getReturnValueKind("") } @@ -30,6 +45,10 @@ module Input implements InputSig { arg = repeatStars(result.(NormalReturnKind).getIndirectionIndex()) } + ParameterPosition getFlowSummaryParameterPosition(ReturnKind rk) { + result = TFlowSummaryPosition(rk) + } + string encodeParameterPosition(ParameterPosition pos) { result = pos.toString() } string encodeArgumentPosition(ArgumentPosition pos) { result = pos.toString() } @@ -40,12 +59,24 @@ module Input implements InputSig { arg = repeatStars(rk.(NormalReturnKind).getIndirectionIndex()) } + bindingset[namespace, type, base] + private string formatQualifiedName(string namespace, string type, string base) { + if namespace = "" + then result = type + "::" + base + else result = namespace + "::" + type + "::" + base + } + string encodeContent(ContentSet cs, string arg) { - exists(FieldContent c | + exists(FieldContent c, string namespace, string type, string base | cs.isSingleton(c) and // FieldContent indices have 0 for the address, 1 for content, so we need to subtract one. result = "Field" and - arg = repeatStars(c.getIndirectionIndex() - 1) + c.getField().getName() + c.getField().hasQualifiedName(namespace, type, base) + | + arg = repeatStars(c.getIndirectionIndex() - 1) + formatQualifiedName(namespace, type, base) + or + // TODO: This disjunct can be removed once we stop supporting unqualified field names. + arg = repeatStars(c.getIndirectionIndex() - 1) + base ) or exists(ElementContent ec | @@ -102,10 +133,22 @@ module Input implements InputSig { private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + DataFlowCall getACall(Public::SummarizedCallable sc) { result.getStaticCallTarget().getUnderlyingCallable() = sc } + Node getSourceOutNode(Input::FlowSummaryCallBase call, ReturnKind rk) { + exists(IndirectReturnOutNode out | result = out | + out.getCallInstruction() = call and + pragma[only_bind_out](rk.(NormalReturnKind).getIndirectionIndex()) = + pragma[only_bind_out](out.getIndirectionIndex()) + ) + } + DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() } @@ -218,40 +261,11 @@ module SourceSinkInterpretationInput implements /** Provides additional sink specification logic. */ bindingset[c] - predicate interpretOutput(string c, InterpretNode mid, InterpretNode node) { - // Allow variables to be picked as output nodes. - exists(Node n, Element ast | - n = node.asNode() and - ast = mid.asElement() - | - c = "" and - n.asExpr().(VariableAccess).getTarget() = ast - ) - } + predicate interpretOutput(string c, InterpretNode mid, InterpretNode node) { none() } /** Provides additional source specification logic. */ bindingset[c] - predicate interpretInput(string c, InterpretNode mid, InterpretNode node) { - exists(Node n, Element ast, VariableAccess e | - n = node.asNode() and - ast = mid.asElement() and - e.getTarget() = ast - | - // Allow variables to be picked as input nodes. - // We could simply do this as `e = n.asExpr()`, but that would not allow - // us to pick `x` as a sink in an example such as `x = source()` (but - // only subsequent uses of `x`) since the variable access on `x` doesn't - // actually load the value of `x`. So instead, we pick the instruction - // node corresponding to the generated `StoreInstruction` and use the - // expression associated with the destination instruction. This means - // that the `x` in `x = source()` can be marked as an input. - c = "" and - exists(StoreInstruction store | - store.getDestinationAddress().getUnconvertedResultExpression() = e and - n.asInstruction() = store - ) - ) - } + predicate interpretInput(string c, InterpretNode mid, InterpretNode node) { none() } } module Private { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll index bcf6a0d512c..abcff398420 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowNodes.qll @@ -1534,12 +1534,8 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { result = this.getSummaryNode().getSummarizedCallable() } - /** - * Gets the enclosing callable. For a `FlowSummaryNode` this is always the - * summarized function this node is part of. - */ override DataFlowCallable getEnclosingCallable() { - result.asSummarizedCallable() = this.getSummarizedCallable() + result = FlowSummaryImpl::Private::getEnclosingCallable(this.getSummaryNode()) } override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 83f240ddae5..cdcbaa438d3 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -561,6 +561,21 @@ class SummaryArgumentNode extends ArgumentNode, FlowSummaryNode { } } +/** An argument node that re-enters return output as input to a flow summary. */ +private class FlowSummaryArgumentNode extends ArgumentNode, FlowSummaryNode { + private CallInstruction callInstruction; + private ReturnKind rk; + + FlowSummaryArgumentNode() { + this.getSummaryNode() = FlowSummaryImpl::Private::summaryArgumentNode(callInstruction, rk) + } + + override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { + call.asCallInstruction() = callInstruction and + pos = TFlowSummaryPosition(rk) + } +} + /** A parameter position represented by an integer. */ class ParameterPosition = Position; @@ -616,6 +631,18 @@ class IndirectionPosition extends Position, TIndirectionPosition { final override int getIndirectionIndex() { result = indirectionIndex } } +class FlowSummaryPosition extends Position, TFlowSummaryPosition { + ReturnKind rk; + + FlowSummaryPosition() { this = TFlowSummaryPosition(rk) } + + override string toString() { result = "write to: " + rk.toString() } + + override int getArgumentIndex() { none() } + + final override int getIndirectionIndex() { result = rk.getIndirectionIndex() } +} + newtype TPosition = TDirectPosition(int argumentIndex) { exists(any(CallInstruction c).getArgument(argumentIndex)) @@ -634,7 +661,8 @@ newtype TPosition = p = f.getParameter(argumentIndex) and indirectionIndex = [1 .. Ssa::getMaxIndirectionsForType(p.getUnspecifiedType()) - 1] ) - } + } or + TFlowSummaryPosition(ReturnKind rk) { FlowSummaryImpl::Private::relevantFlowSummaryPosition(rk) } private newtype TReturnKind = TNormalReturnKind(int indirectionIndex) { @@ -1378,6 +1406,8 @@ predicate nodeIsHidden(Node n) { n instanceof InitialGlobalValue or n instanceof SsaSynthNode + or + n.(FlowSummaryNode).getSummaryNode().isHidden() } predicate neverSkipInPathGraph(Node n) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index d42d959f56e..2e3274c82c7 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -158,7 +158,7 @@ private module Cached { model = "" or // models-as-data summarized flow - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll index 3e85489b126..e4e0adf5897 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll @@ -67,7 +67,7 @@ private module Cached { model = "" or // models-as-data summarized flow - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) or // object->field conflation for content that is a `TaintInheritingContent`. diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index 8d247738c98..64180436450 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -48,19 +48,23 @@ models | 47 | Summary: ; ; false; callWithArgument; ; ; Argument[1]; Argument[0].Parameter[0]; value; manual | | 48 | Summary: ; ; false; callWithNonTypeTemplate; (const T &); ; Argument[*0]; ReturnValue; value; manual | | 49 | Summary: ; ; false; pthread_create; ; ; Argument[@3]; Argument[2].Parameter[@0]; value; manual | -| 50 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | -| 51 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | -| 52 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | -| 53 | Summary: ; TemplateClass1; true; templateFunction2; (U,V); ; Argument[1]; ReturnValue; value; manual | -| 54 | Summary: ; TemplateClass1; false; templateFunction; (T,U); ; Argument[0]; ReturnValue; value; manual | -| 55 | Summary: ; TemplateClass2; true; function; (U,T); ; Argument[1]; ReturnValue; value; manual | -| 56 | Summary: Azure::Core::IO; BodyStream; true; Read; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 57 | Summary: Azure::Core::IO; BodyStream; true; ReadToCount; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 58 | Summary: Azure::Core::IO; BodyStream; true; ReadToEnd; ; ; Argument[-1]; ReturnValue.Element; taint; manual | -| 59 | Summary: Azure; Nullable; true; Value; ; ; Argument[-1]; ReturnValue[*]; taint; manual | -| 60 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 50 | Summary: ; ; false; read_field_from_struct; ; ; Argument[*0].Field[MyNamespace::MyStructInNamespace::myField]; ReturnValue; value; manual | +| 51 | Summary: ; ; false; read_field_from_struct_2; ; ; Argument[*0].Field[MyGlobalStruct::myField]; ReturnValue; value; manual | +| 52 | Summary: ; ; false; ymlStepGenerated; ; ; Argument[0]; ReturnValue; taint; df-generated | +| 53 | Summary: ; ; false; ymlStepManual; ; ; Argument[0]; ReturnValue; taint; manual | +| 54 | Summary: ; ; false; ymlStepManual_with_body; ; ; Argument[0]; ReturnValue; taint; manual | +| 55 | Summary: ; MyString; true; operator[]; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 56 | Summary: ; MyString; true; operator[]; ; ; ReturnValue[*]; Argument[-1]; taint; manual | +| 57 | Summary: ; ReverseFlow; true; get_ptr; ; ; ReturnValue[*]; Argument[-1].Field[ReverseFlow::value]; value; manual | +| 58 | Summary: ; TemplateClass1; true; templateFunction2; (U,V); ; Argument[1]; ReturnValue; value; manual | +| 59 | Summary: ; TemplateClass1; false; templateFunction; (T,U); ; Argument[0]; ReturnValue; value; manual | +| 60 | Summary: ; TemplateClass2; true; function; (U,T); ; Argument[1]; ReturnValue; value; manual | +| 61 | Summary: Azure::Core::IO; BodyStream; true; Read; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 62 | Summary: Azure::Core::IO; BodyStream; true; ReadToCount; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 63 | Summary: Azure::Core::IO; BodyStream; true; ReadToEnd; ; ; Argument[-1]; ReturnValue.Element; taint; manual | +| 64 | Summary: Azure; Nullable; true; Value; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 65 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | edges -| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | provenance | MaD:60 | | asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:32 | | asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | *recv_buffer | provenance | Src:MaD:32 Sink:MaD:2 | | asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:98:7:98:14 | send_str | provenance | TaintFunction | @@ -68,25 +72,16 @@ edges | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:101:7:101:17 | send_buffer | provenance | | | asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:2 | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | provenance | | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:60 | -| azure.cpp:62:10:62:14 | [summary param] this in Value | azure.cpp:62:10:62:14 | [summary] to write: ReturnValue[*] in Value | provenance | MaD:59 | -| azure.cpp:113:16:113:19 | [summary param] this in Read | azure.cpp:113:16:113:19 | [summary param] *0 in Read [Return] | provenance | MaD:56 | -| azure.cpp:114:16:114:26 | [summary param] this in ReadToCount | azure.cpp:114:16:114:26 | [summary param] *0 in ReadToCount [Return] | provenance | MaD:57 | -| azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue.Element in ReadToEnd | provenance | MaD:58 | -| azure.cpp:115:30:115:38 | [summary] to write: ReturnValue.Element in ReadToEnd | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue in ReadToEnd [element] | provenance | | +| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:65 | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:253:48:253:60 | *call to GetBodyStream | provenance | Src:MaD:29 | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:257:5:257:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:262:5:262:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:266:38:266:41 | *resp | provenance | | -| azure.cpp:257:5:257:8 | *resp | azure.cpp:113:16:113:19 | [summary param] this in Read | provenance | | -| azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | provenance | MaD:56 | +| azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | provenance | MaD:61 | | azure.cpp:257:16:257:21 | Read output argument | azure.cpp:258:10:258:16 | * ... | provenance | | -| azure.cpp:262:5:262:8 | *resp | azure.cpp:114:16:114:26 | [summary param] this in ReadToCount | provenance | | -| azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount output argument | provenance | MaD:57 | +| azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount output argument | provenance | MaD:62 | | azure.cpp:262:23:262:28 | ReadToCount output argument | azure.cpp:263:10:263:16 | * ... | provenance | | -| azure.cpp:266:38:266:41 | *resp | azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | provenance | | -| azure.cpp:266:38:266:41 | *resp | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | MaD:58 | +| azure.cpp:266:38:266:41 | *resp | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | MaD:63 | | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | provenance | | | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | azure.cpp:267:10:267:12 | vec [element] | provenance | | | azure.cpp:267:10:267:12 | vec [element] | azure.cpp:267:10:267:12 | vec | provenance | | @@ -102,12 +97,10 @@ edges | azure.cpp:278:10:278:13 | body | azure.cpp:278:10:278:13 | body | provenance | | | azure.cpp:281:68:281:84 | *call to ExtractBodyStream | azure.cpp:281:68:281:84 | *call to ExtractBodyStream | provenance | Src:MaD:26 | | azure.cpp:281:68:281:84 | *call to ExtractBodyStream | azure.cpp:282:21:282:23 | *call to get | provenance | | -| azure.cpp:282:21:282:23 | *call to get | azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | provenance | | -| azure.cpp:282:21:282:23 | *call to get | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | MaD:58 | +| azure.cpp:282:21:282:23 | *call to get | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | MaD:63 | | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | azure.cpp:282:10:282:38 | call to ReadToEnd | provenance | | | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | provenance | | -| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:62:10:62:14 | [summary param] this in Value | provenance | | -| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:289:63:289:65 | call to Value | provenance | MaD:59 | +| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:289:63:289:65 | call to Value | provenance | MaD:64 | | azure.cpp:289:32:289:40 | call to GetHeader | azure.cpp:289:24:289:56 | call to GetHeader | provenance | | | azure.cpp:289:32:289:40 | call to GetHeader | azure.cpp:289:32:289:40 | call to GetHeader | provenance | Src:MaD:30 | | azure.cpp:289:63:289:65 | call to Value | azure.cpp:289:63:289:65 | call to Value | provenance | | @@ -119,9 +112,6 @@ edges | azure.cpp:294:38:294:53 | call to operator[] | azure.cpp:295:10:295:20 | contentType | provenance | | | azure.cpp:294:38:294:53 | call to operator[] | azure.cpp:295:10:295:20 | contentType | provenance | | | azure.cpp:295:10:295:20 | contentType | azure.cpp:295:10:295:20 | contentType | provenance | | -| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:51 | -| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:50 | -| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:52 | | test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | | | test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:25 | @@ -132,16 +122,13 @@ edges | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:32:41:32:41 | x | provenance | | | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | | | test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:1 | -| test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | provenance | | -| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:51 | +| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:53 | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | | | test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:1 | -| test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | provenance | | -| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:50 | +| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:52 | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | | | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:1 | -| test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | provenance | | -| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:52 | +| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:54 | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | | | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:1 | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | provenance | | @@ -149,20 +136,10 @@ edges | test.cpp:46:30:46:32 | *arg [x] | test.cpp:47:12:47:19 | *arg [x] | provenance | | | test.cpp:47:12:47:19 | *arg [x] | test.cpp:48:13:48:13 | *s [x] | provenance | | | test.cpp:48:13:48:13 | *s [x] | test.cpp:48:16:48:16 | x | provenance | Sink:MaD:1 | -| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | provenance | MaD:49 | -| test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | test.cpp:46:30:46:32 | *arg [x] | provenance | | | test.cpp:56:2:56:2 | *s [post update] [x] | test.cpp:59:55:59:64 | *& ... [x] | provenance | | | test.cpp:56:2:56:18 | ... = ... | test.cpp:56:2:56:2 | *s [post update] [x] | provenance | | | test.cpp:56:8:56:16 | call to ymlSource | test.cpp:56:2:56:18 | ... = ... | provenance | Src:MaD:25 | -| test.cpp:59:55:59:64 | *& ... [x] | test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | provenance | | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | provenance | MaD:47 | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | test.cpp:68:22:68:22 | y | provenance | | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | test.cpp:74:22:74:22 | y | provenance | | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | test.cpp:82:22:82:22 | y | provenance | | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | test.cpp:88:22:88:22 | y | provenance | | +| test.cpp:59:55:59:64 | *& ... [x] | test.cpp:46:30:46:32 | *arg [x] | provenance | MaD:49 | | test.cpp:68:22:68:22 | y | test.cpp:69:11:69:11 | y | provenance | Sink:MaD:1 | | test.cpp:74:22:74:22 | y | test.cpp:75:11:75:11 | y | provenance | Sink:MaD:1 | | test.cpp:82:22:82:22 | y | test.cpp:83:11:83:11 | y | provenance | Sink:MaD:1 | @@ -172,69 +149,73 @@ edges | test.cpp:94:10:94:18 | call to ymlSource | test.cpp:101:26:101:26 | x | provenance | | | test.cpp:94:10:94:18 | call to ymlSource | test.cpp:103:63:103:63 | x | provenance | | | test.cpp:94:10:94:18 | call to ymlSource | test.cpp:104:62:104:62 | x | provenance | | -| test.cpp:97:26:97:26 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | -| test.cpp:101:26:101:26 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | -| test.cpp:103:63:103:63 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | -| test.cpp:104:62:104:62 | x | test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | provenance | | -| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | provenance | MaD:48 | +| test.cpp:97:26:97:26 | x | test.cpp:68:22:68:22 | y | provenance | MaD:47 | +| test.cpp:101:26:101:26 | x | test.cpp:74:22:74:22 | y | provenance | MaD:47 | +| test.cpp:103:63:103:63 | x | test.cpp:82:22:82:22 | y | provenance | MaD:47 | +| test.cpp:104:62:104:62 | x | test.cpp:88:22:88:22 | y | provenance | MaD:47 | | test.cpp:114:10:114:18 | call to ymlSource | test.cpp:114:10:114:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:114:10:114:18 | call to ymlSource | test.cpp:118:44:118:44 | *x | provenance | | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | test.cpp:119:10:119:11 | y2 | provenance | Sink:MaD:1 | -| test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | provenance | | | test.cpp:118:44:118:44 | *x | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | provenance | MaD:48 | -| test.cpp:125:5:125:20 | [summary param] 0 in templateFunction | test.cpp:125:5:125:20 | [summary] to write: ReturnValue in templateFunction | provenance | MaD:54 | -| test.cpp:128:5:128:21 | [summary param] 1 in templateFunction2 | test.cpp:128:5:128:21 | [summary] to write: ReturnValue in templateFunction2 | provenance | MaD:53 | | test.cpp:133:10:133:18 | call to ymlSource | test.cpp:133:10:133:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:133:10:133:18 | call to ymlSource | test.cpp:134:45:134:45 | x | provenance | | | test.cpp:134:13:134:43 | call to templateFunction | test.cpp:134:13:134:43 | call to templateFunction | provenance | | | test.cpp:134:13:134:43 | call to templateFunction | test.cpp:135:10:135:10 | y | provenance | Sink:MaD:1 | -| test.cpp:134:45:134:45 | x | test.cpp:125:5:125:20 | [summary param] 0 in templateFunction | provenance | | -| test.cpp:134:45:134:45 | x | test.cpp:134:13:134:43 | call to templateFunction | provenance | MaD:54 | -| test.cpp:140:4:140:11 | [summary param] 1 in function | test.cpp:140:4:140:11 | [summary] to write: ReturnValue in function | provenance | MaD:55 | -| test.cpp:140:4:140:11 | [summary param] 1 in function | test.cpp:140:4:140:11 | [summary] to write: ReturnValue in function | provenance | MaD:55 | +| test.cpp:134:45:134:45 | x | test.cpp:134:13:134:43 | call to templateFunction | provenance | MaD:59 | | test.cpp:146:10:146:18 | call to ymlSource | test.cpp:146:10:146:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:146:10:146:18 | call to ymlSource | test.cpp:148:26:148:26 | x | provenance | | | test.cpp:148:10:148:27 | call to function | test.cpp:148:10:148:27 | call to function | provenance | | | test.cpp:148:10:148:27 | call to function | test.cpp:149:10:149:10 | z | provenance | Sink:MaD:1 | -| test.cpp:148:26:148:26 | x | test.cpp:140:4:140:11 | [summary param] 1 in function | provenance | | -| test.cpp:148:26:148:26 | x | test.cpp:148:10:148:27 | call to function | provenance | MaD:55 | +| test.cpp:148:26:148:26 | x | test.cpp:148:10:148:27 | call to function | provenance | MaD:60 | | test.cpp:155:10:155:18 | call to ymlSource | test.cpp:155:10:155:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:155:10:155:18 | call to ymlSource | test.cpp:157:26:157:26 | x | provenance | | | test.cpp:157:13:157:20 | call to function | test.cpp:157:13:157:20 | call to function | provenance | | | test.cpp:157:13:157:20 | call to function | test.cpp:158:10:158:10 | z | provenance | Sink:MaD:1 | -| test.cpp:157:26:157:26 | x | test.cpp:140:4:140:11 | [summary param] 1 in function | provenance | | -| test.cpp:157:26:157:26 | x | test.cpp:157:13:157:20 | call to function | provenance | MaD:55 | +| test.cpp:157:26:157:26 | x | test.cpp:157:13:157:20 | call to function | provenance | MaD:60 | | test.cpp:164:34:164:34 | x | test.cpp:165:69:165:69 | x | provenance | | | test.cpp:165:12:165:64 | call to templateFunction2 | test.cpp:164:7:164:7 | *templateFunction3 | provenance | | | test.cpp:165:12:165:64 | call to templateFunction2 | test.cpp:165:12:165:64 | call to templateFunction2 | provenance | | -| test.cpp:165:69:165:69 | x | test.cpp:128:5:128:21 | [summary param] 1 in templateFunction2 | provenance | | -| test.cpp:165:69:165:69 | x | test.cpp:165:12:165:64 | call to templateFunction2 | provenance | MaD:53 | +| test.cpp:165:69:165:69 | x | test.cpp:165:12:165:64 | call to templateFunction2 | provenance | MaD:58 | | test.cpp:170:10:170:18 | call to ymlSource | test.cpp:170:10:170:18 | call to ymlSource | provenance | Src:MaD:25 | | test.cpp:170:10:170:18 | call to ymlSource | test.cpp:172:51:172:51 | x | provenance | | | test.cpp:172:13:172:44 | call to templateFunction3 | test.cpp:172:13:172:44 | call to templateFunction3 | provenance | | | test.cpp:172:13:172:44 | call to templateFunction3 | test.cpp:173:10:173:10 | y | provenance | Sink:MaD:1 | | test.cpp:172:51:172:51 | x | test.cpp:164:34:164:34 | x | provenance | | -| test.cpp:172:51:172:51 | x | test.cpp:172:13:172:44 | call to templateFunction3 | provenance | MaD:53 | -| windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:33 | +| test.cpp:172:51:172:51 | x | test.cpp:172:13:172:44 | call to templateFunction3 | provenance | MaD:58 | +| test.cpp:186:2:186:2 | *s [post update] [myField] | test.cpp:187:33:187:34 | *& ... [myField] | provenance | | +| test.cpp:186:2:186:24 | ... = ... | test.cpp:186:2:186:2 | *s [post update] [myField] | provenance | | +| test.cpp:186:14:186:22 | call to ymlSource | test.cpp:186:2:186:24 | ... = ... | provenance | Src:MaD:25 | +| test.cpp:187:10:187:31 | call to read_field_from_struct | test.cpp:187:10:187:31 | call to read_field_from_struct | provenance | | +| test.cpp:187:10:187:31 | call to read_field_from_struct | test.cpp:188:10:188:10 | x | provenance | Sink:MaD:1 | +| test.cpp:187:33:187:34 | *& ... [myField] | test.cpp:187:10:187:31 | call to read_field_from_struct | provenance | MaD:50 | +| test.cpp:199:2:199:2 | *s [post update] [myField] | test.cpp:200:35:200:36 | *& ... [myField] | provenance | | +| test.cpp:199:2:199:24 | ... = ... | test.cpp:199:2:199:2 | *s [post update] [myField] | provenance | | +| test.cpp:199:14:199:22 | call to ymlSource | test.cpp:199:2:199:24 | ... = ... | provenance | Src:MaD:25 | +| test.cpp:200:10:200:33 | call to read_field_from_struct_2 | test.cpp:200:10:200:33 | call to read_field_from_struct_2 | provenance | | +| test.cpp:200:10:200:33 | call to read_field_from_struct_2 | test.cpp:201:10:201:10 | x | provenance | Sink:MaD:1 | +| test.cpp:200:35:200:36 | *& ... [myField] | test.cpp:200:10:200:33 | call to read_field_from_struct_2 | provenance | MaD:51 | +| test.cpp:216:3:216:4 | get_ptr output argument [value] | test.cpp:217:11:217:12 | *rf [value] | provenance | | +| test.cpp:216:3:216:28 | ... = ... | test.cpp:216:3:216:4 | get_ptr output argument [value] | provenance | MaD:57 | +| test.cpp:216:18:216:26 | call to ymlSource | test.cpp:216:3:216:28 | ... = ... | provenance | Src:MaD:25 | +| test.cpp:217:11:217:12 | *rf [value] | test.cpp:217:14:217:18 | value | provenance | | +| test.cpp:217:14:217:18 | value | test.cpp:217:14:217:18 | value | provenance | | +| test.cpp:217:14:217:18 | value | test.cpp:218:11:218:11 | x | provenance | Sink:MaD:1 | +| test.cpp:222:3:222:3 | operator[] output argument | test.cpp:223:12:223:12 | *s | provenance | | +| test.cpp:222:3:222:20 | ... = ... | test.cpp:222:3:222:3 | operator[] output argument | provenance | MaD:56 | +| test.cpp:222:10:222:20 | call to ymlSource | test.cpp:222:3:222:20 | ... = ... | provenance | Src:MaD:25 | +| test.cpp:223:12:223:12 | *s | test.cpp:223:13:223:15 | call to operator[] | provenance | MaD:55 | +| test.cpp:223:13:223:15 | call to operator[] | test.cpp:223:13:223:15 | call to operator[] | provenance | | +| test.cpp:223:13:223:15 | call to operator[] | test.cpp:224:11:224:11 | c | provenance | Sink:MaD:1 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:22:15:22:29 | *call to GetCommandLineA | provenance | Src:MaD:3 | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:24:8:24:11 | * ... | provenance | | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | windows.cpp:27:36:27:38 | *cmd | provenance | | | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | | | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | windows.cpp:30:8:30:15 | * ... | provenance | | -| windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | provenance | | | windows.cpp:27:36:27:38 | *cmd | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | provenance | MaD:33 | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | provenance | Src:MaD:4 | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | windows.cpp:36:10:36:13 | * ... | provenance | | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | windows.cpp:41:10:41:13 | * ... | provenance | Src:MaD:5 | -| windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [*hEvent] | windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | provenance | | -| windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [hEvent] | windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | provenance | | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | provenance | MaD:37 | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | provenance | MaD:37 | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | windows.cpp:147:16:147:27 | *lpOverlapped [*hEvent] | provenance | | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [hEvent] | windows.cpp:157:16:157:27 | *lpOverlapped [hEvent] | provenance | | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | provenance | | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [hEvent] | provenance | | | windows.cpp:147:16:147:27 | *lpOverlapped [*hEvent] | windows.cpp:149:42:149:53 | *lpOverlapped [*hEvent] | provenance | | | windows.cpp:149:18:149:62 | *hEvent | windows.cpp:149:18:149:62 | *hEvent | provenance | | | windows.cpp:149:18:149:62 | *hEvent | windows.cpp:151:8:151:14 | * ... | provenance | | @@ -251,11 +232,11 @@ edges | windows.cpp:189:21:189:26 | ReadFile output argument | windows.cpp:190:5:190:56 | *... = ... | provenance | Src:MaD:17 | | windows.cpp:190:5:190:14 | *overlapped [post update] [*hEvent] | windows.cpp:192:53:192:63 | *& ... [*hEvent] | provenance | | | windows.cpp:190:5:190:56 | *... = ... | windows.cpp:190:5:190:14 | *overlapped [post update] [*hEvent] | provenance | | -| windows.cpp:192:53:192:63 | *& ... [*hEvent] | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [*hEvent] | provenance | | +| windows.cpp:192:53:192:63 | *& ... [*hEvent] | windows.cpp:147:16:147:27 | *lpOverlapped [*hEvent] | provenance | MaD:37 | | windows.cpp:198:21:198:26 | ReadFile output argument | windows.cpp:199:5:199:57 | ... = ... | provenance | Src:MaD:17 | | windows.cpp:199:5:199:14 | *overlapped [post update] [hEvent] | windows.cpp:201:53:201:63 | *& ... [hEvent] | provenance | | | windows.cpp:199:5:199:57 | ... = ... | windows.cpp:199:5:199:14 | *overlapped [post update] [hEvent] | provenance | | -| windows.cpp:201:53:201:63 | *& ... [hEvent] | windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [hEvent] | provenance | | +| windows.cpp:201:53:201:63 | *& ... [hEvent] | windows.cpp:157:16:157:27 | *lpOverlapped [hEvent] | provenance | MaD:37 | | windows.cpp:209:84:209:89 | NtReadFile output argument | windows.cpp:211:10:211:16 | * ... | provenance | Src:MaD:16 | | windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:286:23:286:35 | *call to MapViewOfFile | provenance | Src:MaD:12 | | windows.cpp:286:23:286:35 | *call to MapViewOfFile | windows.cpp:287:20:287:52 | *pMapView | provenance | | @@ -278,12 +259,6 @@ edges | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | provenance | Src:MaD:15 | | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | windows.cpp:333:20:333:52 | *pMapView | provenance | | | windows.cpp:333:20:333:52 | *pMapView | windows.cpp:335:10:335:16 | * ... | provenance | | -| windows.cpp:349:8:349:19 | [summary param] *3 in CreateThread [x] | windows.cpp:349:8:349:19 | [summary] to write: Argument[2].Parameter[*0] in CreateThread [x] | provenance | MaD:36 | -| windows.cpp:349:8:349:19 | [summary] to write: Argument[2].Parameter[*0] in CreateThread [x] | windows.cpp:403:26:403:36 | *lpParameter [x] | provenance | | -| windows.cpp:357:8:357:25 | [summary param] *4 in CreateRemoteThread [x] | windows.cpp:357:8:357:25 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThread [x] | provenance | MaD:34 | -| windows.cpp:357:8:357:25 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThread [x] | windows.cpp:410:26:410:36 | *lpParameter [x] | provenance | | -| windows.cpp:387:8:387:27 | [summary param] *4 in CreateRemoteThreadEx [x] | windows.cpp:387:8:387:27 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThreadEx [x] | provenance | MaD:35 | -| windows.cpp:387:8:387:27 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThreadEx [x] | windows.cpp:417:26:417:36 | *lpParameter [x] | provenance | | | windows.cpp:403:26:403:36 | *lpParameter [x] | windows.cpp:405:10:405:25 | *lpParameter [x] | provenance | | | windows.cpp:405:10:405:25 | *lpParameter [x] | windows.cpp:406:8:406:8 | *s [x] | provenance | | | windows.cpp:406:8:406:8 | *s [x] | windows.cpp:406:8:406:11 | x | provenance | | @@ -298,22 +273,9 @@ edges | windows.cpp:431:3:431:3 | *s [post update] [x] | windows.cpp:464:7:464:8 | *& ... [x] | provenance | | | windows.cpp:431:3:431:16 | ... = ... | windows.cpp:431:3:431:3 | *s [post update] [x] | provenance | | | windows.cpp:431:9:431:14 | call to source | windows.cpp:431:3:431:16 | ... = ... | provenance | | -| windows.cpp:439:7:439:8 | *& ... [x] | windows.cpp:349:8:349:19 | [summary param] *3 in CreateThread [x] | provenance | | -| windows.cpp:451:7:451:8 | *& ... [x] | windows.cpp:357:8:357:25 | [summary param] *4 in CreateRemoteThread [x] | provenance | | -| windows.cpp:464:7:464:8 | *& ... [x] | windows.cpp:387:8:387:27 | [summary param] *4 in CreateRemoteThreadEx [x] | provenance | | -| windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | provenance | MaD:42 | -| windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | provenance | MaD:38 | -| windows.cpp:485:6:485:18 | [summary param] *1 in RtlCopyMemory | windows.cpp:485:6:485:18 | [summary param] *0 in RtlCopyMemory [Return] | provenance | MaD:39 | -| windows.cpp:493:6:493:29 | [summary param] *1 in RtlCopyMemoryNonTemporal | windows.cpp:493:6:493:29 | [summary param] *0 in RtlCopyMemoryNonTemporal [Return] | provenance | MaD:40 | -| windows.cpp:510:6:510:25 | [summary param] *1 in RtlCopyUnicodeString [*Buffer] | windows.cpp:510:6:510:25 | [summary] read: Argument[*1].Field[*Buffer] in RtlCopyUnicodeString | provenance | | -| windows.cpp:510:6:510:25 | [summary] read: Argument[*1].Field[*Buffer] in RtlCopyUnicodeString | windows.cpp:510:6:510:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlCopyUnicodeString | provenance | MaD:41 | -| windows.cpp:510:6:510:25 | [summary] to write: Argument[*0] in RtlCopyUnicodeString [*Buffer] | windows.cpp:510:6:510:25 | [summary param] *0 in RtlCopyUnicodeString [Return] [*Buffer] | provenance | | -| windows.cpp:510:6:510:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlCopyUnicodeString | windows.cpp:510:6:510:25 | [summary] to write: Argument[*0] in RtlCopyUnicodeString [*Buffer] | provenance | | -| windows.cpp:515:6:515:18 | [summary param] *1 in RtlMoveMemory | windows.cpp:515:6:515:18 | [summary param] *0 in RtlMoveMemory [Return] | provenance | MaD:44 | -| windows.cpp:521:17:521:37 | [summary param] *1 in RtlMoveVolatileMemory | windows.cpp:521:17:521:37 | [summary param] *0 in RtlMoveVolatileMemory [Return] | provenance | MaD:45 | -| windows.cpp:527:6:527:25 | [summary param] *1 in RtlInitUnicodeString | windows.cpp:527:6:527:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlInitUnicodeString | provenance | MaD:43 | -| windows.cpp:527:6:527:25 | [summary] to write: Argument[*0] in RtlInitUnicodeString [*Buffer] | windows.cpp:527:6:527:25 | [summary param] *0 in RtlInitUnicodeString [Return] [*Buffer] | provenance | | -| windows.cpp:527:6:527:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlInitUnicodeString | windows.cpp:527:6:527:25 | [summary] to write: Argument[*0] in RtlInitUnicodeString [*Buffer] | provenance | | +| windows.cpp:439:7:439:8 | *& ... [x] | windows.cpp:403:26:403:36 | *lpParameter [x] | provenance | MaD:36 | +| windows.cpp:451:7:451:8 | *& ... [x] | windows.cpp:410:26:410:36 | *lpParameter [x] | provenance | MaD:34 | +| windows.cpp:464:7:464:8 | *& ... [x] | windows.cpp:417:26:417:36 | *lpParameter [x] | provenance | MaD:35 | | windows.cpp:533:11:533:16 | call to source | windows.cpp:533:11:533:16 | call to source | provenance | | | windows.cpp:533:11:533:16 | call to source | windows.cpp:537:40:537:41 | *& ... | provenance | | | windows.cpp:533:11:533:16 | call to source | windows.cpp:542:38:542:39 | *& ... | provenance | | @@ -322,37 +284,29 @@ edges | windows.cpp:533:11:533:16 | call to source | windows.cpp:568:32:568:33 | *& ... | provenance | | | windows.cpp:533:11:533:16 | call to source | windows.cpp:573:40:573:41 | *& ... | provenance | | | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | windows.cpp:538:10:538:23 | access to array | provenance | | -| windows.cpp:537:40:537:41 | *& ... | windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | provenance | | | windows.cpp:537:40:537:41 | *& ... | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | provenance | MaD:42 | | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | windows.cpp:543:10:543:23 | access to array | provenance | | -| windows.cpp:542:38:542:39 | *& ... | windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | provenance | | | windows.cpp:542:38:542:39 | *& ... | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | provenance | MaD:38 | | windows.cpp:547:19:547:29 | RtlCopyMemory output argument | windows.cpp:548:10:548:23 | access to array | provenance | | -| windows.cpp:547:32:547:33 | *& ... | windows.cpp:485:6:485:18 | [summary param] *1 in RtlCopyMemory | provenance | | | windows.cpp:547:32:547:33 | *& ... | windows.cpp:547:19:547:29 | RtlCopyMemory output argument | provenance | MaD:39 | | windows.cpp:552:30:552:40 | RtlCopyMemoryNonTemporal output argument | windows.cpp:553:10:553:23 | access to array | provenance | | -| windows.cpp:552:43:552:44 | *& ... | windows.cpp:493:6:493:29 | [summary param] *1 in RtlCopyMemoryNonTemporal | provenance | | | windows.cpp:552:43:552:44 | *& ... | windows.cpp:552:30:552:40 | RtlCopyMemoryNonTemporal output argument | provenance | MaD:40 | | windows.cpp:559:5:559:24 | ... = ... | windows.cpp:561:39:561:44 | *buffer | provenance | | | windows.cpp:559:17:559:24 | call to source | windows.cpp:559:5:559:24 | ... = ... | provenance | | | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | windows.cpp:562:10:562:19 | *src_string [*Buffer] | provenance | | | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | windows.cpp:563:40:563:50 | *& ... [*Buffer] | provenance | | -| windows.cpp:561:39:561:44 | *buffer | windows.cpp:527:6:527:25 | [summary param] *1 in RtlInitUnicodeString | provenance | | | windows.cpp:561:39:561:44 | *buffer | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | provenance | MaD:43 | | windows.cpp:562:10:562:19 | *src_string [*Buffer] | windows.cpp:562:10:562:29 | access to array | provenance | | | windows.cpp:562:10:562:19 | *src_string [*Buffer] | windows.cpp:562:21:562:26 | *Buffer | provenance | | | windows.cpp:562:21:562:26 | *Buffer | windows.cpp:562:10:562:29 | access to array | provenance | | | windows.cpp:563:26:563:37 | RtlCopyUnicodeString output argument [*Buffer] | windows.cpp:564:10:564:20 | *dest_string [*Buffer] | provenance | | -| windows.cpp:563:40:563:50 | *& ... [*Buffer] | windows.cpp:510:6:510:25 | [summary param] *1 in RtlCopyUnicodeString [*Buffer] | provenance | | | windows.cpp:563:40:563:50 | *& ... [*Buffer] | windows.cpp:563:26:563:37 | RtlCopyUnicodeString output argument [*Buffer] | provenance | MaD:41 | | windows.cpp:564:10:564:20 | *dest_string [*Buffer] | windows.cpp:564:10:564:30 | access to array | provenance | | | windows.cpp:564:10:564:20 | *dest_string [*Buffer] | windows.cpp:564:22:564:27 | *Buffer | provenance | | | windows.cpp:564:22:564:27 | *Buffer | windows.cpp:564:10:564:30 | access to array | provenance | | | windows.cpp:568:19:568:29 | RtlMoveMemory output argument | windows.cpp:569:10:569:23 | access to array | provenance | | -| windows.cpp:568:32:568:33 | *& ... | windows.cpp:515:6:515:18 | [summary param] *1 in RtlMoveMemory | provenance | | | windows.cpp:568:32:568:33 | *& ... | windows.cpp:568:19:568:29 | RtlMoveMemory output argument | provenance | MaD:44 | | windows.cpp:573:27:573:37 | RtlMoveVolatileMemory output argument | windows.cpp:574:10:574:23 | access to array | provenance | | -| windows.cpp:573:40:573:41 | *& ... | windows.cpp:521:17:521:37 | [summary param] *1 in RtlMoveVolatileMemory | provenance | | | windows.cpp:573:40:573:41 | *& ... | windows.cpp:573:27:573:37 | RtlMoveVolatileMemory output argument | provenance | MaD:45 | | windows.cpp:645:45:645:50 | WinHttpReadData output argument | windows.cpp:647:10:647:16 | * ... | provenance | Src:MaD:23 | | windows.cpp:652:48:652:53 | WinHttpReadDataEx output argument | windows.cpp:654:10:654:16 | * ... | provenance | Src:MaD:24 | @@ -360,10 +314,8 @@ edges | windows.cpp:669:70:669:79 | WinHttpQueryHeadersEx output argument | windows.cpp:673:10:673:29 | * ... | provenance | Src:MaD:21 | | windows.cpp:669:82:669:87 | WinHttpQueryHeadersEx output argument | windows.cpp:671:10:671:16 | * ... | provenance | Src:MaD:22 | | windows.cpp:669:105:669:112 | WinHttpQueryHeadersEx output argument | windows.cpp:675:10:675:27 | * ... | provenance | Src:MaD:20 | -| windows.cpp:714:6:714:20 | [summary param] *0 in WinHttpCrackUrl | windows.cpp:714:6:714:20 | [summary param] *3 in WinHttpCrackUrl [Return] | provenance | MaD:46 | | windows.cpp:728:5:728:28 | ... = ... | windows.cpp:729:35:729:35 | *x | provenance | | | windows.cpp:728:12:728:28 | call to source | windows.cpp:728:5:728:28 | ... = ... | provenance | | -| windows.cpp:729:35:729:35 | *x | windows.cpp:714:6:714:20 | [summary param] *0 in WinHttpCrackUrl | provenance | | | windows.cpp:729:35:729:35 | *x | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | provenance | MaD:46 | | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | windows.cpp:731:10:731:36 | * ... | provenance | | | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | windows.cpp:733:10:733:35 | * ... | provenance | | @@ -386,8 +338,6 @@ edges | windows.cpp:936:70:936:78 | HttpReceiveClientCertificate output argument | windows.cpp:941:10:941:31 | * ... | provenance | Src:MaD:6 | | windows.cpp:937:15:937:48 | *& ... | windows.cpp:939:10:939:11 | * ... | provenance | | nodes -| asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | semmle.label | [summary param] *0 in buffer | -| asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | semmle.label | [summary] to write: ReturnValue in buffer | | asio_streams.cpp:87:34:87:44 | read_until output argument | semmle.label | read_until output argument | | asio_streams.cpp:91:7:91:17 | recv_buffer | semmle.label | recv_buffer | | asio_streams.cpp:93:29:93:39 | *recv_buffer | semmle.label | *recv_buffer | @@ -398,15 +348,6 @@ nodes | asio_streams.cpp:100:64:100:71 | *send_str | semmle.label | *send_str | | asio_streams.cpp:101:7:101:17 | send_buffer | semmle.label | send_buffer | | asio_streams.cpp:103:29:103:39 | *send_buffer | semmle.label | *send_buffer | -| azure.cpp:62:10:62:14 | [summary param] this in Value | semmle.label | [summary param] this in Value | -| azure.cpp:62:10:62:14 | [summary] to write: ReturnValue[*] in Value | semmle.label | [summary] to write: ReturnValue[*] in Value | -| azure.cpp:113:16:113:19 | [summary param] *0 in Read [Return] | semmle.label | [summary param] *0 in Read [Return] | -| azure.cpp:113:16:113:19 | [summary param] this in Read | semmle.label | [summary param] this in Read | -| azure.cpp:114:16:114:26 | [summary param] *0 in ReadToCount [Return] | semmle.label | [summary param] *0 in ReadToCount [Return] | -| azure.cpp:114:16:114:26 | [summary param] this in ReadToCount | semmle.label | [summary param] this in ReadToCount | -| azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | semmle.label | [summary param] this in ReadToEnd | -| azure.cpp:115:30:115:38 | [summary] to write: ReturnValue in ReadToEnd [element] | semmle.label | [summary] to write: ReturnValue in ReadToEnd [element] | -| azure.cpp:115:30:115:38 | [summary] to write: ReturnValue.Element in ReadToEnd | semmle.label | [summary] to write: ReturnValue.Element in ReadToEnd | | azure.cpp:253:48:253:60 | *call to GetBodyStream | semmle.label | *call to GetBodyStream | | azure.cpp:253:48:253:60 | *call to GetBodyStream | semmle.label | *call to GetBodyStream | | azure.cpp:257:5:257:8 | *resp | semmle.label | *resp | @@ -451,12 +392,6 @@ nodes | azure.cpp:295:10:295:20 | contentType | semmle.label | contentType | | azure.cpp:295:10:295:20 | contentType | semmle.label | contentType | | azure.cpp:295:10:295:20 | contentType | semmle.label | contentType | -| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | semmle.label | [summary param] 0 in ymlStepManual | -| test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | semmle.label | [summary] to write: ReturnValue in ymlStepManual | -| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | semmle.label | [summary param] 0 in ymlStepGenerated | -| test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | semmle.label | [summary] to write: ReturnValue in ymlStepGenerated | -| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | semmle.label | [summary param] 0 in ymlStepManual_with_body | -| test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | semmle.label | [summary] to write: ReturnValue in ymlStepManual_with_body | | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | semmle.label | *ymlStepGenerated_with_body | | test.cpp:7:47:7:52 | value2 | semmle.label | value2 | | test.cpp:7:64:7:69 | value2 | semmle.label | value2 | @@ -483,20 +418,10 @@ nodes | test.cpp:47:12:47:19 | *arg [x] | semmle.label | *arg [x] | | test.cpp:48:13:48:13 | *s [x] | semmle.label | *s [x] | | test.cpp:48:16:48:16 | x | semmle.label | x | -| test.cpp:52:5:52:18 | [summary param] *3 in pthread_create [x] | semmle.label | [summary param] *3 in pthread_create [x] | -| test.cpp:52:5:52:18 | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | semmle.label | [summary] to write: Argument[2].Parameter[*0] in pthread_create [x] | | test.cpp:56:2:56:2 | *s [post update] [x] | semmle.label | *s [post update] [x] | | test.cpp:56:2:56:18 | ... = ... | semmle.label | ... = ... | | test.cpp:56:8:56:16 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:59:55:59:64 | *& ... [x] | semmle.label | *& ... [x] | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | semmle.label | [summary param] 1 in callWithArgument | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | semmle.label | [summary param] 1 in callWithArgument | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | semmle.label | [summary param] 1 in callWithArgument | -| test.cpp:63:6:63:21 | [summary param] 1 in callWithArgument | semmle.label | [summary param] 1 in callWithArgument | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | semmle.label | [summary] to write: Argument[0].Parameter[0] in callWithArgument | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | semmle.label | [summary] to write: Argument[0].Parameter[0] in callWithArgument | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | semmle.label | [summary] to write: Argument[0].Parameter[0] in callWithArgument | -| test.cpp:63:6:63:21 | [summary] to write: Argument[0].Parameter[0] in callWithArgument | semmle.label | [summary] to write: Argument[0].Parameter[0] in callWithArgument | | test.cpp:68:22:68:22 | y | semmle.label | y | | test.cpp:69:11:69:11 | y | semmle.label | y | | test.cpp:74:22:74:22 | y | semmle.label | y | @@ -511,28 +436,18 @@ nodes | test.cpp:101:26:101:26 | x | semmle.label | x | | test.cpp:103:63:103:63 | x | semmle.label | x | | test.cpp:104:62:104:62 | x | semmle.label | x | -| test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | semmle.label | [summary param] *0 in callWithNonTypeTemplate | -| test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | semmle.label | [summary] to write: ReturnValue in callWithNonTypeTemplate | | test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:114:10:114:18 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | semmle.label | call to callWithNonTypeTemplate | | test.cpp:118:44:118:44 | *x | semmle.label | *x | | test.cpp:119:10:119:11 | y2 | semmle.label | y2 | -| test.cpp:125:5:125:20 | [summary param] 0 in templateFunction | semmle.label | [summary param] 0 in templateFunction | -| test.cpp:125:5:125:20 | [summary] to write: ReturnValue in templateFunction | semmle.label | [summary] to write: ReturnValue in templateFunction | -| test.cpp:128:5:128:21 | [summary param] 1 in templateFunction2 | semmle.label | [summary param] 1 in templateFunction2 | -| test.cpp:128:5:128:21 | [summary] to write: ReturnValue in templateFunction2 | semmle.label | [summary] to write: ReturnValue in templateFunction2 | | test.cpp:133:10:133:18 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:133:10:133:18 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:134:13:134:43 | call to templateFunction | semmle.label | call to templateFunction | | test.cpp:134:13:134:43 | call to templateFunction | semmle.label | call to templateFunction | | test.cpp:134:45:134:45 | x | semmle.label | x | | test.cpp:135:10:135:10 | y | semmle.label | y | -| test.cpp:140:4:140:11 | [summary param] 1 in function | semmle.label | [summary param] 1 in function | -| test.cpp:140:4:140:11 | [summary param] 1 in function | semmle.label | [summary param] 1 in function | -| test.cpp:140:4:140:11 | [summary] to write: ReturnValue in function | semmle.label | [summary] to write: ReturnValue in function | -| test.cpp:140:4:140:11 | [summary] to write: ReturnValue in function | semmle.label | [summary] to write: ReturnValue in function | | test.cpp:146:10:146:18 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:146:10:146:18 | call to ymlSource | semmle.label | call to ymlSource | | test.cpp:148:10:148:27 | call to function | semmle.label | call to function | @@ -556,8 +471,34 @@ nodes | test.cpp:172:13:172:44 | call to templateFunction3 | semmle.label | call to templateFunction3 | | test.cpp:172:51:172:51 | x | semmle.label | x | | test.cpp:173:10:173:10 | y | semmle.label | y | -| windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | semmle.label | [summary param] *0 in CommandLineToArgvA | -| windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | semmle.label | [summary] to write: ReturnValue[**] in CommandLineToArgvA | +| test.cpp:186:2:186:2 | *s [post update] [myField] | semmle.label | *s [post update] [myField] | +| test.cpp:186:2:186:24 | ... = ... | semmle.label | ... = ... | +| test.cpp:186:14:186:22 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:187:10:187:31 | call to read_field_from_struct | semmle.label | call to read_field_from_struct | +| test.cpp:187:10:187:31 | call to read_field_from_struct | semmle.label | call to read_field_from_struct | +| test.cpp:187:33:187:34 | *& ... [myField] | semmle.label | *& ... [myField] | +| test.cpp:188:10:188:10 | x | semmle.label | x | +| test.cpp:199:2:199:2 | *s [post update] [myField] | semmle.label | *s [post update] [myField] | +| test.cpp:199:2:199:24 | ... = ... | semmle.label | ... = ... | +| test.cpp:199:14:199:22 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:200:10:200:33 | call to read_field_from_struct_2 | semmle.label | call to read_field_from_struct_2 | +| test.cpp:200:10:200:33 | call to read_field_from_struct_2 | semmle.label | call to read_field_from_struct_2 | +| test.cpp:200:35:200:36 | *& ... [myField] | semmle.label | *& ... [myField] | +| test.cpp:201:10:201:10 | x | semmle.label | x | +| test.cpp:216:3:216:4 | get_ptr output argument [value] | semmle.label | get_ptr output argument [value] | +| test.cpp:216:3:216:28 | ... = ... | semmle.label | ... = ... | +| test.cpp:216:18:216:26 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:217:11:217:12 | *rf [value] | semmle.label | *rf [value] | +| test.cpp:217:14:217:18 | value | semmle.label | value | +| test.cpp:217:14:217:18 | value | semmle.label | value | +| test.cpp:218:11:218:11 | x | semmle.label | x | +| test.cpp:222:3:222:3 | operator[] output argument | semmle.label | operator[] output argument | +| test.cpp:222:3:222:20 | ... = ... | semmle.label | ... = ... | +| test.cpp:222:10:222:20 | call to ymlSource | semmle.label | call to ymlSource | +| test.cpp:223:12:223:12 | *s | semmle.label | *s | +| test.cpp:223:13:223:15 | call to operator[] | semmle.label | call to operator[] | +| test.cpp:223:13:223:15 | call to operator[] | semmle.label | call to operator[] | +| test.cpp:224:11:224:11 | c | semmle.label | c | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | semmle.label | *call to GetCommandLineA | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | semmle.label | *call to GetCommandLineA | | windows.cpp:24:8:24:11 | * ... | semmle.label | * ... | @@ -570,14 +511,6 @@ nodes | windows.cpp:36:10:36:13 | * ... | semmle.label | * ... | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | semmle.label | GetEnvironmentVariableA output argument | | windows.cpp:41:10:41:13 | * ... | semmle.label | * ... | -| windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [*hEvent] | semmle.label | [summary param] *3 in ReadFileEx [*hEvent] | -| windows.cpp:90:6:90:15 | [summary param] *3 in ReadFileEx [hEvent] | semmle.label | [summary param] *3 in ReadFileEx [hEvent] | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | semmle.label | [summary] read: Argument[*3].Field[*hEvent] in ReadFileEx | -| windows.cpp:90:6:90:15 | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | semmle.label | [summary] read: Argument[*3].Field[hEvent] in ReadFileEx | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | semmle.label | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [*hEvent] | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [hEvent] | semmle.label | [summary] to write: Argument[4].Parameter[*2] in ReadFileEx [hEvent] | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | semmle.label | [summary] to write: Argument[4].Parameter[*2].Field[*hEvent] in ReadFileEx | -| windows.cpp:90:6:90:15 | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | semmle.label | [summary] to write: Argument[4].Parameter[*2].Field[hEvent] in ReadFileEx | | windows.cpp:147:16:147:27 | *lpOverlapped [*hEvent] | semmle.label | *lpOverlapped [*hEvent] | | windows.cpp:149:18:149:62 | *hEvent | semmle.label | *hEvent | | windows.cpp:149:18:149:62 | *hEvent | semmle.label | *hEvent | @@ -631,12 +564,6 @@ nodes | windows.cpp:332:23:332:40 | *call to MapViewOfFileNuma2 | semmle.label | *call to MapViewOfFileNuma2 | | windows.cpp:333:20:333:52 | *pMapView | semmle.label | *pMapView | | windows.cpp:335:10:335:16 | * ... | semmle.label | * ... | -| windows.cpp:349:8:349:19 | [summary param] *3 in CreateThread [x] | semmle.label | [summary param] *3 in CreateThread [x] | -| windows.cpp:349:8:349:19 | [summary] to write: Argument[2].Parameter[*0] in CreateThread [x] | semmle.label | [summary] to write: Argument[2].Parameter[*0] in CreateThread [x] | -| windows.cpp:357:8:357:25 | [summary param] *4 in CreateRemoteThread [x] | semmle.label | [summary param] *4 in CreateRemoteThread [x] | -| windows.cpp:357:8:357:25 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThread [x] | semmle.label | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThread [x] | -| windows.cpp:387:8:387:27 | [summary param] *4 in CreateRemoteThreadEx [x] | semmle.label | [summary param] *4 in CreateRemoteThreadEx [x] | -| windows.cpp:387:8:387:27 | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThreadEx [x] | semmle.label | [summary] to write: Argument[3].Parameter[*0] in CreateRemoteThreadEx [x] | | windows.cpp:403:26:403:36 | *lpParameter [x] | semmle.label | *lpParameter [x] | | windows.cpp:405:10:405:25 | *lpParameter [x] | semmle.label | *lpParameter [x] | | windows.cpp:406:8:406:8 | *s [x] | semmle.label | *s [x] | @@ -655,27 +582,6 @@ nodes | windows.cpp:439:7:439:8 | *& ... [x] | semmle.label | *& ... [x] | | windows.cpp:451:7:451:8 | *& ... [x] | semmle.label | *& ... [x] | | windows.cpp:464:7:464:8 | *& ... [x] | semmle.label | *& ... [x] | -| windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | semmle.label | [summary param] *0 in RtlCopyVolatileMemory [Return] | -| windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | semmle.label | [summary param] *1 in RtlCopyVolatileMemory | -| windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | semmle.label | [summary param] *0 in RtlCopyDeviceMemory [Return] | -| windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | semmle.label | [summary param] *1 in RtlCopyDeviceMemory | -| windows.cpp:485:6:485:18 | [summary param] *0 in RtlCopyMemory [Return] | semmle.label | [summary param] *0 in RtlCopyMemory [Return] | -| windows.cpp:485:6:485:18 | [summary param] *1 in RtlCopyMemory | semmle.label | [summary param] *1 in RtlCopyMemory | -| windows.cpp:493:6:493:29 | [summary param] *0 in RtlCopyMemoryNonTemporal [Return] | semmle.label | [summary param] *0 in RtlCopyMemoryNonTemporal [Return] | -| windows.cpp:493:6:493:29 | [summary param] *1 in RtlCopyMemoryNonTemporal | semmle.label | [summary param] *1 in RtlCopyMemoryNonTemporal | -| windows.cpp:510:6:510:25 | [summary param] *0 in RtlCopyUnicodeString [Return] [*Buffer] | semmle.label | [summary param] *0 in RtlCopyUnicodeString [Return] [*Buffer] | -| windows.cpp:510:6:510:25 | [summary param] *1 in RtlCopyUnicodeString [*Buffer] | semmle.label | [summary param] *1 in RtlCopyUnicodeString [*Buffer] | -| windows.cpp:510:6:510:25 | [summary] read: Argument[*1].Field[*Buffer] in RtlCopyUnicodeString | semmle.label | [summary] read: Argument[*1].Field[*Buffer] in RtlCopyUnicodeString | -| windows.cpp:510:6:510:25 | [summary] to write: Argument[*0] in RtlCopyUnicodeString [*Buffer] | semmle.label | [summary] to write: Argument[*0] in RtlCopyUnicodeString [*Buffer] | -| windows.cpp:510:6:510:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlCopyUnicodeString | semmle.label | [summary] to write: Argument[*0].Field[*Buffer] in RtlCopyUnicodeString | -| windows.cpp:515:6:515:18 | [summary param] *0 in RtlMoveMemory [Return] | semmle.label | [summary param] *0 in RtlMoveMemory [Return] | -| windows.cpp:515:6:515:18 | [summary param] *1 in RtlMoveMemory | semmle.label | [summary param] *1 in RtlMoveMemory | -| windows.cpp:521:17:521:37 | [summary param] *0 in RtlMoveVolatileMemory [Return] | semmle.label | [summary param] *0 in RtlMoveVolatileMemory [Return] | -| windows.cpp:521:17:521:37 | [summary param] *1 in RtlMoveVolatileMemory | semmle.label | [summary param] *1 in RtlMoveVolatileMemory | -| windows.cpp:527:6:527:25 | [summary param] *0 in RtlInitUnicodeString [Return] [*Buffer] | semmle.label | [summary param] *0 in RtlInitUnicodeString [Return] [*Buffer] | -| windows.cpp:527:6:527:25 | [summary param] *1 in RtlInitUnicodeString | semmle.label | [summary param] *1 in RtlInitUnicodeString | -| windows.cpp:527:6:527:25 | [summary] to write: Argument[*0] in RtlInitUnicodeString [*Buffer] | semmle.label | [summary] to write: Argument[*0] in RtlInitUnicodeString [*Buffer] | -| windows.cpp:527:6:527:25 | [summary] to write: Argument[*0].Field[*Buffer] in RtlInitUnicodeString | semmle.label | [summary] to write: Argument[*0].Field[*Buffer] in RtlInitUnicodeString | | windows.cpp:533:11:533:16 | call to source | semmle.label | call to source | | windows.cpp:533:11:533:16 | call to source | semmle.label | call to source | | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | semmle.label | RtlCopyVolatileMemory output argument | @@ -720,8 +626,6 @@ nodes | windows.cpp:671:10:671:16 | * ... | semmle.label | * ... | | windows.cpp:673:10:673:29 | * ... | semmle.label | * ... | | windows.cpp:675:10:675:27 | * ... | semmle.label | * ... | -| windows.cpp:714:6:714:20 | [summary param] *0 in WinHttpCrackUrl | semmle.label | [summary param] *0 in WinHttpCrackUrl | -| windows.cpp:714:6:714:20 | [summary param] *3 in WinHttpCrackUrl [Return] | semmle.label | [summary param] *3 in WinHttpCrackUrl [Return] | | windows.cpp:728:5:728:28 | ... = ... | semmle.label | ... = ... | | windows.cpp:728:12:728:28 | call to source | semmle.label | call to source | | windows.cpp:729:35:729:35 | *x | semmle.label | *x | @@ -750,30 +654,6 @@ nodes | windows.cpp:939:10:939:11 | * ... | semmle.label | * ... | | windows.cpp:941:10:941:31 | * ... | semmle.label | * ... | subpaths -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | asio_streams.cpp:56:18:56:23 | [summary] to write: ReturnValue in buffer | asio_streams.cpp:100:44:100:62 | call to buffer | -| azure.cpp:257:5:257:8 | *resp | azure.cpp:113:16:113:19 | [summary param] this in Read | azure.cpp:113:16:113:19 | [summary param] *0 in Read [Return] | azure.cpp:257:16:257:21 | Read output argument | -| azure.cpp:262:5:262:8 | *resp | azure.cpp:114:16:114:26 | [summary param] this in ReadToCount | azure.cpp:114:16:114:26 | [summary param] *0 in ReadToCount [Return] | azure.cpp:262:23:262:28 | ReadToCount output argument | -| azure.cpp:266:38:266:41 | *resp | azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue in ReadToEnd [element] | azure.cpp:266:44:266:52 | call to ReadToEnd [element] | -| azure.cpp:282:21:282:23 | *call to get | azure.cpp:115:30:115:38 | [summary param] this in ReadToEnd | azure.cpp:115:30:115:38 | [summary] to write: ReturnValue in ReadToEnd [element] | azure.cpp:282:28:282:36 | call to ReadToEnd [element] | -| azure.cpp:289:24:289:56 | call to GetHeader | azure.cpp:62:10:62:14 | [summary param] this in Value | azure.cpp:62:10:62:14 | [summary] to write: ReturnValue[*] in Value | azure.cpp:289:63:289:65 | call to Value | -| test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | -| test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | -| test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | | test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | -| test.cpp:118:44:118:44 | *x | test.cpp:111:3:111:25 | [summary param] *0 in callWithNonTypeTemplate | test.cpp:111:3:111:25 | [summary] to write: ReturnValue in callWithNonTypeTemplate | test.cpp:118:11:118:42 | call to callWithNonTypeTemplate | -| test.cpp:134:45:134:45 | x | test.cpp:125:5:125:20 | [summary param] 0 in templateFunction | test.cpp:125:5:125:20 | [summary] to write: ReturnValue in templateFunction | test.cpp:134:13:134:43 | call to templateFunction | -| test.cpp:148:26:148:26 | x | test.cpp:140:4:140:11 | [summary param] 1 in function | test.cpp:140:4:140:11 | [summary] to write: ReturnValue in function | test.cpp:148:10:148:27 | call to function | -| test.cpp:157:26:157:26 | x | test.cpp:140:4:140:11 | [summary param] 1 in function | test.cpp:140:4:140:11 | [summary] to write: ReturnValue in function | test.cpp:157:13:157:20 | call to function | -| test.cpp:165:69:165:69 | x | test.cpp:128:5:128:21 | [summary param] 1 in templateFunction2 | test.cpp:128:5:128:21 | [summary] to write: ReturnValue in templateFunction2 | test.cpp:165:12:165:64 | call to templateFunction2 | | test.cpp:172:51:172:51 | x | test.cpp:164:34:164:34 | x | test.cpp:164:7:164:7 | *templateFunction3 | test.cpp:172:13:172:44 | call to templateFunction3 | -| windows.cpp:27:36:27:38 | *cmd | windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | windows.cpp:27:17:27:34 | **call to CommandLineToArgvA | -| windows.cpp:537:40:537:41 | *& ... | windows.cpp:473:17:473:37 | [summary param] *1 in RtlCopyVolatileMemory | windows.cpp:473:17:473:37 | [summary param] *0 in RtlCopyVolatileMemory [Return] | windows.cpp:537:27:537:37 | RtlCopyVolatileMemory output argument | -| windows.cpp:542:38:542:39 | *& ... | windows.cpp:479:17:479:35 | [summary param] *1 in RtlCopyDeviceMemory | windows.cpp:479:17:479:35 | [summary param] *0 in RtlCopyDeviceMemory [Return] | windows.cpp:542:25:542:35 | RtlCopyDeviceMemory output argument | -| windows.cpp:547:32:547:33 | *& ... | windows.cpp:485:6:485:18 | [summary param] *1 in RtlCopyMemory | windows.cpp:485:6:485:18 | [summary param] *0 in RtlCopyMemory [Return] | windows.cpp:547:19:547:29 | RtlCopyMemory output argument | -| windows.cpp:552:43:552:44 | *& ... | windows.cpp:493:6:493:29 | [summary param] *1 in RtlCopyMemoryNonTemporal | windows.cpp:493:6:493:29 | [summary param] *0 in RtlCopyMemoryNonTemporal [Return] | windows.cpp:552:30:552:40 | RtlCopyMemoryNonTemporal output argument | -| windows.cpp:561:39:561:44 | *buffer | windows.cpp:527:6:527:25 | [summary param] *1 in RtlInitUnicodeString | windows.cpp:527:6:527:25 | [summary param] *0 in RtlInitUnicodeString [Return] [*Buffer] | windows.cpp:561:26:561:36 | RtlInitUnicodeString output argument [*Buffer] | -| windows.cpp:563:40:563:50 | *& ... [*Buffer] | windows.cpp:510:6:510:25 | [summary param] *1 in RtlCopyUnicodeString [*Buffer] | windows.cpp:510:6:510:25 | [summary param] *0 in RtlCopyUnicodeString [Return] [*Buffer] | windows.cpp:563:26:563:37 | RtlCopyUnicodeString output argument [*Buffer] | -| windows.cpp:568:32:568:33 | *& ... | windows.cpp:515:6:515:18 | [summary param] *1 in RtlMoveMemory | windows.cpp:515:6:515:18 | [summary param] *0 in RtlMoveMemory [Return] | windows.cpp:568:19:568:29 | RtlMoveMemory output argument | -| windows.cpp:573:40:573:41 | *& ... | windows.cpp:521:17:521:37 | [summary param] *1 in RtlMoveVolatileMemory | windows.cpp:521:17:521:37 | [summary param] *0 in RtlMoveVolatileMemory [Return] | windows.cpp:573:27:573:37 | RtlMoveVolatileMemory output argument | -| windows.cpp:729:35:729:35 | *x | windows.cpp:714:6:714:20 | [summary param] *0 in WinHttpCrackUrl | windows.cpp:714:6:714:20 | [summary param] *3 in WinHttpCrackUrl [Return] | windows.cpp:729:44:729:57 | WinHttpCrackUrl output argument | testFailures diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml index 76d649152bd..130e13a9257 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.ext.yml @@ -21,4 +21,9 @@ extensions: - ["", "", False, "callWithNonTypeTemplate", "(const T &)", "", "Argument[*0]", "ReturnValue", "value", "manual"] - ["", "TemplateClass1", False, "templateFunction", "(T,U)", "", "Argument[0]", "ReturnValue", "value", "manual"] - ["", "TemplateClass1", True, "templateFunction2", "(U,V)", "", "Argument[1]", "ReturnValue", "value", "manual"] - - ["", "TemplateClass2", True, "function", "(U,T)", "", "Argument[1]", "ReturnValue", "value", "manual"] \ No newline at end of file + - ["", "TemplateClass2", True, "function", "(U,T)", "", "Argument[1]", "ReturnValue", "value", "manual"] + - ["", "", False, "read_field_from_struct", "", "", "Argument[*0].Field[MyNamespace::MyStructInNamespace::myField]", "ReturnValue", "value", "manual"] + - ["", "", False, "read_field_from_struct_2", "", "", "Argument[*0].Field[MyGlobalStruct::myField]", "ReturnValue", "value", "manual"] + - ["", "ReverseFlow", True, "get_ptr", "", "", "ReturnValue[*]", "Argument[-1].Field[ReverseFlow::value]", "value", "manual"] + - ["", "MyString", True, "operator[]", "", "", "ReturnValue[*]", "Argument[-1]", "taint", "manual"] + - ["", "MyString", True, "operator[]", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected index 03a0d442c1c..a1f44de8158 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected @@ -19,3 +19,7 @@ | test.cpp:149:10:149:10 | z | test-sink | | test.cpp:158:10:158:10 | z | test-sink | | test.cpp:173:10:173:10 | y | test-sink | +| test.cpp:188:10:188:10 | x | test-sink | +| test.cpp:201:10:201:10 | x | test-sink | +| test.cpp:218:11:218:11 | x | test-sink | +| test.cpp:224:11:224:11 | c | test-sink | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected index 4040cff4fd2..6585c88dc6d 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected @@ -13,6 +13,10 @@ | test.cpp:146:10:146:18 | call to ymlSource | local | | test.cpp:155:10:155:18 | call to ymlSource | local | | test.cpp:170:10:170:18 | call to ymlSource | local | +| test.cpp:186:14:186:22 | call to ymlSource | local | +| test.cpp:199:14:199:22 | call to ymlSource | local | +| test.cpp:216:18:216:26 | call to ymlSource | local | +| test.cpp:222:10:222:20 | call to ymlSource | local | | windows.cpp:22:15:22:29 | *call to GetCommandLineA | local | | windows.cpp:34:17:34:38 | *call to GetEnvironmentStringsA | local | | windows.cpp:39:36:39:38 | GetEnvironmentVariableA output argument | local | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp index 01bf6cc4093..ebb20bab649 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/test.cpp @@ -171,4 +171,56 @@ void test_class1() { Class1 c; auto y = c.templateFunction3(0UL, x); ymlSink(y); // $ ir +} + +namespace MyNamespace { + struct MyStructInNamespace { + int myField; + }; +} + +int read_field_from_struct(MyNamespace::MyStructInNamespace* s); + +void test_fully_qualified_field_test() { + MyNamespace::MyStructInNamespace s; + s.myField = ymlSource(); + int x = read_field_from_struct(&s); + ymlSink(x); // $ ir +} + +struct MyGlobalStruct { + int myField; +}; + +int read_field_from_struct_2(MyGlobalStruct* s); + +void test_fully_qualified_field_test_2() { + MyGlobalStruct s; + s.myField = ymlSource(); + int x = read_field_from_struct_2(&s); + ymlSink(x); // $ ir +} + +struct ReverseFlow { + int value; + int& get_ptr(); +}; + +struct MyString { + char& operator[](unsigned); +}; + +void test_reverse_flow(unsigned i, unsigned j) { + { + ReverseFlow rf; + rf.get_ptr() = ymlSource(); + int x = rf.value; + ymlSink(x); // $ ir + } + { + MyString s; + s[i] = ymlSource(); + char c = s[j]; + ymlSink(c); // $ ir + } } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.expected b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.expected index 0faf016ee41..7d1e2bc9327 100644 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.expected +++ b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.expected @@ -33,34 +33,34 @@ summaryCalls | file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0ReturnToReturnFirst in madCallArg0ReturnToReturnFirst | | file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0WithValue in madCallArg0WithValue | summarizedCallables -| tests.cpp:144:5:144:19 | madArg0ToReturn | -| tests.cpp:145:6:145:28 | madArg0ToReturnIndirect | -| tests.cpp:147:5:147:28 | madArg0ToReturnValueFlow | -| tests.cpp:148:5:148:27 | madArg0IndirectToReturn | -| tests.cpp:149:5:149:33 | madArg0DoubleIndirectToReturn | -| tests.cpp:150:5:150:30 | madArg0NotIndirectToReturn | -| tests.cpp:151:6:151:26 | madArg0ToArg1Indirect | -| tests.cpp:152:6:152:34 | madArg0IndirectToArg1Indirect | -| tests.cpp:153:5:153:18 | madArgsComplex | -| tests.cpp:154:5:154:14 | madArgsAny | -| tests.cpp:155:5:155:28 | madAndImplementedComplex | -| tests.cpp:160:5:160:24 | madArg0FieldToReturn | -| tests.cpp:161:5:161:32 | madArg0IndirectFieldToReturn | -| tests.cpp:162:5:162:32 | madArg0FieldIndirectToReturn | -| tests.cpp:163:13:163:32 | madArg0ToReturnField | -| tests.cpp:164:14:164:41 | madArg0ToReturnIndirectField | -| tests.cpp:165:13:165:40 | madArg0ToReturnFieldIndirect | -| tests.cpp:284:7:284:19 | madArg0ToSelf | -| tests.cpp:285:6:285:20 | madSelfToReturn | -| tests.cpp:287:7:287:20 | madArg0ToField | -| tests.cpp:288:6:288:21 | madFieldToReturn | -| tests.cpp:313:7:313:30 | namespaceMadSelfToReturn | -| tests.cpp:434:5:434:29 | madCallArg0ReturnToReturn | -| tests.cpp:435:9:435:38 | madCallArg0ReturnToReturnFirst | -| tests.cpp:436:6:436:25 | madCallArg0WithValue | -| tests.cpp:437:5:437:36 | madCallReturnValueIgnoreFunction | -| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | -| tests.cpp:471:5:471:17 | receive_array | +| tests.cpp:127:5:127:19 | madArg0ToReturn | +| tests.cpp:128:6:128:28 | madArg0ToReturnIndirect | +| tests.cpp:130:5:130:28 | madArg0ToReturnValueFlow | +| tests.cpp:131:5:131:27 | madArg0IndirectToReturn | +| tests.cpp:132:5:132:33 | madArg0DoubleIndirectToReturn | +| tests.cpp:133:5:133:30 | madArg0NotIndirectToReturn | +| tests.cpp:134:6:134:26 | madArg0ToArg1Indirect | +| tests.cpp:135:6:135:34 | madArg0IndirectToArg1Indirect | +| tests.cpp:136:5:136:18 | madArgsComplex | +| tests.cpp:137:5:137:14 | madArgsAny | +| tests.cpp:138:5:138:28 | madAndImplementedComplex | +| tests.cpp:143:5:143:24 | madArg0FieldToReturn | +| tests.cpp:144:5:144:32 | madArg0IndirectFieldToReturn | +| tests.cpp:145:5:145:32 | madArg0FieldIndirectToReturn | +| tests.cpp:146:13:146:32 | madArg0ToReturnField | +| tests.cpp:147:14:147:41 | madArg0ToReturnIndirectField | +| tests.cpp:148:13:148:40 | madArg0ToReturnFieldIndirect | +| tests.cpp:250:7:250:19 | madArg0ToSelf | +| tests.cpp:251:6:251:20 | madSelfToReturn | +| tests.cpp:253:7:253:20 | madArg0ToField | +| tests.cpp:254:6:254:21 | madFieldToReturn | +| tests.cpp:277:7:277:30 | namespaceMadSelfToReturn | +| tests.cpp:392:5:392:29 | madCallArg0ReturnToReturn | +| tests.cpp:393:9:393:38 | madCallArg0ReturnToReturnFirst | +| tests.cpp:394:6:394:25 | madCallArg0WithValue | +| tests.cpp:395:5:395:36 | madCallReturnValueIgnoreFunction | +| tests.cpp:417:5:417:31 | parameter_ref_to_return_ref | +| tests.cpp:429:5:429:17 | receive_array | sourceCallables | tests.cpp:3:5:3:10 | source | | tests.cpp:4:6:4:14 | sourcePtr | @@ -82,297 +82,284 @@ sourceCallables | tests.cpp:19:6:19:32 | remoteMadSourceIndirectArg1 | | tests.cpp:19:39:19:39 | x | | tests.cpp:19:47:19:47 | y | -| tests.cpp:20:5:20:22 | remoteMadSourceVar | -| tests.cpp:21:6:21:31 | remoteMadSourceVarIndirect | -| tests.cpp:24:6:24:28 | namespaceLocalMadSource | -| tests.cpp:25:6:25:31 | namespaceLocalMadSourceVar | -| tests.cpp:28:7:28:30 | namespace2LocalMadSource | -| tests.cpp:31:6:31:19 | localMadSource | -| tests.cpp:33:5:33:27 | namespaceLocalMadSource | -| tests.cpp:35:6:35:17 | test_sources | -| tests.cpp:50:6:50:6 | v | -| tests.cpp:51:7:51:16 | v_indirect | -| tests.cpp:52:6:52:13 | v_direct | -| tests.cpp:63:6:63:6 | a | -| tests.cpp:63:9:63:9 | b | -| tests.cpp:63:12:63:12 | c | -| tests.cpp:63:15:63:15 | d | -| tests.cpp:75:6:75:6 | e | -| tests.cpp:85:6:85:26 | remoteMadSourceParam0 | -| tests.cpp:85:32:85:32 | x | -| tests.cpp:92:6:92:16 | madSinkArg0 | -| tests.cpp:92:22:92:22 | x | -| tests.cpp:93:6:93:13 | notASink | -| tests.cpp:93:19:93:19 | x | -| tests.cpp:94:6:94:16 | madSinkArg1 | -| tests.cpp:94:22:94:22 | x | -| tests.cpp:94:29:94:29 | y | -| tests.cpp:95:6:95:17 | madSinkArg01 | -| tests.cpp:95:23:95:23 | x | -| tests.cpp:95:30:95:30 | y | -| tests.cpp:95:37:95:37 | z | -| tests.cpp:96:6:96:17 | madSinkArg02 | -| tests.cpp:96:23:96:23 | x | -| tests.cpp:96:30:96:30 | y | -| tests.cpp:96:37:96:37 | z | -| tests.cpp:97:6:97:24 | madSinkIndirectArg0 | -| tests.cpp:97:31:97:31 | x | -| tests.cpp:98:6:98:30 | madSinkDoubleIndirectArg0 | -| tests.cpp:98:38:98:38 | x | -| tests.cpp:99:5:99:14 | madSinkVar | -| tests.cpp:100:6:100:23 | madSinkVarIndirect | -| tests.cpp:102:6:102:15 | test_sinks | -| tests.cpp:116:6:116:6 | a | -| tests.cpp:117:7:117:11 | a_ptr | -| tests.cpp:132:6:132:18 | madSinkParam0 | -| tests.cpp:132:24:132:24 | x | -| tests.cpp:138:8:138:8 | operator= | -| tests.cpp:138:8:138:8 | operator= | -| tests.cpp:138:8:138:18 | MyContainer | -| tests.cpp:139:6:139:10 | value | -| tests.cpp:140:6:140:11 | value2 | -| tests.cpp:141:7:141:9 | ptr | -| tests.cpp:144:5:144:19 | madArg0ToReturn | -| tests.cpp:144:25:144:25 | x | -| tests.cpp:145:6:145:28 | madArg0ToReturnIndirect | -| tests.cpp:145:34:145:34 | x | -| tests.cpp:146:5:146:15 | notASummary | -| tests.cpp:146:21:146:21 | x | -| tests.cpp:147:5:147:28 | madArg0ToReturnValueFlow | -| tests.cpp:147:34:147:34 | x | -| tests.cpp:148:5:148:27 | madArg0IndirectToReturn | -| tests.cpp:148:34:148:34 | x | -| tests.cpp:149:5:149:33 | madArg0DoubleIndirectToReturn | -| tests.cpp:149:41:149:41 | x | -| tests.cpp:150:5:150:30 | madArg0NotIndirectToReturn | -| tests.cpp:150:37:150:37 | x | -| tests.cpp:151:6:151:26 | madArg0ToArg1Indirect | -| tests.cpp:151:32:151:32 | x | -| tests.cpp:151:40:151:40 | y | -| tests.cpp:152:6:152:34 | madArg0IndirectToArg1Indirect | -| tests.cpp:152:47:152:47 | x | -| tests.cpp:152:55:152:55 | y | -| tests.cpp:153:5:153:18 | madArgsComplex | -| tests.cpp:153:25:153:25 | a | -| tests.cpp:153:33:153:33 | b | -| tests.cpp:153:40:153:40 | c | -| tests.cpp:153:47:153:47 | d | -| tests.cpp:154:5:154:14 | madArgsAny | -| tests.cpp:154:20:154:20 | a | -| tests.cpp:154:28:154:28 | b | -| tests.cpp:155:5:155:28 | madAndImplementedComplex | -| tests.cpp:155:34:155:34 | a | -| tests.cpp:155:41:155:41 | b | -| tests.cpp:155:48:155:48 | c | -| tests.cpp:160:5:160:24 | madArg0FieldToReturn | -| tests.cpp:160:38:160:39 | mc | -| tests.cpp:161:5:161:32 | madArg0IndirectFieldToReturn | -| tests.cpp:161:47:161:48 | mc | -| tests.cpp:162:5:162:32 | madArg0FieldIndirectToReturn | -| tests.cpp:162:46:162:47 | mc | -| tests.cpp:163:13:163:32 | madArg0ToReturnField | -| tests.cpp:163:38:163:38 | x | -| tests.cpp:164:14:164:41 | madArg0ToReturnIndirectField | -| tests.cpp:164:47:164:47 | x | -| tests.cpp:165:13:165:40 | madArg0ToReturnFieldIndirect | -| tests.cpp:165:46:165:46 | x | -| tests.cpp:167:13:167:30 | madFieldToFieldVar | -| tests.cpp:168:13:168:38 | madFieldToIndirectFieldVar | -| tests.cpp:169:14:169:39 | madIndirectFieldToFieldVar | -| tests.cpp:171:6:171:19 | test_summaries | -| tests.cpp:174:6:174:6 | a | -| tests.cpp:174:9:174:9 | b | -| tests.cpp:174:12:174:12 | c | -| tests.cpp:174:15:174:15 | d | -| tests.cpp:174:18:174:18 | e | -| tests.cpp:175:7:175:11 | a_ptr | -| tests.cpp:218:14:218:16 | mc1 | -| tests.cpp:218:19:218:21 | mc2 | -| tests.cpp:237:15:237:18 | rtn1 | -| tests.cpp:240:14:240:17 | rtn2 | -| tests.cpp:241:7:241:14 | rtn2_ptr | -| tests.cpp:267:7:267:7 | operator= | -| tests.cpp:267:7:267:7 | operator= | -| tests.cpp:267:7:267:13 | MyClass | -| tests.cpp:270:6:270:26 | memberRemoteMadSource | -| tests.cpp:271:7:271:39 | memberRemoteMadSourceIndirectArg0 | -| tests.cpp:271:46:271:46 | x | -| tests.cpp:272:6:272:29 | memberRemoteMadSourceVar | -| tests.cpp:273:7:273:21 | qualifierSource | -| tests.cpp:274:7:274:26 | qualifierFieldSource | -| tests.cpp:277:7:277:23 | memberMadSinkArg0 | -| tests.cpp:277:29:277:29 | x | -| tests.cpp:278:6:278:21 | memberMadSinkVar | -| tests.cpp:279:7:279:19 | qualifierSink | -| tests.cpp:280:7:280:23 | qualifierArg0Sink | -| tests.cpp:280:29:280:29 | x | -| tests.cpp:281:7:281:24 | qualifierFieldSink | -| tests.cpp:284:7:284:19 | madArg0ToSelf | -| tests.cpp:284:25:284:25 | x | -| tests.cpp:285:6:285:20 | madSelfToReturn | -| tests.cpp:286:6:286:16 | notASummary | -| tests.cpp:287:7:287:20 | madArg0ToField | -| tests.cpp:287:26:287:26 | x | -| tests.cpp:288:6:288:21 | madFieldToReturn | -| tests.cpp:290:6:290:8 | val | -| tests.cpp:293:7:293:7 | MyDerivedClass | -| tests.cpp:293:7:293:7 | operator= | -| tests.cpp:293:7:293:7 | operator= | -| tests.cpp:293:7:293:20 | MyDerivedClass | -| tests.cpp:295:6:295:28 | subtypeRemoteMadSource1 | -| tests.cpp:296:6:296:21 | subtypeNonSource | -| tests.cpp:297:6:297:28 | subtypeRemoteMadSource2 | -| tests.cpp:300:9:300:15 | source2 | -| tests.cpp:301:6:301:9 | sink | -| tests.cpp:301:19:301:20 | mc | -| tests.cpp:304:8:304:8 | operator= | -| tests.cpp:304:8:304:8 | operator= | -| tests.cpp:304:8:304:14 | MyClass | -| tests.cpp:307:8:307:33 | namespaceMemberMadSinkArg0 | -| tests.cpp:307:39:307:39 | x | -| tests.cpp:308:15:308:46 | namespaceStaticMemberMadSinkArg0 | -| tests.cpp:308:52:308:52 | x | -| tests.cpp:309:7:309:31 | namespaceMemberMadSinkVar | -| tests.cpp:310:14:310:44 | namespaceStaticMemberMadSinkVar | -| tests.cpp:313:7:313:30 | namespaceMadSelfToReturn | -| tests.cpp:317:22:317:28 | source3 | -| tests.cpp:319:6:319:23 | test_class_members | -| tests.cpp:320:10:320:11 | mc | -| tests.cpp:320:14:320:16 | mc2 | -| tests.cpp:320:19:320:21 | mc3 | -| tests.cpp:320:24:320:26 | mc4 | -| tests.cpp:320:29:320:31 | mc5 | -| tests.cpp:320:34:320:36 | mc6 | -| tests.cpp:320:39:320:41 | mc7 | -| tests.cpp:320:44:320:46 | mc8 | -| tests.cpp:320:49:320:51 | mc9 | -| tests.cpp:320:54:320:57 | mc10 | -| tests.cpp:320:60:320:63 | mc11 | -| tests.cpp:321:11:321:13 | ptr | -| tests.cpp:321:17:321:23 | mc4_ptr | -| tests.cpp:322:17:322:19 | mdc | -| tests.cpp:323:23:323:25 | mnc | -| tests.cpp:323:28:323:31 | mnc2 | -| tests.cpp:324:24:324:31 | mnc2_ptr | -| tests.cpp:330:6:330:6 | a | -| tests.cpp:429:8:429:8 | operator= | -| tests.cpp:429:8:429:8 | operator= | -| tests.cpp:429:8:429:14 | intPair | -| tests.cpp:430:6:430:10 | first | -| tests.cpp:431:6:431:11 | second | -| tests.cpp:434:5:434:29 | madCallArg0ReturnToReturn | -| tests.cpp:434:37:434:43 | fun_ptr | -| tests.cpp:435:9:435:38 | madCallArg0ReturnToReturnFirst | -| tests.cpp:435:46:435:52 | fun_ptr | -| tests.cpp:436:6:436:25 | madCallArg0WithValue | -| tests.cpp:436:34:436:40 | fun_ptr | -| tests.cpp:436:53:436:57 | value | -| tests.cpp:437:5:437:36 | madCallReturnValueIgnoreFunction | -| tests.cpp:437:45:437:51 | fun_ptr | -| tests.cpp:437:64:437:68 | value | -| tests.cpp:439:5:439:14 | getTainted | -| tests.cpp:440:6:440:13 | useValue | -| tests.cpp:440:19:440:19 | x | -| tests.cpp:441:6:441:17 | dontUseValue | -| tests.cpp:441:23:441:23 | x | -| tests.cpp:443:6:443:27 | test_function_pointers | -| tests.cpp:456:19:456:19 | X | -| tests.cpp:457:8:457:35 | StructWithTypedefInParameter | -| tests.cpp:457:8:457:35 | StructWithTypedefInParameter | -| tests.cpp:458:12:458:15 | Type | -| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | -| tests.cpp:459:5:459:31 | parameter_ref_to_return_ref | -| tests.cpp:459:45:459:45 | x | -| tests.cpp:459:45:459:45 | x | -| tests.cpp:462:6:462:37 | test_parameter_ref_to_return_ref | -| tests.cpp:463:6:463:6 | x | -| tests.cpp:464:36:464:36 | s | -| tests.cpp:465:6:465:6 | y | -| tests.cpp:469:7:469:9 | INT | -| tests.cpp:471:5:471:17 | receive_array | -| tests.cpp:471:23:471:23 | a | -| tests.cpp:473:6:473:23 | test_receive_array | -| tests.cpp:474:6:474:6 | x | -| tests.cpp:475:6:475:10 | array | -| tests.cpp:476:6:476:6 | y | +| tests.cpp:23:7:23:30 | namespace2LocalMadSource | +| tests.cpp:26:6:26:19 | localMadSource | +| tests.cpp:28:5:28:27 | namespaceLocalMadSource | +| tests.cpp:30:6:30:17 | test_sources | +| tests.cpp:45:6:45:6 | v | +| tests.cpp:46:7:46:16 | v_indirect | +| tests.cpp:47:6:47:13 | v_direct | +| tests.cpp:58:6:58:6 | a | +| tests.cpp:58:9:58:9 | b | +| tests.cpp:58:12:58:12 | c | +| tests.cpp:58:15:58:15 | d | +| tests.cpp:67:6:67:6 | e | +| tests.cpp:75:6:75:26 | remoteMadSourceParam0 | +| tests.cpp:75:32:75:32 | x | +| tests.cpp:82:6:82:16 | madSinkArg0 | +| tests.cpp:82:22:82:22 | x | +| tests.cpp:83:6:83:13 | notASink | +| tests.cpp:83:19:83:19 | x | +| tests.cpp:84:6:84:16 | madSinkArg1 | +| tests.cpp:84:22:84:22 | x | +| tests.cpp:84:29:84:29 | y | +| tests.cpp:85:6:85:17 | madSinkArg01 | +| tests.cpp:85:23:85:23 | x | +| tests.cpp:85:30:85:30 | y | +| tests.cpp:85:37:85:37 | z | +| tests.cpp:86:6:86:17 | madSinkArg02 | +| tests.cpp:86:23:86:23 | x | +| tests.cpp:86:30:86:30 | y | +| tests.cpp:86:37:86:37 | z | +| tests.cpp:87:6:87:24 | madSinkIndirectArg0 | +| tests.cpp:87:31:87:31 | x | +| tests.cpp:88:6:88:30 | madSinkDoubleIndirectArg0 | +| tests.cpp:88:38:88:38 | x | +| tests.cpp:92:6:92:15 | test_sinks | +| tests.cpp:106:6:106:6 | a | +| tests.cpp:107:7:107:11 | a_ptr | +| tests.cpp:115:6:115:18 | madSinkParam0 | +| tests.cpp:115:24:115:24 | x | +| tests.cpp:121:8:121:8 | operator= | +| tests.cpp:121:8:121:8 | operator= | +| tests.cpp:121:8:121:18 | MyContainer | +| tests.cpp:122:6:122:10 | value | +| tests.cpp:123:6:123:11 | value2 | +| tests.cpp:124:7:124:9 | ptr | +| tests.cpp:127:5:127:19 | madArg0ToReturn | +| tests.cpp:127:25:127:25 | x | +| tests.cpp:128:6:128:28 | madArg0ToReturnIndirect | +| tests.cpp:128:34:128:34 | x | +| tests.cpp:129:5:129:15 | notASummary | +| tests.cpp:129:21:129:21 | x | +| tests.cpp:130:5:130:28 | madArg0ToReturnValueFlow | +| tests.cpp:130:34:130:34 | x | +| tests.cpp:131:5:131:27 | madArg0IndirectToReturn | +| tests.cpp:131:34:131:34 | x | +| tests.cpp:132:5:132:33 | madArg0DoubleIndirectToReturn | +| tests.cpp:132:41:132:41 | x | +| tests.cpp:133:5:133:30 | madArg0NotIndirectToReturn | +| tests.cpp:133:37:133:37 | x | +| tests.cpp:134:6:134:26 | madArg0ToArg1Indirect | +| tests.cpp:134:32:134:32 | x | +| tests.cpp:134:40:134:40 | y | +| tests.cpp:135:6:135:34 | madArg0IndirectToArg1Indirect | +| tests.cpp:135:47:135:47 | x | +| tests.cpp:135:55:135:55 | y | +| tests.cpp:136:5:136:18 | madArgsComplex | +| tests.cpp:136:25:136:25 | a | +| tests.cpp:136:33:136:33 | b | +| tests.cpp:136:40:136:40 | c | +| tests.cpp:136:47:136:47 | d | +| tests.cpp:137:5:137:14 | madArgsAny | +| tests.cpp:137:20:137:20 | a | +| tests.cpp:137:28:137:28 | b | +| tests.cpp:138:5:138:28 | madAndImplementedComplex | +| tests.cpp:138:34:138:34 | a | +| tests.cpp:138:41:138:41 | b | +| tests.cpp:138:48:138:48 | c | +| tests.cpp:143:5:143:24 | madArg0FieldToReturn | +| tests.cpp:143:38:143:39 | mc | +| tests.cpp:144:5:144:32 | madArg0IndirectFieldToReturn | +| tests.cpp:144:47:144:48 | mc | +| tests.cpp:145:5:145:32 | madArg0FieldIndirectToReturn | +| tests.cpp:145:46:145:47 | mc | +| tests.cpp:146:13:146:32 | madArg0ToReturnField | +| tests.cpp:146:38:146:38 | x | +| tests.cpp:147:14:147:41 | madArg0ToReturnIndirectField | +| tests.cpp:147:47:147:47 | x | +| tests.cpp:148:13:148:40 | madArg0ToReturnFieldIndirect | +| tests.cpp:148:46:148:46 | x | +| tests.cpp:150:6:150:19 | test_summaries | +| tests.cpp:153:6:153:6 | a | +| tests.cpp:153:9:153:9 | b | +| tests.cpp:153:12:153:12 | c | +| tests.cpp:153:15:153:15 | d | +| tests.cpp:153:18:153:18 | e | +| tests.cpp:154:7:154:11 | a_ptr | +| tests.cpp:197:14:197:16 | mc1 | +| tests.cpp:197:19:197:21 | mc2 | +| tests.cpp:216:15:216:18 | rtn1 | +| tests.cpp:219:14:219:17 | rtn2 | +| tests.cpp:220:7:220:14 | rtn2_ptr | +| tests.cpp:233:7:233:7 | operator= | +| tests.cpp:233:7:233:7 | operator= | +| tests.cpp:233:7:233:13 | MyClass | +| tests.cpp:236:6:236:26 | memberRemoteMadSource | +| tests.cpp:237:7:237:39 | memberRemoteMadSourceIndirectArg0 | +| tests.cpp:237:46:237:46 | x | +| tests.cpp:239:7:239:21 | qualifierSource | +| tests.cpp:240:7:240:26 | qualifierFieldSource | +| tests.cpp:243:7:243:23 | memberMadSinkArg0 | +| tests.cpp:243:29:243:29 | x | +| tests.cpp:245:7:245:19 | qualifierSink | +| tests.cpp:246:7:246:23 | qualifierArg0Sink | +| tests.cpp:246:29:246:29 | x | +| tests.cpp:247:7:247:24 | qualifierFieldSink | +| tests.cpp:250:7:250:19 | madArg0ToSelf | +| tests.cpp:250:25:250:25 | x | +| tests.cpp:251:6:251:20 | madSelfToReturn | +| tests.cpp:252:6:252:16 | notASummary | +| tests.cpp:253:7:253:20 | madArg0ToField | +| tests.cpp:253:26:253:26 | x | +| tests.cpp:254:6:254:21 | madFieldToReturn | +| tests.cpp:256:6:256:8 | val | +| tests.cpp:259:7:259:7 | MyDerivedClass | +| tests.cpp:259:7:259:7 | operator= | +| tests.cpp:259:7:259:7 | operator= | +| tests.cpp:259:7:259:20 | MyDerivedClass | +| tests.cpp:261:6:261:28 | subtypeRemoteMadSource1 | +| tests.cpp:262:6:262:21 | subtypeNonSource | +| tests.cpp:263:6:263:28 | subtypeRemoteMadSource2 | +| tests.cpp:266:9:266:15 | source2 | +| tests.cpp:267:6:267:9 | sink | +| tests.cpp:267:19:267:20 | mc | +| tests.cpp:270:8:270:8 | operator= | +| tests.cpp:270:8:270:8 | operator= | +| tests.cpp:270:8:270:14 | MyClass | +| tests.cpp:273:8:273:33 | namespaceMemberMadSinkArg0 | +| tests.cpp:273:39:273:39 | x | +| tests.cpp:274:15:274:46 | namespaceStaticMemberMadSinkArg0 | +| tests.cpp:274:52:274:52 | x | +| tests.cpp:277:7:277:30 | namespaceMadSelfToReturn | +| tests.cpp:281:22:281:28 | source3 | +| tests.cpp:283:6:283:23 | test_class_members | +| tests.cpp:284:10:284:11 | mc | +| tests.cpp:284:14:284:16 | mc2 | +| tests.cpp:284:19:284:21 | mc3 | +| tests.cpp:284:24:284:26 | mc4 | +| tests.cpp:284:29:284:31 | mc5 | +| tests.cpp:284:34:284:36 | mc6 | +| tests.cpp:284:39:284:41 | mc7 | +| tests.cpp:284:44:284:46 | mc8 | +| tests.cpp:284:49:284:51 | mc9 | +| tests.cpp:284:54:284:57 | mc10 | +| tests.cpp:284:60:284:63 | mc11 | +| tests.cpp:285:11:285:13 | ptr | +| tests.cpp:285:17:285:23 | mc4_ptr | +| tests.cpp:286:17:286:19 | mdc | +| tests.cpp:287:23:287:25 | mnc | +| tests.cpp:287:28:287:31 | mnc2 | +| tests.cpp:288:24:288:31 | mnc2_ptr | +| tests.cpp:294:6:294:6 | a | +| tests.cpp:387:8:387:8 | operator= | +| tests.cpp:387:8:387:8 | operator= | +| tests.cpp:387:8:387:14 | intPair | +| tests.cpp:388:6:388:10 | first | +| tests.cpp:389:6:389:11 | second | +| tests.cpp:392:5:392:29 | madCallArg0ReturnToReturn | +| tests.cpp:392:37:392:43 | fun_ptr | +| tests.cpp:393:9:393:38 | madCallArg0ReturnToReturnFirst | +| tests.cpp:393:46:393:52 | fun_ptr | +| tests.cpp:394:6:394:25 | madCallArg0WithValue | +| tests.cpp:394:34:394:40 | fun_ptr | +| tests.cpp:394:53:394:57 | value | +| tests.cpp:395:5:395:36 | madCallReturnValueIgnoreFunction | +| tests.cpp:395:45:395:51 | fun_ptr | +| tests.cpp:395:64:395:68 | value | +| tests.cpp:397:5:397:14 | getTainted | +| tests.cpp:398:6:398:13 | useValue | +| tests.cpp:398:19:398:19 | x | +| tests.cpp:399:6:399:17 | dontUseValue | +| tests.cpp:399:23:399:23 | x | +| tests.cpp:401:6:401:27 | test_function_pointers | +| tests.cpp:414:19:414:19 | X | +| tests.cpp:415:8:415:35 | StructWithTypedefInParameter | +| tests.cpp:415:8:415:35 | StructWithTypedefInParameter | +| tests.cpp:416:12:416:15 | Type | +| tests.cpp:417:5:417:31 | parameter_ref_to_return_ref | +| tests.cpp:417:5:417:31 | parameter_ref_to_return_ref | +| tests.cpp:417:45:417:45 | x | +| tests.cpp:417:45:417:45 | x | +| tests.cpp:420:6:420:37 | test_parameter_ref_to_return_ref | +| tests.cpp:421:6:421:6 | x | +| tests.cpp:422:36:422:36 | s | +| tests.cpp:423:6:423:6 | y | +| tests.cpp:427:7:427:9 | INT | +| tests.cpp:429:5:429:17 | receive_array | +| tests.cpp:429:23:429:23 | a | +| tests.cpp:431:6:431:23 | test_receive_array | +| tests.cpp:432:6:432:6 | x | +| tests.cpp:433:6:433:10 | array | +| tests.cpp:434:6:434:6 | y | flowSummaryNode -| tests.cpp:144:5:144:19 | [summary param] 0 in madArg0ToReturn | ParameterNode | madArg0ToReturn | madArg0ToReturn | -| tests.cpp:144:5:144:19 | [summary] to write: ReturnValue in madArg0ToReturn | ReturnNode | madArg0ToReturn | madArg0ToReturn | -| tests.cpp:145:6:145:28 | [summary param] 0 in madArg0ToReturnIndirect | ParameterNode | madArg0ToReturnIndirect | madArg0ToReturnIndirect | -| tests.cpp:145:6:145:28 | [summary] to write: ReturnValue[*] in madArg0ToReturnIndirect | ReturnNode | madArg0ToReturnIndirect | madArg0ToReturnIndirect | -| tests.cpp:147:5:147:28 | [summary param] 0 in madArg0ToReturnValueFlow | ParameterNode | madArg0ToReturnValueFlow | madArg0ToReturnValueFlow | -| tests.cpp:147:5:147:28 | [summary] to write: ReturnValue in madArg0ToReturnValueFlow | ReturnNode | madArg0ToReturnValueFlow | madArg0ToReturnValueFlow | -| tests.cpp:148:5:148:27 | [summary param] *0 in madArg0IndirectToReturn | ParameterNode | madArg0IndirectToReturn | madArg0IndirectToReturn | -| tests.cpp:148:5:148:27 | [summary] to write: ReturnValue in madArg0IndirectToReturn | ReturnNode | madArg0IndirectToReturn | madArg0IndirectToReturn | -| tests.cpp:149:5:149:33 | [summary param] **0 in madArg0DoubleIndirectToReturn | ParameterNode | madArg0DoubleIndirectToReturn | madArg0DoubleIndirectToReturn | -| tests.cpp:149:5:149:33 | [summary] to write: ReturnValue in madArg0DoubleIndirectToReturn | ReturnNode | madArg0DoubleIndirectToReturn | madArg0DoubleIndirectToReturn | -| tests.cpp:150:5:150:30 | [summary param] 0 in madArg0NotIndirectToReturn | ParameterNode | madArg0NotIndirectToReturn | madArg0NotIndirectToReturn | -| tests.cpp:150:5:150:30 | [summary] to write: ReturnValue in madArg0NotIndirectToReturn | ReturnNode | madArg0NotIndirectToReturn | madArg0NotIndirectToReturn | -| tests.cpp:151:6:151:26 | [summary param] 0 in madArg0ToArg1Indirect | ParameterNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect | -| tests.cpp:151:6:151:26 | [summary param] *1 in madArg0ToArg1Indirect | ParameterNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect | -| tests.cpp:151:6:151:26 | [summary] to write: Argument[*1] in madArg0ToArg1Indirect | PostUpdateNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect | -| tests.cpp:152:6:152:34 | [summary param] *0 in madArg0IndirectToArg1Indirect | ParameterNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect | -| tests.cpp:152:6:152:34 | [summary param] *1 in madArg0IndirectToArg1Indirect | ParameterNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect | -| tests.cpp:152:6:152:34 | [summary] to write: Argument[*1] in madArg0IndirectToArg1Indirect | PostUpdateNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect | -| tests.cpp:153:5:153:18 | [summary param] 2 in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex | -| tests.cpp:153:5:153:18 | [summary param] *0 in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex | -| tests.cpp:153:5:153:18 | [summary param] *1 in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex | -| tests.cpp:153:5:153:18 | [summary] to write: ReturnValue in madArgsComplex | ReturnNode | madArgsComplex | madArgsComplex | -| tests.cpp:155:5:155:28 | [summary param] 2 in madAndImplementedComplex | ParameterNode | madAndImplementedComplex | madAndImplementedComplex | -| tests.cpp:155:5:155:28 | [summary] to write: ReturnValue in madAndImplementedComplex | ReturnNode | madAndImplementedComplex | madAndImplementedComplex | -| tests.cpp:160:5:160:24 | [summary param] 0 in madArg0FieldToReturn | ParameterNode | madArg0FieldToReturn | madArg0FieldToReturn | -| tests.cpp:160:5:160:24 | [summary] read: Argument[0].Field[value] in madArg0FieldToReturn | | madArg0FieldToReturn | madArg0FieldToReturn | -| tests.cpp:160:5:160:24 | [summary] to write: ReturnValue in madArg0FieldToReturn | ReturnNode | madArg0FieldToReturn | madArg0FieldToReturn | -| tests.cpp:161:5:161:32 | [summary param] *0 in madArg0IndirectFieldToReturn | ParameterNode | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn | -| tests.cpp:161:5:161:32 | [summary] read: Argument[*0].Field[value] in madArg0IndirectFieldToReturn | | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn | -| tests.cpp:161:5:161:32 | [summary] to write: ReturnValue in madArg0IndirectFieldToReturn | ReturnNode | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn | -| tests.cpp:162:5:162:32 | [summary param] 0 in madArg0FieldIndirectToReturn | ParameterNode | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn | -| tests.cpp:162:5:162:32 | [summary] read: Argument[0].Field[*ptr] in madArg0FieldIndirectToReturn | | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn | -| tests.cpp:162:5:162:32 | [summary] to write: ReturnValue in madArg0FieldIndirectToReturn | ReturnNode | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn | -| tests.cpp:163:13:163:32 | [summary param] 0 in madArg0ToReturnField | ParameterNode | madArg0ToReturnField | madArg0ToReturnField | -| tests.cpp:163:13:163:32 | [summary] to write: ReturnValue in madArg0ToReturnField | ReturnNode | madArg0ToReturnField | madArg0ToReturnField | -| tests.cpp:163:13:163:32 | [summary] to write: ReturnValue.Field[value] in madArg0ToReturnField | | madArg0ToReturnField | madArg0ToReturnField | -| tests.cpp:164:14:164:41 | [summary param] 0 in madArg0ToReturnIndirectField | ParameterNode | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField | -| tests.cpp:164:14:164:41 | [summary] to write: ReturnValue[*] in madArg0ToReturnIndirectField | ReturnNode | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField | -| tests.cpp:164:14:164:41 | [summary] to write: ReturnValue[*].Field[value] in madArg0ToReturnIndirectField | | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField | -| tests.cpp:165:13:165:40 | [summary param] 0 in madArg0ToReturnFieldIndirect | ParameterNode | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect | -| tests.cpp:165:13:165:40 | [summary] to write: ReturnValue in madArg0ToReturnFieldIndirect | ReturnNode | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect | -| tests.cpp:165:13:165:40 | [summary] to write: ReturnValue.Field[*ptr] in madArg0ToReturnFieldIndirect | | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect | -| tests.cpp:284:7:284:19 | [summary param] 0 in madArg0ToSelf | ParameterNode | madArg0ToSelf | madArg0ToSelf | -| tests.cpp:284:7:284:19 | [summary param] this in madArg0ToSelf | ParameterNode | madArg0ToSelf | madArg0ToSelf | -| tests.cpp:284:7:284:19 | [summary] to write: Argument[this] in madArg0ToSelf | PostUpdateNode | madArg0ToSelf | madArg0ToSelf | -| tests.cpp:285:6:285:20 | [summary param] this in madSelfToReturn | ParameterNode | madSelfToReturn | madSelfToReturn | -| tests.cpp:285:6:285:20 | [summary] to write: ReturnValue in madSelfToReturn | ReturnNode | madSelfToReturn | madSelfToReturn | -| tests.cpp:287:7:287:20 | [summary param] 0 in madArg0ToField | ParameterNode | madArg0ToField | madArg0ToField | -| tests.cpp:287:7:287:20 | [summary param] this in madArg0ToField | ParameterNode | madArg0ToField | madArg0ToField | -| tests.cpp:287:7:287:20 | [summary] to write: Argument[this] in madArg0ToField | PostUpdateNode | madArg0ToField | madArg0ToField | -| tests.cpp:287:7:287:20 | [summary] to write: Argument[this].Field[val] in madArg0ToField | | madArg0ToField | madArg0ToField | -| tests.cpp:288:6:288:21 | [summary param] this in madFieldToReturn | ParameterNode | madFieldToReturn | madFieldToReturn | -| tests.cpp:288:6:288:21 | [summary] read: Argument[this].Field[val] in madFieldToReturn | | madFieldToReturn | madFieldToReturn | -| tests.cpp:288:6:288:21 | [summary] to write: ReturnValue in madFieldToReturn | ReturnNode | madFieldToReturn | madFieldToReturn | -| tests.cpp:313:7:313:30 | [summary param] this in namespaceMadSelfToReturn | ParameterNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn | -| tests.cpp:313:7:313:30 | [summary] to write: ReturnValue in namespaceMadSelfToReturn | ReturnNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn | -| tests.cpp:434:5:434:29 | [summary param] 0 in madCallArg0ReturnToReturn | ParameterNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | -| tests.cpp:434:5:434:29 | [summary] read: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturn | PostUpdateNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | -| tests.cpp:434:5:434:29 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturn | OutNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | -| tests.cpp:434:5:434:29 | [summary] to write: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturn | ArgumentNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | -| tests.cpp:434:5:434:29 | [summary] to write: ReturnValue in madCallArg0ReturnToReturn | ReturnNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | -| tests.cpp:435:9:435:38 | [summary param] 0 in madCallArg0ReturnToReturnFirst | ParameterNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | -| tests.cpp:435:9:435:38 | [summary] read: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturnFirst | PostUpdateNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | -| tests.cpp:435:9:435:38 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturnFirst | OutNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | -| tests.cpp:435:9:435:38 | [summary] to write: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturnFirst | ArgumentNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | -| tests.cpp:435:9:435:38 | [summary] to write: ReturnValue in madCallArg0ReturnToReturnFirst | ReturnNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | -| tests.cpp:435:9:435:38 | [summary] to write: ReturnValue.Field[first] in madCallArg0ReturnToReturnFirst | | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | -| tests.cpp:436:6:436:25 | [summary param] 0 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue | -| tests.cpp:436:6:436:25 | [summary param] 1 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue | -| tests.cpp:436:6:436:25 | [summary] read: Argument[0].Parameter[0] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue | -| tests.cpp:436:6:436:25 | [summary] read: Argument[0].Parameter[this pointer] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue | -| tests.cpp:436:6:436:25 | [summary] to write: Argument[0].Parameter[0] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue | -| tests.cpp:436:6:436:25 | [summary] to write: Argument[0].Parameter[this pointer] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue | -| tests.cpp:436:6:436:25 | [summary] to write: Argument[1] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue | -| tests.cpp:437:5:437:36 | [summary param] 1 in madCallReturnValueIgnoreFunction | ParameterNode | madCallReturnValueIgnoreFunction | madCallReturnValueIgnoreFunction | -| tests.cpp:437:5:437:36 | [summary] to write: ReturnValue in madCallReturnValueIgnoreFunction | ReturnNode | madCallReturnValueIgnoreFunction | madCallReturnValueIgnoreFunction | -| tests.cpp:459:5:459:31 | [summary param] *0 in parameter_ref_to_return_ref | ParameterNode | parameter_ref_to_return_ref | parameter_ref_to_return_ref | -| tests.cpp:459:5:459:31 | [summary] to write: ReturnValue[*] in parameter_ref_to_return_ref | ReturnNode | parameter_ref_to_return_ref | parameter_ref_to_return_ref | -| tests.cpp:471:5:471:17 | [summary param] *0 in receive_array | ParameterNode | receive_array | receive_array | -| tests.cpp:471:5:471:17 | [summary] to write: ReturnValue in receive_array | ReturnNode | receive_array | receive_array | +| tests.cpp:127:5:127:19 | [summary param] 0 in madArg0ToReturn | ParameterNode | madArg0ToReturn | madArg0ToReturn | +| tests.cpp:127:5:127:19 | [summary] to write: ReturnValue in madArg0ToReturn | ReturnNode | madArg0ToReturn | madArg0ToReturn | +| tests.cpp:128:6:128:28 | [summary param] 0 in madArg0ToReturnIndirect | ParameterNode | madArg0ToReturnIndirect | madArg0ToReturnIndirect | +| tests.cpp:128:6:128:28 | [summary] to write: ReturnValue[*] in madArg0ToReturnIndirect | ReturnNode | madArg0ToReturnIndirect | madArg0ToReturnIndirect | +| tests.cpp:130:5:130:28 | [summary param] 0 in madArg0ToReturnValueFlow | ParameterNode | madArg0ToReturnValueFlow | madArg0ToReturnValueFlow | +| tests.cpp:130:5:130:28 | [summary] to write: ReturnValue in madArg0ToReturnValueFlow | ReturnNode | madArg0ToReturnValueFlow | madArg0ToReturnValueFlow | +| tests.cpp:131:5:131:27 | [summary param] *0 in madArg0IndirectToReturn | ParameterNode | madArg0IndirectToReturn | madArg0IndirectToReturn | +| tests.cpp:131:5:131:27 | [summary] to write: ReturnValue in madArg0IndirectToReturn | ReturnNode | madArg0IndirectToReturn | madArg0IndirectToReturn | +| tests.cpp:132:5:132:33 | [summary param] **0 in madArg0DoubleIndirectToReturn | ParameterNode | madArg0DoubleIndirectToReturn | madArg0DoubleIndirectToReturn | +| tests.cpp:132:5:132:33 | [summary] to write: ReturnValue in madArg0DoubleIndirectToReturn | ReturnNode | madArg0DoubleIndirectToReturn | madArg0DoubleIndirectToReturn | +| tests.cpp:133:5:133:30 | [summary param] 0 in madArg0NotIndirectToReturn | ParameterNode | madArg0NotIndirectToReturn | madArg0NotIndirectToReturn | +| tests.cpp:133:5:133:30 | [summary] to write: ReturnValue in madArg0NotIndirectToReturn | ReturnNode | madArg0NotIndirectToReturn | madArg0NotIndirectToReturn | +| tests.cpp:134:6:134:26 | [summary param] 0 in madArg0ToArg1Indirect | ParameterNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect | +| tests.cpp:134:6:134:26 | [summary param] *1 in madArg0ToArg1Indirect | ParameterNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect | +| tests.cpp:134:6:134:26 | [summary] to write: Argument[*1] in madArg0ToArg1Indirect | PostUpdateNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect | +| tests.cpp:135:6:135:34 | [summary param] *0 in madArg0IndirectToArg1Indirect | ParameterNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect | +| tests.cpp:135:6:135:34 | [summary param] *1 in madArg0IndirectToArg1Indirect | ParameterNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect | +| tests.cpp:135:6:135:34 | [summary] to write: Argument[*1] in madArg0IndirectToArg1Indirect | PostUpdateNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect | +| tests.cpp:136:5:136:18 | [summary param] 2 in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex | +| tests.cpp:136:5:136:18 | [summary param] *0 in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex | +| tests.cpp:136:5:136:18 | [summary param] *1 in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex | +| tests.cpp:136:5:136:18 | [summary] to write: ReturnValue in madArgsComplex | ReturnNode | madArgsComplex | madArgsComplex | +| tests.cpp:138:5:138:28 | [summary param] 2 in madAndImplementedComplex | ParameterNode | madAndImplementedComplex | madAndImplementedComplex | +| tests.cpp:138:5:138:28 | [summary] to write: ReturnValue in madAndImplementedComplex | ReturnNode | madAndImplementedComplex | madAndImplementedComplex | +| tests.cpp:143:5:143:24 | [summary param] 0 in madArg0FieldToReturn | ParameterNode | madArg0FieldToReturn | madArg0FieldToReturn | +| tests.cpp:143:5:143:24 | [summary] read: Argument[0].Field[MyContainer::value]/Field[value] in madArg0FieldToReturn | | madArg0FieldToReturn | madArg0FieldToReturn | +| tests.cpp:143:5:143:24 | [summary] to write: ReturnValue in madArg0FieldToReturn | ReturnNode | madArg0FieldToReturn | madArg0FieldToReturn | +| tests.cpp:144:5:144:32 | [summary param] *0 in madArg0IndirectFieldToReturn | ParameterNode | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn | +| tests.cpp:144:5:144:32 | [summary] read: Argument[*0].Field[MyContainer::value]/Field[value] in madArg0IndirectFieldToReturn | | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn | +| tests.cpp:144:5:144:32 | [summary] to write: ReturnValue in madArg0IndirectFieldToReturn | ReturnNode | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn | +| tests.cpp:145:5:145:32 | [summary param] 0 in madArg0FieldIndirectToReturn | ParameterNode | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn | +| tests.cpp:145:5:145:32 | [summary] read: Argument[0].Field[*MyContainer::ptr]/Field[*ptr] in madArg0FieldIndirectToReturn | | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn | +| tests.cpp:145:5:145:32 | [summary] to write: ReturnValue in madArg0FieldIndirectToReturn | ReturnNode | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn | +| tests.cpp:146:13:146:32 | [summary param] 0 in madArg0ToReturnField | ParameterNode | madArg0ToReturnField | madArg0ToReturnField | +| tests.cpp:146:13:146:32 | [summary] to write: ReturnValue in madArg0ToReturnField | ReturnNode | madArg0ToReturnField | madArg0ToReturnField | +| tests.cpp:146:13:146:32 | [summary] to write: ReturnValue.Field[MyContainer::value]/Field[value] in madArg0ToReturnField | | madArg0ToReturnField | madArg0ToReturnField | +| tests.cpp:147:14:147:41 | [summary param] 0 in madArg0ToReturnIndirectField | ParameterNode | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField | +| tests.cpp:147:14:147:41 | [summary] to write: ReturnValue[*] in madArg0ToReturnIndirectField | ReturnNode | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField | +| tests.cpp:147:14:147:41 | [summary] to write: ReturnValue[*].Field[MyContainer::value]/Field[value] in madArg0ToReturnIndirectField | | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField | +| tests.cpp:148:13:148:40 | [summary param] 0 in madArg0ToReturnFieldIndirect | ParameterNode | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect | +| tests.cpp:148:13:148:40 | [summary] to write: ReturnValue in madArg0ToReturnFieldIndirect | ReturnNode | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect | +| tests.cpp:148:13:148:40 | [summary] to write: ReturnValue.Field[*MyContainer::ptr]/Field[*ptr] in madArg0ToReturnFieldIndirect | | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect | +| tests.cpp:250:7:250:19 | [summary param] 0 in madArg0ToSelf | ParameterNode | madArg0ToSelf | madArg0ToSelf | +| tests.cpp:250:7:250:19 | [summary param] this in madArg0ToSelf | ParameterNode | madArg0ToSelf | madArg0ToSelf | +| tests.cpp:250:7:250:19 | [summary] to write: Argument[this] in madArg0ToSelf | PostUpdateNode | madArg0ToSelf | madArg0ToSelf | +| tests.cpp:251:6:251:20 | [summary param] this in madSelfToReturn | ParameterNode | madSelfToReturn | madSelfToReturn | +| tests.cpp:251:6:251:20 | [summary] to write: ReturnValue in madSelfToReturn | ReturnNode | madSelfToReturn | madSelfToReturn | +| tests.cpp:253:7:253:20 | [summary param] 0 in madArg0ToField | ParameterNode | madArg0ToField | madArg0ToField | +| tests.cpp:253:7:253:20 | [summary param] this in madArg0ToField | ParameterNode | madArg0ToField | madArg0ToField | +| tests.cpp:253:7:253:20 | [summary] to write: Argument[this] in madArg0ToField | PostUpdateNode | madArg0ToField | madArg0ToField | +| tests.cpp:253:7:253:20 | [summary] to write: Argument[this].Field[MyClass::val]/Field[val] in madArg0ToField | | madArg0ToField | madArg0ToField | +| tests.cpp:254:6:254:21 | [summary param] this in madFieldToReturn | ParameterNode | madFieldToReturn | madFieldToReturn | +| tests.cpp:254:6:254:21 | [summary] read: Argument[this].Field[MyClass::val]/Field[val] in madFieldToReturn | | madFieldToReturn | madFieldToReturn | +| tests.cpp:254:6:254:21 | [summary] to write: ReturnValue in madFieldToReturn | ReturnNode | madFieldToReturn | madFieldToReturn | +| tests.cpp:277:7:277:30 | [summary param] this in namespaceMadSelfToReturn | ParameterNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn | +| tests.cpp:277:7:277:30 | [summary] to write: ReturnValue in namespaceMadSelfToReturn | ReturnNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn | +| tests.cpp:392:5:392:29 | [summary param] 0 in madCallArg0ReturnToReturn | ParameterNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | +| tests.cpp:392:5:392:29 | [summary] read: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturn | PostUpdateNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | +| tests.cpp:392:5:392:29 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturn | OutNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | +| tests.cpp:392:5:392:29 | [summary] to write: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturn | ArgumentNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | +| tests.cpp:392:5:392:29 | [summary] to write: ReturnValue in madCallArg0ReturnToReturn | ReturnNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn | +| tests.cpp:393:9:393:38 | [summary param] 0 in madCallArg0ReturnToReturnFirst | ParameterNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | +| tests.cpp:393:9:393:38 | [summary] read: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturnFirst | PostUpdateNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | +| tests.cpp:393:9:393:38 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturnFirst | OutNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | +| tests.cpp:393:9:393:38 | [summary] to write: Argument[0].Parameter[this pointer] in madCallArg0ReturnToReturnFirst | ArgumentNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | +| tests.cpp:393:9:393:38 | [summary] to write: ReturnValue in madCallArg0ReturnToReturnFirst | ReturnNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | +| tests.cpp:393:9:393:38 | [summary] to write: ReturnValue.Field[first]/Field[intPair::first] in madCallArg0ReturnToReturnFirst | | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst | +| tests.cpp:394:6:394:25 | [summary param] 0 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue | +| tests.cpp:394:6:394:25 | [summary param] 1 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue | +| tests.cpp:394:6:394:25 | [summary] read: Argument[0].Parameter[0] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue | +| tests.cpp:394:6:394:25 | [summary] read: Argument[0].Parameter[this pointer] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue | +| tests.cpp:394:6:394:25 | [summary] to write: Argument[0].Parameter[0] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue | +| tests.cpp:394:6:394:25 | [summary] to write: Argument[0].Parameter[this pointer] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue | +| tests.cpp:394:6:394:25 | [summary] to write: Argument[1] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue | +| tests.cpp:395:5:395:36 | [summary param] 1 in madCallReturnValueIgnoreFunction | ParameterNode | madCallReturnValueIgnoreFunction | madCallReturnValueIgnoreFunction | +| tests.cpp:395:5:395:36 | [summary] to write: ReturnValue in madCallReturnValueIgnoreFunction | ReturnNode | madCallReturnValueIgnoreFunction | madCallReturnValueIgnoreFunction | +| tests.cpp:417:5:417:31 | [summary param] *0 in parameter_ref_to_return_ref | ParameterNode | parameter_ref_to_return_ref | parameter_ref_to_return_ref | +| tests.cpp:417:5:417:31 | [summary] to write: ReturnValue[*] in parameter_ref_to_return_ref | ReturnNode | parameter_ref_to_return_ref | parameter_ref_to_return_ref | +| tests.cpp:429:5:429:17 | [summary param] *0 in receive_array | ParameterNode | receive_array | receive_array | +| tests.cpp:429:5:429:17 | [summary] to write: ReturnValue in receive_array | ReturnNode | receive_array | receive_array | diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ext.yml b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ext.yml index 95261223473..243207ee8fd 100644 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ext.yml +++ b/cpp/ql/test/library-tests/dataflow/models-as-data/testModels.ext.yml @@ -11,15 +11,12 @@ extensions: - ["", "", False, "remoteMadSourceDoubleIndirect", "", "", "ReturnValue[**]", "remote", "manual"] - ["", "", False, "remoteMadSourceIndirectArg0", "", "", "Argument[*0]", "remote", "manual"] - ["", "", False, "remoteMadSourceIndirectArg1", "", "", "Argument[*1]", "remote", "manual"] - - ["", "", False, "remoteMadSourceVar", "", "", "", "remote", "manual"] - - ["", "", False, "remoteMadSourceVarIndirect", "", "", "*", "remote", "manual"] # we can't express this source/sink correctly at present, "*" is not a valid access path - ["", "", False, "remoteMadSourceParam0", "", "", "Parameter[0]", "remote", "manual"] - ["MyNamespace", "", False, "namespaceLocalMadSource", "", "", "ReturnValue", "local", "manual"] - ["MyNamespace", "", False, "namespaceLocalMadSourceVar", "", "", "", "local", "manual"] - ["MyNamespace::MyNamespace2", "", False, "namespace2LocalMadSource", "", "", "ReturnValue", "local", "manual"] - ["", "MyClass", True, "memberRemoteMadSource", "", "", "ReturnValue", "remote", "manual"] - ["", "MyClass", True, "memberRemoteMadSourceIndirectArg0", "", "", "Argument[*0]", "remote", "manual"] - - ["", "MyClass", True, "memberRemoteMadSourceVar", "", "", "", "remote", "manual"] - ["", "MyClass", True, "subtypeRemoteMadSource1", "", "", "ReturnValue", "remote", "manual"] - ["", "MyClass", False, "subtypeNonSource", "", "", "ReturnValue", "remote", "manual"] # the tests define this in MyDerivedClass, so it should *not* be recongized as a source - ["", "MyClass", True, "qualifierSource", "", "", "Argument[-1]", "remote", "manual"] @@ -35,18 +32,13 @@ extensions: - ["", "", False, "madSinkArg02", "", "", "Argument[0,2]", "test-sink", "manual"] - ["", "", False, "madSinkIndirectArg0", "", "", "Argument[*0]", "test-sink", "manual"] - ["", "", False, "madSinkDoubleIndirectArg0", "", "", "Argument[**0]", "test-sink", "manual"] - - ["", "", False, "madSinkVar", "", "", "", "test-sink", "manual"] - - ["", "", False, "madSinkVarIndirect", "", "", "*", "test-sink", "manual"] # we can't express this source/sink correctly at present, "*" is not a valid access path - ["", "", False, "madSinkParam0", "", "", "Parameter[0]", "test-sink", "manual"] - ["", "MyClass", True, "memberMadSinkArg0", "", "", "Argument[0]", "test-sink", "manual"] - - ["", "MyClass", True, "memberMadSinkVar", "", "", "", "test-sink", "manual"] - ["", "MyClass", True, "qualifierSink", "", "", "Argument[-1]", "test-sink", "manual"] - ["", "MyClass", True, "qualifierArg0Sink", "", "", "Argument[-1..0]", "test-sink", "manual"] - ["", "MyClass", True, "qualifierFieldSink", "", "", "Argument[-1].val", "test-sink", "manual"] - ["MyNamespace", "MyClass", True, "namespaceMemberMadSinkArg0", "", "", "Argument[0]", "test-sink", "manual"] - ["MyNamespace", "MyClass", True, "namespaceStaticMemberMadSinkArg0", "", "", "Argument[0]", "test-sink", "manual"] - - ["MyNamespace", "MyClass", True, "namespaceMemberMadSinkVar", "", "", "", "test-sink", "manual"] - - ["MyNamespace", "MyClass", True, "namespaceStaticMemberMadSinkVar", "", "", "", "test-sink", "manual"] - addsTo: pack: codeql/cpp-all extensible: summaryModel @@ -68,9 +60,6 @@ extensions: - ["", "", False, "madArg0ToReturnField", "", "", "Argument[0]", "ReturnValue.Field[value]", "taint", "manual"] - ["", "", False, "madArg0ToReturnIndirectField", "", "", "Argument[0]", "ReturnValue[*].Field[value]", "taint", "manual"] - ["", "", False, "madArg0ToReturnFieldIndirect", "", "", "Argument[0]", "ReturnValue.Field[*ptr]", "taint", "manual"] - - ["", "", False, "madFieldToFieldVar", "", "", "Field[value]", "Field[value2]", "taint", "manual"] # we can't express this source/sink correctly at present, "Field[value]" is not a valid input and "Field[value2]" is not a valid output - - ["", "", False, "madFieldToIndirectFieldVar", "", "", "Field[value]", "Field[*ptr]", "taint", "manual"] # we can't express this source/sink correctly at present, "Field[value]" is not a valid input and "Field[*ptr]" is not a valid output - - ["", "", False, "madIndirectFieldToFieldVar", "", "", "Field[value]", "Field[value2]", "taint", "manual"] # we can't express this source/sink correctly at present, "Field[value]" is not a valid input and "Field[value2]" is not a valid output - ["", "MyClass", True, "madArg0ToSelf", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"] - ["", "MyClass", True, "madSelfToReturn", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"] - ["", "MyClass", True, "madArg0ToField", "", "", "Argument[0]", "Argument[-1].Field[val]", "taint", "manual"] diff --git a/cpp/ql/test/library-tests/dataflow/models-as-data/tests.cpp b/cpp/ql/test/library-tests/dataflow/models-as-data/tests.cpp index cb2bf965083..dbbe88e31e4 100644 --- a/cpp/ql/test/library-tests/dataflow/models-as-data/tests.cpp +++ b/cpp/ql/test/library-tests/dataflow/models-as-data/tests.cpp @@ -17,13 +17,8 @@ int *remoteMadSourceIndirect(); // $ interpretElement int **remoteMadSourceDoubleIndirect(); // $ interpretElement void remoteMadSourceIndirectArg0(int *x, int *y); // $ interpretElement void remoteMadSourceIndirectArg1(int &x, int &y); // $ interpretElement -int remoteMadSourceVar; // $ interpretElement -int *remoteMadSourceVarIndirect; // $ interpretElement namespace MyNamespace { - int namespaceLocalMadSource(); // $ interpretElement - int namespaceLocalMadSourceVar; // $ interpretElement - namespace MyNamespace2 { int namespace2LocalMadSource(); // $ interpretElement } @@ -69,14 +64,9 @@ void test_sources() { sink(c); sink(d); // $ ir - sink(remoteMadSourceVar); // $ ir - sink(*remoteMadSourceVarIndirect); // $ MISSING: ir - int e = localMadSource(); sink(e); // $ ir - - sink(MyNamespace::namespaceLocalMadSource()); // $ ir - sink(MyNamespace::namespaceLocalMadSourceVar); // $ ir + sink(MyNamespace::MyNamespace2::namespace2LocalMadSource()); // $ ir sink(MyNamespace::localMadSource()); // $ (the MyNamespace version of this function is not a source) sink(namespaceLocalMadSource()); // (the global namespace version of this function is not a source) @@ -96,8 +86,8 @@ void madSinkArg01(int x, int y, int z); // $ interpretElement void madSinkArg02(int x, int y, int z); // $ interpretElement void madSinkIndirectArg0(int *x); // $ interpretElement void madSinkDoubleIndirectArg0(int **x); // $ interpretElement -int madSinkVar; // $ interpretElement -int *madSinkVarIndirect; // $ interpretElement + + void test_sinks() { // test sinks @@ -118,15 +108,8 @@ void test_sinks() { madSinkIndirectArg0(&a); // $ ir madSinkIndirectArg0(a_ptr); // $ ir madSinkDoubleIndirectArg0(&a_ptr); // $ ir - - madSinkVar = source(); // $ ir - - // test sources + sinks together - madSinkArg0(localMadSource()); // $ ir madSinkIndirectArg0(remoteMadSourceIndirect()); // $ ir - madSinkVar = remoteMadSourceVar; // $ ir - *madSinkVarIndirect = remoteMadSourceVar; // $ MISSING: ir } void madSinkParam0(int x) { // $ interpretElement @@ -164,10 +147,6 @@ MyContainer madArg0ToReturnField(int x); // $ interpretElement MyContainer *madArg0ToReturnIndirectField(int x); // $ interpretElement MyContainer madArg0ToReturnFieldIndirect(int x); // $ interpretElement -MyContainer madFieldToFieldVar; // $ interpretElement -MyContainer madFieldToIndirectFieldVar; // $ interpretElement -MyContainer *madIndirectFieldToFieldVar; // $ interpretElement - void test_summaries() { // test summaries @@ -241,19 +220,6 @@ void test_summaries() { int *rtn2_ptr = rtn2.ptr; sink(*rtn2_ptr); // $ ir - // test global variable summaries - - madFieldToFieldVar.value = source(); - sink(madFieldToFieldVar.value2); // $ MISSING: ir - - madFieldToIndirectFieldVar.value = source(); - sink(madFieldToIndirectFieldVar.ptr); - sink(*(madFieldToIndirectFieldVar.ptr)); // $ MISSING: ir - - madIndirectFieldToFieldVar->value = source(); - sink((*madIndirectFieldToFieldVar).value2); // $ MISSING: ir - sink(madIndirectFieldToFieldVar->value2); // $ MISSING: ir - // test source + sinks + summaries together madSinkArg0(madArg0ToReturn(remoteMadSource())); // $ ir @@ -269,13 +235,13 @@ public: // sources int memberRemoteMadSource(); // $ interpretElement void memberRemoteMadSourceIndirectArg0(int *x); // $ interpretElement - int memberRemoteMadSourceVar; // $ interpretElement + void qualifierSource(); // $ interpretElement void qualifierFieldSource(); // $ interpretElement // sinks void memberMadSinkArg0(int x); // $ interpretElement - int memberMadSinkVar; // $ interpretElement + void qualifierSink(); // $ interpretElement void qualifierArg0Sink(int x); // $ interpretElement void qualifierFieldSink(); // $ interpretElement @@ -306,8 +272,6 @@ namespace MyNamespace { // sinks void namespaceMemberMadSinkArg0(int x); // $ interpretElement static void namespaceStaticMemberMadSinkArg0(int x); // $ interpretElement - int namespaceMemberMadSinkVar; // $ interpretElement - static int namespaceStaticMemberMadSinkVar; // $ interpretElement // summaries int namespaceMadSelfToReturn(); // $ interpretElement @@ -331,8 +295,6 @@ void test_class_members() { mc.memberRemoteMadSourceIndirectArg0(&a); sink(a); // $ ir - sink(mc.memberRemoteMadSourceVar); // $ ir - // test subtype sources sink(mdc.memberRemoteMadSource()); // $ ir @@ -344,12 +306,8 @@ void test_class_members() { mc.memberMadSinkArg0(source()); // $ ir - mc.memberMadSinkVar = source(); // $ ir - mnc.namespaceMemberMadSinkArg0(source()); // $ ir MyNamespace::MyClass::namespaceStaticMemberMadSinkArg0(source()); // $ ir - mnc.namespaceMemberMadSinkVar = source(); // $ ir - MyNamespace::MyClass::namespaceStaticMemberMadSinkVar = source(); // $ ir // test class member summaries diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected index 63851030bba..a4395489d4e 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected @@ -11,12 +11,10 @@ edges | nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | provenance | | | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | provenance | | | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | provenance | DataFlowFunction | -| test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | test.cpp:179:6:179:21 | [summary param] *0 in StringCchPrintfW [Return] | provenance | MaD:403 | | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | | test.cpp:193:32:193:34 | *str | test.cpp:197:11:197:14 | *wstr | provenance | TaintFunction | | test.cpp:195:20:195:23 | StringCchPrintfW output argument | test.cpp:197:11:197:14 | *wstr | provenance | | -| test.cpp:195:31:195:33 | *str | test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | provenance | | | test.cpp:195:31:195:33 | *str | test.cpp:195:20:195:23 | StringCchPrintfW output argument | provenance | MaD:403 | | test.cpp:204:25:204:36 | *call to get_string | test.cpp:204:25:204:36 | *call to get_string | provenance | | | test.cpp:204:25:204:36 | *call to get_string | test.cpp:205:12:205:20 | *... + ... | provenance | | @@ -60,8 +58,6 @@ nodes | test.cpp:130:20:130:26 | *access to array | semmle.label | *access to array | | test.cpp:167:31:167:34 | *data | semmle.label | *data | | test.cpp:170:12:170:14 | *res | semmle.label | *res | -| test.cpp:179:6:179:21 | [summary param] *0 in StringCchPrintfW [Return] | semmle.label | [summary param] *0 in StringCchPrintfW [Return] | -| test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | semmle.label | [summary param] *2 in StringCchPrintfW | | test.cpp:193:32:193:34 | *str | semmle.label | *str | | test.cpp:195:20:195:23 | StringCchPrintfW output argument | semmle.label | StringCchPrintfW output argument | | test.cpp:195:31:195:33 | *str | semmle.label | *str | @@ -97,7 +93,6 @@ nodes | test.cpp:245:25:245:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:247:12:247:16 | *hello | semmle.label | *hello | subpaths -| test.cpp:195:31:195:33 | *str | test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | test.cpp:179:6:179:21 | [summary param] *0 in StringCchPrintfW [Return] | test.cpp:195:20:195:23 | StringCchPrintfW output argument | #select | NonConstantFormat.c:30:10:30:16 | *access to array | NonConstantFormat.c:28:27:28:30 | **argv | NonConstantFormat.c:30:10:30:16 | *access to array | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:30:3:30:8 | call to printf | printf | | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:41:2:41:7 | call to printf | printf | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected index 3958656bb4b..6b4be51fd33 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected @@ -33,7 +33,6 @@ edges | tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:14:111:19 | *ptr | provenance | | | tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:17:111:19 | *ptr | provenance | | | tests2.cpp:111:17:111:19 | *ptr | tests2.cpp:111:14:111:19 | *ptr | provenance | | -| tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary param] *0 in zmq_msg_init_data [Return] | provenance | MaD:4 | | tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:138:23:138:34 | *message_data | provenance | Sink:MaD:2 | | tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:143:34:143:45 | *message_data | provenance | | | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:134:2:134:30 | *... = ... | provenance | | @@ -41,7 +40,6 @@ edges | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:147:20:147:27 | *& ... | provenance | Sink:MaD:1 | | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:155:32:155:39 | *& ... | provenance | Sink:MaD:3 | | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:158:20:158:27 | *& ... | provenance | Sink:MaD:1 | -| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | provenance | | | tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | provenance | MaD:4 | | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:26:15:26:20 | *call to getenv | provenance | | | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | provenance | | @@ -78,8 +76,6 @@ nodes | tests2.cpp:111:14:111:15 | *c1 [*ptr] | semmle.label | *c1 [*ptr] | | tests2.cpp:111:14:111:19 | *ptr | semmle.label | *ptr | | tests2.cpp:111:17:111:19 | *ptr | semmle.label | *ptr | -| tests2.cpp:120:5:120:21 | [summary param] *0 in zmq_msg_init_data [Return] | semmle.label | [summary param] *0 in zmq_msg_init_data [Return] | -| tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | semmle.label | [summary param] *1 in zmq_msg_init_data | | tests2.cpp:134:2:134:30 | *... = ... | semmle.label | *... = ... | | tests2.cpp:134:17:134:22 | *call to getenv | semmle.label | *call to getenv | | tests2.cpp:138:23:138:34 | *message_data | semmle.label | *message_data | @@ -100,4 +96,3 @@ nodes | tests_sysconf.cpp:36:21:36:27 | confstr output argument | semmle.label | confstr output argument | | tests_sysconf.cpp:39:19:39:25 | *pathbuf | semmle.label | *pathbuf | subpaths -| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] *1 in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary param] *0 in zmq_msg_init_data [Return] | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs index b9b5e16afd8..744b60f3d3f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FeedManager.cs @@ -88,12 +88,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching private IEnumerable GetFeedsFromNugetConfig(string nugetConfigPath) => GetFeeds(() => dotnet.GetNugetFeeds(nugetConfigPath)); - private string FeedsToRestoreArgument(IEnumerable feeds) + public string FeedsToRestoreArgument(IEnumerable feeds, string sourceArgumentPrefix) { - // If there are no feeds, we want to override any default feeds that `dotnet restore` would use by passing a dummy source argument. + // If there are no feeds, we want to override any default feeds that `restore` would use by passing a dummy source argument. if (!feeds.Any()) { - return $" -s \"{emptyPackageDirectory.DirInfo.FullName}\""; + return $" {sourceArgumentPrefix} \"{emptyPackageDirectory.DirInfo.FullName}\""; } // Add package sources. If any are present, they override all sources specified in @@ -101,7 +101,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var feedArgs = new StringBuilder(); foreach (var feed in feeds) { - feedArgs.Append($" -s \"{feed}\""); + feedArgs.Append($" {sourceArgumentPrefix} \"{feed}\""); } return feedArgs.ToString(); @@ -112,17 +112,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// (1) Use the feeds we get from `dotnet nuget list source` /// (2) Use private registries, if they are configured /// - /// Path to project/solution + /// Path to project/solution/packages.config /// The set of reachable NuGet feeds. - /// A string representing the NuGet sources argument for the restore command. - public string? MakeRestoreSourcesArgument(string path, HashSet reachableFeeds) + /// The list of NuGet feeds to use for this restore. + public IEnumerable FeedsToUse(string path, HashSet reachableFeeds) { - // Do not construct a set of explicit NuGet sources to use for restore. - if (!CheckNugetFeedResponsiveness && !HasPrivateRegistryFeeds) - { - return null; - } - // Find the path specific feeds. var folder = GetDirectoryName(path); var feedsToConsider = folder is not null ? GetFeedsFromFolder(folder).ToHashSet() : new HashSet(); @@ -136,7 +130,28 @@ namespace Semmle.Extraction.CSharp.DependencyFetching ? feedsToConsider.Where(reachableFeeds.Contains) : feedsToConsider; - return FeedsToRestoreArgument(feedsToUse); + return feedsToUse; + } + + /// + /// Constructs the list of NuGet sources to use for dotnet restore. + /// (1) Use the feeds we get from `dotnet nuget list source` + /// (2) Use private registries, if they are configured + /// + /// Path to project/solution + /// The set of reachable NuGet feeds. + /// A string representing the NuGet sources argument for the restore command. + public string? MakeDotnetRestoreSourcesArgument(string path, HashSet reachableFeeds) + { + // Do not construct a set of explicit NuGet sources to use for restore. + if (!CheckNugetFeedResponsiveness && !HasPrivateRegistryFeeds) + { + return null; + } + + var feedsToUse = FeedsToUse(path, reachableFeeds); + + return FeedsToRestoreArgument(feedsToUse, "-s"); } private (int initialTimeout, int tryCount) GetFeedRequestSettings(bool isFallback) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index eb6ddd4e69b..9da2018dffb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -110,58 +110,55 @@ namespace Semmle.Extraction.CSharp.DependencyFetching logger.LogInfo($"Checking NuGet feed responsiveness: {feedManager.CheckNugetFeedResponsiveness}"); compilationInfoContainer.CompilationInfos.Add(("NuGet feed responsiveness checked", feedManager.CheckNugetFeedResponsiveness ? "1" : "0")); - HashSet explicitFeeds = []; HashSet reachableFeeds = []; + EmitNugetConfigDiagnostics(); + + // Find feeds that are configured in NuGet.config files and divide them into ones that + // are explicitly configured for the project or by a private registry, and "all feeds" + // (including inherited ones) from other locations on the host outside of the working directory. + (var explicitFeeds, var allFeeds) = feedManager.GetAllFeeds(); + + if (feedManager.CheckNugetFeedResponsiveness) + { + var inheritedFeeds = allFeeds.Except(explicitFeeds).ToHashSet(); + + if (inheritedFeeds.Count > 0) + { + compilationInfoContainer.CompilationInfos.Add(("Inherited NuGet feed count", inheritedFeeds.Count.ToString())); + } + + var timeout = feedManager.CheckSpecifiedFeeds(explicitFeeds, out var reachableExplicitFeeds); + reachableFeeds.UnionWith(reachableExplicitFeeds); + + var allExplicitReachable = explicitFeeds.Count == reachableExplicitFeeds.Count; + EmitUnreachableFeedsDiagnostics(allExplicitReachable); + + if (timeout) + { + // If we experience a timeout, we use this fallback. + // todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too. + var unresponsiveMissingPackageLocation = DownloadMissingPackagesFromSpecificFeeds([], explicitFeeds); + return unresponsiveMissingPackageLocation is null + ? [] + : [unresponsiveMissingPackageLocation]; + } + + // Inherited feeds should only be used, if they are indeed reachable (as they may be environment specific). + feedManager.CheckSpecifiedFeeds(inheritedFeeds, out var reachableInheritedFeeds); + reachableFeeds.UnionWith(reachableInheritedFeeds); + } + try { - EmitNugetConfigDiagnostics(); - - // Find feeds that are configured in NuGet.config files and divide them into ones that - // are explicitly configured for the project or by a private registry, and "all feeds" - // (including inherited ones) from other locations on the host outside of the working directory. - (explicitFeeds, var allFeeds) = feedManager.GetAllFeeds(); - - if (feedManager.CheckNugetFeedResponsiveness) + var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager, reachableFeeds); + var count = packagesConfigRestore.InstallPackages(); + if (packagesConfigRestore.PackageCount > 0) { - var inheritedFeeds = allFeeds.Except(explicitFeeds).ToHashSet(); - - if (inheritedFeeds.Count > 0) - { - compilationInfoContainer.CompilationInfos.Add(("Inherited NuGet feed count", inheritedFeeds.Count.ToString())); - } - - var timeout = feedManager.CheckSpecifiedFeeds(explicitFeeds, out var reachableExplicitFeeds); - reachableFeeds.UnionWith(reachableExplicitFeeds); - - var allExplicitReachable = explicitFeeds.Count == reachableExplicitFeeds.Count; - EmitUnreachableFeedsDiagnostics(allExplicitReachable); - - if (timeout) - { - // If we experience a timeout, we use this fallback. - // todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too. - var unresponsiveMissingPackageLocation = DownloadMissingPackagesFromSpecificFeeds([], explicitFeeds); - return unresponsiveMissingPackageLocation is null - ? [] - : [unresponsiveMissingPackageLocation]; - } - - // Inherited feeds should only be used, if they are indeed reachable (as they may be environment specific). - feedManager.CheckSpecifiedFeeds(inheritedFeeds, out var reachableInheritedFeeds); - reachableFeeds.UnionWith(reachableInheritedFeeds); + compilationInfoContainer.CompilationInfos.Add(("packages.config files", packagesConfigRestore.PackageCount.ToString())); + compilationInfoContainer.CompilationInfos.Add(("Successfully restored packages.config files", count.ToString())); } - using (var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager.IsDefaultFeedReachable)) - { - var count = packagesConfigRestore.InstallPackages(); - - if (packagesConfigRestore.PackageCount > 0) - { - compilationInfoContainer.CompilationInfos.Add(("packages.config files", packagesConfigRestore.PackageCount.ToString())); - compilationInfoContainer.CompilationInfos.Add(("Successfully restored packages.config files", count.ToString())); - } - } var nugetPackageDlls = legacyPackageDirectory.DirInfo.GetFiles("*.dll", new EnumerationOptions { RecurseSubdirectories = true }); var nugetPackageDllPaths = nugetPackageDlls.Select(f => f.FullName).ToHashSet(); @@ -239,7 +236,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var projects = fileProvider.Solutions.SelectMany(solution => { logger.LogInfo($"Restoring solution {solution}..."); - var nugetSources = feedManager.MakeRestoreSourcesArgument(solution, reachableFeeds); + var nugetSources = feedManager.MakeDotnetRestoreSourcesArgument(solution, reachableFeeds); var res = dotnet.Restore(new(solution, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, NugetSources: nugetSources, TargetWindows: isWindows)); if (res.Success) { @@ -288,7 +285,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching foreach (var project in projectGroup) { logger.LogInfo($"Restoring project {project}..."); - var nugetSources = feedManager.MakeRestoreSourcesArgument(project, reachableFeeds); + var nugetSources = feedManager.MakeDotnetRestoreSourcesArgument(project, reachableFeeds); var res = dotnet.Restore(new(project, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, NugetSources: nugetSources, TargetWindows: isWindows)); assets.AddDependenciesRange(res.AssetsFilePaths); lock (sync) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs index 51cd2755578..af484ba406e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs @@ -7,7 +7,7 @@ using Semmle.Util; namespace Semmle.Extraction.CSharp.DependencyFetching { - internal interface IPackagesConfigRestore : IDisposable + internal interface IPackagesConfigRestore { /// /// The number of packages.config files found in the source tree. @@ -33,11 +33,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// internal class PackagesConfigRestoreFactory { - public static IPackagesConfigRestore Create(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, Func useDefaultFeed) + public static IPackagesConfigRestore Create(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, HashSet reachableFeeds) { if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMonoInstalled()) { - return new NugetExeWrapper(fileProvider, packageDirectory, logger, useDefaultFeed); + return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager, reachableFeeds); } return new NoOpPackagesConfig(fileProvider.PackagesConfigs, logger); @@ -55,8 +55,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching public int PackageCount => fileProvider.PackagesConfigs.Count; - private readonly string? backupNugetConfig; - private readonly string? nugetConfigPath; private readonly FileProvider fileProvider; /// @@ -65,57 +63,30 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// so as to not trample the source tree. /// private readonly DependencyDirectory packageDirectory; + private readonly FeedManager feedManager; + private readonly HashSet reachableFeeds; private bool IsWindows => SystemBuildActions.Instance.IsWindows(); + private bool? isDefaultFeedReachable; + private bool IsDefaultFeedReachable => + isDefaultFeedReachable ??= feedManager.IsDefaultFeedReachable(); + /// /// Create the package manager for a specified source tree. /// - public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, Func useDefaultFeed) + public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, HashSet reachableFeeds) { this.fileProvider = fileProvider; this.packageDirectory = packageDirectory; this.logger = logger; + this.feedManager = feedManager; + this.reachableFeeds = reachableFeeds; if (fileProvider.PackagesConfigs.Count > 0) { logger.LogInfo($"Found packages.config files, trying to use nuget.exe for package restore"); nugetExe = ResolveNugetExe(); - if (!HasPackageSource() && useDefaultFeed()) - { - // We only modify or add a top level nuget.config file - nugetConfigPath = Path.Join(fileProvider.SourceDir.FullName, "nuget.config"); - try - { - if (File.Exists(nugetConfigPath)) - { - var tempFolderPath = FileUtils.GetTemporaryWorkingDirectory(out _); - - do - { - backupNugetConfig = Path.Join(tempFolderPath, Path.GetRandomFileName()); - } - while (File.Exists(backupNugetConfig)); - File.Copy(nugetConfigPath, backupNugetConfig, true); - } - else - { - File.WriteAllText(nugetConfigPath, - """ - - - - - - """); - } - AddDefaultPackageSource(nugetConfigPath); - } - catch (Exception e) - { - logger.LogError($"Failed to add default package source to {nugetConfigPath}: {e}"); - } - } } } @@ -198,6 +169,21 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { logger.LogInfo($"Restoring file \"{packagesConfig}\"..."); + var sourcesArgument = ""; + var feedsToUse = feedManager.FeedsToUse(packagesConfig, reachableFeeds).ToList(); + var useDefaultFeed = feedsToUse.Count == 0 && IsDefaultFeedReachable; + + // Explicitly construct the sources to be used for the restore command when checking feed + // responsiveness, using private registries, or falling back to nuget.org. + if (feedManager.CheckNugetFeedResponsiveness || feedManager.HasPrivateRegistryFeeds || useDefaultFeed) + { + if (useDefaultFeed) + { + feedsToUse.Add(FeedManager.PublicNugetOrgFeed); + } + sourcesArgument = feedManager.FeedsToRestoreArgument(feedsToUse, "-Source"); + } + /* Use nuget.exe to install a package. * Note that there is a clutch of NuGet assemblies which could be used to * invoke this directly, which would arguably be nicer. However they are @@ -208,12 +194,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching if (RunWithMono) { exe = "mono"; - args = $"\"{nugetExe}\" install -OutputDirectory \"{packageDirectory}\" \"{packagesConfig}\""; + args = $"\"{nugetExe}\" install -OutputDirectory \"{packageDirectory}\" {sourcesArgument} \"{packagesConfig}\""; } else { exe = nugetExe!; - args = $"install -OutputDirectory \"{packageDirectory}\" \"{packagesConfig}\""; + args = $"install -OutputDirectory \"{packageDirectory}\" {sourcesArgument} \"{packagesConfig}\""; } var pi = new ProcessStartInfo(exe, args) @@ -246,98 +232,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { return fileProvider.PackagesConfigs.Count(TryRestoreNugetPackage); } - - private bool HasPackageSource() - { - if (IsWindows) - { - return true; - } - - try - { - logger.LogInfo("Checking if default package source is available..."); - RunMonoNugetCommand("sources list -ForceEnglishOutput", out var stdout); - if (stdout.All(line => line != "No sources found.")) - { - return true; - } - - return false; - } - catch (Exception e) - { - logger.LogWarning($"Failed to check if default package source is added: {e}"); - return true; - } - } - - private void RunMonoNugetCommand(string command, out IList stdout) - { - string exe, args; - if (RunWithMono) - { - exe = "mono"; - args = $"\"{nugetExe}\" {command}"; - } - else - { - exe = nugetExe!; - args = command; - } - - var pi = new ProcessStartInfo(exe, args) - { - RedirectStandardOutput = true, - RedirectStandardError = true, - UseShellExecute = false - }; - - var threadId = Environment.CurrentManagedThreadId; - void onOut(string s) => logger.LogDebug(s, threadId); - void onError(string s) => logger.LogError(s, threadId); - pi.ReadOutput(out stdout, onOut, onError); - } - - private void AddDefaultPackageSource(string nugetConfig) - { - logger.LogInfo("Adding default package source..."); - RunMonoNugetCommand($"sources add -Name DefaultNugetOrg -Source {FeedManager.PublicNugetOrgFeed} -ConfigFile \"{nugetConfig}\"", out _); - } - - public void Dispose() - { - if (nugetConfigPath is null) - { - return; - } - - try - { - if (backupNugetConfig is null) - { - logger.LogInfo("Removing nuget.config file"); - File.Delete(nugetConfigPath); - return; - } - - logger.LogInfo("Reverting nuget.config file content"); - // The content of the original nuget.config file is reverted without changing the file's attributes or casing: - using (var backup = File.OpenRead(backupNugetConfig)) - using (var current = File.OpenWrite(nugetConfigPath)) - { - current.SetLength(0); // Truncate file - backup.CopyTo(current); // Restore original content - } - - logger.LogInfo("Deleting backup nuget.config file"); - File.Delete(backupNugetConfig); - } - catch (Exception exc) - { - logger.LogError($"Failed to restore original nuget.config file: {exc}"); - } - } } private class NoOpPackagesConfig : IPackagesConfigRestore @@ -361,8 +255,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } return 0; } - - public void Dispose() { } } } } diff --git a/csharp/ql/integration-tests/windows/subst/code/Program.cs b/csharp/ql/integration-tests/windows/subst/code/Program.cs new file mode 100644 index 00000000000..ed88e54d934 --- /dev/null +++ b/csharp/ql/integration-tests/windows/subst/code/Program.cs @@ -0,0 +1,4 @@ +class Program +{ + static void Main() {} +} diff --git a/csharp/ql/integration-tests/windows/subst/code/dotnet_build.csproj b/csharp/ql/integration-tests/windows/subst/code/dotnet_build.csproj new file mode 100644 index 00000000000..694035b3acd --- /dev/null +++ b/csharp/ql/integration-tests/windows/subst/code/dotnet_build.csproj @@ -0,0 +1,10 @@ + + + + Exe + net9.0 + enable + enable + + + diff --git a/csharp/ql/integration-tests/windows/subst/code/global.json b/csharp/ql/integration-tests/windows/subst/code/global.json new file mode 100644 index 00000000000..9ceca3771e6 --- /dev/null +++ b/csharp/ql/integration-tests/windows/subst/code/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "9.0.201" + } +} diff --git a/csharp/ql/integration-tests/windows/subst/file.expected b/csharp/ql/integration-tests/windows/subst/file.expected new file mode 100644 index 00000000000..6421dce4121 --- /dev/null +++ b/csharp/ql/integration-tests/windows/subst/file.expected @@ -0,0 +1,8 @@ +| code/Program.cs:0:0:0:0 | code/Program.cs | | +| code/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs:0:0:0:0 | code/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs | | +| code/obj/Debug/net9.0/dotnet_build.AssemblyInfo.cs:0:0:0:0 | code/obj/Debug/net9.0/dotnet_build.AssemblyInfo.cs | | +| code/obj/Debug/net9.0/dotnet_build.GlobalUsings.g.cs:0:0:0:0 | code/obj/Debug/net9.0/dotnet_build.GlobalUsings.g.cs | | +| code/obj/Debug/net9.0/dotnet_build.dll:0:0:0:0 | code/obj/Debug/net9.0/dotnet_build.dll | | +| file://:0:0:0:0 | | | +| file://Z:/dotnet_build.csproj:0:0:0:0 | Z:/dotnet_build.csproj | relative | +| file://Z:/obj/dotnet_build.csproj.nuget.g.props:0:0:0:0 | Z:/obj/dotnet_build.csproj.nuget.g.props | relative | diff --git a/csharp/ql/integration-tests/windows/subst/file.ql b/csharp/ql/integration-tests/windows/subst/file.ql new file mode 100644 index 00000000000..43cc4a13fdc --- /dev/null +++ b/csharp/ql/integration-tests/windows/subst/file.ql @@ -0,0 +1,7 @@ +import csharp + +from File f, string relative +where + not f.getURL().matches("file://C:/Program Files/%") and + if exists(f.getRelativePath()) then relative = "relative" else relative = "" +select f, relative diff --git a/csharp/ql/integration-tests/windows/subst/test.py b/csharp/ql/integration-tests/windows/subst/test.py new file mode 100644 index 00000000000..8fbb3201cd4 --- /dev/null +++ b/csharp/ql/integration-tests/windows/subst/test.py @@ -0,0 +1,7 @@ +import runs_on + + +@runs_on.windows +def test(codeql, csharp, cwd, subst_drive): + drive = subst_drive(cwd / "code") + codeql.database.create(source_root=drive) diff --git a/csharp/ql/lib/change-notes/2026-06-24-nuget-packages-config.md b/csharp/ql/lib/change-notes/2026-06-24-nuget-packages-config.md new file mode 100644 index 00000000000..5b236a118da --- /dev/null +++ b/csharp/ql/lib/change-notes/2026-06-24-nuget-packages-config.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Simplified and streamlined the use of NuGet sources when downloading dependencies via `[mono] nuget.exe` in `build-mode: none`: NuGet sources are now supplied via the `-Source` flag instead of moving or creating `nuget.config` files in the checked-out repository, private registries are used if configured, and only reachable feeds are used when NuGet feed checking is enabled (the default). diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index f0d4bd99621..d12c65c9fff 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -714,7 +714,7 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index a7ab18a6290..f936a206e2b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -34,6 +34,8 @@ module Input implements InputSig class SinkBase = Void; + class FlowSummaryCallBase = Void; + predicate neutralElement(SummarizedCallableBase c, string kind, string provenance, boolean isExact) { interpretNeutral(c, kind, provenance, isExact) } @@ -201,6 +203,10 @@ private module TypesInput implements Impl::Private::TypesInputSig { } private module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + DataFlowCall getACall(Public::SummarizedCallable sc) { sc = viableCallable(result).asSummarizedCallable() } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index d3ae19c6d18..e51eaf4bbcb 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -171,7 +171,7 @@ private module Cached { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) } } diff --git a/go/documentation/library-coverage/coverage.csv b/go/documentation/library-coverage/coverage.csv index 12b10fbb9e1..d4266a31dfb 100644 --- a/go/documentation/library-coverage/coverage.csv +++ b/go/documentation/library-coverage/coverage.csv @@ -123,7 +123,7 @@ k8s.io/api/core,,,10,,,,,,,,,,,,,,,,,,,,,,,10, k8s.io/apimachinery/pkg/runtime,,,47,,,,,,,,,,,,,,,,,,,,,,,47, k8s.io/klog,90,,,,,,90,,,,,,,,,,,,,,,,,,,, launchpad.net/xmlpath,2,,,,,,,,,,,,,,,,,,2,,,,,,,, -log,40,,3,,,,40,,,,,,,,,,,,,,,,,,,3, +log,43,,16,,,,43,,,,,,,,,,,,,,,,,,,16, math/big,,,1,,,,,,,,,,,,,,,,,,,,,,,1, mime,,,14,,,,,,,,,,,,,,,,,,,,,,,14, net,2,16,100,,,,,,1,,,,,,,,1,,,,,,,16,,100, diff --git a/go/documentation/library-coverage/coverage.rst b/go/documentation/library-coverage/coverage.rst index 7d84b2022da..fc16fb8c2c5 100644 --- a/go/documentation/library-coverage/coverage.rst +++ b/go/documentation/library-coverage/coverage.rst @@ -32,7 +32,7 @@ Go framework & library support `Revel `_,"``github.com/revel/revel*``, ``github.com/robfig/revel*``",46,20,4 `SendGrid `_,``github.com/sendgrid/sendgrid-go*``,,1, `Squirrel `_,"``github.com/Masterminds/squirrel*``, ``github.com/lann/squirrel*``, ``gopkg.in/Masterminds/squirrel``",81,,96 - `Standard library `_,"````, ``archive/*``, ``bufio``, ``bytes``, ``cmp``, ``compress/*``, ``container/*``, ``context``, ``crypto``, ``crypto/*``, ``database/*``, ``debug/*``, ``embed``, ``encoding``, ``encoding/*``, ``errors``, ``expvar``, ``flag``, ``fmt``, ``go/*``, ``hash``, ``hash/*``, ``html``, ``html/*``, ``image``, ``image/*``, ``index/*``, ``io``, ``io/*``, ``log``, ``log/*``, ``maps``, ``math``, ``math/*``, ``mime``, ``mime/*``, ``net``, ``net/*``, ``os``, ``os/*``, ``path``, ``path/*``, ``plugin``, ``reflect``, ``reflect/*``, ``regexp``, ``regexp/*``, ``slices``, ``sort``, ``strconv``, ``strings``, ``sync``, ``sync/*``, ``syscall``, ``syscall/*``, ``testing``, ``testing/*``, ``text/*``, ``time``, ``time/*``, ``unicode``, ``unicode/*``, ``unsafe``, ``weak``",52,612,124 + `Standard library `_,"````, ``archive/*``, ``bufio``, ``bytes``, ``cmp``, ``compress/*``, ``container/*``, ``context``, ``crypto``, ``crypto/*``, ``database/*``, ``debug/*``, ``embed``, ``encoding``, ``encoding/*``, ``errors``, ``expvar``, ``flag``, ``fmt``, ``go/*``, ``hash``, ``hash/*``, ``html``, ``html/*``, ``image``, ``image/*``, ``index/*``, ``io``, ``io/*``, ``log``, ``log/*``, ``maps``, ``math``, ``math/*``, ``mime``, ``mime/*``, ``net``, ``net/*``, ``os``, ``os/*``, ``path``, ``path/*``, ``plugin``, ``reflect``, ``reflect/*``, ``regexp``, ``regexp/*``, ``slices``, ``sort``, ``strconv``, ``strings``, ``sync``, ``sync/*``, ``syscall``, ``syscall/*``, ``testing``, ``testing/*``, ``text/*``, ``time``, ``time/*``, ``unicode``, ``unicode/*``, ``unsafe``, ``weak``",52,625,127 `XORM `_,"``github.com/go-xorm/xorm*``, ``xorm.io/xorm*``",,,68 `XPath `_,``github.com/antchfx/xpath*``,,,4 `appleboy/gin-jwt `_,``github.com/appleboy/gin-jwt*``,,,1 @@ -74,5 +74,5 @@ Go framework & library support `xpathparser `_,``github.com/santhosh-tekuri/xpathparser*``,,,2 `yaml `_,``gopkg.in/yaml*``,,9, `zap `_,``go.uber.org/zap*``,,11,33 - Totals,,688,1072,1577 + Totals,,688,1085,1580 diff --git a/go/ql/integration-tests/subst/code/main.go b/go/ql/integration-tests/subst/code/main.go new file mode 100644 index 00000000000..38dd16da61a --- /dev/null +++ b/go/ql/integration-tests/subst/code/main.go @@ -0,0 +1,3 @@ +package main + +func main() {} diff --git a/go/ql/integration-tests/subst/file.expected b/go/ql/integration-tests/subst/file.expected new file mode 100644 index 00000000000..b86b34681e4 --- /dev/null +++ b/go/ql/integration-tests/subst/file.expected @@ -0,0 +1 @@ +| file://Z:/main.go:0:0:0:0 | Z:/main.go | relative | diff --git a/go/ql/integration-tests/subst/file.ql b/go/ql/integration-tests/subst/file.ql new file mode 100644 index 00000000000..0abcfdc784a --- /dev/null +++ b/go/ql/integration-tests/subst/file.ql @@ -0,0 +1,5 @@ +import go + +from File f, string relative +where if exists(f.getRelativePath()) then relative = "relative" else relative = "" +select f, relative diff --git a/go/ql/integration-tests/subst/test.py b/go/ql/integration-tests/subst/test.py new file mode 100644 index 00000000000..2fafe00927a --- /dev/null +++ b/go/ql/integration-tests/subst/test.py @@ -0,0 +1,7 @@ +import runs_on + + +@runs_on.windows +def test(codeql, go, cwd, subst_drive): + drive = subst_drive(cwd / "code") + codeql.database.create(command="go build main.go", source_root=drive) diff --git a/go/ql/lib/change-notes/2026-06-30-model-log-slog.md b/go/ql/lib/change-notes/2026-06-30-model-log-slog.md new file mode 100644 index 00000000000..836678f1ac9 --- /dev/null +++ b/go/ql/lib/change-notes/2026-06-30-model-log-slog.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- + * Improved models for the `log/slog` package (Go 1.21+), including `*slog.Logger` methods, `With`/`WithGroup`, and `Attr`/`Value` helpers, improving coverage for the `go/log-injection` and `go/clear-text-logging` queries. diff --git a/go/ql/lib/ext/log.slog.model.yml b/go/ql/lib/ext/log.slog.model.yml index 3283492c226..888f2b54aae 100644 --- a/go/ql/lib/ext/log.slog.model.yml +++ b/go/ql/lib/ext/log.slog.model.yml @@ -27,3 +27,27 @@ extensions: - ["log/slog", "Logger", True, "ErrorContext", "", "", "Argument[1..2]", "log-injection", "manual"] - ["log/slog", "Logger", True, "Log", "", "", "Argument[2..3]", "log-injection", "manual"] - ["log/slog", "Logger", True, "LogAttrs", "", "", "Argument[2..3]", "log-injection", "manual"] + # With/WithGroup add attributes that are included in every subsequent log call. + - ["log/slog", "", False, "With", "", "", "Argument[0]", "log-injection", "manual"] + - ["log/slog", "Logger", True, "With", "", "", "Argument[0]", "log-injection", "manual"] + - ["log/slog", "Logger", True, "WithGroup", "", "", "Argument[0]", "log-injection", "manual"] + - addsTo: + pack: codeql/go-all + extensible: summaryModel + data: + # Constructors for Attr that can carry a tainted string into the result. + - ["log/slog", "", False, "Any", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["log/slog", "", False, "Group", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["log/slog", "", False, "Group", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] + - ["log/slog", "", False, "GroupAttrs", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["log/slog", "", False, "GroupAttrs", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] + - ["log/slog", "", False, "String", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + # Constructors for Value that can carry a tainted string into the result. + - ["log/slog", "", False, "AnyValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["log/slog", "", False, "GroupValue", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"] + - ["log/slog", "", False, "StringValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + # Methods that read a string back out of an Attr or Value. + - ["log/slog", "Attr", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["log/slog", "Value", True, "Any", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["log/slog", "Value", True, "Group", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"] + - ["log/slog", "Value", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll index b29ff7d5ea8..e207a72727f 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll @@ -141,7 +141,7 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { any(FunctionModel m).flowStep(nodeFrom, nodeTo) and model = "FunctionModel" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index ff727286c3b..868066af1e4 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -31,6 +31,8 @@ module Input implements InputSig { class SinkBase = Void; + class FlowSummaryCallBase = Void; + predicate callableFromSource(SummarizedCallableBase c) { exists(c.getFuncDef()) } predicate neutralElement( @@ -113,6 +115,10 @@ module Input implements InputSig { private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + DataFlowCall getACall(Public::SummarizedCallable sc) { exists(DataFlow::CallNode call | call.asExpr() = result and diff --git a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll index f9f14874493..de7a1f743c5 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll @@ -109,8 +109,8 @@ private predicate localAdditionalForwardTaintStep( or any(AdditionalTaintStep a).step(pred, succ) and model = "AdditionalTaintStep" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(pred.(DataFlowPrivate::FlowSummaryNode) - .getSummaryNode(), succ.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, + succ.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) } /** diff --git a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/slog.go b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/slog.go index 63bb0a81792..3e7e660822f 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/slog.go +++ b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/slog.go @@ -37,4 +37,9 @@ func slogTest() { slog.InfoContext(ctx, text, key, v) // $ logger=text logger=key logger=v slog.Log(ctx, slog.LevelInfo, text, key, v) // $ logger=text logger=key logger=v slog.LogAttrs(ctx, slog.LevelInfo, text, attr) // $ logger=text logger=attr + + // With/WithGroup add attributes that are included in every subsequent log call. + logger.With(key, v) // $ logger=key logger=v + logger.WithGroup(text) // $ logger=text + slog.With(key, v) // $ logger=key logger=v } diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Slog/CONSISTENCY/DataFlowConsistency.expected b/go/ql/test/library-tests/semmle/go/frameworks/Slog/CONSISTENCY/DataFlowConsistency.expected new file mode 100644 index 00000000000..8242ca2cdb7 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/Slog/CONSISTENCY/DataFlowConsistency.expected @@ -0,0 +1,2 @@ +reverseRead +| test.go:114:21:114:33 | call to Group | Origin of readStep is missing a PostUpdateNode. | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Slog/TaintFlows.expected b/go/ql/test/library-tests/semmle/go/frameworks/Slog/TaintFlows.expected new file mode 100644 index 00000000000..42831abaf15 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/Slog/TaintFlows.expected @@ -0,0 +1,2 @@ +invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Slog/TaintFlows.ql b/go/ql/test/library-tests/semmle/go/frameworks/Slog/TaintFlows.ql new file mode 100644 index 00000000000..91b543f041c --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/Slog/TaintFlows.ql @@ -0,0 +1,14 @@ +import go +import semmle.go.dataflow.ExternalFlow +import ModelValidation +import utils.test.InlineFlowTest + +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.(DataFlow::CallNode).getTarget().getName() = ["getUntrustedData", "getUntrustedString"] + } + + predicate isSink(DataFlow::Node sink) { sink = any(LoggerCall log).getAMessageComponent() } +} + +import FlowTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Slog/go.mod b/go/ql/test/library-tests/semmle/go/frameworks/Slog/go.mod new file mode 100644 index 00000000000..a81507537ff --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/Slog/go.mod @@ -0,0 +1,3 @@ +module codeql-go-tests/frameworks/slog + +go 1.26 diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Slog/test.go b/go/ql/test/library-tests/semmle/go/frameworks/Slog/test.go new file mode 100644 index 00000000000..cf41ec09994 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/Slog/test.go @@ -0,0 +1,115 @@ +package main + +import ( + "context" + "log/slog" +) + +func main() {} + +func getUntrustedData() interface{} { return nil } + +func getUntrustedString() string { + return "tainted string" +} + +// Package-level convenience functions. + +func testSlogDebug() { + slog.Debug(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.Debug("msg", "key", getUntrustedData()) // $ hasValueFlow="call to getUntrustedData" + slog.Debug("msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" +} + +func testSlogInfo() { + slog.Info(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.Info("msg", slog.Any("key", getUntrustedData())) // $ hasTaintFlow="call to Any" + slog.Info("msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" +} + +func testSlogWarn() { + slog.Warn(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.Warn("msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" +} + +func testSlogError() { + slog.Error(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.Error("msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" +} + +func testSlogContextVariants(ctx context.Context) { + slog.DebugContext(ctx, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.InfoContext(ctx, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.WarnContext(ctx, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.ErrorContext(ctx, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.InfoContext(ctx, "msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" +} + +func testSlogLog(ctx context.Context) { + slog.Log(ctx, slog.LevelInfo, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.Log(ctx, slog.LevelInfo, "msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" + slog.LogAttrs(ctx, slog.LevelInfo, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + slog.LogAttrs(ctx, slog.LevelInfo, "msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" +} + +// Methods on *slog.Logger. + +func testLoggerMethods(logger *slog.Logger, ctx context.Context) { + logger.Debug(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + logger.Info(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + logger.Warn(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + logger.Error(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + logger.Info("msg", slog.Any("key", getUntrustedData())) // $ hasTaintFlow="call to Any" + logger.InfoContext(ctx, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + logger.Log(ctx, slog.LevelInfo, getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + logger.LogAttrs(ctx, slog.LevelInfo, "msg", slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" +} + +// With, Logger.With and Logger.WithGroup. Note that for ease of modeling we make these functions +// sinks, although strictly speaking we should consider logging functions called on the returned +// loggers as the sinks. + +func testWith(logger *slog.Logger) { + logger1 := logger.With(slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" + logger1.Info("hello world") + logger2 := logger.With(slog.Any(getUntrustedString(), nil)) // $ hasTaintFlow="call to Any" + logger2.Info("hello world") + logger.With("key", getUntrustedData()).Info("hello world") // $ hasValueFlow="call to getUntrustedData" +} + +func testPackageWith() { + logger := slog.With(slog.String("key", getUntrustedString())) // $ hasTaintFlow="call to String" + logger.Info("hello world") + slog.With("key", getUntrustedData()).Info("hello world") // $ hasValueFlow="call to getUntrustedData" +} + +func testWithGroup(logger *slog.Logger) { + grouped := logger.WithGroup(getUntrustedString()) // $ hasValueFlow="call to getUntrustedString" + grouped.Info("hello world") +} + +// Summary models: functions relating to Attr/Value that propagate strings. + +func testAttrConstructors(logger *slog.Logger) { + logger.Info("msg", slog.Group("group", slog.String("key", getUntrustedString()))) // $ hasTaintFlow="call to Group" + logger.Info("msg", slog.GroupAttrs("group", slog.String("key", getUntrustedString()))) // $ hasTaintFlow="call to GroupAttrs" +} + +func testValueConstructors(logger *slog.Logger) { + logger.Info("msg", "key", slog.AnyValue(getUntrustedString())) // $ hasTaintFlow="call to AnyValue" + logger.Info("msg", "key", slog.StringValue(getUntrustedString())) // $ hasTaintFlow="call to StringValue" + attr := slog.String("key", getUntrustedString()) + logger.Info("msg", "key", slog.GroupValue(attr)) // $ hasTaintFlow="call to GroupValue" +} + +func testAttrAndValueAccessors(logger *slog.Logger) { + attr := slog.String("key", getUntrustedString()) + logger.Info("msg", "key", attr.String()) // $ hasTaintFlow="call to String" + + v := slog.AnyValue(getUntrustedString()) + logger.Info("msg", "key", v.Any()) // $ hasTaintFlow="call to Any" + logger.Info("msg", "key", v.String()) // $ hasTaintFlow="call to String" + + group := slog.GroupValue(slog.String("key", getUntrustedString())) + logger.Info("msg", group.Group()[0]) // $ hasTaintFlow="index expression" +} diff --git a/java/ql/integration-tests/java/subst/code/test1.java b/java/ql/integration-tests/java/subst/code/test1.java new file mode 100644 index 00000000000..6f3e61a70fd --- /dev/null +++ b/java/ql/integration-tests/java/subst/code/test1.java @@ -0,0 +1,4 @@ +class Test { + public static void main(String[] args) { + } +} diff --git a/java/ql/integration-tests/java/subst/code/test2.kt b/java/ql/integration-tests/java/subst/code/test2.kt new file mode 100644 index 00000000000..d44a1616c01 --- /dev/null +++ b/java/ql/integration-tests/java/subst/code/test2.kt @@ -0,0 +1 @@ +fun main() {} diff --git a/java/ql/integration-tests/java/subst/file.expected b/java/ql/integration-tests/java/subst/file.expected new file mode 100644 index 00000000000..467876a7445 --- /dev/null +++ b/java/ql/integration-tests/java/subst/file.expected @@ -0,0 +1,5 @@ +| file://:0:0:0:0 | | | +| file://:0:0:0:0 | | | +| file://Z:/Test.class:0:0:0:0 | Test | relative | +| file://Z:/test1.java:0:0:0:0 | test1 | relative | +| file://Z:/test2.kt:0:0:0:0 | test2 | relative | diff --git a/java/ql/integration-tests/java/subst/file.ql b/java/ql/integration-tests/java/subst/file.ql new file mode 100644 index 00000000000..3421a4dda60 --- /dev/null +++ b/java/ql/integration-tests/java/subst/file.ql @@ -0,0 +1,9 @@ +import java + +from File f, string relative +where + not f.getURL().matches("file:///modules/%") and + not f.getURL().matches("file:///!unknown-binary-location/kotlin/%") and + not f.getURL().matches("%/ql/java/kotlin-extractor/%") and + if exists(f.getRelativePath()) then relative = "relative" else relative = "" +select f, relative diff --git a/java/ql/integration-tests/java/subst/test.py b/java/ql/integration-tests/java/subst/test.py new file mode 100644 index 00000000000..5c162ab08d9 --- /dev/null +++ b/java/ql/integration-tests/java/subst/test.py @@ -0,0 +1,7 @@ +import runs_on + + +@runs_on.windows +def test(codeql, java, cwd, subst_drive): + drive = subst_drive(cwd / "code") + codeql.database.create(command=["javac test1.java", "kotlinc test2.kt"], source_root=drive) diff --git a/java/ql/lib/ext/org.apache.hc.client5.http.protocol.model.yml b/java/ql/lib/ext/org.apache.hc.client5.http.protocol.model.yml index b5f46643f2f..1440539e79f 100644 --- a/java/ql/lib/ext/org.apache.hc.client5.http.protocol.model.yml +++ b/java/ql/lib/ext/org.apache.hc.client5.http.protocol.model.yml @@ -1,4 +1,10 @@ extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.apache.hc.client5.http.protocol", "RedirectLocations", True, "add", "(URI)", "", "Argument[0]", "Argument[this].Element", "value", "hq-manual"] + - addsTo: pack: codeql/java-all extensible: neutralModel diff --git a/java/ql/lib/ext/org.apache.hc.client5.http.protocol.yml b/java/ql/lib/ext/org.apache.hc.client5.http.protocol.yml deleted file mode 100644 index 9289e53f587..00000000000 --- a/java/ql/lib/ext/org.apache.hc.client5.http.protocol.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: summaryModel - data: - - ["org.apache.hc.client5.http.protocol", "RedirectLocations", True, "add", "(URI)", "", "Argument[0]", "Argument[this].Element", "value", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.client5.http.utils.yml b/java/ql/lib/ext/org.apache.hc.client5.http.utils.model.yml similarity index 100% rename from java/ql/lib/ext/org.apache.hc.client5.http.utils.yml rename to java/ql/lib/ext/org.apache.hc.client5.http.utils.model.yml diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index 9c2bb13a09f..d18190ffa1b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -247,8 +247,8 @@ private predicate simpleLocalFlowStep0(Node node1, Node node2, string model) { or cloneStep(node1, node2) and model = "CloneStep" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(node1.(FlowSummaryNode).getSummaryNode(), - node2.(FlowSummaryNode).getSummaryNode(), true, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(node1, node2.(FlowSummaryNode).getSummaryNode(), + true, model) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index 453b7ccae11..5ff113db730 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -41,6 +41,8 @@ module Input implements InputSig { class SinkBase = Void; + class FlowSummaryCallBase = Void; + predicate neutralElement( Input::SummarizedCallableBase c, string kind, string provenance, boolean isExact ) { @@ -144,6 +146,10 @@ private module TypesInput implements Impl::Private::TypesInputSig { } private module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + DataFlowCall getACall(Public::SummarizedCallable sc) { sc = viableCallable(result).asSummarizedCallable() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll index 5f1d6b66af5..dc6b075aed3 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll @@ -145,8 +145,8 @@ private module Cached { ) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(src.(DataFlowPrivate::FlowSummaryNode) - .getSummaryNode(), sink.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(src, + sink.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) } /** diff --git a/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.expected b/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.expected index 553af8b14e4..eb9df379063 100644 --- a/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.expected +++ b/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.expected @@ -234,8 +234,3 @@ subpaths | use.kt:9:14:9:25 | taint(...) : Closeable | use.kt:9:31:9:36 | it : Closeable | use.kt:9:33:9:34 | it : Closeable | use.kt:9:14:9:36 | use(...) | | with.kt:7:19:7:30 | taint(...) : String | with.kt:7:33:7:40 | $this$with : String | with.kt:7:35:7:38 | this : String | with.kt:7:14:7:40 | with(...) | testFailures -| test.kt:28:14:28:21 | getSecond(...) | Unexpected result: hasTaintFlow=a | -| test.kt:35:14:35:27 | component1(...) | Unexpected result: hasTaintFlow=d | -| test.kt:41:14:41:22 | getSecond(...) | Unexpected result: hasTaintFlow=e | -| test.kt:53:14:53:24 | getDuration(...) | Unexpected result: hasTaintFlow=f | -| test.kt:58:14:58:29 | component2(...) | Unexpected result: hasTaintFlow=g | diff --git a/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.kt b/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.kt index 6b41ab26557..50766dd8fdc 100644 --- a/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.kt +++ b/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.kt @@ -25,20 +25,20 @@ class Test { val p = Pair(taint("a"), "") sink(p) // $ hasTaintFlow=a sink(p.component1()) // $ hasTaintFlow=a - sink(p.second) + sink(p.second) // $ SPURIOUS: hasTaintFlow=a sink(taint("b").capitalize()) // $ hasTaintFlow=b sink(taint("c").replaceFirstChar { _ -> 'x' }) // $ hasTaintFlow=c val t = Triple("", taint("d"), "") sink(t) // $ hasTaintFlow=d - sink(t.component1()) + sink(t.component1()) // $ SPURIOUS: hasTaintFlow=d sink(t.second) // $ hasTaintFlow=d val p1 = taint("e") to "" sink(p1) // $ hasTaintFlow=e sink(p1.component1()) // $ hasTaintFlow=e - sink(p1.second) + sink(p1.second) // $ SPURIOUS: hasTaintFlow=e val l = p.toList() sink(l) // $ hasTaintFlow=a @@ -50,12 +50,12 @@ class Test { val tv = TimedValue(taint("f"), Duration.parse("")) sink(tv) // $ hasTaintFlow=f sink(tv.component1()) // $ hasTaintFlow=f - sink(tv.duration) + sink(tv.duration) // $ SPURIOUS: hasTaintFlow=f val mg0 = MatchGroup(taint("g"), IntRange(0, 10)) sink(mg0) // $ hasTaintFlow=g sink(mg0.value) // $ hasTaintFlow=g - sink(mg0.component2()) + sink(mg0.component2()) // $ SPURIOUS: hasTaintFlow=g val iv = IndexedValue(5, taint("h")) sink(iv) // $ hasTaintFlow=h @@ -72,4 +72,4 @@ class Test { sink(x.index) } } -} \ No newline at end of file +} diff --git a/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected b/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected index 553af8b14e4..eb9df379063 100644 --- a/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected +++ b/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected @@ -234,8 +234,3 @@ subpaths | use.kt:9:14:9:25 | taint(...) : Closeable | use.kt:9:31:9:36 | it : Closeable | use.kt:9:33:9:34 | it : Closeable | use.kt:9:14:9:36 | use(...) | | with.kt:7:19:7:30 | taint(...) : String | with.kt:7:33:7:40 | $this$with : String | with.kt:7:35:7:38 | this : String | with.kt:7:14:7:40 | with(...) | testFailures -| test.kt:28:14:28:21 | getSecond(...) | Unexpected result: hasTaintFlow=a | -| test.kt:35:14:35:27 | component1(...) | Unexpected result: hasTaintFlow=d | -| test.kt:41:14:41:22 | getSecond(...) | Unexpected result: hasTaintFlow=e | -| test.kt:53:14:53:24 | getDuration(...) | Unexpected result: hasTaintFlow=f | -| test.kt:58:14:58:29 | component2(...) | Unexpected result: hasTaintFlow=g | diff --git a/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.kt b/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.kt index 6b41ab26557..50766dd8fdc 100644 --- a/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.kt +++ b/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.kt @@ -25,20 +25,20 @@ class Test { val p = Pair(taint("a"), "") sink(p) // $ hasTaintFlow=a sink(p.component1()) // $ hasTaintFlow=a - sink(p.second) + sink(p.second) // $ SPURIOUS: hasTaintFlow=a sink(taint("b").capitalize()) // $ hasTaintFlow=b sink(taint("c").replaceFirstChar { _ -> 'x' }) // $ hasTaintFlow=c val t = Triple("", taint("d"), "") sink(t) // $ hasTaintFlow=d - sink(t.component1()) + sink(t.component1()) // $ SPURIOUS: hasTaintFlow=d sink(t.second) // $ hasTaintFlow=d val p1 = taint("e") to "" sink(p1) // $ hasTaintFlow=e sink(p1.component1()) // $ hasTaintFlow=e - sink(p1.second) + sink(p1.second) // $ SPURIOUS: hasTaintFlow=e val l = p.toList() sink(l) // $ hasTaintFlow=a @@ -50,12 +50,12 @@ class Test { val tv = TimedValue(taint("f"), Duration.parse("")) sink(tv) // $ hasTaintFlow=f sink(tv.component1()) // $ hasTaintFlow=f - sink(tv.duration) + sink(tv.duration) // $ SPURIOUS: hasTaintFlow=f val mg0 = MatchGroup(taint("g"), IntRange(0, 10)) sink(mg0) // $ hasTaintFlow=g sink(mg0.value) // $ hasTaintFlow=g - sink(mg0.component2()) + sink(mg0.component2()) // $ SPURIOUS: hasTaintFlow=g val iv = IndexedValue(5, taint("h")) sink(iv) // $ hasTaintFlow=h @@ -72,4 +72,4 @@ class Test { sink(x.index) } } -} \ No newline at end of file +} diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected index af36477b917..dc4f64411c4 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptThenMac.expected @@ -29,8 +29,3 @@ nodes | BadMacUse.java:146:48:146:57 | ciphertext : byte[] | semmle.label | ciphertext : byte[] | | BadMacUse.java:152:42:152:51 | ciphertext | semmle.label | ciphertext | subpaths -testFailures -| BadMacUse.java:50:56:50:66 | // $ Source | Missing result: Source | -| BadMacUse.java:63:118:63:128 | // $ Source | Missing result: Source | -| BadMacUse.java:92:31:92:35 | bytes : byte[] | Unexpected result: Source | -| BadMacUse.java:146:95:146:105 | // $ Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected index 6fcff81b7f6..7cbaef3bd02 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderDecryptToMac.expected @@ -30,8 +30,3 @@ nodes | BadMacUse.java:118:83:118:84 | iv : byte[] | semmle.label | iv : byte[] | | BadMacUse.java:124:42:124:51 | ciphertext | semmle.label | ciphertext | subpaths -testFailures -| BadMacUse.java:63:118:63:128 | // $ Source | Missing result: Source | -| BadMacUse.java:92:16:92:36 | doFinal(...) : byte[] | Unexpected result: Source | -| BadMacUse.java:124:42:124:51 | ciphertext | Unexpected result: Alert | -| BadMacUse.java:146:95:146:105 | // $ Source | Missing result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected index 2daa6405cd0..3c6a7e6ae20 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacOrderMacOnEncryptPlaintext.expected @@ -44,8 +44,3 @@ nodes | BadMacUse.java:146:48:146:57 | ciphertext : byte[] [[]] : Object | semmle.label | ciphertext : byte[] [[]] : Object | | BadMacUse.java:152:42:152:51 | ciphertext | semmle.label | ciphertext | subpaths -testFailures -| BadMacUse.java:50:56:50:66 | // $ Source | Missing result: Source | -| BadMacUse.java:139:79:139:90 | input : byte[] | Unexpected result: Source | -| BadMacUse.java:146:95:146:105 | // $ Source | Missing result: Source | -| BadMacUse.java:152:42:152:51 | ciphertext | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java index 4c1ae5b3621..c2bd2e61c2e 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/BadMacUse/BadMacUse.java @@ -47,7 +47,7 @@ class BadMacUse { SecretKey encryptionKey = new SecretKeySpec(encryptionKeyBytes, "AES"); Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); cipher.init(Cipher.DECRYPT_MODE, encryptionKey, new SecureRandom()); - byte[] plaintext = cipher.doFinal(ciphertext); // $ Source + byte[] plaintext = cipher.doFinal(ciphertext); // $ Source[java/quantum/examples/bad-mac-order-decrypt-to-mac] // Now verify MAC (too late) SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); @@ -60,7 +60,7 @@ class BadMacUse { } } - public void BadMacOnPlaintext(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] plaintext) throws Exception {// $ Source + public void BadMacOnPlaintext(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] plaintext) throws Exception {// $ Source[java/quantum/examples/bad-mac-order-encrypt-plaintext-also-in-mac] // Create keys directly from provided byte arrays SecretKey encryptionKey = new SecretKeySpec(encryptionKeyBytes, "AES"); SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); @@ -89,7 +89,7 @@ class BadMacUse { IvParameterSpec ivParameterSpec = new IvParameterSpec(iv); cipher.init(mode, secretKeySpec, ivParameterSpec); - return cipher.doFinal(bytes); + return cipher.doFinal(bytes); // $ Source[java/quantum/examples/bad-mac-order-decrypt-then-mac] Source[java/quantum/examples/bad-mac-order-decrypt-to-mac] } /** @@ -121,7 +121,7 @@ class BadMacUse { SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); Mac mac = Mac.getInstance("HmacSHA256"); mac.init(macKey); - byte[] computedMac = mac.doFinal(ciphertext); // False Positive + byte[] computedMac = mac.doFinal(ciphertext); // $ SPURIOUS: Alert[java/quantum/examples/bad-mac-order-decrypt-to-mac] // Concatenate ciphertext and MAC byte[] output = new byte[ciphertext.length + computedMac.length]; @@ -136,20 +136,20 @@ class BadMacUse { * The function decrypts THEN computes the MAC on the plaintext. * It should have the MAC computed on the ciphertext first. */ - public void decryptThenMac(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] input) throws Exception { + public void decryptThenMac(byte[] encryptionKeyBytes, byte[] macKeyBytes, byte[] input) throws Exception { // $ SPURIOUS: Source[java/quantum/examples/bad-mac-order-encrypt-plaintext-also-in-mac] // Split input into ciphertext and MAC int macLength = 32; // HMAC-SHA256 output length byte[] ciphertext = Arrays.copyOfRange(input, 0, input.length - macLength); byte[] receivedMac = Arrays.copyOfRange(input, input.length - macLength, input.length); // Decrypt first (unsafe) - byte[] plaintext = decryptUsingWrapper(ciphertext, encryptionKeyBytes, new byte[16]); // $ Source + byte[] plaintext = decryptUsingWrapper(ciphertext, encryptionKeyBytes, new byte[16]); // Now verify MAC (too late) SecretKey macKey = new SecretKeySpec(macKeyBytes, "HmacSHA256"); Mac mac = Mac.getInstance("HmacSHA256"); mac.init(macKey); - byte[] computedMac = mac.doFinal(ciphertext); // $ Alert[java/quantum/examples/bad-mac-order-decrypt-then-mac], False positive for Plaintext reuse + byte[] computedMac = mac.doFinal(ciphertext); // $ Alert[java/quantum/examples/bad-mac-order-decrypt-then-mac] SPURIOUS: Alert[java/quantum/examples/bad-mac-order-encrypt-plaintext-also-in-mac] if (!MessageDigest.isEqual(receivedMac, computedMac)) { throw new SecurityException("MAC verification failed"); diff --git a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected index 3ad1b08e476..54829827975 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.expected @@ -126,5 +126,3 @@ nodes | InsecureIVorNonceSource.java:202:54:202:55 | iv : byte[] | semmle.label | iv : byte[] | | InsecureIVorNonceSource.java:206:51:206:56 | ivSpec | semmle.label | ivSpec | subpaths -testFailures -| InsecureIVorNonceSource.java:42:21:42:21 | 1 : Number | Unexpected result: Source | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java index f9474681d19..b8f64e56616 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/InsecureOrUnknownNonceSource/InsecureIVorNonceSource.java @@ -39,7 +39,7 @@ public class InsecureIVorNonceSource { public byte[] encryptWithStaticIvByteArray(byte[] key, byte[] plaintext) throws Exception { byte[] iv = new byte[16]; for (byte i = 0; i < iv.length; i++) { - iv[i] = 1; + iv[i] = 1; // $ Source[java/quantum/examples/insecure-iv-or-nonce] } IvParameterSpec ivSpec = new IvParameterSpec(iv); diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java index 50bc113b900..7fa9c1f99ef 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/Test.java @@ -40,11 +40,11 @@ public class Test { * SAST/CBOM: - Parent: PBKDF2. - Iteration count is only 10, which is far * below acceptable security standards. - Flagged as insecure. */ - public void pbkdf2LowIteration(String password, int iterationCount) throws Exception { // $ Source + public void pbkdf2LowIteration(String password, int iterationCount) throws Exception { // $ Source[java/quantum/examples/unknown-kdf-iteration-count] byte[] salt = generateSalt(16); - PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); // $ Alert[java/quantum/examples/unknown-kdf-iteration-count] + PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterationCount, 256); SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); - byte[] key = factory.generateSecret(spec).getEncoded(); + byte[] key = factory.generateSecret(spec).getEncoded(); // $ Alert[java/quantum/examples/unknown-kdf-iteration-count] } /** diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected index 192393ad028..778cb1aa79e 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/UnknownKDFIterationCount.expected @@ -1,5 +1 @@ -#select | Test.java:47:22:47:49 | KeyDerivation | Key derivation operation with unknown iteration: $@ | Test.java:43:53:43:70 | iterationCount | iterationCount | -testFailures -| Test.java:45:94:45:154 | // $ Alert[java/quantum/examples/unknown-kdf-iteration-count] | Missing result: Alert[java/quantum/examples/unknown-kdf-iteration-count] | -| Test.java:47:22:47:49 | Key derivation operation with unknown iteration: $@ | Unexpected result: Alert | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected index cd19c73a665..6918a04bece 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/WeakOrUnknownKDFIterationCount/WeakKDFIterationCount.expected @@ -12,5 +12,3 @@ nodes | Test.java:58:30:58:38 | 1_000_000 : Number | semmle.label | 1_000_000 : Number | | Test.java:59:72:59:85 | iterationCount | semmle.label | iterationCount | subpaths -testFailures -| Test.java:43:92:43:102 | // $ Source | Missing result: Source | diff --git a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql index b58044b14f4..ce43c1a216a 100644 --- a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql +++ b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql @@ -13,8 +13,7 @@ predicate taintFlowUpdate(DataFlow::ParameterNode p1, DataFlow::ParameterNode p2 } predicate summaryStep(FlowSummaryNode src, FlowSummaryNode sink) { - FlowSummaryImpl::Private::Steps::summaryLocalStep(src.getSummaryNode(), sink.getSummaryNode(), - false, _) or + FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink.getSummaryNode(), false, _) or FlowSummaryImpl::Private::Steps::summaryReadStep(src.getSummaryNode(), _, sink.getSummaryNode()) or FlowSummaryImpl::Private::Steps::summaryStoreStep(src.getSummaryNode(), _, sink.getSummaryNode()) } diff --git a/javascript/ql/integration-tests/subst/code/main.js b/javascript/ql/integration-tests/subst/code/main.js new file mode 100644 index 00000000000..8dbc3ac7047 --- /dev/null +++ b/javascript/ql/integration-tests/subst/code/main.js @@ -0,0 +1 @@ +function interesting() { } diff --git a/javascript/ql/integration-tests/subst/code/test.ts b/javascript/ql/integration-tests/subst/code/test.ts new file mode 100644 index 00000000000..573541ac970 --- /dev/null +++ b/javascript/ql/integration-tests/subst/code/test.ts @@ -0,0 +1 @@ +0 diff --git a/javascript/ql/integration-tests/subst/file.expected b/javascript/ql/integration-tests/subst/file.expected new file mode 100644 index 00000000000..10416eb5e73 --- /dev/null +++ b/javascript/ql/integration-tests/subst/file.expected @@ -0,0 +1,2 @@ +| file://Z:/main.js:0:0:0:0 | Z:/main.js | relative | +| file://Z:/test.ts:0:0:0:0 | Z:/test.ts | relative | diff --git a/javascript/ql/integration-tests/subst/file.ql b/javascript/ql/integration-tests/subst/file.ql new file mode 100644 index 00000000000..5debbe443cd --- /dev/null +++ b/javascript/ql/integration-tests/subst/file.ql @@ -0,0 +1,7 @@ +import javascript + +from File f, string relative +where + not f.getURL().matches("%/target/intree/%") and + if exists(f.getRelativePath()) then relative = "relative" else relative = "" +select f, relative diff --git a/javascript/ql/integration-tests/subst/test.py b/javascript/ql/integration-tests/subst/test.py new file mode 100644 index 00000000000..98b1c76d517 --- /dev/null +++ b/javascript/ql/integration-tests/subst/test.py @@ -0,0 +1,7 @@ +import runs_on + + +@runs_on.windows +def test(codeql, javascript, cwd, subst_drive): + drive = subst_drive(cwd / "code") + codeql.database.create(source_root=drive) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll index f8836e51ad9..922dd5acc86 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll @@ -1212,8 +1212,8 @@ private predicate valuePreservingStep(Node node1, Node node2) { or node2 = FlowSteps::getThrowTarget(node1) or - FlowSummaryPrivate::Steps::summaryLocalStep(node1.(FlowSummaryNode).getSummaryNode(), - node2.(FlowSummaryNode).getSummaryNode(), true, _) // TODO: preserve 'model' + FlowSummaryPrivate::Steps::summaryLocalStep(node1, node2.(FlowSummaryNode).getSummaryNode(), true, + _) // TODO: preserve 'model' } predicate knownSourceModel(Node sink, string model) { none() } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll index fe7bab98341..a7519f4180b 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSummaryPrivate.qll @@ -142,6 +142,10 @@ string encodeArgumentPosition(ArgumentPosition pos) { ReturnKind getStandardReturnValueKind() { result = MkNormalReturnKind() and Stage::ref() } private module FlowSummaryStepInput implements Private::StepsInputSig { + Private::SummaryNode getSummaryNode(DataFlow::Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + overlay[global] DataFlowCall getACall(SummarizedCallable sc) { exists(LibraryCallable callable | callable = sc | diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll index 548d06ef64f..e7b3a6e5658 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/TaintTrackingPrivate.qll @@ -12,8 +12,8 @@ cached predicate defaultAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) { TaintTracking::AdditionalTaintStep::step(node1, node2) or - FlowSummaryPrivate::Steps::summaryLocalStep(node1.(FlowSummaryNode).getSummaryNode(), - node2.(FlowSummaryNode).getSummaryNode(), false, _) // TODO: preserve 'model' parameter + FlowSummaryPrivate::Steps::summaryLocalStep(node1, node2.(FlowSummaryNode).getSummaryNode(), + false, _) // TODO: preserve 'model' parameter or // Convert steps out of array elements to plain taint steps FlowSummaryPrivate::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll index 76992ed02cf..0f0966cb27c 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/DataFlowArg.qll @@ -3,6 +3,7 @@ private import DataFlowImplSpecific private import codeql.dataflow.DataFlow as SharedDataFlow private import codeql.dataflow.TaintTracking as SharedTaintTracking private import codeql.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl +private import codeql.util.Void module JSDataFlow implements SharedDataFlow::InputSig { import Private @@ -28,6 +29,8 @@ module JSFlowSummary implements FlowSummaryImpl::InputSig private import semmle.javascript.dataflow.internal.FlowSummaryPrivate as FlowSummaryPrivate import FlowSummaryPrivate + class FlowSummaryCallBase = Void; + overlay[local] predicate callableFromSource(SummarizedCallableBase c) { none() } diff --git a/python/ql/integration-tests/subst/code/main.py b/python/ql/integration-tests/subst/code/main.py new file mode 100644 index 00000000000..3e978a7aa9e --- /dev/null +++ b/python/ql/integration-tests/subst/code/main.py @@ -0,0 +1 @@ +print(0) diff --git a/python/ql/integration-tests/subst/file.expected b/python/ql/integration-tests/subst/file.expected new file mode 100644 index 00000000000..1bc4d03914a --- /dev/null +++ b/python/ql/integration-tests/subst/file.expected @@ -0,0 +1 @@ +| code/main.py:0:0:0:0 | code/main.py | | diff --git a/python/ql/integration-tests/subst/file.ql b/python/ql/integration-tests/subst/file.ql new file mode 100644 index 00000000000..779bbe98110 --- /dev/null +++ b/python/ql/integration-tests/subst/file.ql @@ -0,0 +1,5 @@ +import python + +from File f, string relative +where if exists(f.getRelativePath()) then relative = "relative" else relative = "" +select f, relative diff --git a/python/ql/integration-tests/subst/test.py b/python/ql/integration-tests/subst/test.py new file mode 100644 index 00000000000..627810a6dc1 --- /dev/null +++ b/python/ql/integration-tests/subst/test.py @@ -0,0 +1,7 @@ +import runs_on + + +@runs_on.windows +def test(codeql, python, cwd, subst_drive): + drive = subst_drive(cwd / "code") + codeql.database.create(source_root=drive) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 04e8ad0587f..01b9f04c01c 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -529,7 +529,7 @@ predicate simpleLocalFlowStepForTypetracking(Node nodeFrom, Node nodeTo) { } private predicate summaryLocalStep(Node nodeFrom, Node nodeTo, string model) { - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) } @@ -1138,7 +1138,9 @@ predicate clearsContent(Node n, ContentSet cs) { * Holds if the value that is being tracked is expected to be stored inside content `c` * at node `n`. */ -predicate expectsContent(Node n, ContentSet c) { none() } +predicate expectsContent(Node n, ContentSet c) { + FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) +} /** * Holds if values stored inside attribute `c` are cleared at node `n`. diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index 0931fcca0dc..22c2f75944a 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -20,6 +20,8 @@ module Input implements InputSig class SinkBase = Void; + class FlowSummaryCallBase = Void; + predicate callableFromSource(SummarizedCallableBase c) { none() } ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() } @@ -91,6 +93,8 @@ module Input implements InputSig cs.isAnyTupleOrDictionaryElement() and result = "AnyTupleOrDictionaryElement" and arg = "" } + string encodeWithContent(ContentSet c, string arg) { result = "With" + encodeContent(c, arg) } + bindingset[token] ParameterPosition decodeUnknownParameterPosition(AccessPath::AccessPathTokenBase token) { // needed to support `Argument[x..y]` ranges @@ -109,6 +113,10 @@ module Input implements InputSig private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + overlay[global] DataFlowCall getACall(Public::SummarizedCallable sc) { result = diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll index 2213ff35b1b..50a6be72d9b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll @@ -80,10 +80,8 @@ private module Cached { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom - .(DataFlowPrivate::FlowSummaryNode) - .getSummaryNode(), nodeTo.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, - model) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, + nodeTo.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false, model) } } diff --git a/python/ql/lib/semmle/python/frameworks/Stdlib.qll b/python/ql/lib/semmle/python/frameworks/Stdlib.qll index a9fd72530f5..df69a010fd8 100644 --- a/python/ql/lib/semmle/python/frameworks/Stdlib.qll +++ b/python/ql/lib/semmle/python/frameworks/Stdlib.qll @@ -4199,11 +4199,9 @@ module StdlibPrivate { // The positional argument contains a mapping. // TODO: these values can be overwritten by keyword arguments // - dict mapping - exists(DataFlow::DictionaryElementContent dc, string key | key = dc.getKey() | - input = "Argument[0].DictionaryElement[" + key + "]" and - output = "ReturnValue.DictionaryElement[" + key + "]" and - preservesValue = true - ) + input = "Argument[0].WithAnyDictionaryElement" and + output = "ReturnValue" and + preservesValue = true or // - list-of-pairs mapping input = "Argument[0].ListElement.TupleElement[1]" and @@ -4240,9 +4238,7 @@ module StdlibPrivate { or input = "Argument[0].SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[0].TupleElement[" + i.toString() + "]" - ) + input = "Argument[0].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and // Element content is mutated into list element content @@ -4266,11 +4262,9 @@ module StdlibPrivate { } override predicate propagatesFlow(string input, string output, boolean preservesValue) { - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[0].TupleElement[" + i.toString() + "]" and - output = "ReturnValue.TupleElement[" + i.toString() + "]" and - preservesValue = true - ) + input = "Argument[0].WithAnyTupleElement" and + output = "ReturnValue" and + preservesValue = true or input = "Argument[0].ListElement" and output = "ReturnValue" and @@ -4294,9 +4288,7 @@ module StdlibPrivate { or input = "Argument[0].SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[0].TupleElement[" + i.toString() + "]" - ) + input = "Argument[0].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and output = "ReturnValue.SetElement" and @@ -4342,9 +4334,7 @@ module StdlibPrivate { or input = "Argument[0].SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[0].TupleElement[" + i.toString() + "]" - ) + input = "Argument[0].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and output = "ReturnValue.ListElement" and @@ -4372,9 +4362,7 @@ module StdlibPrivate { or content = "SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - content = "TupleElement[" + i.toString() + "]" - ) + content = "AnyTupleElement" | // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent input = "Argument[0]." + content and @@ -4404,9 +4392,7 @@ module StdlibPrivate { or input = "Argument[0].SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[0].TupleElement[" + i.toString() + "]" - ) + input = "Argument[0].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and output = "ReturnValue.ListElement" and @@ -4434,9 +4420,7 @@ module StdlibPrivate { or input = "Argument[0].SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[0].TupleElement[" + i.toString() + "]" - ) + input = "Argument[0].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and output = "ReturnValue" and @@ -4468,9 +4452,7 @@ module StdlibPrivate { // We reduce generality slightly by not tracking tuple contents on list arguments beyond the first, for performance. // TODO: Once we have TupleElementAny, this generality can be increased. i = 0 and - exists(DataFlow::TupleElementContent tc, int j | j = tc.getIndex() | - input = "Argument[1].TupleElement[" + j.toString() + "]" - ) + input = "Argument[1].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and output = "Argument[0].Parameter[" + i.toString() + "]" and @@ -4499,9 +4481,7 @@ module StdlibPrivate { or input = "Argument[1].SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[1].TupleElement[" + i.toString() + "]" - ) + input = "Argument[1].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and (output = "Argument[0].Parameter[0]" or output = "ReturnValue.ListElement") and @@ -4525,9 +4505,7 @@ module StdlibPrivate { or input = "Argument[0].SetElement" or - exists(DataFlow::TupleElementContent tc, int i | i = tc.getIndex() | - input = "Argument[0].TupleElement[" + i.toString() + "]" - ) + input = "Argument[0].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and output = "ReturnValue.ListElement.TupleElement[1]" and @@ -4552,12 +4530,7 @@ module StdlibPrivate { or input = "Argument[" + i.toString() + "].SetElement" or - // We reduce generality slightly by not tracking tuple contents on arguments beyond the first two, for performance. - // TODO: Once we have TupleElementAny, this generality can be increased. - i in [0 .. 1] and - exists(DataFlow::TupleElementContent tc, int j | j = tc.getIndex() | - input = "Argument[" + i.toString() + "].TupleElement[" + j.toString() + "]" - ) + input = "Argument[" + i.toString() + "].AnyTupleElement" // TODO: Once we have DictKeyContent, we need to transform that into ListElementContent ) and output = "ReturnValue.ListElement.TupleElement[" + i.toString() + "]" and @@ -4580,12 +4553,6 @@ module StdlibPrivate { override DataFlow::ArgumentNode getACallback() { none() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { - exists(DataFlow::Content c | - input = "Argument[self]." + c.getMaDRepresentation() and - output = "ReturnValue." + c.getMaDRepresentation() and - preservesValue = true - ) - or input = "Argument[self]" and output = "ReturnValue" and preservesValue = true @@ -4741,12 +4708,10 @@ module StdlibPrivate { override DataFlow::ArgumentNode getACallback() { none() } override predicate propagatesFlow(string input, string output, boolean preservesValue) { - exists(DataFlow::DictionaryElementContent dc, string key | key = dc.getKey() | - input = "Argument[self].DictionaryElement[" + key + "]" and - output = "ReturnValue.TupleElement[1]" and - preservesValue = true - // TODO: put `key` into "ReturnValue.TupleElement[0]" - ) + input = "Argument[self].AnyDictionaryElement" and + output = "ReturnValue.TupleElement[1]" and + preservesValue = true + // TODO: put `key` into "ReturnValue.TupleElement[0]" } } @@ -4825,11 +4790,9 @@ module StdlibPrivate { } override predicate propagatesFlow(string input, string output, boolean preservesValue) { - exists(DataFlow::DictionaryElementContent dc, string key | key = dc.getKey() | - input = "Argument[self].DictionaryElement[" + key + "]" and - output = "ReturnValue.ListElement" and - preservesValue = true - ) + input = "Argument[self].AnyDictionaryElement" and + output = "ReturnValue.ListElement" and + preservesValue = true or input = "Argument[self]" and output = "ReturnValue" and @@ -4876,11 +4839,9 @@ module StdlibPrivate { } override predicate propagatesFlow(string input, string output, boolean preservesValue) { - exists(DataFlow::DictionaryElementContent dc, string key | key = dc.getKey() | - input = "Argument[self].DictionaryElement[" + key + "]" and - output = "ReturnValue.ListElement.TupleElement[1]" and - preservesValue = true - ) + input = "Argument[self].AnyDictionaryElement" and + output = "ReturnValue.ListElement.TupleElement[1]" and + preservesValue = true or // TODO: Add the keys to output list input = "Argument[self]" and diff --git a/python/ql/test/library-tests/dataflow/coverage/test_builtins.py b/python/ql/test/library-tests/dataflow/coverage/test_builtins.py index 8e87e56dc2e..7ef7866ec17 100644 --- a/python/ql/test/library-tests/dataflow/coverage/test_builtins.py +++ b/python/ql/test/library-tests/dataflow/coverage/test_builtins.py @@ -589,11 +589,11 @@ def test_zip_tuple(): SINK(z[0][0]) # $ flow="SOURCE, l:-7 -> z[0][0]" SINK(z[0][1]) # $ flow="SOURCE, l:-7 -> z[0][1]" - SINK_F(z[0][2]) + SINK_F(z[0][2]) # $ SPURIOUS: flow="SOURCE, l:-7 -> z[0][2]" SINK_F(z[0][3]) SINK(z[1][0]) # $ flow="SOURCE, l:-11 -> z[1][0]" SINK_F(z[1][1]) # $ SPURIOUS: flow="SOURCE, l:-11 -> z[1][1]" - SINK(z[1][2]) # $ MISSING: flow="SOURCE, l:-11 -> z[1][2]" # Tuple contents are not tracked beyond the first two arguments for performance. + SINK(z[1][2]) # $ flow="SOURCE, l:-11 -> z[1][2]" SINK_F(z[1][3]) @expects(4) diff --git a/python/ql/test/library-tests/frameworks/django-orm/testapp/orm_tests.py b/python/ql/test/library-tests/frameworks/django-orm/testapp/orm_tests.py index 3e8ba31d019..7081f73b525 100644 --- a/python/ql/test/library-tests/frameworks/django-orm/testapp/orm_tests.py +++ b/python/ql/test/library-tests/frameworks/django-orm/testapp/orm_tests.py @@ -362,7 +362,7 @@ def test_load_in_bulk(): # see https://docs.djangoproject.com/en/4.0/ref/models/querysets/#in-bulk d = TestLoad.objects.in_bulk([1]) for val in d.values(): - SINK(val.text) # $ MISSING: flow + SINK(val.text) # $ flow="SOURCE, l:-65 -> val.text" SINK(d[1].text) # $ flow="SOURCE, l:-66 -> d[1].text" diff --git a/ql/Cargo.lock b/ql/Cargo.lock index ba31581cc23..5c65d88de6a 100644 Binary files a/ql/Cargo.lock and b/ql/Cargo.lock differ diff --git a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll index 402cb23b910..e2aedc401f7 100644 --- a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll +++ b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll @@ -26,7 +26,7 @@ private predicate discardLocation(@location_default loc) { overlay[local] module QL { /** The base class for all AST nodes */ - class AstNode extends @ql_ast_node { + private class AstNodeImpl extends @ql_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -49,8 +49,10 @@ module QL { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @ql_token, AstNode { + private class TokenImpl extends @ql_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { ql_tokeninfo(this, _, result) } @@ -61,8 +63,10 @@ module QL { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @ql_reserved_word, Token { + final class ReservedWord extends @ql_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -88,7 +92,7 @@ module QL { } /** A class representing `add_expr` nodes. */ - class AddExpr extends @ql_add_expr, AstNode { + final class AddExpr extends @ql_add_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AddExpr" } @@ -110,19 +114,19 @@ module QL { } /** A class representing `addop` tokens. */ - class Addop extends @ql_token_addop, Token { + final class Addop extends @ql_token_addop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Addop" } } /** A class representing `aggId` tokens. */ - class AggId extends @ql_token_agg_id, Token { + final class AggId extends @ql_token_agg_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AggId" } } /** A class representing `aggregate` nodes. */ - class Aggregate extends @ql_aggregate, AstNode { + final class Aggregate extends @ql_aggregate, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Aggregate" } @@ -134,7 +138,7 @@ module QL { } /** A class representing `annotArg` nodes. */ - class AnnotArg extends @ql_annot_arg, AstNode { + final class AnnotArg extends @ql_annot_arg, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AnnotArg" } @@ -146,13 +150,13 @@ module QL { } /** A class representing `annotName` tokens. */ - class AnnotName extends @ql_token_annot_name, Token { + final class AnnotName extends @ql_token_annot_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AnnotName" } } /** A class representing `annotation` nodes. */ - class Annotation extends @ql_annotation, AstNode { + final class Annotation extends @ql_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Annotation" } @@ -169,7 +173,7 @@ module QL { } /** A class representing `aritylessPredicateExpr` nodes. */ - class AritylessPredicateExpr extends @ql_arityless_predicate_expr, AstNode { + final class AritylessPredicateExpr extends @ql_arityless_predicate_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AritylessPredicateExpr" } @@ -187,7 +191,7 @@ module QL { } /** A class representing `asExpr` nodes. */ - class AsExpr extends @ql_as_expr, AstNode { + final class AsExpr extends @ql_as_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AsExpr" } @@ -199,7 +203,7 @@ module QL { } /** A class representing `asExprs` nodes. */ - class AsExprs extends @ql_as_exprs, AstNode { + final class AsExprs extends @ql_as_exprs, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AsExprs" } @@ -211,13 +215,13 @@ module QL { } /** A class representing `block_comment` tokens. */ - class BlockComment extends @ql_token_block_comment, Token { + final class BlockComment extends @ql_token_block_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockComment" } } /** A class representing `body` nodes. */ - class Body extends @ql_body, AstNode { + final class Body extends @ql_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Body" } @@ -229,7 +233,7 @@ module QL { } /** A class representing `bool` nodes. */ - class Bool extends @ql_bool, AstNode { + final class Bool extends @ql_bool, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Bool" } @@ -241,7 +245,7 @@ module QL { } /** A class representing `call_body` nodes. */ - class CallBody extends @ql_call_body, AstNode { + final class CallBody extends @ql_call_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CallBody" } @@ -253,7 +257,7 @@ module QL { } /** A class representing `call_or_unqual_agg_expr` nodes. */ - class CallOrUnqualAggExpr extends @ql_call_or_unqual_agg_expr, AstNode { + final class CallOrUnqualAggExpr extends @ql_call_or_unqual_agg_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CallOrUnqualAggExpr" } @@ -265,7 +269,7 @@ module QL { } /** A class representing `charpred` nodes. */ - class Charpred extends @ql_charpred, AstNode { + final class Charpred extends @ql_charpred, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Charpred" } @@ -282,7 +286,7 @@ module QL { } /** A class representing `classMember` nodes. */ - class ClassMember extends @ql_class_member, AstNode { + final class ClassMember extends @ql_class_member, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassMember" } @@ -294,13 +298,13 @@ module QL { } /** A class representing `className` tokens. */ - class ClassName extends @ql_token_class_name, Token { + final class ClassName extends @ql_token_class_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassName" } } /** A class representing `classlessPredicate` nodes. */ - class ClasslessPredicate extends @ql_classless_predicate, AstNode { + final class ClasslessPredicate extends @ql_classless_predicate, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClasslessPredicate" } @@ -322,13 +326,13 @@ module QL { } /** A class representing `closure` tokens. */ - class Closure extends @ql_token_closure, Token { + final class Closure extends @ql_token_closure, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Closure" } } /** A class representing `comp_term` nodes. */ - class CompTerm extends @ql_comp_term, AstNode { + final class CompTerm extends @ql_comp_term, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CompTerm" } @@ -350,13 +354,13 @@ module QL { } /** A class representing `compop` tokens. */ - class Compop extends @ql_token_compop, Token { + final class Compop extends @ql_token_compop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Compop" } } /** A class representing `conjunction` nodes. */ - class Conjunction extends @ql_conjunction, AstNode { + final class Conjunction extends @ql_conjunction, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Conjunction" } @@ -373,7 +377,7 @@ module QL { } /** A class representing `dataclass` nodes. */ - class Dataclass extends @ql_dataclass, AstNode { + final class Dataclass extends @ql_dataclass, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dataclass" } @@ -399,7 +403,7 @@ module QL { } /** A class representing `datatype` nodes. */ - class Datatype extends @ql_datatype, AstNode { + final class Datatype extends @ql_datatype, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Datatype" } @@ -416,7 +420,7 @@ module QL { } /** A class representing `datatypeBranch` nodes. */ - class DatatypeBranch extends @ql_datatype_branch, AstNode { + final class DatatypeBranch extends @ql_datatype_branch, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DatatypeBranch" } @@ -433,7 +437,7 @@ module QL { } /** A class representing `datatypeBranches` nodes. */ - class DatatypeBranches extends @ql_datatype_branches, AstNode { + final class DatatypeBranches extends @ql_datatype_branches, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DatatypeBranches" } @@ -445,19 +449,19 @@ module QL { } /** A class representing `dbtype` tokens. */ - class Dbtype extends @ql_token_dbtype, Token { + final class Dbtype extends @ql_token_dbtype, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dbtype" } } /** A class representing `direction` tokens. */ - class Direction extends @ql_token_direction, Token { + final class Direction extends @ql_token_direction, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Direction" } } /** A class representing `disjunction` nodes. */ - class Disjunction extends @ql_disjunction, AstNode { + final class Disjunction extends @ql_disjunction, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Disjunction" } @@ -474,13 +478,13 @@ module QL { } /** A class representing `empty` tokens. */ - class Empty extends @ql_token_empty, Token { + final class Empty extends @ql_token_empty, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Empty" } } /** A class representing `expr_aggregate_body` nodes. */ - class ExprAggregateBody extends @ql_expr_aggregate_body, AstNode { + final class ExprAggregateBody extends @ql_expr_aggregate_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExprAggregateBody" } @@ -497,7 +501,7 @@ module QL { } /** A class representing `expr_annotation` nodes. */ - class ExprAnnotation extends @ql_expr_annotation, AstNode { + final class ExprAnnotation extends @ql_expr_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExprAnnotation" } @@ -519,13 +523,13 @@ module QL { } /** A class representing `false` tokens. */ - class False extends @ql_token_false, Token { + final class False extends @ql_token_false, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "False" } } /** A class representing `field` nodes. */ - class Field extends @ql_field, AstNode { + final class Field extends @ql_field, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Field" } @@ -537,13 +541,13 @@ module QL { } /** A class representing `float` tokens. */ - class Float extends @ql_token_float, Token { + final class Float extends @ql_token_float, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Float" } } /** A class representing `full_aggregate_body` nodes. */ - class FullAggregateBody extends @ql_full_aggregate_body, AstNode { + final class FullAggregateBody extends @ql_full_aggregate_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FullAggregateBody" } @@ -569,7 +573,7 @@ module QL { } /** A class representing `higherOrderTerm` nodes. */ - class HigherOrderTerm extends @ql_higher_order_term, AstNode { + final class HigherOrderTerm extends @ql_higher_order_term, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HigherOrderTerm" } @@ -586,7 +590,7 @@ module QL { } /** A class representing `if_term` nodes. */ - class IfTerm extends @ql_if_term, AstNode { + final class IfTerm extends @ql_if_term, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfTerm" } @@ -608,7 +612,7 @@ module QL { } /** A class representing `implication` nodes. */ - class Implication extends @ql_implication, AstNode { + final class Implication extends @ql_implication, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Implication" } @@ -625,7 +629,7 @@ module QL { } /** A class representing `importDirective` nodes. */ - class ImportDirective extends @ql_import_directive, AstNode { + final class ImportDirective extends @ql_import_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ImportDirective" } @@ -637,7 +641,7 @@ module QL { } /** A class representing `importModuleExpr` nodes. */ - class ImportModuleExpr extends @ql_import_module_expr, AstNode { + final class ImportModuleExpr extends @ql_import_module_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ImportModuleExpr" } @@ -654,7 +658,7 @@ module QL { } /** A class representing `in_expr` nodes. */ - class InExpr extends @ql_in_expr, AstNode { + final class InExpr extends @ql_in_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InExpr" } @@ -671,7 +675,7 @@ module QL { } /** A class representing `instance_of` nodes. */ - class InstanceOf extends @ql_instance_of, AstNode { + final class InstanceOf extends @ql_instance_of, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InstanceOf" } @@ -683,19 +687,19 @@ module QL { } /** A class representing `integer` tokens. */ - class Integer extends @ql_token_integer, Token { + final class Integer extends @ql_token_integer, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Integer" } } /** A class representing `line_comment` tokens. */ - class LineComment extends @ql_token_line_comment, Token { + final class LineComment extends @ql_token_line_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LineComment" } } /** A class representing `literal` nodes. */ - class Literal extends @ql_literal, AstNode { + final class Literal extends @ql_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Literal" } @@ -707,13 +711,13 @@ module QL { } /** A class representing `literalId` tokens. */ - class LiteralId extends @ql_token_literal_id, Token { + final class LiteralId extends @ql_token_literal_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LiteralId" } } /** A class representing `memberPredicate` nodes. */ - class MemberPredicate extends @ql_member_predicate, AstNode { + final class MemberPredicate extends @ql_member_predicate, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MemberPredicate" } @@ -735,7 +739,7 @@ module QL { } /** A class representing `module` nodes. */ - class Module extends @ql_module, AstNode { + final class Module extends @ql_module, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Module" } @@ -761,7 +765,7 @@ module QL { } /** A class representing `moduleAliasBody` nodes. */ - class ModuleAliasBody extends @ql_module_alias_body, AstNode { + final class ModuleAliasBody extends @ql_module_alias_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleAliasBody" } @@ -773,7 +777,7 @@ module QL { } /** A class representing `moduleExpr` nodes. */ - class ModuleExpr extends @ql_module_expr, AstNode { + final class ModuleExpr extends @ql_module_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleExpr" } @@ -790,7 +794,7 @@ module QL { } /** A class representing `moduleInstantiation` nodes. */ - class ModuleInstantiation extends @ql_module_instantiation, AstNode { + final class ModuleInstantiation extends @ql_module_instantiation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleInstantiation" } @@ -807,7 +811,7 @@ module QL { } /** A class representing `moduleMember` nodes. */ - class ModuleMember extends @ql_module_member, AstNode { + final class ModuleMember extends @ql_module_member, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleMember" } @@ -819,7 +823,7 @@ module QL { } /** A class representing `moduleName` nodes. */ - class ModuleName extends @ql_module_name, AstNode { + final class ModuleName extends @ql_module_name, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleName" } @@ -831,7 +835,7 @@ module QL { } /** A class representing `moduleParam` nodes. */ - class ModuleParam extends @ql_module_param, AstNode { + final class ModuleParam extends @ql_module_param, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleParam" } @@ -848,7 +852,7 @@ module QL { } /** A class representing `mul_expr` nodes. */ - class MulExpr extends @ql_mul_expr, AstNode { + final class MulExpr extends @ql_mul_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MulExpr" } @@ -870,13 +874,13 @@ module QL { } /** A class representing `mulop` tokens. */ - class Mulop extends @ql_token_mulop, Token { + final class Mulop extends @ql_token_mulop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Mulop" } } /** A class representing `negation` nodes. */ - class Negation extends @ql_negation, AstNode { + final class Negation extends @ql_negation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Negation" } @@ -888,7 +892,7 @@ module QL { } /** A class representing `orderBy` nodes. */ - class OrderBy extends @ql_order_by, AstNode { + final class OrderBy extends @ql_order_by, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OrderBy" } @@ -900,7 +904,7 @@ module QL { } /** A class representing `orderBys` nodes. */ - class OrderBys extends @ql_order_bys, AstNode { + final class OrderBys extends @ql_order_bys, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OrderBys" } @@ -912,7 +916,7 @@ module QL { } /** A class representing `par_expr` nodes. */ - class ParExpr extends @ql_par_expr, AstNode { + final class ParExpr extends @ql_par_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ParExpr" } @@ -924,13 +928,13 @@ module QL { } /** A class representing `predicate` tokens. */ - class Predicate extends @ql_token_predicate, Token { + final class Predicate extends @ql_token_predicate, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Predicate" } } /** A class representing `predicateAliasBody` nodes. */ - class PredicateAliasBody extends @ql_predicate_alias_body, AstNode { + final class PredicateAliasBody extends @ql_predicate_alias_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PredicateAliasBody" } @@ -942,7 +946,7 @@ module QL { } /** A class representing `predicateExpr` nodes. */ - class PredicateExpr extends @ql_predicate_expr, AstNode { + final class PredicateExpr extends @ql_predicate_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PredicateExpr" } @@ -954,13 +958,13 @@ module QL { } /** A class representing `predicateName` tokens. */ - class PredicateName extends @ql_token_predicate_name, Token { + final class PredicateName extends @ql_token_predicate_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PredicateName" } } /** A class representing `prefix_cast` nodes. */ - class PrefixCast extends @ql_prefix_cast, AstNode { + final class PrefixCast extends @ql_prefix_cast, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PrefixCast" } @@ -972,13 +976,13 @@ module QL { } /** A class representing `primitiveType` tokens. */ - class PrimitiveType extends @ql_token_primitive_type, Token { + final class PrimitiveType extends @ql_token_primitive_type, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PrimitiveType" } } /** A class representing `ql` nodes. */ - class Ql extends @ql_ql, AstNode { + final class Ql extends @ql_ql, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Ql" } @@ -990,13 +994,13 @@ module QL { } /** A class representing `qldoc` tokens. */ - class Qldoc extends @ql_token_qldoc, Token { + final class Qldoc extends @ql_token_qldoc, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Qldoc" } } /** A class representing `qualifiedRhs` nodes. */ - class QualifiedRhs extends @ql_qualified_rhs, AstNode { + final class QualifiedRhs extends @ql_qualified_rhs, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "QualifiedRhs" } @@ -1013,7 +1017,7 @@ module QL { } /** A class representing `qualified_expr` nodes. */ - class QualifiedExpr extends @ql_qualified_expr, AstNode { + final class QualifiedExpr extends @ql_qualified_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "QualifiedExpr" } @@ -1025,7 +1029,7 @@ module QL { } /** A class representing `quantified` nodes. */ - class Quantified extends @ql_quantified, AstNode { + final class Quantified extends @ql_quantified, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Quantified" } @@ -1051,13 +1055,13 @@ module QL { } /** A class representing `quantifier` tokens. */ - class Quantifier extends @ql_token_quantifier, Token { + final class Quantifier extends @ql_token_quantifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Quantifier" } } /** A class representing `range` nodes. */ - class Range extends @ql_range, AstNode { + final class Range extends @ql_range, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Range" } @@ -1074,13 +1078,13 @@ module QL { } /** A class representing `result` tokens. */ - class Result extends @ql_token_result, Token { + final class Result extends @ql_token_result, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Result" } } /** A class representing `select` nodes. */ - class Select extends @ql_select, AstNode { + final class Select extends @ql_select, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Select" } @@ -1092,7 +1096,7 @@ module QL { } /** A class representing `set_literal` nodes. */ - class SetLiteral extends @ql_set_literal, AstNode { + final class SetLiteral extends @ql_set_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SetLiteral" } @@ -1104,7 +1108,7 @@ module QL { } /** A class representing `signatureExpr` nodes. */ - class SignatureExpr extends @ql_signature_expr, AstNode { + final class SignatureExpr extends @ql_signature_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SignatureExpr" } @@ -1126,19 +1130,19 @@ module QL { } /** A class representing `simpleId` tokens. */ - class SimpleId extends @ql_token_simple_id, Token { + final class SimpleId extends @ql_token_simple_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SimpleId" } } /** A class representing `specialId` tokens. */ - class SpecialId extends @ql_token_special_id, Token { + final class SpecialId extends @ql_token_special_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SpecialId" } } /** A class representing `special_call` nodes. */ - class SpecialCall extends @ql_special_call, AstNode { + final class SpecialCall extends @ql_special_call, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SpecialCall" } @@ -1150,19 +1154,19 @@ module QL { } /** A class representing `string` tokens. */ - class String extends @ql_token_string, Token { + final class String extends @ql_token_string, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } } /** A class representing `super` tokens. */ - class Super extends @ql_token_super, Token { + final class Super extends @ql_token_super, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Super" } } /** A class representing `super_ref` nodes. */ - class SuperRef extends @ql_super_ref, AstNode { + final class SuperRef extends @ql_super_ref, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SuperRef" } @@ -1174,19 +1178,19 @@ module QL { } /** A class representing `this` tokens. */ - class This extends @ql_token_this, Token { + final class This extends @ql_token_this, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "This" } } /** A class representing `true` tokens. */ - class True extends @ql_token_true, Token { + final class True extends @ql_token_true, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "True" } } /** A class representing `typeAliasBody` nodes. */ - class TypeAliasBody extends @ql_type_alias_body, AstNode { + final class TypeAliasBody extends @ql_type_alias_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeAliasBody" } @@ -1198,7 +1202,7 @@ module QL { } /** A class representing `typeExpr` nodes. */ - class TypeExpr extends @ql_type_expr, AstNode { + final class TypeExpr extends @ql_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeExpr" } @@ -1220,7 +1224,7 @@ module QL { } /** A class representing `typeUnionBody` nodes. */ - class TypeUnionBody extends @ql_type_union_body, AstNode { + final class TypeUnionBody extends @ql_type_union_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeUnionBody" } @@ -1232,7 +1236,7 @@ module QL { } /** A class representing `unary_expr` nodes. */ - class UnaryExpr extends @ql_unary_expr, AstNode { + final class UnaryExpr extends @ql_unary_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnaryExpr" } @@ -1244,19 +1248,19 @@ module QL { } /** A class representing `underscore` tokens. */ - class Underscore extends @ql_token_underscore, Token { + final class Underscore extends @ql_token_underscore, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Underscore" } } /** A class representing `unop` tokens. */ - class Unop extends @ql_token_unop, Token { + final class Unop extends @ql_token_unop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unop" } } /** A class representing `unqual_agg_body` nodes. */ - class UnqualAggBody extends @ql_unqual_agg_body, AstNode { + final class UnqualAggBody extends @ql_unqual_agg_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnqualAggBody" } @@ -1278,7 +1282,7 @@ module QL { } /** A class representing `varDecl` nodes. */ - class VarDecl extends @ql_var_decl, AstNode { + final class VarDecl extends @ql_var_decl, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VarDecl" } @@ -1290,7 +1294,7 @@ module QL { } /** A class representing `varName` nodes. */ - class VarName extends @ql_var_name, AstNode { + final class VarName extends @ql_var_name, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VarName" } @@ -1302,7 +1306,7 @@ module QL { } /** A class representing `variable` nodes. */ - class Variable extends @ql_variable, AstNode { + final class Variable extends @ql_variable, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Variable" } @@ -1555,7 +1559,7 @@ module QL { overlay[local] module Dbscheme { /** The base class for all AST nodes */ - class AstNode extends @dbscheme_ast_node { + private class AstNodeImpl extends @dbscheme_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -1578,8 +1582,10 @@ module Dbscheme { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @dbscheme_token, AstNode { + private class TokenImpl extends @dbscheme_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { dbscheme_tokeninfo(this, _, result) } @@ -1590,8 +1596,10 @@ module Dbscheme { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @dbscheme_reserved_word, Token { + final class ReservedWord extends @dbscheme_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -1617,13 +1625,13 @@ module Dbscheme { } /** A class representing `annotName` tokens. */ - class AnnotName extends @dbscheme_token_annot_name, Token { + final class AnnotName extends @dbscheme_token_annot_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AnnotName" } } /** A class representing `annotation` nodes. */ - class Annotation extends @dbscheme_annotation, AstNode { + final class Annotation extends @dbscheme_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Annotation" } @@ -1641,7 +1649,7 @@ module Dbscheme { } /** A class representing `argsAnnotation` nodes. */ - class ArgsAnnotation extends @dbscheme_args_annotation, AstNode { + final class ArgsAnnotation extends @dbscheme_args_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArgsAnnotation" } @@ -1658,19 +1666,19 @@ module Dbscheme { } /** A class representing `block_comment` tokens. */ - class BlockComment extends @dbscheme_token_block_comment, Token { + final class BlockComment extends @dbscheme_token_block_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockComment" } } /** A class representing `boolean` tokens. */ - class Boolean extends @dbscheme_token_boolean, Token { + final class Boolean extends @dbscheme_token_boolean, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Boolean" } } /** A class representing `branch` nodes. */ - class Branch extends @dbscheme_branch, AstNode { + final class Branch extends @dbscheme_branch, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Branch" } @@ -1687,7 +1695,7 @@ module Dbscheme { } /** A class representing `caseDecl` nodes. */ - class CaseDecl extends @dbscheme_case_decl, AstNode { + final class CaseDecl extends @dbscheme_case_decl, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CaseDecl" } @@ -1709,7 +1717,7 @@ module Dbscheme { } /** A class representing `colType` nodes. */ - class ColType extends @dbscheme_col_type, AstNode { + final class ColType extends @dbscheme_col_type, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ColType" } @@ -1721,7 +1729,7 @@ module Dbscheme { } /** A class representing `column` nodes. */ - class Column extends @dbscheme_column, AstNode { + final class Column extends @dbscheme_column, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Column" } @@ -1755,13 +1763,13 @@ module Dbscheme { } /** A class representing `date` tokens. */ - class Date extends @dbscheme_token_date, Token { + final class Date extends @dbscheme_token_date, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Date" } } /** A class representing `dbscheme` nodes. */ - class Dbscheme extends @dbscheme_dbscheme, AstNode { + final class Dbscheme extends @dbscheme_dbscheme, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dbscheme" } @@ -1773,13 +1781,13 @@ module Dbscheme { } /** A class representing `dbtype` tokens. */ - class Dbtype extends @dbscheme_token_dbtype, Token { + final class Dbtype extends @dbscheme_token_dbtype, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dbtype" } } /** A class representing `entry` nodes. */ - class Entry extends @dbscheme_entry, AstNode { + final class Entry extends @dbscheme_entry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Entry" } @@ -1791,43 +1799,43 @@ module Dbscheme { } /** A class representing `float` tokens. */ - class Float extends @dbscheme_token_float, Token { + final class Float extends @dbscheme_token_float, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Float" } } /** A class representing `int` tokens. */ - class Int extends @dbscheme_token_int, Token { + final class Int extends @dbscheme_token_int, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Int" } } /** A class representing `integer` tokens. */ - class Integer extends @dbscheme_token_integer, Token { + final class Integer extends @dbscheme_token_integer, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Integer" } } /** A class representing `line_comment` tokens. */ - class LineComment extends @dbscheme_token_line_comment, Token { + final class LineComment extends @dbscheme_token_line_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LineComment" } } /** A class representing `qldoc` tokens. */ - class Qldoc extends @dbscheme_token_qldoc, Token { + final class Qldoc extends @dbscheme_token_qldoc, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Qldoc" } } /** A class representing `ref` tokens. */ - class Ref extends @dbscheme_token_ref, Token { + final class Ref extends @dbscheme_token_ref, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Ref" } } /** A class representing `reprType` nodes. */ - class ReprType extends @dbscheme_repr_type, AstNode { + final class ReprType extends @dbscheme_repr_type, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReprType" } @@ -1839,19 +1847,19 @@ module Dbscheme { } /** A class representing `simpleId` tokens. */ - class SimpleId extends @dbscheme_token_simple_id, Token { + final class SimpleId extends @dbscheme_token_simple_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SimpleId" } } /** A class representing `string` tokens. */ - class String extends @dbscheme_token_string, Token { + final class String extends @dbscheme_token_string, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } } /** A class representing `table` nodes. */ - class Table extends @dbscheme_table, AstNode { + final class Table extends @dbscheme_table, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Table" } @@ -1868,7 +1876,7 @@ module Dbscheme { } /** A class representing `tableName` nodes. */ - class TableName extends @dbscheme_table_name, AstNode { + final class TableName extends @dbscheme_table_name, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TableName" } @@ -1880,7 +1888,7 @@ module Dbscheme { } /** A class representing `unionDecl` nodes. */ - class UnionDecl extends @dbscheme_union_decl, AstNode { + final class UnionDecl extends @dbscheme_union_decl, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnionDecl" } @@ -1897,13 +1905,13 @@ module Dbscheme { } /** A class representing `unique` tokens. */ - class Unique extends @dbscheme_token_unique, Token { + final class Unique extends @dbscheme_token_unique, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unique" } } /** A class representing `varchar` tokens. */ - class Varchar extends @dbscheme_token_varchar, Token { + final class Varchar extends @dbscheme_token_varchar, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Varchar" } } @@ -1966,7 +1974,7 @@ module Dbscheme { overlay[local] module Blame { /** The base class for all AST nodes */ - class AstNode extends @blame_ast_node { + private class AstNodeImpl extends @blame_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -1989,8 +1997,10 @@ module Blame { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @blame_token, AstNode { + private class TokenImpl extends @blame_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { blame_tokeninfo(this, _, result) } @@ -2001,8 +2011,10 @@ module Blame { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @blame_reserved_word, Token { + final class ReservedWord extends @blame_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -2028,7 +2040,7 @@ module Blame { } /** A class representing `blame_entry` nodes. */ - class BlameEntry extends @blame_blame_entry, AstNode { + final class BlameEntry extends @blame_blame_entry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlameEntry" } @@ -2045,7 +2057,7 @@ module Blame { } /** A class representing `blame_info` nodes. */ - class BlameInfo extends @blame_blame_info, AstNode { + final class BlameInfo extends @blame_blame_info, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlameInfo" } @@ -2062,13 +2074,13 @@ module Blame { } /** A class representing `date` tokens. */ - class Date extends @blame_token_date, Token { + final class Date extends @blame_token_date, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Date" } } /** A class representing `file_entry` nodes. */ - class FileEntry extends @blame_file_entry, AstNode { + final class FileEntry extends @blame_file_entry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FileEntry" } @@ -2085,13 +2097,13 @@ module Blame { } /** A class representing `filename` tokens. */ - class Filename extends @blame_token_filename, Token { + final class Filename extends @blame_token_filename, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Filename" } } /** A class representing `number` tokens. */ - class Number extends @blame_token_number, Token { + final class Number extends @blame_token_number, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Number" } } @@ -2118,7 +2130,7 @@ module Blame { overlay[local] module JSON { /** The base class for all AST nodes */ - class AstNode extends @json_ast_node { + private class AstNodeImpl extends @json_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -2141,8 +2153,10 @@ module JSON { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @json_token, AstNode { + private class TokenImpl extends @json_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { json_tokeninfo(this, _, result) } @@ -2153,8 +2167,10 @@ module JSON { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @json_reserved_word, Token { + final class ReservedWord extends @json_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -2179,10 +2195,10 @@ module JSON { ) } - class UnderscoreValue extends @json_underscore_value, AstNode { } + final class UnderscoreValue extends @json_underscore_value, AstNodeImpl { } /** A class representing `array` nodes. */ - class Array extends @json_array, AstNode { + final class Array extends @json_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Array" } @@ -2194,13 +2210,13 @@ module JSON { } /** A class representing `comment` tokens. */ - class Comment extends @json_token_comment, Token { + final class Comment extends @json_token_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Comment" } } /** A class representing `document` nodes. */ - class Document extends @json_document, AstNode { + final class Document extends @json_document, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Document" } @@ -2212,31 +2228,31 @@ module JSON { } /** A class representing `escape_sequence` tokens. */ - class EscapeSequence extends @json_token_escape_sequence, Token { + final class EscapeSequence extends @json_token_escape_sequence, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EscapeSequence" } } /** A class representing `false` tokens. */ - class False extends @json_token_false, Token { + final class False extends @json_token_false, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "False" } } /** A class representing `null` tokens. */ - class Null extends @json_token_null, Token { + final class Null extends @json_token_null, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Null" } } /** A class representing `number` tokens. */ - class Number extends @json_token_number, Token { + final class Number extends @json_token_number, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Number" } } /** A class representing `object` nodes. */ - class Object extends @json_object, AstNode { + final class Object extends @json_object, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Object" } @@ -2248,7 +2264,7 @@ module JSON { } /** A class representing `pair` nodes. */ - class Pair extends @json_pair, AstNode { + final class Pair extends @json_pair, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Pair" } @@ -2265,7 +2281,7 @@ module JSON { } /** A class representing `string` nodes. */ - class String extends @json_string__, AstNode { + final class String extends @json_string__, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } @@ -2277,13 +2293,13 @@ module JSON { } /** A class representing `string_content` tokens. */ - class StringContent extends @json_token_string_content, Token { + final class StringContent extends @json_token_string_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringContent" } } /** A class representing `true` tokens. */ - class True extends @json_token_true, Token { + final class True extends @json_token_true, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "True" } } diff --git a/ruby/ql/integration-tests/subst/code/test.rb b/ruby/ql/integration-tests/subst/code/test.rb new file mode 100644 index 00000000000..573541ac970 --- /dev/null +++ b/ruby/ql/integration-tests/subst/code/test.rb @@ -0,0 +1 @@ +0 diff --git a/ruby/ql/integration-tests/subst/file.expected b/ruby/ql/integration-tests/subst/file.expected new file mode 100644 index 00000000000..47b324fea9e --- /dev/null +++ b/ruby/ql/integration-tests/subst/file.expected @@ -0,0 +1,2 @@ +| code/test.rb:0:0:0:0 | code/test.rb | | +| file://:0:0:0:0 | | | diff --git a/ruby/ql/integration-tests/subst/file.ql b/ruby/ql/integration-tests/subst/file.ql new file mode 100644 index 00000000000..55944637191 --- /dev/null +++ b/ruby/ql/integration-tests/subst/file.ql @@ -0,0 +1,5 @@ +import ruby + +from File f, string relative +where if exists(f.getRelativePath()) then relative = "relative" else relative = "" +select f, relative diff --git a/ruby/ql/integration-tests/subst/test.py b/ruby/ql/integration-tests/subst/test.py new file mode 100644 index 00000000000..74ff84ce4a5 --- /dev/null +++ b/ruby/ql/integration-tests/subst/test.py @@ -0,0 +1,7 @@ +import runs_on + + +@runs_on.windows +def test(codeql, ruby, cwd, subst_drive): + drive = subst_drive(cwd / "code") + codeql.database.create(source_root=drive) diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll index e6b4c63f548..13ae1923b10 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll @@ -26,7 +26,7 @@ private predicate discardLocation(@location_default loc) { overlay[local] module Ruby { /** The base class for all AST nodes */ - class AstNode extends @ruby_ast_node { + private class AstNodeImpl extends @ruby_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -49,8 +49,10 @@ module Ruby { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @ruby_token, AstNode { + private class TokenImpl extends @ruby_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { ruby_tokeninfo(this, _, result) } @@ -61,8 +63,10 @@ module Ruby { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @ruby_reserved_word, Token { + final class ReservedWord extends @ruby_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -87,38 +91,41 @@ module Ruby { ) } - class UnderscoreArg extends @ruby_underscore_arg, AstNode { } + final class UnderscoreArg extends @ruby_underscore_arg, AstNodeImpl { } - class UnderscoreCallOperator extends @ruby_underscore_call_operator, AstNode { } + final class UnderscoreCallOperator extends @ruby_underscore_call_operator, AstNodeImpl { } - class UnderscoreExpression extends @ruby_underscore_expression, AstNode { } + final class UnderscoreExpression extends @ruby_underscore_expression, AstNodeImpl { } - class UnderscoreLhs extends @ruby_underscore_lhs, AstNode { } + final class UnderscoreLhs extends @ruby_underscore_lhs, AstNodeImpl { } - class UnderscoreMethodName extends @ruby_underscore_method_name, AstNode { } + final class UnderscoreMethodName extends @ruby_underscore_method_name, AstNodeImpl { } - class UnderscoreNonlocalVariable extends @ruby_underscore_nonlocal_variable, AstNode { } + final class UnderscoreNonlocalVariable extends @ruby_underscore_nonlocal_variable, AstNodeImpl { } - class UnderscorePatternConstant extends @ruby_underscore_pattern_constant, AstNode { } + final class UnderscorePatternConstant extends @ruby_underscore_pattern_constant, AstNodeImpl { } - class UnderscorePatternExpr extends @ruby_underscore_pattern_expr, AstNode { } + final class UnderscorePatternExpr extends @ruby_underscore_pattern_expr, AstNodeImpl { } - class UnderscorePatternExprBasic extends @ruby_underscore_pattern_expr_basic, AstNode { } + final class UnderscorePatternExprBasic extends @ruby_underscore_pattern_expr_basic, AstNodeImpl { + } - class UnderscorePatternPrimitive extends @ruby_underscore_pattern_primitive, AstNode { } + final class UnderscorePatternPrimitive extends @ruby_underscore_pattern_primitive, AstNodeImpl { } - class UnderscorePatternTopExprBody extends @ruby_underscore_pattern_top_expr_body, AstNode { } + final class UnderscorePatternTopExprBody extends @ruby_underscore_pattern_top_expr_body, + AstNodeImpl + { } - class UnderscorePrimary extends @ruby_underscore_primary, AstNode { } + final class UnderscorePrimary extends @ruby_underscore_primary, AstNodeImpl { } - class UnderscoreSimpleNumeric extends @ruby_underscore_simple_numeric, AstNode { } + final class UnderscoreSimpleNumeric extends @ruby_underscore_simple_numeric, AstNodeImpl { } - class UnderscoreStatement extends @ruby_underscore_statement, AstNode { } + final class UnderscoreStatement extends @ruby_underscore_statement, AstNodeImpl { } - class UnderscoreVariable extends @ruby_underscore_variable, AstNode { } + final class UnderscoreVariable extends @ruby_underscore_variable, AstNodeImpl { } /** A class representing `alias` nodes. */ - class Alias extends @ruby_alias, AstNode { + final class Alias extends @ruby_alias, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Alias" } @@ -135,7 +142,7 @@ module Ruby { } /** A class representing `alternative_pattern` nodes. */ - class AlternativePattern extends @ruby_alternative_pattern, AstNode { + final class AlternativePattern extends @ruby_alternative_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AlternativePattern" } @@ -151,7 +158,7 @@ module Ruby { } /** A class representing `argument_list` nodes. */ - class ArgumentList extends @ruby_argument_list, AstNode { + final class ArgumentList extends @ruby_argument_list, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArgumentList" } @@ -163,7 +170,7 @@ module Ruby { } /** A class representing `array` nodes. */ - class Array extends @ruby_array, AstNode { + final class Array extends @ruby_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Array" } @@ -175,7 +182,7 @@ module Ruby { } /** A class representing `array_pattern` nodes. */ - class ArrayPattern extends @ruby_array_pattern, AstNode { + final class ArrayPattern extends @ruby_array_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArrayPattern" } @@ -192,7 +199,7 @@ module Ruby { } /** A class representing `as_pattern` nodes. */ - class AsPattern extends @ruby_as_pattern, AstNode { + final class AsPattern extends @ruby_as_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AsPattern" } @@ -209,7 +216,7 @@ module Ruby { } /** A class representing `assignment` nodes. */ - class Assignment extends @ruby_assignment, AstNode { + final class Assignment extends @ruby_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Assignment" } @@ -226,7 +233,7 @@ module Ruby { } /** A class representing `bare_string` nodes. */ - class BareString extends @ruby_bare_string, AstNode { + final class BareString extends @ruby_bare_string, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BareString" } @@ -238,7 +245,7 @@ module Ruby { } /** A class representing `bare_symbol` nodes. */ - class BareSymbol extends @ruby_bare_symbol, AstNode { + final class BareSymbol extends @ruby_bare_symbol, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BareSymbol" } @@ -250,7 +257,7 @@ module Ruby { } /** A class representing `begin` nodes. */ - class Begin extends @ruby_begin, AstNode { + final class Begin extends @ruby_begin, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Begin" } @@ -262,7 +269,7 @@ module Ruby { } /** A class representing `begin_block` nodes. */ - class BeginBlock extends @ruby_begin_block, AstNode { + final class BeginBlock extends @ruby_begin_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BeginBlock" } @@ -274,7 +281,7 @@ module Ruby { } /** A class representing `binary` nodes. */ - class Binary extends @ruby_binary, AstNode { + final class Binary extends @ruby_binary, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Binary" } @@ -346,7 +353,7 @@ module Ruby { } /** A class representing `block` nodes. */ - class Block extends @ruby_block, AstNode { + final class Block extends @ruby_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Block" } @@ -363,7 +370,7 @@ module Ruby { } /** A class representing `block_argument` nodes. */ - class BlockArgument extends @ruby_block_argument, AstNode { + final class BlockArgument extends @ruby_block_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockArgument" } @@ -375,7 +382,7 @@ module Ruby { } /** A class representing `block_body` nodes. */ - class BlockBody extends @ruby_block_body, AstNode { + final class BlockBody extends @ruby_block_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockBody" } @@ -387,7 +394,7 @@ module Ruby { } /** A class representing `block_parameter` nodes. */ - class BlockParameter extends @ruby_block_parameter, AstNode { + final class BlockParameter extends @ruby_block_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockParameter" } @@ -399,7 +406,7 @@ module Ruby { } /** A class representing `block_parameters` nodes. */ - class BlockParameters extends @ruby_block_parameters, AstNode { + final class BlockParameters extends @ruby_block_parameters, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockParameters" } @@ -416,7 +423,7 @@ module Ruby { } /** A class representing `body_statement` nodes. */ - class BodyStatement extends @ruby_body_statement, AstNode { + final class BodyStatement extends @ruby_body_statement, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BodyStatement" } @@ -428,7 +435,7 @@ module Ruby { } /** A class representing `break` nodes. */ - class Break extends @ruby_break, AstNode { + final class Break extends @ruby_break, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Break" } @@ -440,7 +447,7 @@ module Ruby { } /** A class representing `call` nodes. */ - class Call extends @ruby_call, AstNode { + final class Call extends @ruby_call, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Call" } @@ -470,7 +477,7 @@ module Ruby { } /** A class representing `case` nodes. */ - class Case extends @ruby_case__, AstNode { + final class Case extends @ruby_case__, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Case" } @@ -487,7 +494,7 @@ module Ruby { } /** A class representing `case_match` nodes. */ - class CaseMatch extends @ruby_case_match, AstNode { + final class CaseMatch extends @ruby_case_match, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CaseMatch" } @@ -509,7 +516,7 @@ module Ruby { } /** A class representing `chained_string` nodes. */ - class ChainedString extends @ruby_chained_string, AstNode { + final class ChainedString extends @ruby_chained_string, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ChainedString" } @@ -521,13 +528,13 @@ module Ruby { } /** A class representing `character` tokens. */ - class Character extends @ruby_token_character, Token { + final class Character extends @ruby_token_character, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Character" } } /** A class representing `class` nodes. */ - class Class extends @ruby_class, AstNode { + final class Class extends @ruby_class, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Class" } @@ -549,19 +556,19 @@ module Ruby { } /** A class representing `class_variable` tokens. */ - class ClassVariable extends @ruby_token_class_variable, Token { + final class ClassVariable extends @ruby_token_class_variable, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassVariable" } } /** A class representing `comment` tokens. */ - class Comment extends @ruby_token_comment, Token { + final class Comment extends @ruby_token_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Comment" } } /** A class representing `complex` nodes. */ - class Complex extends @ruby_complex, AstNode { + final class Complex extends @ruby_complex, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Complex" } @@ -573,7 +580,7 @@ module Ruby { } /** A class representing `conditional` nodes. */ - class Conditional extends @ruby_conditional, AstNode { + final class Conditional extends @ruby_conditional, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Conditional" } @@ -595,13 +602,13 @@ module Ruby { } /** A class representing `constant` tokens. */ - class Constant extends @ruby_token_constant, Token { + final class Constant extends @ruby_token_constant, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Constant" } } /** A class representing `delimited_symbol` nodes. */ - class DelimitedSymbol extends @ruby_delimited_symbol, AstNode { + final class DelimitedSymbol extends @ruby_delimited_symbol, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DelimitedSymbol" } @@ -613,7 +620,7 @@ module Ruby { } /** A class representing `destructured_left_assignment` nodes. */ - class DestructuredLeftAssignment extends @ruby_destructured_left_assignment, AstNode { + final class DestructuredLeftAssignment extends @ruby_destructured_left_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DestructuredLeftAssignment" } @@ -627,7 +634,7 @@ module Ruby { } /** A class representing `destructured_parameter` nodes. */ - class DestructuredParameter extends @ruby_destructured_parameter, AstNode { + final class DestructuredParameter extends @ruby_destructured_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DestructuredParameter" } @@ -639,7 +646,7 @@ module Ruby { } /** A class representing `do` nodes. */ - class Do extends @ruby_do, AstNode { + final class Do extends @ruby_do, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Do" } @@ -651,7 +658,7 @@ module Ruby { } /** A class representing `do_block` nodes. */ - class DoBlock extends @ruby_do_block, AstNode { + final class DoBlock extends @ruby_do_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DoBlock" } @@ -668,7 +675,7 @@ module Ruby { } /** A class representing `element_reference` nodes. */ - class ElementReference extends @ruby_element_reference, AstNode { + final class ElementReference extends @ruby_element_reference, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ElementReference" } @@ -690,7 +697,7 @@ module Ruby { } /** A class representing `else` nodes. */ - class Else extends @ruby_else, AstNode { + final class Else extends @ruby_else, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Else" } @@ -702,7 +709,7 @@ module Ruby { } /** A class representing `elsif` nodes. */ - class Elsif extends @ruby_elsif, AstNode { + final class Elsif extends @ruby_elsif, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Elsif" } @@ -724,19 +731,19 @@ module Ruby { } /** A class representing `empty_statement` tokens. */ - class EmptyStatement extends @ruby_token_empty_statement, Token { + final class EmptyStatement extends @ruby_token_empty_statement, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EmptyStatement" } } /** A class representing `encoding` tokens. */ - class Encoding extends @ruby_token_encoding, Token { + final class Encoding extends @ruby_token_encoding, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Encoding" } } /** A class representing `end_block` nodes. */ - class EndBlock extends @ruby_end_block, AstNode { + final class EndBlock extends @ruby_end_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EndBlock" } @@ -748,7 +755,7 @@ module Ruby { } /** A class representing `ensure` nodes. */ - class Ensure extends @ruby_ensure, AstNode { + final class Ensure extends @ruby_ensure, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Ensure" } @@ -760,13 +767,13 @@ module Ruby { } /** A class representing `escape_sequence` tokens. */ - class EscapeSequence extends @ruby_token_escape_sequence, Token { + final class EscapeSequence extends @ruby_token_escape_sequence, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EscapeSequence" } } /** A class representing `exception_variable` nodes. */ - class ExceptionVariable extends @ruby_exception_variable, AstNode { + final class ExceptionVariable extends @ruby_exception_variable, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExceptionVariable" } @@ -778,7 +785,7 @@ module Ruby { } /** A class representing `exceptions` nodes. */ - class Exceptions extends @ruby_exceptions, AstNode { + final class Exceptions extends @ruby_exceptions, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Exceptions" } @@ -790,7 +797,7 @@ module Ruby { } /** A class representing `expression_reference_pattern` nodes. */ - class ExpressionReferencePattern extends @ruby_expression_reference_pattern, AstNode { + final class ExpressionReferencePattern extends @ruby_expression_reference_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExpressionReferencePattern" } @@ -804,19 +811,19 @@ module Ruby { } /** A class representing `false` tokens. */ - class False extends @ruby_token_false, Token { + final class False extends @ruby_token_false, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "False" } } /** A class representing `file` tokens. */ - class File extends @ruby_token_file, Token { + final class File extends @ruby_token_file, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "File" } } /** A class representing `find_pattern` nodes. */ - class FindPattern extends @ruby_find_pattern, AstNode { + final class FindPattern extends @ruby_find_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FindPattern" } @@ -833,13 +840,13 @@ module Ruby { } /** A class representing `float` tokens. */ - class Float extends @ruby_token_float, Token { + final class Float extends @ruby_token_float, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Float" } } /** A class representing `for` nodes. */ - class For extends @ruby_for, AstNode { + final class For extends @ruby_for, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "For" } @@ -861,25 +868,25 @@ module Ruby { } /** A class representing `forward_argument` tokens. */ - class ForwardArgument extends @ruby_token_forward_argument, Token { + final class ForwardArgument extends @ruby_token_forward_argument, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ForwardArgument" } } /** A class representing `forward_parameter` tokens. */ - class ForwardParameter extends @ruby_token_forward_parameter, Token { + final class ForwardParameter extends @ruby_token_forward_parameter, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ForwardParameter" } } /** A class representing `global_variable` tokens. */ - class GlobalVariable extends @ruby_token_global_variable, Token { + final class GlobalVariable extends @ruby_token_global_variable, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GlobalVariable" } } /** A class representing `hash` nodes. */ - class Hash extends @ruby_hash, AstNode { + final class Hash extends @ruby_hash, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Hash" } @@ -891,13 +898,13 @@ module Ruby { } /** A class representing `hash_key_symbol` tokens. */ - class HashKeySymbol extends @ruby_token_hash_key_symbol, Token { + final class HashKeySymbol extends @ruby_token_hash_key_symbol, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashKeySymbol" } } /** A class representing `hash_pattern` nodes. */ - class HashPattern extends @ruby_hash_pattern, AstNode { + final class HashPattern extends @ruby_hash_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashPattern" } @@ -914,7 +921,7 @@ module Ruby { } /** A class representing `hash_splat_argument` nodes. */ - class HashSplatArgument extends @ruby_hash_splat_argument, AstNode { + final class HashSplatArgument extends @ruby_hash_splat_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashSplatArgument" } @@ -926,13 +933,13 @@ module Ruby { } /** A class representing `hash_splat_nil` tokens. */ - class HashSplatNil extends @ruby_token_hash_splat_nil, Token { + final class HashSplatNil extends @ruby_token_hash_splat_nil, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashSplatNil" } } /** A class representing `hash_splat_parameter` nodes. */ - class HashSplatParameter extends @ruby_hash_splat_parameter, AstNode { + final class HashSplatParameter extends @ruby_hash_splat_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashSplatParameter" } @@ -944,13 +951,13 @@ module Ruby { } /** A class representing `heredoc_beginning` tokens. */ - class HeredocBeginning extends @ruby_token_heredoc_beginning, Token { + final class HeredocBeginning extends @ruby_token_heredoc_beginning, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocBeginning" } } /** A class representing `heredoc_body` nodes. */ - class HeredocBody extends @ruby_heredoc_body, AstNode { + final class HeredocBody extends @ruby_heredoc_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocBody" } @@ -962,25 +969,25 @@ module Ruby { } /** A class representing `heredoc_content` tokens. */ - class HeredocContent extends @ruby_token_heredoc_content, Token { + final class HeredocContent extends @ruby_token_heredoc_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocContent" } } /** A class representing `heredoc_end` tokens. */ - class HeredocEnd extends @ruby_token_heredoc_end, Token { + final class HeredocEnd extends @ruby_token_heredoc_end, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocEnd" } } /** A class representing `identifier` tokens. */ - class Identifier extends @ruby_token_identifier, Token { + final class Identifier extends @ruby_token_identifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Identifier" } } /** A class representing `if` nodes. */ - class If extends @ruby_if, AstNode { + final class If extends @ruby_if, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "If" } @@ -1002,7 +1009,7 @@ module Ruby { } /** A class representing `if_guard` nodes. */ - class IfGuard extends @ruby_if_guard, AstNode { + final class IfGuard extends @ruby_if_guard, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfGuard" } @@ -1014,7 +1021,7 @@ module Ruby { } /** A class representing `if_modifier` nodes. */ - class IfModifier extends @ruby_if_modifier, AstNode { + final class IfModifier extends @ruby_if_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfModifier" } @@ -1031,7 +1038,7 @@ module Ruby { } /** A class representing `in` nodes. */ - class In extends @ruby_in, AstNode { + final class In extends @ruby_in, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "In" } @@ -1043,7 +1050,7 @@ module Ruby { } /** A class representing `in_clause` nodes. */ - class InClause extends @ruby_in_clause, AstNode { + final class InClause extends @ruby_in_clause, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InClause" } @@ -1065,19 +1072,19 @@ module Ruby { } /** A class representing `instance_variable` tokens. */ - class InstanceVariable extends @ruby_token_instance_variable, Token { + final class InstanceVariable extends @ruby_token_instance_variable, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InstanceVariable" } } /** A class representing `integer` tokens. */ - class Integer extends @ruby_token_integer, Token { + final class Integer extends @ruby_token_integer, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Integer" } } /** A class representing `interpolation` nodes. */ - class Interpolation extends @ruby_interpolation, AstNode { + final class Interpolation extends @ruby_interpolation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Interpolation" } @@ -1089,7 +1096,7 @@ module Ruby { } /** A class representing `keyword_parameter` nodes. */ - class KeywordParameter extends @ruby_keyword_parameter, AstNode { + final class KeywordParameter extends @ruby_keyword_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "KeywordParameter" } @@ -1106,7 +1113,7 @@ module Ruby { } /** A class representing `keyword_pattern` nodes. */ - class KeywordPattern extends @ruby_keyword_pattern, AstNode { + final class KeywordPattern extends @ruby_keyword_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "KeywordPattern" } @@ -1123,7 +1130,7 @@ module Ruby { } /** A class representing `lambda` nodes. */ - class Lambda extends @ruby_lambda, AstNode { + final class Lambda extends @ruby_lambda, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Lambda" } @@ -1140,7 +1147,7 @@ module Ruby { } /** A class representing `lambda_parameters` nodes. */ - class LambdaParameters extends @ruby_lambda_parameters, AstNode { + final class LambdaParameters extends @ruby_lambda_parameters, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LambdaParameters" } @@ -1152,7 +1159,7 @@ module Ruby { } /** A class representing `left_assignment_list` nodes. */ - class LeftAssignmentList extends @ruby_left_assignment_list, AstNode { + final class LeftAssignmentList extends @ruby_left_assignment_list, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LeftAssignmentList" } @@ -1164,13 +1171,13 @@ module Ruby { } /** A class representing `line` tokens. */ - class Line extends @ruby_token_line, Token { + final class Line extends @ruby_token_line, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Line" } } /** A class representing `match_pattern` nodes. */ - class MatchPattern extends @ruby_match_pattern, AstNode { + final class MatchPattern extends @ruby_match_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MatchPattern" } @@ -1187,7 +1194,7 @@ module Ruby { } /** A class representing `method` nodes. */ - class Method extends @ruby_method, AstNode { + final class Method extends @ruby_method, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Method" } @@ -1209,7 +1216,7 @@ module Ruby { } /** A class representing `method_parameters` nodes. */ - class MethodParameters extends @ruby_method_parameters, AstNode { + final class MethodParameters extends @ruby_method_parameters, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MethodParameters" } @@ -1221,7 +1228,7 @@ module Ruby { } /** A class representing `module` nodes. */ - class Module extends @ruby_module, AstNode { + final class Module extends @ruby_module, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Module" } @@ -1238,7 +1245,7 @@ module Ruby { } /** A class representing `next` nodes. */ - class Next extends @ruby_next, AstNode { + final class Next extends @ruby_next, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Next" } @@ -1250,19 +1257,19 @@ module Ruby { } /** A class representing `nil` tokens. */ - class Nil extends @ruby_token_nil, Token { + final class Nil extends @ruby_token_nil, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Nil" } } /** A class representing `operator` tokens. */ - class Operator extends @ruby_token_operator, Token { + final class Operator extends @ruby_token_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Operator" } } /** A class representing `operator_assignment` nodes. */ - class OperatorAssignment extends @ruby_operator_assignment, AstNode { + final class OperatorAssignment extends @ruby_operator_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OperatorAssignment" } @@ -1311,7 +1318,7 @@ module Ruby { } /** A class representing `optional_parameter` nodes. */ - class OptionalParameter extends @ruby_optional_parameter, AstNode { + final class OptionalParameter extends @ruby_optional_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OptionalParameter" } @@ -1328,7 +1335,7 @@ module Ruby { } /** A class representing `pair` nodes. */ - class Pair extends @ruby_pair, AstNode { + final class Pair extends @ruby_pair, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Pair" } @@ -1345,7 +1352,7 @@ module Ruby { } /** A class representing `parenthesized_pattern` nodes. */ - class ParenthesizedPattern extends @ruby_parenthesized_pattern, AstNode { + final class ParenthesizedPattern extends @ruby_parenthesized_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ParenthesizedPattern" } @@ -1357,7 +1364,7 @@ module Ruby { } /** A class representing `parenthesized_statements` nodes. */ - class ParenthesizedStatements extends @ruby_parenthesized_statements, AstNode { + final class ParenthesizedStatements extends @ruby_parenthesized_statements, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ParenthesizedStatements" } @@ -1371,7 +1378,7 @@ module Ruby { } /** A class representing `pattern` nodes. */ - class Pattern extends @ruby_pattern, AstNode { + final class Pattern extends @ruby_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Pattern" } @@ -1383,7 +1390,7 @@ module Ruby { } /** A class representing `program` nodes. */ - class Program extends @ruby_program, AstNode { + final class Program extends @ruby_program, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Program" } @@ -1395,7 +1402,7 @@ module Ruby { } /** A class representing `range` nodes. */ - class Range extends @ruby_range, AstNode { + final class Range extends @ruby_range, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Range" } @@ -1421,7 +1428,7 @@ module Ruby { } /** A class representing `rational` nodes. */ - class Rational extends @ruby_rational, AstNode { + final class Rational extends @ruby_rational, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Rational" } @@ -1433,7 +1440,7 @@ module Ruby { } /** A class representing `redo` nodes. */ - class Redo extends @ruby_redo, AstNode { + final class Redo extends @ruby_redo, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Redo" } @@ -1445,7 +1452,7 @@ module Ruby { } /** A class representing `regex` nodes. */ - class Regex extends @ruby_regex, AstNode { + final class Regex extends @ruby_regex, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Regex" } @@ -1457,7 +1464,7 @@ module Ruby { } /** A class representing `rescue` nodes. */ - class Rescue extends @ruby_rescue, AstNode { + final class Rescue extends @ruby_rescue, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Rescue" } @@ -1479,7 +1486,7 @@ module Ruby { } /** A class representing `rescue_modifier` nodes. */ - class RescueModifier extends @ruby_rescue_modifier, AstNode { + final class RescueModifier extends @ruby_rescue_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RescueModifier" } @@ -1496,7 +1503,7 @@ module Ruby { } /** A class representing `rest_assignment` nodes. */ - class RestAssignment extends @ruby_rest_assignment, AstNode { + final class RestAssignment extends @ruby_rest_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RestAssignment" } @@ -1508,7 +1515,7 @@ module Ruby { } /** A class representing `retry` nodes. */ - class Retry extends @ruby_retry, AstNode { + final class Retry extends @ruby_retry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Retry" } @@ -1520,7 +1527,7 @@ module Ruby { } /** A class representing `return` nodes. */ - class Return extends @ruby_return, AstNode { + final class Return extends @ruby_return, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Return" } @@ -1532,7 +1539,7 @@ module Ruby { } /** A class representing `right_assignment_list` nodes. */ - class RightAssignmentList extends @ruby_right_assignment_list, AstNode { + final class RightAssignmentList extends @ruby_right_assignment_list, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RightAssignmentList" } @@ -1544,7 +1551,7 @@ module Ruby { } /** A class representing `scope_resolution` nodes. */ - class ScopeResolution extends @ruby_scope_resolution, AstNode { + final class ScopeResolution extends @ruby_scope_resolution, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ScopeResolution" } @@ -1561,13 +1568,13 @@ module Ruby { } /** A class representing `self` tokens. */ - class Self extends @ruby_token_self, Token { + final class Self extends @ruby_token_self, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Self" } } /** A class representing `setter` nodes. */ - class Setter extends @ruby_setter, AstNode { + final class Setter extends @ruby_setter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Setter" } @@ -1579,13 +1586,13 @@ module Ruby { } /** A class representing `simple_symbol` tokens. */ - class SimpleSymbol extends @ruby_token_simple_symbol, Token { + final class SimpleSymbol extends @ruby_token_simple_symbol, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SimpleSymbol" } } /** A class representing `singleton_class` nodes. */ - class SingletonClass extends @ruby_singleton_class, AstNode { + final class SingletonClass extends @ruby_singleton_class, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SingletonClass" } @@ -1602,7 +1609,7 @@ module Ruby { } /** A class representing `singleton_method` nodes. */ - class SingletonMethod extends @ruby_singleton_method, AstNode { + final class SingletonMethod extends @ruby_singleton_method, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SingletonMethod" } @@ -1628,7 +1635,7 @@ module Ruby { } /** A class representing `splat_argument` nodes. */ - class SplatArgument extends @ruby_splat_argument, AstNode { + final class SplatArgument extends @ruby_splat_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SplatArgument" } @@ -1640,7 +1647,7 @@ module Ruby { } /** A class representing `splat_parameter` nodes. */ - class SplatParameter extends @ruby_splat_parameter, AstNode { + final class SplatParameter extends @ruby_splat_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SplatParameter" } @@ -1652,7 +1659,7 @@ module Ruby { } /** A class representing `string` nodes. */ - class String extends @ruby_string__, AstNode { + final class String extends @ruby_string__, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } @@ -1664,7 +1671,7 @@ module Ruby { } /** A class representing `string_array` nodes. */ - class StringArray extends @ruby_string_array, AstNode { + final class StringArray extends @ruby_string_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringArray" } @@ -1676,13 +1683,13 @@ module Ruby { } /** A class representing `string_content` tokens. */ - class StringContent extends @ruby_token_string_content, Token { + final class StringContent extends @ruby_token_string_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringContent" } } /** A class representing `subshell` nodes. */ - class Subshell extends @ruby_subshell, AstNode { + final class Subshell extends @ruby_subshell, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Subshell" } @@ -1694,13 +1701,13 @@ module Ruby { } /** A class representing `super` tokens. */ - class Super extends @ruby_token_super, Token { + final class Super extends @ruby_token_super, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Super" } } /** A class representing `superclass` nodes. */ - class Superclass extends @ruby_superclass, AstNode { + final class Superclass extends @ruby_superclass, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Superclass" } @@ -1712,7 +1719,7 @@ module Ruby { } /** A class representing `symbol_array` nodes. */ - class SymbolArray extends @ruby_symbol_array, AstNode { + final class SymbolArray extends @ruby_symbol_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SymbolArray" } @@ -1724,7 +1731,7 @@ module Ruby { } /** A class representing `test_pattern` nodes. */ - class TestPattern extends @ruby_test_pattern, AstNode { + final class TestPattern extends @ruby_test_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TestPattern" } @@ -1741,7 +1748,7 @@ module Ruby { } /** A class representing `then` nodes. */ - class Then extends @ruby_then, AstNode { + final class Then extends @ruby_then, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Then" } @@ -1753,13 +1760,13 @@ module Ruby { } /** A class representing `true` tokens. */ - class True extends @ruby_token_true, Token { + final class True extends @ruby_token_true, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "True" } } /** A class representing `unary` nodes. */ - class Unary extends @ruby_unary, AstNode { + final class Unary extends @ruby_unary, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unary" } @@ -1788,7 +1795,7 @@ module Ruby { } /** A class representing `undef` nodes. */ - class Undef extends @ruby_undef, AstNode { + final class Undef extends @ruby_undef, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Undef" } @@ -1800,13 +1807,13 @@ module Ruby { } /** A class representing `uninterpreted` tokens. */ - class Uninterpreted extends @ruby_token_uninterpreted, Token { + final class Uninterpreted extends @ruby_token_uninterpreted, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Uninterpreted" } } /** A class representing `unless` nodes. */ - class Unless extends @ruby_unless, AstNode { + final class Unless extends @ruby_unless, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unless" } @@ -1828,7 +1835,7 @@ module Ruby { } /** A class representing `unless_guard` nodes. */ - class UnlessGuard extends @ruby_unless_guard, AstNode { + final class UnlessGuard extends @ruby_unless_guard, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnlessGuard" } @@ -1840,7 +1847,7 @@ module Ruby { } /** A class representing `unless_modifier` nodes. */ - class UnlessModifier extends @ruby_unless_modifier, AstNode { + final class UnlessModifier extends @ruby_unless_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnlessModifier" } @@ -1857,7 +1864,7 @@ module Ruby { } /** A class representing `until` nodes. */ - class Until extends @ruby_until, AstNode { + final class Until extends @ruby_until, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Until" } @@ -1874,7 +1881,7 @@ module Ruby { } /** A class representing `until_modifier` nodes. */ - class UntilModifier extends @ruby_until_modifier, AstNode { + final class UntilModifier extends @ruby_until_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UntilModifier" } @@ -1891,7 +1898,7 @@ module Ruby { } /** A class representing `variable_reference_pattern` nodes. */ - class VariableReferencePattern extends @ruby_variable_reference_pattern, AstNode { + final class VariableReferencePattern extends @ruby_variable_reference_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VariableReferencePattern" } @@ -1903,7 +1910,7 @@ module Ruby { } /** A class representing `when` nodes. */ - class When extends @ruby_when, AstNode { + final class When extends @ruby_when, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "When" } @@ -1920,7 +1927,7 @@ module Ruby { } /** A class representing `while` nodes. */ - class While extends @ruby_while, AstNode { + final class While extends @ruby_while, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "While" } @@ -1937,7 +1944,7 @@ module Ruby { } /** A class representing `while_modifier` nodes. */ - class WhileModifier extends @ruby_while_modifier, AstNode { + final class WhileModifier extends @ruby_while_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "WhileModifier" } @@ -1954,7 +1961,7 @@ module Ruby { } /** A class representing `yield` nodes. */ - class Yield extends @ruby_yield, AstNode { + final class Yield extends @ruby_yield, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Yield" } @@ -2303,7 +2310,7 @@ module Ruby { overlay[local] module Erb { /** The base class for all AST nodes */ - class AstNode extends @erb_ast_node { + private class AstNodeImpl extends @erb_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -2326,8 +2333,10 @@ module Erb { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @erb_token, AstNode { + private class TokenImpl extends @erb_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { erb_tokeninfo(this, _, result) } @@ -2338,8 +2347,10 @@ module Erb { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @erb_reserved_word, Token { + final class ReservedWord extends @erb_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -2365,19 +2376,19 @@ module Erb { } /** A class representing `code` tokens. */ - class Code extends @erb_token_code, Token { + final class Code extends @erb_token_code, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Code" } } /** A class representing `comment` tokens. */ - class Comment extends @erb_token_comment, Token { + final class Comment extends @erb_token_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Comment" } } /** A class representing `comment_directive` nodes. */ - class CommentDirective extends @erb_comment_directive, AstNode { + final class CommentDirective extends @erb_comment_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CommentDirective" } @@ -2389,13 +2400,13 @@ module Erb { } /** A class representing `content` tokens. */ - class Content extends @erb_token_content, Token { + final class Content extends @erb_token_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Content" } } /** A class representing `directive` nodes. */ - class Directive extends @erb_directive, AstNode { + final class Directive extends @erb_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Directive" } @@ -2407,7 +2418,7 @@ module Erb { } /** A class representing `graphql_directive` nodes. */ - class GraphqlDirective extends @erb_graphql_directive, AstNode { + final class GraphqlDirective extends @erb_graphql_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GraphqlDirective" } @@ -2419,7 +2430,7 @@ module Erb { } /** A class representing `output_directive` nodes. */ - class OutputDirective extends @erb_output_directive, AstNode { + final class OutputDirective extends @erb_output_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OutputDirective" } @@ -2431,7 +2442,7 @@ module Erb { } /** A class representing `template` nodes. */ - class Template extends @erb_template, AstNode { + final class Template extends @erb_template, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Template" } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index 9646592c0c2..9f3042ebb5b 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -198,8 +198,7 @@ module LocalFlow { FlowSummaryNode nodeFrom, FlowSummaryNode nodeTo, FlowSummaryImpl::Public::SummarizedCallable c, string model ) { - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.getSummaryNode(), - nodeTo.getSummaryNode(), true, model) and + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.getSummaryNode(), true, model) and c = nodeFrom.getSummarizedCallable() } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll index d7326d9594b..d94bba89bf5 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll @@ -18,6 +18,8 @@ module Input implements InputSig { class SinkBase = Void; + class FlowSummaryCallBase = Void; + predicate callableFromSource(SummarizedCallableBase c) { none() } ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() } @@ -157,6 +159,10 @@ module Input implements InputSig { private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getAstNode() = sc.(LibraryCallable).getACall() or diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll index 104ef68c267..a41f7c92482 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingPrivate.qll @@ -109,7 +109,7 @@ private module Cached { ) and model = "" or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) or any(FlowSteps::AdditionalTaintStep s).step(nodeFrom, nodeTo) and model = "AdditionalTaintStep" diff --git a/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll index bea9504be02..bd84f530f9c 100644 --- a/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll +++ b/ruby/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -4,11 +4,35 @@ private import codeql.util.test.InlineExpectationsTest module Impl implements InlineExpectationsTestSig { private import codeql.ruby.ast.internal.TreeSitter + private newtype TAnyComment = + RubyComment(Ruby::Comment comment) or + ErbComment(R::ErbComment comment) + /** - * A class representing line comments in Ruby. + * A class representing comments that may contain inline expectations (Ruby line comments and ERB comments). */ - class ExpectationComment extends Ruby::Comment { - string getContents() { result = this.getValue().suffix(1) } + class ExpectationComment extends TAnyComment { + Ruby::Comment asRubyComment() { this = RubyComment(result) } + + R::ErbComment asErbComment() { this = ErbComment(result) } + + string toString() { + result = this.asRubyComment().toString() + or + result = this.asErbComment().toString() + } + + Location getLocation() { + result = this.asRubyComment().getLocation() + or + result = this.asErbComment().getLocation() + } + + string getContents() { + result = this.asRubyComment().getValue().suffix(1) + or + result = this.asErbComment().getValue().suffix(1) + } } class Location = R::Location; diff --git a/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected b/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected index c8c1af17c53..a8a4b270733 100644 --- a/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected @@ -28,8 +28,6 @@ nodes | string_flow.rb:227:10:227:10 | a | semmle.label | a | subpaths testFailures -| string_flow.rb:85:10:85:10 | a | Unexpected result: hasValueFlow=a | -| string_flow.rb:227:10:227:10 | a | Unexpected result: hasValueFlow=a | #select | string_flow.rb:3:10:3:22 | call to new | string_flow.rb:2:9:2:18 | call to source | string_flow.rb:3:10:3:22 | call to new | $@ | string_flow.rb:2:9:2:18 | call to source | call to source | | string_flow.rb:85:10:85:10 | a | string_flow.rb:83:9:83:18 | call to source | string_flow.rb:85:10:85:10 | a | $@ | string_flow.rb:83:9:83:18 | call to source | call to source | diff --git a/ruby/ql/test/library-tests/dataflow/string-flow/string_flow.rb b/ruby/ql/test/library-tests/dataflow/string-flow/string_flow.rb index 5ec846bcedd..46707f95d31 100644 --- a/ruby/ql/test/library-tests/dataflow/string-flow/string_flow.rb +++ b/ruby/ql/test/library-tests/dataflow/string-flow/string_flow.rb @@ -82,7 +82,7 @@ end def m_clear a = source "a" a.clear - sink a + sink a # $ SPURIOUS: hasValueFlow=a end # concat and prepend omitted because they clash with the summaries for @@ -224,7 +224,7 @@ def m_replace b = source "b" sink a.replace(b) # $ hasTaintFlow=b # TODO: currently we get value flow for a, because we don't clear content - sink a # $ hasTaintFlow=b + sink a # $ hasTaintFlow=b SPURIOUS: hasValueFlow=a end def m_reverse @@ -316,4 +316,4 @@ def m_upto(i) a.upto("b", true) { |x| sink x } # $ hasTaintFlow=a "b".upto(a) { |x| sink x } # $ hasTaintFlow=a "b".upto(a, true) { |x| sink x } -end \ No newline at end of file +end diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/filter_flow.rb b/ruby/ql/test/library-tests/frameworks/action_controller/filter_flow.rb index 2cd382edb33..b042261e3ec 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/filter_flow.rb +++ b/ruby/ql/test/library-tests/frameworks/action_controller/filter_flow.rb @@ -9,7 +9,7 @@ end class OneController < ActionController::Base before_action :a after_action :c - + def a @foo = params[:foo] end @@ -18,14 +18,14 @@ class OneController < ActionController::Base end def c - sink @foo + sink @foo # $ hasTaintFlow end end class TwoController < ActionController::Base before_action :a after_action :c - + def a @foo = params[:foo] end @@ -35,14 +35,14 @@ class TwoController < ActionController::Base end def c - sink @foo + sink @foo # $ SPURIOUS: hasTaintFlow end end class ThreeController < ActionController::Base before_action :a after_action :c - + def a @foo = params[:foo] @foo = "safe" @@ -52,14 +52,14 @@ class ThreeController < ActionController::Base end def c - sink @foo + sink @foo # $ SPURIOUS: hasTaintFlow end end class FourController < ActionController::Base before_action :a after_action :c - + def a @foo.bar = params[:foo] end @@ -68,14 +68,14 @@ class FourController < ActionController::Base end def c - sink(@foo.bar) + sink(@foo.bar) # $ hasTaintFlow end end class FiveController < ActionController::Base before_action :a after_action :c - + def a self.taint_foo end @@ -84,10 +84,10 @@ class FiveController < ActionController::Base end def c - sink @foo + sink @foo # $ hasTaintFlow end - + def taint_foo @foo = params[:foo] end -end \ No newline at end of file +end diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected index 8e2f3114d43..b722b87c6e6 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected @@ -270,11 +270,6 @@ nodes | params_flow.rb:205:10:205:10 | a | semmle.label | a | subpaths testFailures -| filter_flow.rb:21:10:21:13 | @foo | Unexpected result: hasTaintFlow | -| filter_flow.rb:38:10:38:13 | @foo | Unexpected result: hasTaintFlow | -| filter_flow.rb:55:10:55:13 | @foo | Unexpected result: hasTaintFlow | -| filter_flow.rb:71:10:71:17 | call to bar | Unexpected result: hasTaintFlow | -| filter_flow.rb:87:11:87:14 | @foo | Unexpected result: hasTaintFlow | #select | filter_flow.rb:21:10:21:13 | @foo | filter_flow.rb:14:12:14:17 | call to params | filter_flow.rb:21:10:21:13 | @foo | $@ | filter_flow.rb:14:12:14:17 | call to params | call to params | | filter_flow.rb:38:10:38:13 | @foo | filter_flow.rb:30:12:30:17 | call to params | filter_flow.rb:38:10:38:13 | @foo | $@ | filter_flow.rb:30:12:30:17 | call to params | call to params | diff --git a/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected b/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected index 3ebd5e56670..060c60ff039 100644 --- a/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected +++ b/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected @@ -231,11 +231,11 @@ edges | hash_extensions.rb:122:5:122:10 | single : Array [element 0] | hash_extensions.rb:125:10:125:15 | single : Array [element 0] | provenance | | | hash_extensions.rb:122:14:122:26 | call to [] : Array [element 0] | hash_extensions.rb:122:5:122:10 | single : Array [element 0] | provenance | | | hash_extensions.rb:122:15:122:25 | call to source | hash_extensions.rb:122:14:122:26 | call to [] : Array [element 0] | provenance | | -| hash_extensions.rb:123:5:123:9 | multi : Array [element 0] | hash_extensions.rb:126:10:126:14 | multi : Array [element 0] | provenance | | +| hash_extensions.rb:123:5:123:9 | multi : Array [element 0] | hash_extensions.rb:127:10:127:14 | multi : Array [element 0] | provenance | | | hash_extensions.rb:123:13:123:38 | call to [] : Array [element 0] | hash_extensions.rb:123:5:123:9 | multi : Array [element 0] | provenance | | | hash_extensions.rb:123:14:123:24 | call to source | hash_extensions.rb:123:13:123:38 | call to [] : Array [element 0] | provenance | | | hash_extensions.rb:125:10:125:15 | single : Array [element 0] | hash_extensions.rb:125:10:125:20 | call to sole | provenance | | -| hash_extensions.rb:126:10:126:14 | multi : Array [element 0] | hash_extensions.rb:126:10:126:19 | call to sole | provenance | | +| hash_extensions.rb:127:10:127:14 | multi : Array [element 0] | hash_extensions.rb:127:10:127:19 | call to sole | provenance | | nodes | active_support.rb:180:5:180:5 | x : Array [element 0] | semmle.label | x : Array [element 0] | | active_support.rb:180:9:180:18 | call to [] : Array [element 0] | semmle.label | call to [] : Array [element 0] | @@ -493,11 +493,10 @@ nodes | hash_extensions.rb:123:14:123:24 | call to source | semmle.label | call to source | | hash_extensions.rb:125:10:125:15 | single : Array [element 0] | semmle.label | single : Array [element 0] | | hash_extensions.rb:125:10:125:20 | call to sole | semmle.label | call to sole | -| hash_extensions.rb:126:10:126:14 | multi : Array [element 0] | semmle.label | multi : Array [element 0] | -| hash_extensions.rb:126:10:126:19 | call to sole | semmle.label | call to sole | +| hash_extensions.rb:127:10:127:14 | multi : Array [element 0] | semmle.label | multi : Array [element 0] | +| hash_extensions.rb:127:10:127:19 | call to sole | semmle.label | call to sole | subpaths testFailures -| hash_extensions.rb:126:10:126:19 | call to sole | Unexpected result: hasValueFlow=b | #select | active_support.rb:182:10:182:13 | ...[...] | active_support.rb:180:10:180:17 | call to source | active_support.rb:182:10:182:13 | ...[...] | $@ | active_support.rb:180:10:180:17 | call to source | call to source | | active_support.rb:188:10:188:13 | ...[...] | active_support.rb:186:10:186:18 | call to source | active_support.rb:188:10:188:13 | ...[...] | $@ | active_support.rb:186:10:186:18 | call to source | call to source | @@ -558,4 +557,4 @@ testFailures | hash_extensions.rb:115:10:115:39 | ...[...] | hash_extensions.rb:110:21:110:31 | call to source | hash_extensions.rb:115:10:115:39 | ...[...] | $@ | hash_extensions.rb:110:21:110:31 | call to source | call to source | | hash_extensions.rb:115:10:115:39 | ...[...] | hash_extensions.rb:110:65:110:75 | call to source | hash_extensions.rb:115:10:115:39 | ...[...] | $@ | hash_extensions.rb:110:65:110:75 | call to source | call to source | | hash_extensions.rb:125:10:125:20 | call to sole | hash_extensions.rb:122:15:122:25 | call to source | hash_extensions.rb:125:10:125:20 | call to sole | $@ | hash_extensions.rb:122:15:122:25 | call to source | call to source | -| hash_extensions.rb:126:10:126:19 | call to sole | hash_extensions.rb:123:14:123:24 | call to source | hash_extensions.rb:126:10:126:19 | call to sole | $@ | hash_extensions.rb:123:14:123:24 | call to source | call to source | +| hash_extensions.rb:127:10:127:19 | call to sole | hash_extensions.rb:123:14:123:24 | call to source | hash_extensions.rb:127:10:127:19 | call to sole | $@ | hash_extensions.rb:123:14:123:24 | call to source | call to source | diff --git a/ruby/ql/test/library-tests/frameworks/active_support/hash_extensions.rb b/ruby/ql/test/library-tests/frameworks/active_support/hash_extensions.rb index f386eba7022..117ceb59d20 100644 --- a/ruby/ql/test/library-tests/frameworks/active_support/hash_extensions.rb +++ b/ruby/ql/test/library-tests/frameworks/active_support/hash_extensions.rb @@ -123,7 +123,8 @@ def m_sole multi = [source("b"), source("c")] sink(empty.sole) sink(single.sole) # $ hasValueFlow=a - sink(multi.sole) # TODO: model that 'sole' does not return if the receiver has multiple elements + # TODO: model that 'sole' does not return if the receiver has multiple elements + sink(multi.sole) # $ SPURIOUS: hasValueFlow=b end m_sole() diff --git a/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected b/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected index a33a21d0313..d37b2f6d8a8 100644 --- a/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected +++ b/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected @@ -23,7 +23,6 @@ nodes | views/index.erb:2:10:2:12 | call to foo | semmle.label | call to foo | subpaths testFailures -| views/index.erb:2:10:2:12 | call to foo | Unexpected result: hasTaintFlow | #select | app.rb:95:10:95:14 | @user | app.rb:103:13:103:22 | call to source | app.rb:95:10:95:14 | @user | $@ | app.rb:103:13:103:22 | call to source | call to source | | views/index.erb:2:10:2:12 | call to foo | app.rb:75:12:75:17 | call to params | views/index.erb:2:10:2:12 | call to foo | $@ | app.rb:75:12:75:17 | call to params | call to params | diff --git a/ruby/ql/test/library-tests/frameworks/sinatra/views/index.erb b/ruby/ql/test/library-tests/frameworks/sinatra/views/index.erb index aed721833c0..4f990b964d8 100644 --- a/ruby/ql/test/library-tests/frameworks/sinatra/views/index.erb +++ b/ruby/ql/test/library-tests/frameworks/sinatra/views/index.erb @@ -1,2 +1,2 @@ <%= @foo %> -<%= sink foo %> \ No newline at end of file +<%= sink foo %> <%# $ hasTaintFlow %> diff --git a/ruby/ql/test/query-tests/experimental/improper-memoization/ImproperMemoization.expected b/ruby/ql/test/query-tests/experimental/improper-memoization/ImproperMemoization.expected index 36c07e3e105..b24a2e578a0 100644 --- a/ruby/ql/test/query-tests/experimental/improper-memoization/ImproperMemoization.expected +++ b/ruby/ql/test/query-tests/experimental/improper-memoization/ImproperMemoization.expected @@ -1,5 +1,4 @@ testFailures -| improper_memoization.rb:100:1:104:3 | m14 | Unexpected result: result=BAD | #select | improper_memoization.rb:50:1:55:3 | m7 | improper_memoization.rb:50:8:50:10 | arg | improper_memoization.rb:51:3:53:5 | ... \|\|= ... | | improper_memoization.rb:58:1:63:3 | m8 | improper_memoization.rb:58:8:58:10 | arg | improper_memoization.rb:59:3:61:5 | ... \|\|= ... | diff --git a/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb b/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb index 0b12fe2ad59..41765021e64 100644 --- a/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb +++ b/ruby/ql/test/query-tests/experimental/improper-memoization/improper_memoization.rb @@ -101,4 +101,4 @@ def m14(arg) @m14 ||= {} key = "foo/#{arg}" @m14[key] ||= long_running_method(arg) -end +end # $ SPURIOUS: result=BAD diff --git a/rust/ql/integration-tests/subst/code/test.rs b/rust/ql/integration-tests/subst/code/test.rs new file mode 100644 index 00000000000..f328e4d9d04 --- /dev/null +++ b/rust/ql/integration-tests/subst/code/test.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/rust/ql/integration-tests/subst/file.expected b/rust/ql/integration-tests/subst/file.expected new file mode 100644 index 00000000000..c1ff73337f2 --- /dev/null +++ b/rust/ql/integration-tests/subst/file.expected @@ -0,0 +1,2 @@ +| code/test.rs:0:0:0:0 | code/test.rs | | +| file://:0:0:0:0 | | | diff --git a/rust/ql/integration-tests/subst/file.ql b/rust/ql/integration-tests/subst/file.ql new file mode 100644 index 00000000000..81573d40c6d --- /dev/null +++ b/rust/ql/integration-tests/subst/file.ql @@ -0,0 +1,7 @@ +import rust + +from File f, string relative +where + not f.getURL().matches("%/target/intree/%") and + if exists(f.getRelativePath()) then relative = "relative" else relative = "" +select f, relative diff --git a/rust/ql/integration-tests/subst/test.py b/rust/ql/integration-tests/subst/test.py new file mode 100644 index 00000000000..6d49adcab17 --- /dev/null +++ b/rust/ql/integration-tests/subst/test.py @@ -0,0 +1,7 @@ +import runs_on + + +@runs_on.windows +def test(codeql, rust, cwd, subst_drive): + drive = subst_drive(cwd / "code") + codeql.database.create(source_root=drive) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index a7e2e2e4c6b..c18ac5e026b 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -180,7 +180,7 @@ Expr getPostUpdateReverseStep(Expr e, boolean preservesValue) { module LocalFlow { predicate flowSummaryLocalStep(Node nodeFrom, Node nodeTo, string model) { exists(FlowSummaryImpl::Public::SummarizedCallable c | - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) and c = nodeFrom.(FlowSummaryNode).getSummarizedCallable() ) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll index 85032814651..d9104da11ad 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll @@ -11,6 +11,7 @@ private import codeql.rust.dataflow.FlowSummary private import codeql.rust.dataflow.Ssa private import codeql.rust.dataflow.internal.ModelsAsData private import Content +private import Node predicate encodeContentTupleField(TupleFieldContent c, string arg) { exists(Addressable a, int pos, string prefix | @@ -28,9 +29,12 @@ predicate encodeContentStructField(StructFieldContent c, string arg) { module Input implements InputSig { private import codeql.rust.frameworks.stdlib.Stdlib + private import codeql.util.Void class SummarizedCallableBase = Function; + class FlowSummaryCallBase = Void; + predicate callableFromSource(SummarizedCallableBase c) { c.fromSource() } abstract private class SourceSinkBase extends AstNode { @@ -144,6 +148,10 @@ module Input implements InputSig { private import Make as Impl module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(RustDataFlow::Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } /** Gets the argument of `source` described by `sc`, if any. */ diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll index f75c0166762..7e5af70911d 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll @@ -83,7 +83,7 @@ module RustTaintTrackingGen implements pred.(Node::PostUpdateNode).getPreUpdateNode().asExpr(), _, succ, _) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(pred.(Node::FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, succ.(Node::FlowSummaryNode).getSummaryNode(), false, model) } 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 ffc2576a05e..a4a779dcb69 100644 --- a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -1,5 +1,5 @@ multipleResolvedTargets -| main.rs:2223:9:2223:31 | ... .my_add(...) | -| main.rs:2225:9:2225:29 | ... .my_add(...) | -| main.rs:2740:13:2740:17 | x.f() | +| main.rs:2240:9:2240:31 | ... .my_add(...) | +| main.rs:2242:9:2242:29 | ... .my_add(...) | +| main.rs:2757:13:2757:17 | x.f() | | regressions.rs:179:17:179:27 | ... + ... | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index ddba6c53da8..392380df0f7 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -264,6 +264,10 @@ mod method_non_parametric_trait_impl { } } + trait MyTrait2 { + fn m3(self) -> B; + } + trait MyProduct { // MyProduct::fst fn fst(self) -> A; @@ -275,6 +279,10 @@ mod method_non_parametric_trait_impl { x.m1() // $ target=m1 } + fn call_trait_m1_trait2_m3, T3: MyTrait2>(x: T3) -> T1 { + x.m3().m1() // $ target=m1 target=m3 + } + impl MyTrait for MyThing { // MyThing::m1 fn m1(self) -> S1 { @@ -289,6 +297,13 @@ mod method_non_parametric_trait_impl { } } + impl MyTrait2> for MyThing { + // MyThing::m3 + fn m3(self) -> MyThing { + MyThing { a: S1 } + } + } + // Implementation where the type parameter `TD` only occurs in the // implemented trait and not the implementing type. impl MyTrait for MyThing @@ -453,6 +468,8 @@ mod method_non_parametric_trait_impl { let thing = MyThing { a: S1 }; let i = thing.convert_to(); // $ type=i:S1 target=T::convert_to let j = convert_to(thing); // $ target=convert_to $ MISSING: type=j:S1 -- the blanket implementation `impl> ConvertTo for T` is currently not included in the constraint analysis + + let x = call_trait_m1_trait2_m3(MyThing { a: S2 }); // $ target=call_trait_m1_trait2_m3 type=x:S1 } } 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 3344fc45f74..20f20e21861 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1467,2553 +1467,2563 @@ inferCertainType | main.rs:259:15:259:18 | SelfParam | | main.rs:256:5:265:5 | Self [trait MyTrait] | | main.rs:262:9:264:9 | { ... } | | main.rs:256:5:265:5 | Self [trait MyTrait] | | main.rs:263:13:263:16 | self | | main.rs:256:5:265:5 | Self [trait MyTrait] | -| main.rs:269:16:269:19 | SelfParam | | main.rs:267:5:272:5 | Self [trait MyProduct] | -| main.rs:271:16:271:19 | SelfParam | | main.rs:267:5:272:5 | Self [trait MyProduct] | -| main.rs:274:43:274:43 | x | | main.rs:274:26:274:40 | T2 | -| main.rs:274:56:276:5 | { ... } | | main.rs:274:22:274:23 | T1 | -| main.rs:275:9:275:9 | x | | main.rs:274:26:274:40 | T2 | -| main.rs:280:15:280:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | -| main.rs:280:15:280:18 | SelfParam | A | main.rs:249:5:250:14 | S1 | -| main.rs:280:27:282:9 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:281:13:281:16 | self | | main.rs:238:5:241:5 | MyThing | -| main.rs:281:13:281:16 | self | A | main.rs:249:5:250:14 | S1 | -| main.rs:287:15:287:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | -| main.rs:287:15:287:18 | SelfParam | A | main.rs:251:5:252:14 | S2 | -| main.rs:287:29:289:9 | { ... } | | main.rs:238:5:241:5 | MyThing | -| main.rs:287:29:289:9 | { ... } | A | main.rs:251:5:252:14 | S2 | -| main.rs:288:13:288:30 | Self {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:288:13:288:30 | Self {...} | A | main.rs:251:5:252:14 | S2 | -| main.rs:288:23:288:26 | self | | main.rs:238:5:241:5 | MyThing | -| main.rs:288:23:288:26 | self | A | main.rs:251:5:252:14 | S2 | -| main.rs:299:15:299:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | -| main.rs:299:15:299:18 | SelfParam | A | main.rs:253:5:254:14 | S3 | -| main.rs:299:27:301:9 | { ... } | | main.rs:294:10:294:11 | TD | -| main.rs:306:15:306:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:306:15:306:18 | SelfParam | P1 | main.rs:304:10:304:10 | I | -| main.rs:306:15:306:18 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:306:26:308:9 | { ... } | | main.rs:304:10:304:10 | I | -| main.rs:307:13:307:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:307:13:307:16 | self | P1 | main.rs:304:10:304:10 | I | -| main.rs:307:13:307:16 | self | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:313:15:313:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:313:15:313:18 | SelfParam | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:313:15:313:18 | SelfParam | P2 | main.rs:251:5:252:14 | S2 | -| main.rs:313:27:315:9 | { ... } | | main.rs:253:5:254:14 | S3 | -| main.rs:320:15:320:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:320:15:320:18 | SelfParam | P1 | main.rs:238:5:241:5 | MyThing | -| main.rs:320:15:320:18 | SelfParam | P1.A | main.rs:318:10:318:11 | TT | -| main.rs:320:15:320:18 | SelfParam | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:320:27:323:9 | { ... } | | main.rs:318:10:318:11 | TT | -| main.rs:321:25:321:28 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:321:25:321:28 | self | P1 | main.rs:238:5:241:5 | MyThing | -| main.rs:321:25:321:28 | self | P1.A | main.rs:318:10:318:11 | TT | -| main.rs:321:25:321:28 | self | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:329:16:329:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:329:16:329:19 | SelfParam | P1 | main.rs:327:10:327:10 | A | -| main.rs:329:16:329:19 | SelfParam | P2 | main.rs:327:10:327:10 | A | -| main.rs:329:27:331:9 | { ... } | | main.rs:327:10:327:10 | A | -| main.rs:330:13:330:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:330:13:330:16 | self | P1 | main.rs:327:10:327:10 | A | -| main.rs:330:13:330:16 | self | P2 | main.rs:327:10:327:10 | A | -| main.rs:334:16:334:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:334:16:334:19 | SelfParam | P1 | main.rs:327:10:327:10 | A | -| main.rs:334:16:334:19 | SelfParam | P2 | main.rs:327:10:327:10 | A | -| main.rs:334:27:336:9 | { ... } | | main.rs:327:10:327:10 | A | -| main.rs:335:13:335:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:335:13:335:16 | self | P1 | main.rs:327:10:327:10 | A | -| main.rs:335:13:335:16 | self | P2 | main.rs:327:10:327:10 | A | -| main.rs:342:16:342:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:342:16:342:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:342:16:342:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:342:28:344:9 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:343:13:343:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:343:13:343:16 | self | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:343:13:343:16 | self | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:347:16:347:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:347:16:347:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:347:16:347:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:347:28:349:9 | { ... } | | main.rs:251:5:252:14 | S2 | -| main.rs:348:13:348:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:348:13:348:16 | self | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:348:13:348:16 | self | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:352:46:352:46 | p | | main.rs:352:24:352:43 | P | -| main.rs:352:58:354:5 | { ... } | | main.rs:352:16:352:17 | V1 | -| main.rs:353:9:353:9 | p | | main.rs:352:24:352:43 | P | -| main.rs:356:46:356:46 | p | | main.rs:356:24:356:43 | P | -| main.rs:356:58:358:5 | { ... } | | main.rs:356:20:356:21 | V2 | -| main.rs:357:9:357:9 | p | | main.rs:356:24:356:43 | P | -| main.rs:360:54:360:54 | p | | main.rs:243:5:247:5 | MyPair | -| main.rs:360:54:360:54 | p | P1 | main.rs:360:20:360:21 | V0 | -| main.rs:360:54:360:54 | p | P2 | main.rs:360:32:360:51 | P | -| main.rs:360:78:362:5 | { ... } | | main.rs:360:24:360:25 | V1 | -| main.rs:361:9:361:9 | p | | main.rs:243:5:247:5 | MyPair | -| main.rs:361:9:361:9 | p | P1 | main.rs:360:20:360:21 | V0 | -| main.rs:361:9:361:9 | p | P2 | main.rs:360:32:360:51 | P | -| main.rs:366:23:366:26 | SelfParam | | main.rs:364:5:367:5 | Self [trait ConvertTo] | -| main.rs:371:23:371:26 | SelfParam | | main.rs:369:10:369:23 | T | -| main.rs:371:35:373:9 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:372:13:372:16 | self | | main.rs:369:10:369:23 | T | -| main.rs:376:41:376:45 | thing | | main.rs:376:23:376:38 | T | -| main.rs:376:57:378:5 | { ... } | | main.rs:376:19:376:20 | TS | -| main.rs:377:9:377:13 | thing | | main.rs:376:23:376:38 | T | -| main.rs:380:56:380:60 | thing | | main.rs:380:39:380:53 | TP | -| main.rs:380:73:383:5 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:382:9:382:13 | thing | | main.rs:380:39:380:53 | TP | -| main.rs:385:16:456:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:386:13:386:20 | thing_s1 | | main.rs:238:5:241:5 | MyThing | -| main.rs:386:24:386:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:387:13:387:20 | thing_s2 | | main.rs:238:5:241:5 | MyThing | -| main.rs:387:24:387:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:388:13:388:20 | thing_s3 | | main.rs:238:5:241:5 | MyThing | -| main.rs:388:24:388:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:392:18:392:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:392:18:392:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:392:18:392:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:392:18:392:38 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:392:26:392:33 | thing_s1 | | main.rs:238:5:241:5 | MyThing | -| main.rs:393:18:393:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:393:18:393:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:393:18:393:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:393:18:393:40 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:393:26:393:33 | thing_s2 | | main.rs:238:5:241:5 | MyThing | -| main.rs:394:13:394:14 | s3 | | main.rs:253:5:254:14 | S3 | -| main.rs:394:22:394:29 | thing_s3 | | main.rs:238:5:241:5 | MyThing | -| main.rs:395:18:395:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:395:18:395:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:395:18:395:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:395:18:395:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:395:26:395:27 | s3 | | main.rs:253:5:254:14 | S3 | -| main.rs:397:13:397:14 | p1 | | main.rs:243:5:247:5 | MyPair | -| main.rs:397:18:397:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:398:18:398:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:398:18:398:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:398:18:398:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:398:18:398:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:398:26:398:27 | p1 | | main.rs:243:5:247:5 | MyPair | -| main.rs:400:13:400:14 | p2 | | main.rs:243:5:247:5 | MyPair | -| main.rs:400:18:400:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:401:18:401:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:401:18:401:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:401:18:401:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:401:18:401:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:401:26:401:27 | p2 | | main.rs:243:5:247:5 | MyPair | -| main.rs:403:13:403:14 | p3 | | main.rs:243:5:247:5 | MyPair | -| main.rs:403:18:406:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:404:17:404:33 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:268:15:268:18 | SelfParam | | main.rs:267:5:269:5 | Self [trait MyTrait2] | +| main.rs:273:16:273:19 | SelfParam | | main.rs:271:5:276:5 | Self [trait MyProduct] | +| main.rs:275:16:275:19 | SelfParam | | main.rs:271:5:276:5 | Self [trait MyProduct] | +| main.rs:278:43:278:43 | x | | main.rs:278:26:278:40 | T2 | +| main.rs:278:56:280:5 | { ... } | | main.rs:278:22:278:23 | T1 | +| main.rs:279:9:279:9 | x | | main.rs:278:26:278:40 | T2 | +| main.rs:282:71:282:71 | x | | main.rs:282:53:282:68 | T3 | +| main.rs:282:84:284:5 | { ... } | | main.rs:282:32:282:33 | T1 | +| main.rs:283:9:283:9 | x | | main.rs:282:53:282:68 | T3 | +| main.rs:288:15:288:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:288:15:288:18 | SelfParam | A | main.rs:249:5:250:14 | S1 | +| main.rs:288:27:290:9 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:289:13:289:16 | self | | main.rs:238:5:241:5 | MyThing | +| main.rs:289:13:289:16 | self | A | main.rs:249:5:250:14 | S1 | +| main.rs:295:15:295:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:295:15:295:18 | SelfParam | A | main.rs:251:5:252:14 | S2 | +| main.rs:295:29:297:9 | { ... } | | main.rs:238:5:241:5 | MyThing | +| main.rs:295:29:297:9 | { ... } | A | main.rs:251:5:252:14 | S2 | +| main.rs:296:13:296:30 | Self {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:296:13:296:30 | Self {...} | A | main.rs:251:5:252:14 | S2 | +| main.rs:296:23:296:26 | self | | main.rs:238:5:241:5 | MyThing | +| main.rs:296:23:296:26 | self | A | main.rs:251:5:252:14 | S2 | +| main.rs:302:15:302:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:302:15:302:18 | SelfParam | A | main.rs:251:5:252:14 | S2 | +| main.rs:302:36:304:9 | { ... } | | main.rs:238:5:241:5 | MyThing | +| main.rs:302:36:304:9 | { ... } | A | main.rs:249:5:250:14 | S1 | +| main.rs:303:13:303:29 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:314:15:314:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:314:15:314:18 | SelfParam | A | main.rs:253:5:254:14 | S3 | +| main.rs:314:27:316:9 | { ... } | | main.rs:309:10:309:11 | TD | +| main.rs:321:15:321:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:321:15:321:18 | SelfParam | P1 | main.rs:319:10:319:10 | I | +| main.rs:321:15:321:18 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:321:26:323:9 | { ... } | | main.rs:319:10:319:10 | I | +| main.rs:322:13:322:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:322:13:322:16 | self | P1 | main.rs:319:10:319:10 | I | +| main.rs:322:13:322:16 | self | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:328:15:328:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:328:15:328:18 | SelfParam | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:328:15:328:18 | SelfParam | P2 | main.rs:251:5:252:14 | S2 | +| main.rs:328:27:330:9 | { ... } | | main.rs:253:5:254:14 | S3 | +| main.rs:335:15:335:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:335:15:335:18 | SelfParam | P1 | main.rs:238:5:241:5 | MyThing | +| main.rs:335:15:335:18 | SelfParam | P1.A | main.rs:333:10:333:11 | TT | +| main.rs:335:15:335:18 | SelfParam | P2 | main.rs:253:5:254:14 | S3 | +| main.rs:335:27:338:9 | { ... } | | main.rs:333:10:333:11 | TT | +| main.rs:336:25:336:28 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:336:25:336:28 | self | P1 | main.rs:238:5:241:5 | MyThing | +| main.rs:336:25:336:28 | self | P1.A | main.rs:333:10:333:11 | TT | +| main.rs:336:25:336:28 | self | P2 | main.rs:253:5:254:14 | S3 | +| main.rs:344:16:344:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:344:16:344:19 | SelfParam | P1 | main.rs:342:10:342:10 | A | +| main.rs:344:16:344:19 | SelfParam | P2 | main.rs:342:10:342:10 | A | +| main.rs:344:27:346:9 | { ... } | | main.rs:342:10:342:10 | A | +| main.rs:345:13:345:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:345:13:345:16 | self | P1 | main.rs:342:10:342:10 | A | +| main.rs:345:13:345:16 | self | P2 | main.rs:342:10:342:10 | A | +| main.rs:349:16:349:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:349:16:349:19 | SelfParam | P1 | main.rs:342:10:342:10 | A | +| main.rs:349:16:349:19 | SelfParam | P2 | main.rs:342:10:342:10 | A | +| main.rs:349:27:351:9 | { ... } | | main.rs:342:10:342:10 | A | +| main.rs:350:13:350:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:350:13:350:16 | self | P1 | main.rs:342:10:342:10 | A | +| main.rs:350:13:350:16 | self | P2 | main.rs:342:10:342:10 | A | +| main.rs:357:16:357:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:357:16:357:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:357:16:357:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:357:28:359:9 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:358:13:358:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:358:13:358:16 | self | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:358:13:358:16 | self | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:362:16:362:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:362:16:362:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:362:16:362:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:362:28:364:9 | { ... } | | main.rs:251:5:252:14 | S2 | +| main.rs:363:13:363:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:363:13:363:16 | self | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:363:13:363:16 | self | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:367:46:367:46 | p | | main.rs:367:24:367:43 | P | +| main.rs:367:58:369:5 | { ... } | | main.rs:367:16:367:17 | V1 | +| main.rs:368:9:368:9 | p | | main.rs:367:24:367:43 | P | +| main.rs:371:46:371:46 | p | | main.rs:371:24:371:43 | P | +| main.rs:371:58:373:5 | { ... } | | main.rs:371:20:371:21 | V2 | +| main.rs:372:9:372:9 | p | | main.rs:371:24:371:43 | P | +| main.rs:375:54:375:54 | p | | main.rs:243:5:247:5 | MyPair | +| main.rs:375:54:375:54 | p | P1 | main.rs:375:20:375:21 | V0 | +| main.rs:375:54:375:54 | p | P2 | main.rs:375:32:375:51 | P | +| main.rs:375:78:377:5 | { ... } | | main.rs:375:24:375:25 | V1 | +| main.rs:376:9:376:9 | p | | main.rs:243:5:247:5 | MyPair | +| main.rs:376:9:376:9 | p | P1 | main.rs:375:20:375:21 | V0 | +| main.rs:376:9:376:9 | p | P2 | main.rs:375:32:375:51 | P | +| main.rs:381:23:381:26 | SelfParam | | main.rs:379:5:382:5 | Self [trait ConvertTo] | +| main.rs:386:23:386:26 | SelfParam | | main.rs:384:10:384:23 | T | +| main.rs:386:35:388:9 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:387:13:387:16 | self | | main.rs:384:10:384:23 | T | +| main.rs:391:41:391:45 | thing | | main.rs:391:23:391:38 | T | +| main.rs:391:57:393:5 | { ... } | | main.rs:391:19:391:20 | TS | +| main.rs:392:9:392:13 | thing | | main.rs:391:23:391:38 | T | +| main.rs:395:56:395:60 | thing | | main.rs:395:39:395:53 | TP | +| main.rs:395:73:398:5 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:397:9:397:13 | thing | | main.rs:395:39:395:53 | TP | +| main.rs:400:16:473:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:401:13:401:20 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:401:24:401:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:402:13:402:20 | thing_s2 | | main.rs:238:5:241:5 | MyThing | +| main.rs:402:24:402:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:403:13:403:20 | thing_s3 | | main.rs:238:5:241:5 | MyThing | +| main.rs:403:24:403:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | | main.rs:407:18:407:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:407:18:407:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:407:18:407:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:407:18:407:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:407:26:407:27 | p3 | | main.rs:243:5:247:5 | MyPair | -| main.rs:410:13:410:13 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:410:17:410:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:411:17:411:17 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:412:18:412:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:412:18:412:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:412:18:412:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:412:18:412:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:413:17:413:17 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:414:18:414:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:414:18:414:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:414:18:414:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:414:18:414:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:420:13:420:13 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:420:17:420:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:421:17:421:17 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:407:18:407:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:407:18:407:38 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:407:26:407:33 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:408:18:408:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:408:18:408:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:408:18:408:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:408:18:408:40 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:408:26:408:33 | thing_s2 | | main.rs:238:5:241:5 | MyThing | +| main.rs:409:13:409:14 | s3 | | main.rs:253:5:254:14 | S3 | +| main.rs:409:22:409:29 | thing_s3 | | main.rs:238:5:241:5 | MyThing | +| main.rs:410:18:410:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:410:18:410:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:410:18:410:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:410:18:410:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:410:26:410:27 | s3 | | main.rs:253:5:254:14 | S3 | +| main.rs:412:13:412:14 | p1 | | main.rs:243:5:247:5 | MyPair | +| main.rs:412:18:412:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:413:18:413:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:413:18:413:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:413:18:413:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:413:18:413:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:413:26:413:27 | p1 | | main.rs:243:5:247:5 | MyPair | +| main.rs:415:13:415:14 | p2 | | main.rs:243:5:247:5 | MyPair | +| main.rs:415:18:415:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:416:18:416:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:416:18:416:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:416:18:416:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:416:18:416:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:416:26:416:27 | p2 | | main.rs:243:5:247:5 | MyPair | +| main.rs:418:13:418:14 | p3 | | main.rs:243:5:247:5 | MyPair | +| main.rs:418:18:421:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:419:17:419:33 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | | main.rs:422:18:422:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:422:18:422:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:422:18:422:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:422:18:422:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:423:17:423:17 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:424:18:424:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:424:18:424:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:424:18:424:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:424:18:424:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:428:31:428:38 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:422:18:422:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:422:18:422:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:422:26:422:27 | p3 | | main.rs:243:5:247:5 | MyPair | +| main.rs:425:13:425:13 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:425:17:425:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:426:17:426:17 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:427:18:427:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:427:18:427:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:427:18:427:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:427:18:427:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:428:17:428:17 | a | | main.rs:243:5:247:5 | MyPair | | main.rs:429:18:429:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:429:18:429:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:429:18:429:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:430:31:430:38 | thing_s2 | | main.rs:238:5:241:5 | MyThing | -| main.rs:431:18:431:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:431:18:431:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:431:18:431:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:431:18:431:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:434:13:434:13 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:434:17:434:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:435:25:435:25 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:436:18:436:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:436:18:436:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:436:18:436:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:436:18:436:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:437:25:437:25 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:438:18:438:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:438:18:438:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:438:18:438:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:438:18:438:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:441:13:441:13 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:441:17:441:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:442:25:442:25 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:443:18:443:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:443:18:443:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:443:18:443:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:443:18:443:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:444:25:444:25 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:445:18:445:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:445:18:445:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:445:18:445:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:445:18:445:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:447:13:447:13 | c | | main.rs:243:5:247:5 | MyPair | -| main.rs:447:17:450:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:435:13:435:13 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:435:17:435:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:436:17:436:17 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:437:18:437:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:437:18:437:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:437:18:437:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:437:18:437:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:438:17:438:17 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:439:18:439:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:439:18:439:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:439:18:439:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:439:18:439:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:443:31:443:38 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:444:18:444:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:444:18:444:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:444:18:444:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:444:18:444:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:445:31:445:38 | thing_s2 | | main.rs:238:5:241:5 | MyThing | +| main.rs:446:18:446:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:446:18:446:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:446:18:446:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:446:18:446:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:449:13:449:13 | a | | main.rs:243:5:247:5 | MyPair | | main.rs:449:17:449:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:451:29:451:29 | c | | main.rs:243:5:247:5 | MyPair | -| main.rs:453:13:453:17 | thing | | main.rs:238:5:241:5 | MyThing | -| main.rs:453:21:453:37 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:454:17:454:21 | thing | | main.rs:238:5:241:5 | MyThing | -| main.rs:455:28:455:32 | thing | | main.rs:238:5:241:5 | MyThing | -| main.rs:474:19:474:22 | SelfParam | | main.rs:472:5:475:5 | Self [trait FirstTrait] | -| main.rs:479:19:479:22 | SelfParam | | main.rs:477:5:480:5 | Self [trait SecondTrait] | -| main.rs:482:64:482:64 | x | | main.rs:482:45:482:61 | T | -| main.rs:482:70:486:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:484:18:484:18 | x | | main.rs:482:45:482:61 | T | -| main.rs:485:18:485:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:485:18:485:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:485:18:485:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:485:18:485:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:488:65:488:65 | x | | main.rs:488:46:488:62 | T | -| main.rs:488:71:492:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:490:18:490:18 | x | | main.rs:488:46:488:62 | T | -| main.rs:491:18:491:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:491:18:491:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:491:18:491:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:491:18:491:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:494:49:494:49 | x | | main.rs:494:30:494:46 | T | -| main.rs:494:55:497:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:495:17:495:17 | x | | main.rs:494:30:494:46 | T | -| main.rs:496:18:496:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:496:18:496:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:496:18:496:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:496:18:496:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:499:53:499:53 | x | | main.rs:499:34:499:50 | T | -| main.rs:499:59:502:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:500:17:500:17 | x | | main.rs:499:34:499:50 | T | -| main.rs:501:18:501:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:501:18:501:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:501:18:501:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:501:18:501:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:504:43:504:43 | x | | main.rs:504:40:504:40 | T | -| main.rs:507:5:510:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:508:17:508:17 | x | | main.rs:504:40:504:40 | T | -| main.rs:509:18:509:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:509:18:509:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:509:18:509:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:509:18:509:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:513:16:513:19 | SelfParam | | main.rs:512:5:516:5 | Self [trait Pair] | -| main.rs:515:16:515:19 | SelfParam | | main.rs:512:5:516:5 | Self [trait Pair] | -| main.rs:518:53:518:53 | x | | main.rs:518:50:518:50 | T | -| main.rs:518:59:518:59 | y | | main.rs:518:50:518:50 | T | -| main.rs:522:5:525:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:523:17:523:17 | x | | main.rs:518:50:518:50 | T | -| main.rs:524:17:524:17 | y | | main.rs:518:50:518:50 | T | -| main.rs:527:58:527:58 | x | | main.rs:527:41:527:55 | T | -| main.rs:527:64:527:64 | y | | main.rs:527:41:527:55 | T | -| main.rs:527:70:532:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:529:18:529:18 | x | | main.rs:527:41:527:55 | T | -| main.rs:530:18:530:18 | y | | main.rs:527:41:527:55 | T | -| main.rs:531:18:531:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:531:18:531:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:531:18:531:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:531:18:531:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:534:69:534:69 | x | | main.rs:534:52:534:66 | T | -| main.rs:534:75:534:75 | y | | main.rs:534:52:534:66 | T | -| main.rs:534:81:539:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:536:18:536:18 | x | | main.rs:534:52:534:66 | T | -| main.rs:537:18:537:18 | y | | main.rs:534:52:534:66 | T | -| main.rs:538:18:538:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:538:18:538:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:538:18:538:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:538:18:538:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:541:50:541:50 | x | | main.rs:541:41:541:47 | T | -| main.rs:541:56:541:56 | y | | main.rs:541:41:541:47 | T | -| main.rs:541:62:546:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:543:18:543:18 | x | | main.rs:541:41:541:47 | T | -| main.rs:544:18:544:18 | y | | main.rs:541:41:541:47 | T | -| main.rs:545:18:545:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:545:18:545:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:545:18:545:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:545:18:545:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:548:54:548:54 | x | | main.rs:548:41:548:51 | T | -| main.rs:548:60:548:60 | y | | main.rs:548:41:548:51 | T | -| main.rs:548:66:553:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:550:18:550:18 | x | | main.rs:548:41:548:51 | T | -| main.rs:551:18:551:18 | y | | main.rs:548:41:548:51 | T | -| main.rs:552:18:552:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:552:18:552:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:552:18:552:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:552:18:552:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:560:18:560:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:560:18:560:22 | SelfParam | TRef | main.rs:557:5:561:5 | Self [trait TraitWithSelfTp] | -| main.rs:563:40:563:44 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:563:40:563:44 | thing | TRef | main.rs:563:17:563:37 | T | -| main.rs:563:56:565:5 | { ... } | | main.rs:563:14:563:14 | A | -| main.rs:564:9:564:13 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:564:9:564:13 | thing | TRef | main.rs:563:17:563:37 | T | -| main.rs:568:44:568:48 | thing | | main.rs:568:24:568:41 | S | -| main.rs:568:61:571:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:569:19:569:23 | thing | | main.rs:568:24:568:41 | S | -| main.rs:576:55:576:59 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:576:55:576:59 | thing | TRef | main.rs:576:25:576:52 | S | -| main.rs:576:66:579:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:578:25:578:29 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:578:25:578:29 | thing | TRef | main.rs:576:25:576:52 | S | -| main.rs:587:18:587:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:587:18:587:22 | SelfParam | TRef | main.rs:581:5:583:5 | MyStruct | -| main.rs:587:41:589:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:587:41:589:9 | { ... } | T | main.rs:581:5:583:5 | MyStruct | -| main.rs:588:18:588:47 | MyStruct {...} | | main.rs:581:5:583:5 | MyStruct | -| main.rs:588:36:588:39 | self | | {EXTERNAL LOCATION} | & | -| main.rs:588:36:588:39 | self | TRef | main.rs:581:5:583:5 | MyStruct | -| main.rs:594:19:597:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:595:13:595:13 | s | | main.rs:581:5:583:5 | MyStruct | -| main.rs:595:17:595:37 | MyStruct {...} | | main.rs:581:5:583:5 | MyStruct | -| main.rs:596:25:596:26 | &s | | {EXTERNAL LOCATION} | & | -| main.rs:596:26:596:26 | s | | main.rs:581:5:583:5 | MyStruct | -| main.rs:612:15:612:18 | SelfParam | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:614:15:614:18 | SelfParam | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:617:9:619:9 | { ... } | | main.rs:611:19:611:19 | A | -| main.rs:618:13:618:16 | self | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:621:18:621:18 | x | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:625:15:625:18 | SelfParam | | main.rs:608:5:609:14 | S2 | -| main.rs:625:26:627:9 | { ... } | | main.rs:624:10:624:19 | T | -| main.rs:629:18:629:18 | x | | main.rs:608:5:609:14 | S2 | -| main.rs:629:32:631:9 | { ... } | | main.rs:624:10:624:19 | T | -| main.rs:635:15:635:18 | SelfParam | | main.rs:606:5:607:14 | S1 | -| main.rs:635:28:637:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:639:18:639:18 | x | | main.rs:606:5:607:14 | S1 | -| main.rs:639:34:641:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:646:50:646:50 | x | | main.rs:646:26:646:47 | T2 | -| main.rs:646:63:649:5 | { ... } | | main.rs:646:22:646:23 | T1 | -| main.rs:647:9:647:9 | x | | main.rs:646:26:646:47 | T2 | -| main.rs:648:9:648:9 | x | | main.rs:646:26:646:47 | T2 | -| main.rs:650:52:650:52 | x | | main.rs:650:28:650:49 | T2 | -| main.rs:650:65:654:5 | { ... } | | main.rs:650:24:650:25 | T1 | -| main.rs:651:24:651:24 | x | | main.rs:650:28:650:49 | T2 | -| main.rs:653:16:653:16 | x | | main.rs:650:28:650:49 | T2 | -| main.rs:655:52:655:52 | x | | main.rs:655:28:655:49 | T2 | -| main.rs:655:65:659:5 | { ... } | | main.rs:655:24:655:25 | T1 | -| main.rs:656:29:656:29 | x | | main.rs:655:28:655:49 | T2 | -| main.rs:658:21:658:21 | x | | main.rs:655:28:655:49 | T2 | -| main.rs:660:55:660:55 | x | | main.rs:660:31:660:52 | T2 | -| main.rs:660:68:664:5 | { ... } | | main.rs:660:27:660:28 | T1 | -| main.rs:661:27:661:27 | x | | main.rs:660:31:660:52 | T2 | -| main.rs:663:19:663:19 | x | | main.rs:660:31:660:52 | T2 | -| main.rs:665:55:665:55 | x | | main.rs:665:31:665:52 | T2 | -| main.rs:665:68:669:5 | { ... } | | main.rs:665:27:665:28 | T1 | -| main.rs:666:32:666:32 | x | | main.rs:665:31:665:52 | T2 | -| main.rs:668:24:668:24 | x | | main.rs:665:31:665:52 | T2 | -| main.rs:673:49:673:49 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:673:49:673:49 | x | T | main.rs:673:32:673:46 | T2 | -| main.rs:673:71:675:5 | { ... } | | main.rs:673:28:673:29 | T1 | -| main.rs:674:9:674:9 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:674:9:674:9 | x | T | main.rs:673:32:673:46 | T2 | -| main.rs:676:51:676:51 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:676:51:676:51 | x | T | main.rs:676:34:676:48 | T2 | -| main.rs:676:73:678:5 | { ... } | | main.rs:676:30:676:31 | T1 | -| main.rs:677:16:677:16 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:677:16:677:16 | x | T | main.rs:676:34:676:48 | T2 | -| main.rs:679:51:679:51 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:679:51:679:51 | x | T | main.rs:679:34:679:48 | T2 | -| main.rs:679:73:681:5 | { ... } | | main.rs:679:30:679:31 | T1 | -| main.rs:680:21:680:21 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:680:21:680:21 | x | T | main.rs:679:34:679:48 | T2 | -| main.rs:684:15:684:18 | SelfParam | | main.rs:601:5:604:5 | MyThing | -| main.rs:684:15:684:18 | SelfParam | T | main.rs:683:10:683:10 | T | -| main.rs:684:26:686:9 | { ... } | | main.rs:683:10:683:10 | T | -| main.rs:685:13:685:16 | self | | main.rs:601:5:604:5 | MyThing | -| main.rs:685:13:685:16 | self | T | main.rs:683:10:683:10 | T | -| main.rs:688:18:688:18 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:688:18:688:18 | x | T | main.rs:683:10:683:10 | T | -| main.rs:688:32:690:9 | { ... } | | main.rs:683:10:683:10 | T | -| main.rs:689:13:689:13 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:689:13:689:13 | x | T | main.rs:683:10:683:10 | T | -| main.rs:695:15:695:18 | SelfParam | | main.rs:693:5:696:5 | Self [trait MyTrait2] | -| main.rs:700:15:700:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:700:15:700:19 | SelfParam | TRef | main.rs:698:5:701:5 | Self [trait MyTrait3] | -| main.rs:703:46:703:46 | x | | main.rs:703:22:703:43 | T | -| main.rs:703:52:703:52 | y | | {EXTERNAL LOCATION} | & | -| main.rs:703:52:703:52 | y | TRef | main.rs:703:22:703:43 | T | -| main.rs:703:59:706:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:704:9:704:9 | x | | main.rs:703:22:703:43 | T | -| main.rs:705:9:705:9 | y | | {EXTERNAL LOCATION} | & | -| main.rs:705:9:705:9 | y | TRef | main.rs:703:22:703:43 | T | -| main.rs:708:16:766:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:709:13:709:13 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:709:17:709:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:710:13:710:13 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:710:17:710:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:712:18:712:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:712:18:712:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:712:18:712:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:712:18:712:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:712:26:712:26 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:713:18:713:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:713:18:713:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:713:18:713:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:713:18:713:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:713:26:713:26 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:715:13:715:13 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:715:17:715:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:716:13:716:13 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:716:17:716:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:718:18:718:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:718:18:718:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:718:18:718:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:718:18:718:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:718:26:718:26 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:719:18:719:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:719:18:719:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:719:18:719:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:719:18:719:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:719:26:719:26 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:721:13:721:14 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:721:18:721:34 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:722:13:722:14 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:722:18:722:34 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:724:31:724:32 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:725:18:725:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:725:18:725:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:725:18:725:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:725:18:725:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:726:33:726:34 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:727:18:727:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:727:18:727:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:727:18:727:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:727:18:727:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:728:33:728:34 | x2 | | main.rs:601:5:604:5 | MyThing | +| main.rs:450:25:450:25 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:451:18:451:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:451:18:451:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:451:18:451:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:451:18:451:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:452:25:452:25 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:453:18:453:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:453:18:453:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:453:18:453:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:453:18:453:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:456:13:456:13 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:456:17:456:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:457:25:457:25 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:458:18:458:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:458:18:458:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:458:18:458:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:458:18:458:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:459:25:459:25 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:460:18:460:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:460:18:460:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:460:18:460:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:460:18:460:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:462:13:462:13 | c | | main.rs:243:5:247:5 | MyPair | +| main.rs:462:17:465:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:464:17:464:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:466:29:466:29 | c | | main.rs:243:5:247:5 | MyPair | +| main.rs:468:13:468:17 | thing | | main.rs:238:5:241:5 | MyThing | +| main.rs:468:21:468:37 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:469:17:469:21 | thing | | main.rs:238:5:241:5 | MyThing | +| main.rs:470:28:470:32 | thing | | main.rs:238:5:241:5 | MyThing | +| main.rs:472:41:472:57 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:491:19:491:22 | SelfParam | | main.rs:489:5:492:5 | Self [trait FirstTrait] | +| main.rs:496:19:496:22 | SelfParam | | main.rs:494:5:497:5 | Self [trait SecondTrait] | +| main.rs:499:64:499:64 | x | | main.rs:499:45:499:61 | T | +| main.rs:499:70:503:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:501:18:501:18 | x | | main.rs:499:45:499:61 | T | +| main.rs:502:18:502:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:502:18:502:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:502:18:502:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:502:18:502:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:505:65:505:65 | x | | main.rs:505:46:505:62 | T | +| main.rs:505:71:509:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:507:18:507:18 | x | | main.rs:505:46:505:62 | T | +| main.rs:508:18:508:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:508:18:508:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:508:18:508:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:508:18:508:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:511:49:511:49 | x | | main.rs:511:30:511:46 | T | +| main.rs:511:55:514:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:512:17:512:17 | x | | main.rs:511:30:511:46 | T | +| main.rs:513:18:513:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:513:18:513:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:513:18:513:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:513:18:513:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:516:53:516:53 | x | | main.rs:516:34:516:50 | T | +| main.rs:516:59:519:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:517:17:517:17 | x | | main.rs:516:34:516:50 | T | +| main.rs:518:18:518:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:518:18:518:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:518:18:518:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:518:18:518:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:521:43:521:43 | x | | main.rs:521:40:521:40 | T | +| main.rs:524:5:527:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:525:17:525:17 | x | | main.rs:521:40:521:40 | T | +| main.rs:526:18:526:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:526:18:526:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:526:18:526:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:526:18:526:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:530:16:530:19 | SelfParam | | main.rs:529:5:533:5 | Self [trait Pair] | +| main.rs:532:16:532:19 | SelfParam | | main.rs:529:5:533:5 | Self [trait Pair] | +| main.rs:535:53:535:53 | x | | main.rs:535:50:535:50 | T | +| main.rs:535:59:535:59 | y | | main.rs:535:50:535:50 | T | +| main.rs:539:5:542:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:540:17:540:17 | x | | main.rs:535:50:535:50 | T | +| main.rs:541:17:541:17 | y | | main.rs:535:50:535:50 | T | +| main.rs:544:58:544:58 | x | | main.rs:544:41:544:55 | T | +| main.rs:544:64:544:64 | y | | main.rs:544:41:544:55 | T | +| main.rs:544:70:549:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:546:18:546:18 | x | | main.rs:544:41:544:55 | T | +| main.rs:547:18:547:18 | y | | main.rs:544:41:544:55 | T | +| main.rs:548:18:548:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:548:18:548:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:548:18:548:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:548:18:548:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:551:69:551:69 | x | | main.rs:551:52:551:66 | T | +| main.rs:551:75:551:75 | y | | main.rs:551:52:551:66 | T | +| main.rs:551:81:556:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:553:18:553:18 | x | | main.rs:551:52:551:66 | T | +| main.rs:554:18:554:18 | y | | main.rs:551:52:551:66 | T | +| main.rs:555:18:555:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:555:18:555:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:555:18:555:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:555:18:555:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:558:50:558:50 | x | | main.rs:558:41:558:47 | T | +| main.rs:558:56:558:56 | y | | main.rs:558:41:558:47 | T | +| main.rs:558:62:563:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:560:18:560:18 | x | | main.rs:558:41:558:47 | T | +| main.rs:561:18:561:18 | y | | main.rs:558:41:558:47 | T | +| main.rs:562:18:562:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:562:18:562:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:562:18:562:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:562:18:562:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:565:54:565:54 | x | | main.rs:565:41:565:51 | T | +| main.rs:565:60:565:60 | y | | main.rs:565:41:565:51 | T | +| main.rs:565:66:570:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:567:18:567:18 | x | | main.rs:565:41:565:51 | T | +| main.rs:568:18:568:18 | y | | main.rs:565:41:565:51 | T | +| main.rs:569:18:569:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:569:18:569:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:569:18:569:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:569:18:569:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:577:18:577:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:577:18:577:22 | SelfParam | TRef | main.rs:574:5:578:5 | Self [trait TraitWithSelfTp] | +| main.rs:580:40:580:44 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:580:40:580:44 | thing | TRef | main.rs:580:17:580:37 | T | +| main.rs:580:56:582:5 | { ... } | | main.rs:580:14:580:14 | A | +| main.rs:581:9:581:13 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:581:9:581:13 | thing | TRef | main.rs:580:17:580:37 | T | +| main.rs:585:44:585:48 | thing | | main.rs:585:24:585:41 | S | +| main.rs:585:61:588:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:586:19:586:23 | thing | | main.rs:585:24:585:41 | S | +| main.rs:593:55:593:59 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:593:55:593:59 | thing | TRef | main.rs:593:25:593:52 | S | +| main.rs:593:66:596:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:595:25:595:29 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:595:25:595:29 | thing | TRef | main.rs:593:25:593:52 | S | +| main.rs:604:18:604:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:604:18:604:22 | SelfParam | TRef | main.rs:598:5:600:5 | MyStruct | +| main.rs:604:41:606:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:604:41:606:9 | { ... } | T | main.rs:598:5:600:5 | MyStruct | +| main.rs:605:18:605:47 | MyStruct {...} | | main.rs:598:5:600:5 | MyStruct | +| main.rs:605:36:605:39 | self | | {EXTERNAL LOCATION} | & | +| main.rs:605:36:605:39 | self | TRef | main.rs:598:5:600:5 | MyStruct | +| main.rs:611:19:614:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:612:13:612:13 | s | | main.rs:598:5:600:5 | MyStruct | +| main.rs:612:17:612:37 | MyStruct {...} | | main.rs:598:5:600:5 | MyStruct | +| main.rs:613:25:613:26 | &s | | {EXTERNAL LOCATION} | & | +| main.rs:613:26:613:26 | s | | main.rs:598:5:600:5 | MyStruct | +| main.rs:629:15:629:18 | SelfParam | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:631:15:631:18 | SelfParam | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:634:9:636:9 | { ... } | | main.rs:628:19:628:19 | A | +| main.rs:635:13:635:16 | self | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:638:18:638:18 | x | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:642:15:642:18 | SelfParam | | main.rs:625:5:626:14 | S2 | +| main.rs:642:26:644:9 | { ... } | | main.rs:641:10:641:19 | T | +| main.rs:646:18:646:18 | x | | main.rs:625:5:626:14 | S2 | +| main.rs:646:32:648:9 | { ... } | | main.rs:641:10:641:19 | T | +| main.rs:652:15:652:18 | SelfParam | | main.rs:623:5:624:14 | S1 | +| main.rs:652:28:654:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:656:18:656:18 | x | | main.rs:623:5:624:14 | S1 | +| main.rs:656:34:658:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:663:50:663:50 | x | | main.rs:663:26:663:47 | T2 | +| main.rs:663:63:666:5 | { ... } | | main.rs:663:22:663:23 | T1 | +| main.rs:664:9:664:9 | x | | main.rs:663:26:663:47 | T2 | +| main.rs:665:9:665:9 | x | | main.rs:663:26:663:47 | T2 | +| main.rs:667:52:667:52 | x | | main.rs:667:28:667:49 | T2 | +| main.rs:667:65:671:5 | { ... } | | main.rs:667:24:667:25 | T1 | +| main.rs:668:24:668:24 | x | | main.rs:667:28:667:49 | T2 | +| main.rs:670:16:670:16 | x | | main.rs:667:28:667:49 | T2 | +| main.rs:672:52:672:52 | x | | main.rs:672:28:672:49 | T2 | +| main.rs:672:65:676:5 | { ... } | | main.rs:672:24:672:25 | T1 | +| main.rs:673:29:673:29 | x | | main.rs:672:28:672:49 | T2 | +| main.rs:675:21:675:21 | x | | main.rs:672:28:672:49 | T2 | +| main.rs:677:55:677:55 | x | | main.rs:677:31:677:52 | T2 | +| main.rs:677:68:681:5 | { ... } | | main.rs:677:27:677:28 | T1 | +| main.rs:678:27:678:27 | x | | main.rs:677:31:677:52 | T2 | +| main.rs:680:19:680:19 | x | | main.rs:677:31:677:52 | T2 | +| main.rs:682:55:682:55 | x | | main.rs:682:31:682:52 | T2 | +| main.rs:682:68:686:5 | { ... } | | main.rs:682:27:682:28 | T1 | +| main.rs:683:32:683:32 | x | | main.rs:682:31:682:52 | T2 | +| main.rs:685:24:685:24 | x | | main.rs:682:31:682:52 | T2 | +| main.rs:690:49:690:49 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:690:49:690:49 | x | T | main.rs:690:32:690:46 | T2 | +| main.rs:690:71:692:5 | { ... } | | main.rs:690:28:690:29 | T1 | +| main.rs:691:9:691:9 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:691:9:691:9 | x | T | main.rs:690:32:690:46 | T2 | +| main.rs:693:51:693:51 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:693:51:693:51 | x | T | main.rs:693:34:693:48 | T2 | +| main.rs:693:73:695:5 | { ... } | | main.rs:693:30:693:31 | T1 | +| main.rs:694:16:694:16 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:694:16:694:16 | x | T | main.rs:693:34:693:48 | T2 | +| main.rs:696:51:696:51 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:696:51:696:51 | x | T | main.rs:696:34:696:48 | T2 | +| main.rs:696:73:698:5 | { ... } | | main.rs:696:30:696:31 | T1 | +| main.rs:697:21:697:21 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:697:21:697:21 | x | T | main.rs:696:34:696:48 | T2 | +| main.rs:701:15:701:18 | SelfParam | | main.rs:618:5:621:5 | MyThing | +| main.rs:701:15:701:18 | SelfParam | T | main.rs:700:10:700:10 | T | +| main.rs:701:26:703:9 | { ... } | | main.rs:700:10:700:10 | T | +| main.rs:702:13:702:16 | self | | main.rs:618:5:621:5 | MyThing | +| main.rs:702:13:702:16 | self | T | main.rs:700:10:700:10 | T | +| main.rs:705:18:705:18 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:705:18:705:18 | x | T | main.rs:700:10:700:10 | T | +| main.rs:705:32:707:9 | { ... } | | main.rs:700:10:700:10 | T | +| main.rs:706:13:706:13 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:706:13:706:13 | x | T | main.rs:700:10:700:10 | T | +| main.rs:712:15:712:18 | SelfParam | | main.rs:710:5:713:5 | Self [trait MyTrait2] | +| main.rs:717:15:717:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:717:15:717:19 | SelfParam | TRef | main.rs:715:5:718:5 | Self [trait MyTrait3] | +| main.rs:720:46:720:46 | x | | main.rs:720:22:720:43 | T | +| main.rs:720:52:720:52 | y | | {EXTERNAL LOCATION} | & | +| main.rs:720:52:720:52 | y | TRef | main.rs:720:22:720:43 | T | +| main.rs:720:59:723:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:721:9:721:9 | x | | main.rs:720:22:720:43 | T | +| main.rs:722:9:722:9 | y | | {EXTERNAL LOCATION} | & | +| main.rs:722:9:722:9 | y | TRef | main.rs:720:22:720:43 | T | +| main.rs:725:16:783:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:726:13:726:13 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:726:17:726:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:727:13:727:13 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:727:17:727:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | | main.rs:729:18:729:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:729:18:729:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:729:18:729:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:729:18:729:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:730:31:730:32 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:731:18:731:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:731:18:731:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:731:18:731:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:731:18:731:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:732:33:732:34 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:733:18:733:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:733:18:733:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:733:18:733:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:733:18:733:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:734:33:734:34 | y2 | | main.rs:601:5:604:5 | MyThing | +| main.rs:729:18:729:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:729:18:729:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:729:26:729:26 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:730:18:730:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:730:18:730:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:730:18:730:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:730:18:730:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:730:26:730:26 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:732:13:732:13 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:732:17:732:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:733:13:733:13 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:733:17:733:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | | main.rs:735:18:735:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:735:18:735:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:735:18:735:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:735:18:735:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:736:36:736:37 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:737:18:737:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:737:18:737:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:737:18:737:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:737:18:737:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:738:36:738:37 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:739:18:739:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:739:18:739:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:739:18:739:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:739:18:739:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:740:36:740:37 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:741:18:741:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:741:18:741:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:741:18:741:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:741:18:741:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:742:36:742:37 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:743:18:743:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:743:18:743:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:743:18:743:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:743:18:743:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:745:13:745:14 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:745:18:747:9 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:746:16:746:32 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:748:13:748:14 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:748:18:750:9 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:749:16:749:32 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:752:37:752:38 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:753:18:753:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:753:18:753:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:753:18:753:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:753:18:753:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:754:39:754:40 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:755:18:755:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:755:18:755:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:755:18:755:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:755:18:755:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:756:39:756:40 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:757:18:757:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:757:18:757:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:757:18:757:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:757:18:757:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:758:37:758:38 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:759:18:759:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:759:18:759:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:759:18:759:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:759:18:759:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:760:39:760:40 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:761:18:761:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:761:18:761:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:761:18:761:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:761:18:761:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:762:39:762:40 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:763:18:763:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:763:18:763:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:763:18:763:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:763:18:763:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:765:13:765:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:782:15:782:18 | SelfParam | | main.rs:770:5:774:5 | MyEnum | -| main.rs:782:15:782:18 | SelfParam | A | main.rs:781:10:781:10 | T | -| main.rs:782:26:787:9 | { ... } | | main.rs:781:10:781:10 | T | -| main.rs:783:19:783:22 | self | | main.rs:770:5:774:5 | MyEnum | -| main.rs:783:19:783:22 | self | A | main.rs:781:10:781:10 | T | -| main.rs:785:17:785:32 | ...::C2 {...} | | main.rs:770:5:774:5 | MyEnum | -| main.rs:790:16:796:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:792:13:792:13 | y | | main.rs:770:5:774:5 | MyEnum | -| main.rs:792:17:792:36 | ...::C2 {...} | | main.rs:770:5:774:5 | MyEnum | -| main.rs:794:18:794:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:794:18:794:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:794:18:794:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:794:18:794:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:795:18:795:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:795:18:795:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:795:18:795:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:795:18:795:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:795:26:795:26 | y | | main.rs:770:5:774:5 | MyEnum | -| main.rs:817:15:817:18 | SelfParam | | main.rs:815:5:818:5 | Self [trait MyTrait1] | -| main.rs:822:15:822:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:822:15:822:19 | SelfParam | TRef | main.rs:820:5:832:5 | Self [trait MyTrait2] | -| main.rs:825:9:831:9 | { ... } | | main.rs:820:20:820:22 | Tr2 | -| main.rs:827:17:827:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:827:17:827:20 | self | TRef | main.rs:820:5:832:5 | Self [trait MyTrait2] | -| main.rs:829:27:829:30 | self | | {EXTERNAL LOCATION} | & | -| main.rs:829:27:829:30 | self | TRef | main.rs:820:5:832:5 | Self [trait MyTrait2] | -| main.rs:836:15:836:18 | SelfParam | | main.rs:834:5:846:5 | Self [trait MyTrait3] | -| main.rs:839:9:845:9 | { ... } | | main.rs:834:20:834:22 | Tr3 | -| main.rs:841:17:841:20 | self | | main.rs:834:5:846:5 | Self [trait MyTrait3] | -| main.rs:843:26:843:30 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:843:27:843:30 | self | | main.rs:834:5:846:5 | Self [trait MyTrait3] | -| main.rs:850:15:850:18 | SelfParam | | main.rs:800:5:803:5 | MyThing | -| main.rs:850:15:850:18 | SelfParam | A | main.rs:848:10:848:10 | T | -| main.rs:850:26:852:9 | { ... } | | main.rs:848:10:848:10 | T | -| main.rs:851:13:851:16 | self | | main.rs:800:5:803:5 | MyThing | -| main.rs:851:13:851:16 | self | A | main.rs:848:10:848:10 | T | -| main.rs:859:15:859:18 | SelfParam | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:859:15:859:18 | SelfParam | A | main.rs:857:10:857:10 | T | -| main.rs:859:35:861:9 | { ... } | | main.rs:800:5:803:5 | MyThing | -| main.rs:859:35:861:9 | { ... } | A | main.rs:857:10:857:10 | T | -| main.rs:860:13:860:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:860:26:860:29 | self | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:860:26:860:29 | self | A | main.rs:857:10:857:10 | T | -| main.rs:868:44:868:44 | x | | main.rs:868:26:868:41 | T2 | -| main.rs:868:57:870:5 | { ... } | | main.rs:868:22:868:23 | T1 | -| main.rs:869:9:869:9 | x | | main.rs:868:26:868:41 | T2 | -| main.rs:872:56:872:56 | x | | main.rs:872:39:872:53 | T | -| main.rs:872:62:876:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:874:17:874:17 | x | | main.rs:872:39:872:53 | T | -| main.rs:875:18:875:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:875:18:875:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:875:18:875:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:875:18:875:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:878:16:902:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:879:13:879:13 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:879:17:879:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:880:13:880:13 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:880:17:880:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:882:18:882:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:882:18:882:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:882:18:882:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:882:18:882:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:882:26:882:26 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:883:18:883:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:883:18:883:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:883:18:883:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:883:18:883:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:883:26:883:26 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:885:13:885:13 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:885:17:885:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:886:13:886:13 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:886:17:886:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:888:18:888:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:888:18:888:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:888:18:888:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:888:18:888:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:888:26:888:26 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:889:18:889:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:889:18:889:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:889:18:889:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:889:18:889:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:889:26:889:26 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:891:13:891:13 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:891:17:891:34 | MyThing2 {...} | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:892:13:892:13 | y | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:892:17:892:34 | MyThing2 {...} | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:894:18:894:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:894:18:894:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:894:18:894:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:894:18:894:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:894:26:894:26 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:895:18:895:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:895:18:895:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:895:18:895:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:895:18:895:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:895:26:895:26 | y | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:897:13:897:13 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:897:17:897:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:898:31:898:31 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:900:13:900:13 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:900:17:900:34 | MyThing2 {...} | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:901:31:901:31 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:918:22:918:22 | x | | {EXTERNAL LOCATION} | & | -| main.rs:918:22:918:22 | x | TRef | main.rs:918:11:918:19 | T | -| main.rs:918:35:920:5 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:918:35:920:5 | { ... } | TRef | main.rs:918:11:918:19 | T | -| main.rs:919:9:919:9 | x | | {EXTERNAL LOCATION} | & | -| main.rs:919:9:919:9 | x | TRef | main.rs:918:11:918:19 | T | -| main.rs:923:17:923:20 | SelfParam | | main.rs:908:5:909:14 | S1 | -| main.rs:923:29:925:9 | { ... } | | main.rs:911:5:912:14 | S2 | -| main.rs:928:21:928:21 | x | | main.rs:928:13:928:14 | T1 | -| main.rs:931:5:933:5 | { ... } | | main.rs:928:17:928:18 | T2 | -| main.rs:932:9:932:9 | x | | main.rs:928:13:928:14 | T1 | -| main.rs:935:16:951:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:937:18:937:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:937:18:937:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:937:18:937:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:937:18:937:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:937:26:937:31 | id(...) | | {EXTERNAL LOCATION} | & | -| main.rs:937:29:937:30 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:940:18:940:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:940:18:940:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:940:18:940:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:940:18:940:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:940:26:940:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:940:26:940:37 | id::<...>(...) | TRef | main.rs:908:5:909:14 | S1 | -| main.rs:940:35:940:36 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:944:18:944:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:944:18:944:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:944:18:944:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:944:18:944:44 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:944:26:944:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:944:26:944:44 | id::<...>(...) | TRef | main.rs:914:5:914:25 | dyn Trait | -| main.rs:944:42:944:43 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:947:9:947:25 | into::<...>(...) | | main.rs:911:5:912:14 | S2 | -| main.rs:950:13:950:13 | y | | main.rs:911:5:912:14 | S2 | -| main.rs:964:22:964:25 | SelfParam | | main.rs:955:5:961:5 | PairOption | -| main.rs:964:22:964:25 | SelfParam | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:964:22:964:25 | SelfParam | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:964:35:971:9 | { ... } | | main.rs:963:15:963:17 | Snd | -| main.rs:965:19:965:22 | self | | main.rs:955:5:961:5 | PairOption | -| main.rs:965:19:965:22 | self | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:965:19:965:22 | self | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:966:43:966:82 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:966:50:966:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | -| main.rs:966:50:966:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:966:50:966:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:966:50:966:81 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:967:43:967:81 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:967:50:967:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | -| main.rs:967:50:967:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:967:50:967:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:967:50:967:80 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:995:10:995:10 | t | | main.rs:955:5:961:5 | PairOption | -| main.rs:995:10:995:10 | t | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:995:10:995:10 | t | Snd | main.rs:955:5:961:5 | PairOption | -| main.rs:995:10:995:10 | t | Snd.Fst | main.rs:977:5:978:14 | S2 | -| main.rs:995:10:995:10 | t | Snd.Snd | main.rs:980:5:981:14 | S3 | -| main.rs:995:30:998:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:996:17:996:17 | t | | main.rs:955:5:961:5 | PairOption | -| main.rs:996:17:996:17 | t | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:996:17:996:17 | t | Snd | main.rs:955:5:961:5 | PairOption | -| main.rs:996:17:996:17 | t | Snd.Fst | main.rs:977:5:978:14 | S2 | -| main.rs:996:17:996:17 | t | Snd.Snd | main.rs:980:5:981:14 | S3 | -| main.rs:997:18:997:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:997:18:997:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:997:18:997:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:997:18:997:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1008:16:1028:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1010:13:1010:14 | p1 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1010:13:1010:14 | p1 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1010:13:1010:14 | p1 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1011:18:1011:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1011:18:1011:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1011:18:1011:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1011:18:1011:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1011:26:1011:27 | p1 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1011:26:1011:27 | p1 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1011:26:1011:27 | p1 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1014:13:1014:14 | p2 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1014:13:1014:14 | p2 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1014:13:1014:14 | p2 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1015:18:1015:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1015:18:1015:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1015:18:1015:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1015:18:1015:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1015:26:1015:27 | p2 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1015:26:1015:27 | p2 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1015:26:1015:27 | p2 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1018:13:1018:14 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1018:13:1018:14 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1019:18:1019:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1019:18:1019:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1019:18:1019:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1019:18:1019:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1019:26:1019:27 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1019:26:1019:27 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1022:13:1022:14 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1022:13:1022:14 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1022:13:1022:14 | p3 | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1023:18:1023:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1023:18:1023:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1023:18:1023:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1023:18:1023:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1023:26:1023:27 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1023:26:1023:27 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1023:26:1023:27 | p3 | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1025:9:1025:55 | g(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1027:13:1027:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1027:13:1027:13 | x | E | main.rs:974:5:975:14 | S1 | -| main.rs:1027:13:1027:13 | x | T | main.rs:1000:5:1000:34 | S4 | -| main.rs:1027:13:1027:13 | x | T.T41 | main.rs:977:5:978:14 | S2 | -| main.rs:1027:13:1027:13 | x | T.T42 | main.rs:1002:5:1002:22 | S5 | -| main.rs:1027:13:1027:13 | x | T.T42.T5 | main.rs:977:5:978:14 | S2 | -| main.rs:1040:16:1040:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1040:16:1040:24 | SelfParam | TRefMut | main.rs:1038:5:1045:5 | Self [trait MyTrait] | -| main.rs:1040:27:1040:31 | value | | main.rs:1038:19:1038:19 | S | -| main.rs:1042:21:1042:29 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1042:21:1042:29 | SelfParam | TRefMut | main.rs:1038:5:1045:5 | Self [trait MyTrait] | -| main.rs:1042:32:1042:36 | value | | main.rs:1038:19:1038:19 | S | -| main.rs:1042:42:1044:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1043:13:1043:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1043:13:1043:16 | self | TRefMut | main.rs:1038:5:1045:5 | Self [trait MyTrait] | -| main.rs:1043:22:1043:26 | value | | main.rs:1038:19:1038:19 | S | -| main.rs:1049:16:1049:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1049:16:1049:24 | SelfParam | TRefMut | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1049:16:1049:24 | SelfParam | TRefMut.T | main.rs:1047:10:1047:10 | T | -| main.rs:1049:27:1049:31 | value | | main.rs:1047:10:1047:10 | T | -| main.rs:1049:37:1049:38 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1053:26:1055:9 | { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1053:26:1055:9 | { ... } | T | main.rs:1052:10:1052:10 | T | -| main.rs:1059:20:1059:23 | SelfParam | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1059:20:1059:23 | SelfParam | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1059:20:1059:23 | SelfParam | T.T | main.rs:1058:10:1058:10 | T | -| main.rs:1059:41:1064:9 | { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1059:41:1064:9 | { ... } | T | main.rs:1058:10:1058:10 | T | -| main.rs:1060:19:1060:22 | self | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1060:19:1060:22 | self | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1060:19:1060:22 | self | T.T | main.rs:1058:10:1058:10 | T | -| main.rs:1070:16:1115:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1071:13:1071:14 | x1 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1071:13:1071:14 | x1 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1071:18:1071:37 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1071:18:1071:37 | ...::new(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1072:18:1072:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1072:18:1072:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1072:18:1072:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1072:18:1072:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1072:26:1072:27 | x1 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1072:26:1072:27 | x1 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1074:17:1074:18 | x2 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1074:22:1074:36 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1075:9:1075:10 | x2 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1076:18:1076:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1076:18:1076:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1076:18:1076:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1076:18:1076:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1076:26:1076:27 | x2 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1078:17:1078:18 | x3 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1078:22:1078:36 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1079:9:1079:10 | x3 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1080:18:1080:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1080:18:1080:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1080:18:1080:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1080:18:1080:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1080:26:1080:27 | x3 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1082:17:1082:18 | x4 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1082:22:1082:36 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1083:9:1083:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1083:23:1083:29 | &mut x4 | | {EXTERNAL LOCATION} | &mut | -| main.rs:1083:28:1083:29 | x4 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1084:18:1084:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1084:18:1084:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1084:18:1084:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1084:18:1084:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1084:26:1084:27 | x4 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1087:18:1087:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1087:18:1087:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1087:18:1087:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1087:18:1087:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1090:18:1090:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1090:18:1090:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1090:18:1090:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1090:18:1090:61 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1090:26:1090:61 | ...::flatten(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1090:26:1090:61 | ...::flatten(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1098:18:1098:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1098:18:1098:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1098:18:1098:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1098:18:1098:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1102:13:1102:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1103:13:1103:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1105:18:1105:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1105:18:1105:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1105:18:1105:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1105:18:1105:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1108:30:1113:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1109:13:1111:13 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1109:22:1111:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1114:18:1114:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1114:18:1114:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1114:18:1114:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1114:18:1114:34 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1132:15:1132:18 | SelfParam | | main.rs:1120:5:1121:19 | S | -| main.rs:1132:15:1132:18 | SelfParam | T | main.rs:1131:10:1131:10 | T | -| main.rs:1132:26:1134:9 | { ... } | | main.rs:1131:10:1131:10 | T | -| main.rs:1133:13:1133:16 | self | | main.rs:1120:5:1121:19 | S | -| main.rs:1133:13:1133:16 | self | T | main.rs:1131:10:1131:10 | T | -| main.rs:1136:15:1136:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1136:15:1136:19 | SelfParam | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1136:15:1136:19 | SelfParam | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1136:28:1138:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1136:28:1138:9 | { ... } | TRef | main.rs:1131:10:1131:10 | T | -| main.rs:1137:13:1137:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1137:14:1137:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1137:14:1137:17 | self | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1137:14:1137:17 | self | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1140:15:1140:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1140:15:1140:25 | SelfParam | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1140:15:1140:25 | SelfParam | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1140:34:1142:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1140:34:1142:9 | { ... } | TRef | main.rs:1131:10:1131:10 | T | -| main.rs:1141:13:1141:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1141:14:1141:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1141:14:1141:17 | self | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1141:14:1141:17 | self | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1146:29:1146:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1146:29:1146:33 | SelfParam | TRef | main.rs:1145:5:1148:5 | Self [trait ATrait] | -| main.rs:1147:33:1147:36 | SelfParam | | main.rs:1145:5:1148:5 | Self [trait ATrait] | -| main.rs:1153:29:1153:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1153:29:1153:33 | SelfParam | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1153:29:1153:33 | SelfParam | TRef.TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1153:43:1155:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1154:17:1154:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1154:17:1154:20 | self | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1154:17:1154:20 | self | TRef.TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1158:33:1158:36 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1158:33:1158:36 | SelfParam | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1158:46:1160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1159:15:1159:18 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1159:15:1159:18 | self | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1163:16:1213:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1165:18:1165:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1165:18:1165:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1165:18:1165:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1165:18:1165:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1169:18:1169:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1169:18:1169:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1169:18:1169:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1169:18:1169:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1170:18:1170:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1170:18:1170:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1170:18:1170:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1170:18:1170:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1174:18:1174:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1174:18:1174:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1174:18:1174:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1174:18:1174:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1174:26:1174:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1174:26:1174:41 | ...::m2(...) | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1174:38:1174:40 | &x3 | | {EXTERNAL LOCATION} | & | -| main.rs:1175:18:1175:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1175:18:1175:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1175:18:1175:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1175:18:1175:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1175:26:1175:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1175:26:1175:41 | ...::m3(...) | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1175:38:1175:40 | &x3 | | {EXTERNAL LOCATION} | & | -| main.rs:1177:13:1177:14 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1177:18:1177:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1179:18:1179:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1179:18:1179:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1179:18:1179:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1179:18:1179:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1179:26:1179:27 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1180:18:1180:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1180:18:1180:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1180:18:1180:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1180:18:1180:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1180:26:1180:27 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1182:13:1182:14 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1182:18:1182:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1184:18:1184:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1184:18:1184:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1184:18:1184:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1184:18:1184:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1184:26:1184:27 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1185:18:1185:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1185:18:1185:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1185:18:1185:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1185:18:1185:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1185:26:1185:27 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1187:13:1187:14 | x6 | | {EXTERNAL LOCATION} | & | -| main.rs:1187:18:1187:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1190:18:1190:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1190:18:1190:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1190:18:1190:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1190:18:1190:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1190:28:1190:29 | x6 | | {EXTERNAL LOCATION} | & | -| main.rs:1192:20:1192:22 | &S2 | | {EXTERNAL LOCATION} | & | +| main.rs:735:18:735:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:735:18:735:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:735:26:735:26 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:736:18:736:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:736:18:736:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:736:18:736:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:736:18:736:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:736:26:736:26 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:738:13:738:14 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:738:18:738:34 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:739:13:739:14 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:739:18:739:34 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:741:31:741:32 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:742:18:742:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:742:18:742:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:742:18:742:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:742:18:742:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:743:33:743:34 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:744:18:744:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:744:18:744:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:744:18:744:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:744:18:744:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:745:33:745:34 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:746:18:746:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:746:18:746:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:746:18:746:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:746:18:746:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:747:31:747:32 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:748:18:748:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:748:18:748:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:748:18:748:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:748:18:748:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:749:33:749:34 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:750:18:750:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:750:18:750:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:750:18:750:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:750:18:750:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:751:33:751:34 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:752:18:752:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:752:18:752:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:752:18:752:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:752:18:752:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:753:36:753:37 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:754:18:754:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:754:18:754:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:754:18:754:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:754:18:754:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:755:36:755:37 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:756:18:756:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:756:18:756:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:756:18:756:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:756:18:756:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:757:36:757:37 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:758:18:758:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:758:18:758:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:758:18:758:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:758:18:758:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:759:36:759:37 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:760:18:760:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:760:18:760:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:760:18:760:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:760:18:760:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:762:13:762:14 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:762:18:764:9 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:763:16:763:32 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:765:13:765:14 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:765:18:767:9 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:766:16:766:32 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:769:37:769:38 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:770:18:770:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:770:18:770:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:770:18:770:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:770:18:770:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:771:39:771:40 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:772:18:772:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:772:18:772:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:772:18:772:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:772:18:772:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:773:39:773:40 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:774:18:774:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:774:18:774:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:774:18:774:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:774:18:774:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:775:37:775:38 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:776:18:776:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:776:18:776:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:776:18:776:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:776:18:776:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:777:39:777:40 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:778:18:778:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:778:18:778:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:778:18:778:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:778:18:778:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:779:39:779:40 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:780:18:780:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:780:18:780:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:780:18:780:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:780:18:780:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:782:13:782:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:799:15:799:18 | SelfParam | | main.rs:787:5:791:5 | MyEnum | +| main.rs:799:15:799:18 | SelfParam | A | main.rs:798:10:798:10 | T | +| main.rs:799:26:804:9 | { ... } | | main.rs:798:10:798:10 | T | +| main.rs:800:19:800:22 | self | | main.rs:787:5:791:5 | MyEnum | +| main.rs:800:19:800:22 | self | A | main.rs:798:10:798:10 | T | +| main.rs:802:17:802:32 | ...::C2 {...} | | main.rs:787:5:791:5 | MyEnum | +| main.rs:807:16:813:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:809:13:809:13 | y | | main.rs:787:5:791:5 | MyEnum | +| main.rs:809:17:809:36 | ...::C2 {...} | | main.rs:787:5:791:5 | MyEnum | +| main.rs:811:18:811:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:811:18:811:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:811:18:811:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:811:18:811:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:812:18:812:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:812:18:812:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:812:18:812:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:812:18:812:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:812:26:812:26 | y | | main.rs:787:5:791:5 | MyEnum | +| main.rs:834:15:834:18 | SelfParam | | main.rs:832:5:835:5 | Self [trait MyTrait1] | +| main.rs:839:15:839:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:839:15:839:19 | SelfParam | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | +| main.rs:842:9:848:9 | { ... } | | main.rs:837:20:837:22 | Tr2 | +| main.rs:844:17:844:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:844:17:844:20 | self | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | +| main.rs:846:27:846:30 | self | | {EXTERNAL LOCATION} | & | +| main.rs:846:27:846:30 | self | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | +| main.rs:853:15:853:18 | SelfParam | | main.rs:851:5:863:5 | Self [trait MyTrait3] | +| main.rs:856:9:862:9 | { ... } | | main.rs:851:20:851:22 | Tr3 | +| main.rs:858:17:858:20 | self | | main.rs:851:5:863:5 | Self [trait MyTrait3] | +| main.rs:860:26:860:30 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:860:27:860:30 | self | | main.rs:851:5:863:5 | Self [trait MyTrait3] | +| main.rs:867:15:867:18 | SelfParam | | main.rs:817:5:820:5 | MyThing | +| main.rs:867:15:867:18 | SelfParam | A | main.rs:865:10:865:10 | T | +| main.rs:867:26:869:9 | { ... } | | main.rs:865:10:865:10 | T | +| main.rs:868:13:868:16 | self | | main.rs:817:5:820:5 | MyThing | +| main.rs:868:13:868:16 | self | A | main.rs:865:10:865:10 | T | +| main.rs:876:15:876:18 | SelfParam | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:876:15:876:18 | SelfParam | A | main.rs:874:10:874:10 | T | +| main.rs:876:35:878:9 | { ... } | | main.rs:817:5:820:5 | MyThing | +| main.rs:876:35:878:9 | { ... } | A | main.rs:874:10:874:10 | T | +| main.rs:877:13:877:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:877:26:877:29 | self | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:877:26:877:29 | self | A | main.rs:874:10:874:10 | T | +| main.rs:885:44:885:44 | x | | main.rs:885:26:885:41 | T2 | +| main.rs:885:57:887:5 | { ... } | | main.rs:885:22:885:23 | T1 | +| main.rs:886:9:886:9 | x | | main.rs:885:26:885:41 | T2 | +| main.rs:889:56:889:56 | x | | main.rs:889:39:889:53 | T | +| main.rs:889:62:893:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:891:17:891:17 | x | | main.rs:889:39:889:53 | T | +| main.rs:892:18:892:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:892:18:892:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:892:18:892:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:892:18:892:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:895:16:919:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:896:13:896:13 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:896:17:896:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:897:13:897:13 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:897:17:897:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:899:18:899:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:899:18:899:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:899:18:899:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:899:18:899:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:899:26:899:26 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:900:18:900:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:900:18:900:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:900:18:900:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:900:18:900:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:900:26:900:26 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:902:13:902:13 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:902:17:902:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:903:13:903:13 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:903:17:903:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:905:18:905:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:905:18:905:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:905:18:905:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:905:18:905:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:905:26:905:26 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:906:18:906:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:906:18:906:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:906:18:906:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:906:18:906:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:906:26:906:26 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:908:13:908:13 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:908:17:908:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:909:13:909:13 | y | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:909:17:909:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:911:18:911:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:911:18:911:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:911:18:911:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:911:18:911:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:911:26:911:26 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:912:18:912:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:912:18:912:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:912:18:912:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:912:18:912:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:912:26:912:26 | y | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:914:13:914:13 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:914:17:914:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:915:31:915:31 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:917:13:917:13 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:917:17:917:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:918:31:918:31 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:935:22:935:22 | x | | {EXTERNAL LOCATION} | & | +| main.rs:935:22:935:22 | x | TRef | main.rs:935:11:935:19 | T | +| main.rs:935:35:937:5 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:935:35:937:5 | { ... } | TRef | main.rs:935:11:935:19 | T | +| main.rs:936:9:936:9 | x | | {EXTERNAL LOCATION} | & | +| main.rs:936:9:936:9 | x | TRef | main.rs:935:11:935:19 | T | +| main.rs:940:17:940:20 | SelfParam | | main.rs:925:5:926:14 | S1 | +| main.rs:940:29:942:9 | { ... } | | main.rs:928:5:929:14 | S2 | +| main.rs:945:21:945:21 | x | | main.rs:945:13:945:14 | T1 | +| main.rs:948:5:950:5 | { ... } | | main.rs:945:17:945:18 | T2 | +| main.rs:949:9:949:9 | x | | main.rs:945:13:945:14 | T1 | +| main.rs:952:16:968:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:954:18:954:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:954:18:954:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:954:18:954:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:954:18:954:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:954:26:954:31 | id(...) | | {EXTERNAL LOCATION} | & | +| main.rs:954:29:954:30 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:957:18:957:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:957:18:957:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:957:18:957:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:957:18:957:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:957:26:957:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | +| main.rs:957:26:957:37 | id::<...>(...) | TRef | main.rs:925:5:926:14 | S1 | +| main.rs:957:35:957:36 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:961:18:961:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:961:18:961:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:961:18:961:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:961:18:961:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:961:26:961:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | +| main.rs:961:26:961:44 | id::<...>(...) | TRef | main.rs:931:5:931:25 | dyn Trait | +| main.rs:961:42:961:43 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:964:9:964:25 | into::<...>(...) | | main.rs:928:5:929:14 | S2 | +| main.rs:967:13:967:13 | y | | main.rs:928:5:929:14 | S2 | +| main.rs:981:22:981:25 | SelfParam | | main.rs:972:5:978:5 | PairOption | +| main.rs:981:22:981:25 | SelfParam | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:981:22:981:25 | SelfParam | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:981:35:988:9 | { ... } | | main.rs:980:15:980:17 | Snd | +| main.rs:982:19:982:22 | self | | main.rs:972:5:978:5 | PairOption | +| main.rs:982:19:982:22 | self | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:982:19:982:22 | self | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:983:43:983:82 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:983:50:983:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | +| main.rs:983:50:983:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | +| main.rs:983:50:983:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:983:50:983:81 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:984:43:984:81 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:984:50:984:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | +| main.rs:984:50:984:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | +| main.rs:984:50:984:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:984:50:984:80 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1012:10:1012:10 | t | | main.rs:972:5:978:5 | PairOption | +| main.rs:1012:10:1012:10 | t | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1012:10:1012:10 | t | Snd | main.rs:972:5:978:5 | PairOption | +| main.rs:1012:10:1012:10 | t | Snd.Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1012:10:1012:10 | t | Snd.Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1012:30:1015:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1013:17:1013:17 | t | | main.rs:972:5:978:5 | PairOption | +| main.rs:1013:17:1013:17 | t | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1013:17:1013:17 | t | Snd | main.rs:972:5:978:5 | PairOption | +| main.rs:1013:17:1013:17 | t | Snd.Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1013:17:1013:17 | t | Snd.Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1014:18:1014:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1014:18:1014:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1014:18:1014:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1014:18:1014:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1025:16:1045:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1027:13:1027:14 | p1 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1027:13:1027:14 | p1 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1027:13:1027:14 | p1 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1028:18:1028:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1028:18:1028:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1028:18:1028:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1028:26:1028:27 | p1 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1028:26:1028:27 | p1 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1028:26:1028:27 | p1 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1031:13:1031:14 | p2 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1031:13:1031:14 | p2 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1031:13:1031:14 | p2 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1032:18:1032:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1032:18:1032:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1032:18:1032:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1032:18:1032:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1032:26:1032:27 | p2 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1032:26:1032:27 | p2 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1032:26:1032:27 | p2 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1035:13:1035:14 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1035:13:1035:14 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1036:18:1036:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1036:18:1036:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1036:18:1036:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1036:18:1036:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1036:26:1036:27 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1036:26:1036:27 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1039:13:1039:14 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1039:13:1039:14 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1039:13:1039:14 | p3 | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1040:18:1040:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1040:18:1040:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1040:18:1040:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1040:18:1040:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1040:26:1040:27 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1040:26:1040:27 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1040:26:1040:27 | p3 | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1042:9:1042:55 | g(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1044:13:1044:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1044:13:1044:13 | x | E | main.rs:991:5:992:14 | S1 | +| main.rs:1044:13:1044:13 | x | T | main.rs:1017:5:1017:34 | S4 | +| main.rs:1044:13:1044:13 | x | T.T41 | main.rs:994:5:995:14 | S2 | +| main.rs:1044:13:1044:13 | x | T.T42 | main.rs:1019:5:1019:22 | S5 | +| main.rs:1044:13:1044:13 | x | T.T42.T5 | main.rs:994:5:995:14 | S2 | +| main.rs:1057:16:1057:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1057:16:1057:24 | SelfParam | TRefMut | main.rs:1055:5:1062:5 | Self [trait MyTrait] | +| main.rs:1057:27:1057:31 | value | | main.rs:1055:19:1055:19 | S | +| main.rs:1059:21:1059:29 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1059:21:1059:29 | SelfParam | TRefMut | main.rs:1055:5:1062:5 | Self [trait MyTrait] | +| main.rs:1059:32:1059:36 | value | | main.rs:1055:19:1055:19 | S | +| main.rs:1059:42:1061:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1060:13:1060:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1060:13:1060:16 | self | TRefMut | main.rs:1055:5:1062:5 | Self [trait MyTrait] | +| main.rs:1060:22:1060:26 | value | | main.rs:1055:19:1055:19 | S | +| main.rs:1066:16:1066:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1066:16:1066:24 | SelfParam | TRefMut | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1066:16:1066:24 | SelfParam | TRefMut.T | main.rs:1064:10:1064:10 | T | +| main.rs:1066:27:1066:31 | value | | main.rs:1064:10:1064:10 | T | +| main.rs:1066:37:1066:38 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1070:26:1072:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1070:26:1072:9 | { ... } | T | main.rs:1069:10:1069:10 | T | +| main.rs:1076:20:1076:23 | SelfParam | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1076:20:1076:23 | SelfParam | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1076:20:1076:23 | SelfParam | T.T | main.rs:1075:10:1075:10 | T | +| main.rs:1076:41:1081:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1076:41:1081:9 | { ... } | T | main.rs:1075:10:1075:10 | T | +| main.rs:1077:19:1077:22 | self | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1077:19:1077:22 | self | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1077:19:1077:22 | self | T.T | main.rs:1075:10:1075:10 | T | +| main.rs:1087:16:1132:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1088:13:1088:14 | x1 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1088:13:1088:14 | x1 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1088:18:1088:37 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1088:18:1088:37 | ...::new(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1089:18:1089:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1089:18:1089:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1089:18:1089:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1089:18:1089:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1089:26:1089:27 | x1 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1089:26:1089:27 | x1 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1091:17:1091:18 | x2 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1091:22:1091:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1092:9:1092:10 | x2 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1093:18:1093:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1093:18:1093:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1093:18:1093:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1093:18:1093:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1093:26:1093:27 | x2 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1095:17:1095:18 | x3 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1095:22:1095:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1096:9:1096:10 | x3 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1097:18:1097:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1097:18:1097:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1097:18:1097:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1097:18:1097:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1097:26:1097:27 | x3 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1099:17:1099:18 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1099:22:1099:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1100:9:1100:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1100:23:1100:29 | &mut x4 | | {EXTERNAL LOCATION} | &mut | +| main.rs:1100:28:1100:29 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1101:18:1101:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1101:18:1101:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1101:18:1101:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1101:18:1101:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1101:26:1101:27 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1104:18:1104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1104:18:1104:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1104:18:1104:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1104:18:1104:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1107:18:1107:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1107:18:1107:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1107:18:1107:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1107:18:1107:61 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1107:26:1107:61 | ...::flatten(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1107:26:1107:61 | ...::flatten(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1115:18:1115:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1115:18:1115:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1115:18:1115:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1115:18:1115:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1119:13:1119:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1120:13:1120:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1122:18:1122:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1122:18:1122:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1122:18:1122:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1122:18:1122:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1125:30:1130:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1126:13:1128:13 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1126:22:1128:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1131:18:1131:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1131:18:1131:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1131:18:1131:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1131:18:1131:34 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1149:15:1149:18 | SelfParam | | main.rs:1137:5:1138:19 | S | +| main.rs:1149:15:1149:18 | SelfParam | T | main.rs:1148:10:1148:10 | T | +| main.rs:1149:26:1151:9 | { ... } | | main.rs:1148:10:1148:10 | T | +| main.rs:1150:13:1150:16 | self | | main.rs:1137:5:1138:19 | S | +| main.rs:1150:13:1150:16 | self | T | main.rs:1148:10:1148:10 | T | +| main.rs:1153:15:1153:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1153:15:1153:19 | SelfParam | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1153:15:1153:19 | SelfParam | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1153:28:1155:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1153:28:1155:9 | { ... } | TRef | main.rs:1148:10:1148:10 | T | +| main.rs:1154:13:1154:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1154:14:1154:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1154:14:1154:17 | self | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1154:14:1154:17 | self | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1157:15:1157:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1157:15:1157:25 | SelfParam | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1157:15:1157:25 | SelfParam | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1157:34:1159:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1157:34:1159:9 | { ... } | TRef | main.rs:1148:10:1148:10 | T | +| main.rs:1158:13:1158:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1158:14:1158:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1158:14:1158:17 | self | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1158:14:1158:17 | self | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1163:29:1163:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1163:29:1163:33 | SelfParam | TRef | main.rs:1162:5:1165:5 | Self [trait ATrait] | +| main.rs:1164:33:1164:36 | SelfParam | | main.rs:1162:5:1165:5 | Self [trait ATrait] | +| main.rs:1170:29:1170:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1170:29:1170:33 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1170:29:1170:33 | SelfParam | TRef.TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1170:43:1172:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1171:17:1171:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1171:17:1171:20 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1171:17:1171:20 | self | TRef.TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1175:33:1175:36 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1175:33:1175:36 | SelfParam | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1175:46:1177:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1176:15:1176:18 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1176:15:1176:18 | self | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1180:16:1230:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1182:18:1182:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1182:18:1182:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1182:18:1182:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1182:18:1182:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1186:18:1186:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1186:18:1186:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1186:18:1186:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1186:18:1186:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1187:18:1187:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1187:18:1187:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1187:18:1187:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1187:18:1187:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1191:18:1191:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1191:18:1191:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1191:18:1191:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1191:18:1191:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1191:26:1191:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1191:26:1191:41 | ...::m2(...) | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1191:38:1191:40 | &x3 | | {EXTERNAL LOCATION} | & | +| main.rs:1192:18:1192:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1192:18:1192:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1192:18:1192:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1192:18:1192:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1192:26:1192:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1192:26:1192:41 | ...::m3(...) | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1192:38:1192:40 | &x3 | | {EXTERNAL LOCATION} | & | +| main.rs:1194:13:1194:14 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1194:18:1194:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1196:18:1196:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1196:18:1196:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1196:18:1196:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1196:18:1196:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1198:13:1198:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1198:26:1198:32 | "Hello" | | {EXTERNAL LOCATION} | & | -| main.rs:1198:26:1198:32 | "Hello" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1202:17:1202:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1204:13:1204:20 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1204:24:1204:39 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1204:25:1204:39 | MyInt {...} | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1206:17:1206:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1196:18:1196:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1196:18:1196:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1196:26:1196:27 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1197:18:1197:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1197:18:1197:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1197:18:1197:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1197:18:1197:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1197:26:1197:27 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1199:13:1199:14 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1199:18:1199:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1201:18:1201:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1201:18:1201:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1201:18:1201:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1201:18:1201:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1201:26:1201:27 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1202:18:1202:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1202:18:1202:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1202:18:1202:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1202:18:1202:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1202:26:1202:27 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1204:13:1204:14 | x6 | | {EXTERNAL LOCATION} | & | +| main.rs:1204:18:1204:23 | &... | | {EXTERNAL LOCATION} | & | | main.rs:1207:18:1207:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1207:18:1207:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1207:18:1207:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1207:18:1207:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1210:13:1210:20 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1210:24:1210:39 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1210:25:1210:39 | MyInt {...} | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1211:17:1211:24 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1212:18:1212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1212:18:1212:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1212:18:1212:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1212:18:1212:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1219:16:1219:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1219:16:1219:20 | SelfParam | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1222:16:1222:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1222:16:1222:20 | SelfParam | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1222:32:1224:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1222:32:1224:9 | { ... } | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1223:13:1223:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1223:13:1223:16 | self | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1231:16:1231:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1231:16:1231:20 | SelfParam | TRef | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1231:36:1233:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1231:36:1233:9 | { ... } | TRef | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1232:13:1232:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1232:13:1232:16 | self | TRef | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1236:16:1239:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1207:18:1207:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1207:18:1207:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1207:28:1207:29 | x6 | | {EXTERNAL LOCATION} | & | +| main.rs:1209:20:1209:22 | &S2 | | {EXTERNAL LOCATION} | & | +| main.rs:1213:18:1213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1213:18:1213:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1213:18:1213:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1213:18:1213:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1215:13:1215:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1215:26:1215:32 | "Hello" | | {EXTERNAL LOCATION} | & | +| main.rs:1215:26:1215:32 | "Hello" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1219:17:1219:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1221:13:1221:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1221:24:1221:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1221:25:1221:39 | MyInt {...} | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1223:17:1223:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1224:18:1224:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1224:18:1224:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1224:18:1224:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1224:18:1224:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1227:13:1227:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1227:24:1227:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1227:25:1227:39 | MyInt {...} | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1228:17:1228:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1229:18:1229:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1229:18:1229:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1229:18:1229:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1229:18:1229:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1236:16:1236:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1236:16:1236:20 | SelfParam | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | +| main.rs:1239:16:1239:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1239:16:1239:20 | SelfParam | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | +| main.rs:1239:32:1241:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1239:32:1241:9 | { ... } | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | +| main.rs:1240:13:1240:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1240:13:1240:16 | self | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | | main.rs:1248:16:1248:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1248:16:1248:20 | SelfParam | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1248:16:1248:20 | SelfParam | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1248:32:1250:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1248:32:1250:9 | { ... } | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1248:32:1250:9 | { ... } | TRef.T | main.rs:1247:10:1247:10 | T | +| main.rs:1248:16:1248:20 | SelfParam | TRef | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1248:36:1250:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1248:36:1250:9 | { ... } | TRef | main.rs:1244:5:1244:20 | MyStruct | | main.rs:1249:13:1249:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1249:13:1249:16 | self | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1249:13:1249:16 | self | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1252:16:1252:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1252:16:1252:20 | SelfParam | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1252:16:1252:20 | SelfParam | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1252:23:1252:23 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1252:23:1252:23 | x | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1252:23:1252:23 | x | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1252:42:1254:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1252:42:1254:9 | { ... } | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1252:42:1254:9 | { ... } | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1253:13:1253:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1253:13:1253:16 | self | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1253:13:1253:16 | self | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1257:16:1263:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1262:15:1262:17 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1262:16:1262:17 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1273:17:1273:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1273:17:1273:25 | SelfParam | TRefMut | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1273:28:1275:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1274:13:1274:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1274:13:1274:16 | self | TRefMut | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1274:26:1274:29 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1274:26:1274:29 | self | TRefMut | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1281:15:1281:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1281:15:1281:19 | SelfParam | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1281:31:1283:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1281:31:1283:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1282:13:1282:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1282:14:1282:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1282:15:1282:19 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:1282:16:1282:19 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1282:16:1282:19 | self | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1285:15:1285:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1285:15:1285:25 | SelfParam | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1285:37:1287:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1285:37:1287:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1286:13:1286:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1286:14:1286:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1286:15:1286:19 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:1286:16:1286:19 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1286:16:1286:19 | self | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1289:15:1289:15 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1289:15:1289:15 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1289:34:1291:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1289:34:1291:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1290:13:1290:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1290:13:1290:13 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1293:15:1293:15 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1293:15:1293:15 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1293:34:1295:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1293:34:1295:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1294:13:1294:16 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1294:14:1294:16 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1294:15:1294:16 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1294:16:1294:16 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1294:16:1294:16 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1298:16:1311:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1299:13:1299:13 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1299:17:1299:20 | S {...} | | main.rs:1278:5:1278:13 | S | -| main.rs:1300:9:1300:9 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1301:9:1301:9 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1302:9:1302:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1302:9:1302:17 | ...::f3(...) | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1302:15:1302:16 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1302:16:1302:16 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1304:19:1304:24 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1304:20:1304:24 | &true | | {EXTERNAL LOCATION} | & | -| main.rs:1304:21:1304:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1309:9:1309:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1309:22:1309:30 | &mut flag | | {EXTERNAL LOCATION} | &mut | -| main.rs:1310:18:1310:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1310:18:1310:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1310:18:1310:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1310:18:1310:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1325:43:1328:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1325:43:1328:5 | { ... } | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1325:43:1328:5 | { ... } | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1332:46:1336:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1332:46:1336:5 | { ... } | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1332:46:1336:5 | { ... } | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1340:40:1345:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1340:40:1345:5 | { ... } | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1340:40:1345:5 | { ... } | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:24:1343:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn Fn | -| main.rs:1349:30:1349:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1349:30:1349:34 | input | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1349:30:1349:34 | input | T | main.rs:1349:20:1349:27 | T | -| main.rs:1349:69:1356:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1349:69:1356:5 | { ... } | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1349:69:1356:5 | { ... } | T | main.rs:1349:20:1349:27 | T | -| main.rs:1350:21:1350:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1350:21:1350:25 | input | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1350:21:1350:25 | input | T | main.rs:1349:20:1349:27 | T | -| main.rs:1351:49:1354:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| main.rs:1352:22:1352:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1352:22:1352:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1352:22:1352:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1352:22:1352:30 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1359:16:1375:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1360:9:1362:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1360:37:1360:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1360:37:1360:52 | try_same_error(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1360:37:1360:52 | try_same_error(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1360:54:1362:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1361:22:1361:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1361:22:1361:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1361:22:1361:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1361:22:1361:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1364:9:1366:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1364:37:1364:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1364:37:1364:55 | try_convert_error(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1364:37:1364:55 | try_convert_error(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1364:57:1366:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1365:22:1365:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1365:22:1365:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1365:22:1365:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1365:22:1365:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1368:9:1370:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1368:37:1368:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1368:37:1368:49 | try_chained(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1368:37:1368:49 | try_chained(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1368:51:1370:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1249:13:1249:16 | self | TRef | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1253:16:1256:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1265:16:1265:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1265:16:1265:20 | SelfParam | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1265:16:1265:20 | SelfParam | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1265:32:1267:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1265:32:1267:9 | { ... } | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1265:32:1267:9 | { ... } | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1266:13:1266:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1266:13:1266:16 | self | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1266:13:1266:16 | self | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1269:16:1269:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1269:16:1269:20 | SelfParam | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1269:16:1269:20 | SelfParam | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1269:23:1269:23 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1269:23:1269:23 | x | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1269:23:1269:23 | x | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1269:42:1271:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1269:42:1271:9 | { ... } | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1269:42:1271:9 | { ... } | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1270:13:1270:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1270:13:1270:16 | self | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1270:13:1270:16 | self | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1274:16:1280:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1279:15:1279:17 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1279:16:1279:17 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1290:17:1290:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1290:17:1290:25 | SelfParam | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1290:28:1292:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1291:13:1291:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1291:13:1291:16 | self | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1291:26:1291:29 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1291:26:1291:29 | self | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1298:15:1298:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1298:15:1298:19 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1298:31:1300:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1299:13:1299:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1299:14:1299:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1299:15:1299:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1299:16:1299:19 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1299:16:1299:19 | self | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1302:15:1302:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1302:15:1302:25 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1302:37:1304:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1303:13:1303:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1303:14:1303:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1303:15:1303:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1303:16:1303:19 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1303:16:1303:19 | self | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1306:15:1306:15 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1306:15:1306:15 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1306:34:1308:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1306:34:1308:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1307:13:1307:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1307:13:1307:13 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1310:15:1310:15 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1310:15:1310:15 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1310:34:1312:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1311:13:1311:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1311:14:1311:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1311:15:1311:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1311:16:1311:16 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1311:16:1311:16 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1315:16:1328:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1316:13:1316:13 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1316:17:1316:20 | S {...} | | main.rs:1295:5:1295:13 | S | +| main.rs:1317:9:1317:9 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1318:9:1318:9 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1319:9:1319:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1319:9:1319:17 | ...::f3(...) | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1319:15:1319:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1319:16:1319:16 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1321:19:1321:24 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1321:20:1321:24 | &true | | {EXTERNAL LOCATION} | & | +| main.rs:1321:21:1321:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1326:9:1326:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1326:22:1326:30 | &mut flag | | {EXTERNAL LOCATION} | &mut | +| main.rs:1327:18:1327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1327:18:1327:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1327:18:1327:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1327:18:1327:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1342:43:1345:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1342:43:1345:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1342:43:1345:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1349:46:1353:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1349:46:1353:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1349:46:1353:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1357:40:1362:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1357:40:1362:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1357:40:1362:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:24:1360:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:1366:30:1366:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1366:30:1366:34 | input | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1366:30:1366:34 | input | T | main.rs:1366:20:1366:27 | T | +| main.rs:1366:69:1373:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1366:69:1373:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1366:69:1373:5 | { ... } | T | main.rs:1366:20:1366:27 | T | +| main.rs:1367:21:1367:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1367:21:1367:25 | input | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1367:21:1367:25 | input | T | main.rs:1366:20:1366:27 | T | +| main.rs:1368:49:1371:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | | main.rs:1369:22:1369:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1369:22:1369:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1369:22:1369:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1369:22:1369:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1372:9:1374:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1372:37:1372:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1372:37:1372:63 | try_complex(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:65:1374:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1373:22:1373:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1373:22:1373:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1373:22:1373:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1373:22:1373:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1379:16:1470:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1380:13:1380:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1382:17:1382:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1383:17:1383:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1384:13:1384:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1384:17:1384:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1385:13:1385:17 | hello | | {EXTERNAL LOCATION} | & | -| main.rs:1385:13:1385:17 | hello | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1385:21:1385:27 | "Hello" | | {EXTERNAL LOCATION} | & | -| main.rs:1385:21:1385:27 | "Hello" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1386:13:1386:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1386:17:1386:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1387:13:1387:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1387:17:1387:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1388:13:1388:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1388:17:1388:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1391:26:1391:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1391:26:1391:30 | SelfParam | TRef | main.rs:1390:9:1394:9 | Self [trait MyTrait] | -| main.rs:1397:26:1397:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1397:26:1397:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:1397:26:1397:30 | SelfParam | TRef.TArray | main.rs:1396:14:1396:23 | T | -| main.rs:1397:39:1399:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1397:39:1399:13 | { ... } | TRef | main.rs:1396:14:1396:23 | T | -| main.rs:1398:17:1398:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1398:17:1398:20 | self | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:1398:17:1398:20 | self | TRef.TArray | main.rs:1396:14:1396:23 | T | -| main.rs:1401:31:1403:13 | { ... } | | main.rs:1396:14:1396:23 | T | -| main.rs:1406:17:1406:25 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1407:13:1407:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1407:17:1407:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1407:37:1407:46 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1407:38:1407:46 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1408:13:1408:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1408:17:1408:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1411:26:1411:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1411:26:1411:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1411:26:1411:30 | SelfParam | TRef.TSlice | main.rs:1410:14:1410:23 | T | -| main.rs:1411:39:1413:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1411:39:1413:13 | { ... } | TRef | main.rs:1410:14:1410:23 | T | -| main.rs:1412:17:1412:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1412:17:1412:20 | self | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1412:17:1412:20 | self | TRef.TSlice | main.rs:1410:14:1410:23 | T | -| main.rs:1415:31:1417:13 | { ... } | | main.rs:1410:14:1410:23 | T | -| main.rs:1420:13:1420:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1420:13:1420:13 | s | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1420:13:1420:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1420:25:1420:34 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1420:26:1420:34 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1421:17:1421:17 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1421:17:1421:17 | s | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1421:17:1421:17 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1422:13:1422:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1422:17:1422:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1422:34:1422:34 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1422:34:1422:34 | s | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1422:34:1422:34 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1423:13:1423:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1423:17:1423:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1426:26:1426:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1426:26:1426:30 | SelfParam | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1426:26:1426:30 | SelfParam | TRef.T0 | main.rs:1425:14:1425:23 | T | -| main.rs:1426:26:1426:30 | SelfParam | TRef.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1426:39:1428:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1426:39:1428:13 | { ... } | TRef | main.rs:1425:14:1425:23 | T | -| main.rs:1427:17:1427:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1427:18:1427:21 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1427:18:1427:21 | self | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1427:18:1427:21 | self | TRef.T0 | main.rs:1425:14:1425:23 | T | -| main.rs:1427:18:1427:21 | self | TRef.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1430:31:1432:13 | { ... } | | main.rs:1425:14:1425:23 | T | -| main.rs:1435:13:1435:13 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1435:17:1435:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1436:17:1436:17 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1437:13:1437:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1437:17:1437:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1437:37:1437:38 | &p | | {EXTERNAL LOCATION} | & | -| main.rs:1437:38:1437:38 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1438:13:1438:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1438:17:1438:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1441:26:1441:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1441:26:1441:30 | SelfParam | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1441:26:1441:30 | SelfParam | TRef.TRef | main.rs:1440:14:1440:23 | T | -| main.rs:1441:39:1443:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1441:39:1443:13 | { ... } | TRef | main.rs:1440:14:1440:23 | T | -| main.rs:1442:18:1442:21 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1442:18:1442:21 | self | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1442:18:1442:21 | self | TRef.TRef | main.rs:1440:14:1440:23 | T | -| main.rs:1445:31:1447:13 | { ... } | | main.rs:1440:14:1440:23 | T | -| main.rs:1450:13:1450:13 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1450:17:1450:19 | &42 | | {EXTERNAL LOCATION} | & | -| main.rs:1451:17:1451:17 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1452:13:1452:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1452:17:1452:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1452:33:1452:34 | &r | | {EXTERNAL LOCATION} | & | -| main.rs:1452:34:1452:34 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1453:13:1453:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1453:17:1453:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1456:26:1456:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1456:26:1456:30 | SelfParam | TRef | {EXTERNAL LOCATION} | *mut | -| main.rs:1456:26:1456:30 | SelfParam | TRef.TPtrMut | main.rs:1455:14:1455:23 | T | -| main.rs:1456:39:1458:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1456:39:1458:13 | { ... } | TRef | main.rs:1455:14:1455:23 | T | -| main.rs:1457:26:1457:32 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1457:29:1457:32 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1457:29:1457:32 | self | TRef | {EXTERNAL LOCATION} | *mut | -| main.rs:1457:29:1457:32 | self | TRef.TPtrMut | main.rs:1455:14:1455:23 | T | -| main.rs:1460:31:1462:13 | { ... } | | main.rs:1455:14:1455:23 | T | -| main.rs:1466:13:1466:13 | p | | {EXTERNAL LOCATION} | *mut | -| main.rs:1466:13:1466:13 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1466:27:1466:32 | &mut v | | {EXTERNAL LOCATION} | &mut | -| main.rs:1467:26:1467:26 | p | | {EXTERNAL LOCATION} | *mut | -| main.rs:1467:26:1467:26 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1468:26:1468:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1468:46:1468:47 | &p | | {EXTERNAL LOCATION} | & | -| main.rs:1468:47:1468:47 | p | | {EXTERNAL LOCATION} | *mut | -| main.rs:1468:47:1468:47 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1469:13:1469:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1469:17:1469:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1475:16:1487:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1476:13:1476:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1476:17:1476:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1476:17:1476:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1476:25:1476:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:13:1477:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:17:1477:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:17:1477:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:25:1477:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1481:17:1483:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1483:16:1485:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1500:30:1502:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1501:13:1501:31 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1508:16:1508:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1508:22:1508:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1508:41:1513:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1509:13:1512:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1510:20:1510:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1510:29:1510:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1511:20:1511:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1511:29:1511:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1518:23:1518:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1518:23:1518:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1518:34:1518:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1518:45:1521:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1519:13:1519:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1519:13:1519:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1519:23:1519:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1520:13:1520:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1520:13:1520:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1520:23:1520:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1526:16:1526:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1526:22:1526:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1526:41:1531:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1527:13:1530:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1528:20:1528:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1528:29:1528:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1529:20:1529:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1529:29:1529:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1536:23:1536:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1536:23:1536:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1536:34:1536:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1536:45:1539:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1369:22:1369:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1369:22:1369:30 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1376:16:1392:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1377:9:1379:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1377:37:1377:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1377:37:1377:52 | try_same_error(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:37:1377:52 | try_same_error(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:54:1379:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1378:22:1378:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1378:22:1378:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1378:22:1378:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1378:22:1378:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1381:9:1383:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1381:37:1381:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1381:37:1381:55 | try_convert_error(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1381:37:1381:55 | try_convert_error(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1381:57:1383:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1382:22:1382:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1382:22:1382:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1382:22:1382:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1382:22:1382:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1385:9:1387:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1385:37:1385:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1385:37:1385:49 | try_chained(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1385:37:1385:49 | try_chained(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1385:51:1387:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1386:22:1386:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1386:22:1386:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1386:22:1386:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1386:22:1386:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1389:9:1391:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1389:37:1389:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1389:37:1389:63 | try_complex(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:65:1391:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1390:22:1390:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1390:22:1390:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1390:22:1390:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1390:22:1390:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1396:16:1487:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1397:13:1397:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1399:17:1399:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1400:17:1400:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1401:13:1401:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1401:17:1401:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1402:13:1402:17 | hello | | {EXTERNAL LOCATION} | & | +| main.rs:1402:13:1402:17 | hello | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1402:21:1402:27 | "Hello" | | {EXTERNAL LOCATION} | & | +| main.rs:1402:21:1402:27 | "Hello" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1403:13:1403:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1403:17:1403:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1404:13:1404:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1404:17:1404:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1405:13:1405:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1405:17:1405:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1408:26:1408:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1408:26:1408:30 | SelfParam | TRef | main.rs:1407:9:1411:9 | Self [trait MyTrait] | +| main.rs:1414:26:1414:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1414:26:1414:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1414:26:1414:30 | SelfParam | TRef.TArray | main.rs:1413:14:1413:23 | T | +| main.rs:1414:39:1416:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1414:39:1416:13 | { ... } | TRef | main.rs:1413:14:1413:23 | T | +| main.rs:1415:17:1415:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1415:17:1415:20 | self | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1415:17:1415:20 | self | TRef.TArray | main.rs:1413:14:1413:23 | T | +| main.rs:1418:31:1420:13 | { ... } | | main.rs:1413:14:1413:23 | T | +| main.rs:1423:17:1423:25 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1424:13:1424:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1424:17:1424:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1424:37:1424:46 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1424:38:1424:46 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1425:13:1425:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1425:17:1425:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1428:26:1428:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1428:26:1428:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1428:26:1428:30 | SelfParam | TRef.TSlice | main.rs:1427:14:1427:23 | T | +| main.rs:1428:39:1430:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1428:39:1430:13 | { ... } | TRef | main.rs:1427:14:1427:23 | T | +| main.rs:1429:17:1429:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1429:17:1429:20 | self | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1429:17:1429:20 | self | TRef.TSlice | main.rs:1427:14:1427:23 | T | +| main.rs:1432:31:1434:13 | { ... } | | main.rs:1427:14:1427:23 | T | +| main.rs:1437:13:1437:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1437:13:1437:13 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1437:13:1437:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:25:1437:34 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1437:26:1437:34 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1438:17:1438:17 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1438:17:1438:17 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1438:17:1438:17 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1439:13:1439:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1439:17:1439:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1439:34:1439:34 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1439:34:1439:34 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1439:34:1439:34 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1440:13:1440:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1440:17:1440:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:26:1443:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1443:26:1443:30 | SelfParam | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1443:26:1443:30 | SelfParam | TRef.T0 | main.rs:1442:14:1442:23 | T | +| main.rs:1443:26:1443:30 | SelfParam | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:39:1445:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1443:39:1445:13 | { ... } | TRef | main.rs:1442:14:1442:23 | T | +| main.rs:1444:17:1444:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1444:18:1444:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1444:18:1444:21 | self | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1444:18:1444:21 | self | TRef.T0 | main.rs:1442:14:1442:23 | T | +| main.rs:1444:18:1444:21 | self | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1447:31:1449:13 | { ... } | | main.rs:1442:14:1442:23 | T | +| main.rs:1452:13:1452:13 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1452:17:1452:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1453:17:1453:17 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1454:13:1454:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1454:17:1454:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1454:37:1454:38 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1454:38:1454:38 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1455:13:1455:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1455:17:1455:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1458:26:1458:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1458:26:1458:30 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1458:26:1458:30 | SelfParam | TRef.TRef | main.rs:1457:14:1457:23 | T | +| main.rs:1458:39:1460:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1458:39:1460:13 | { ... } | TRef | main.rs:1457:14:1457:23 | T | +| main.rs:1459:18:1459:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1459:18:1459:21 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1459:18:1459:21 | self | TRef.TRef | main.rs:1457:14:1457:23 | T | +| main.rs:1462:31:1464:13 | { ... } | | main.rs:1457:14:1457:23 | T | +| main.rs:1467:13:1467:13 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1467:17:1467:19 | &42 | | {EXTERNAL LOCATION} | & | +| main.rs:1468:17:1468:17 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1469:13:1469:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1469:17:1469:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1469:33:1469:34 | &r | | {EXTERNAL LOCATION} | & | +| main.rs:1469:34:1469:34 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1470:13:1470:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1470:17:1470:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1473:26:1473:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1473:26:1473:30 | SelfParam | TRef | {EXTERNAL LOCATION} | *mut | +| main.rs:1473:26:1473:30 | SelfParam | TRef.TPtrMut | main.rs:1472:14:1472:23 | T | +| main.rs:1473:39:1475:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1473:39:1475:13 | { ... } | TRef | main.rs:1472:14:1472:23 | T | +| main.rs:1474:26:1474:32 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1474:29:1474:32 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1474:29:1474:32 | self | TRef | {EXTERNAL LOCATION} | *mut | +| main.rs:1474:29:1474:32 | self | TRef.TPtrMut | main.rs:1472:14:1472:23 | T | +| main.rs:1477:31:1479:13 | { ... } | | main.rs:1472:14:1472:23 | T | +| main.rs:1483:13:1483:13 | p | | {EXTERNAL LOCATION} | *mut | +| main.rs:1483:13:1483:13 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1483:27:1483:32 | &mut v | | {EXTERNAL LOCATION} | &mut | +| main.rs:1484:26:1484:26 | p | | {EXTERNAL LOCATION} | *mut | +| main.rs:1484:26:1484:26 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1485:26:1485:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1485:46:1485:47 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1485:47:1485:47 | p | | {EXTERNAL LOCATION} | *mut | +| main.rs:1485:47:1485:47 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1486:13:1486:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1486:17:1486:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1492:16:1504:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1493:13:1493:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1493:17:1493:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1493:17:1493:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1493:25:1493:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:13:1494:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:17:1494:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:17:1494:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:25:1494:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1498:17:1500:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1500:16:1502:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1517:30:1519:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1518:13:1518:31 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1525:16:1525:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1525:22:1525:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1525:41:1530:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1526:13:1529:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1527:20:1527:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1527:29:1527:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1528:20:1528:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1528:29:1528:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1535:23:1535:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1535:23:1535:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1535:34:1535:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1535:45:1538:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1536:13:1536:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1536:13:1536:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1536:23:1536:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1537:13:1537:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1537:13:1537:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1537:23:1537:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1538:13:1538:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1538:13:1538:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1538:23:1538:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1544:16:1544:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1544:22:1544:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1544:41:1549:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1545:13:1548:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1546:20:1546:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1546:29:1546:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1547:20:1547:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1547:29:1547:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1537:13:1537:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1537:23:1537:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1543:16:1543:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1543:22:1543:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1543:41:1548:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1544:13:1547:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1545:20:1545:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1545:29:1545:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1546:20:1546:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1546:29:1546:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1553:23:1553:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1553:23:1553:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1553:34:1553:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1553:23:1553:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1553:34:1553:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1553:45:1556:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1554:13:1554:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1554:13:1554:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1554:23:1554:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1554:13:1554:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1554:23:1554:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1555:13:1555:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1555:13:1555:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1555:23:1555:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1561:16:1561:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1561:22:1561:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1561:41:1566:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1562:13:1565:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1563:20:1563:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1563:29:1563:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1564:20:1564:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1564:29:1564:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1555:13:1555:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1555:23:1555:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1561:16:1561:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1561:22:1561:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1561:41:1566:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1562:13:1565:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1563:20:1563:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1563:29:1563:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1564:20:1564:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1564:29:1564:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1570:23:1570:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1570:23:1570:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1570:34:1570:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1570:23:1570:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1570:34:1570:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1570:45:1573:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1571:13:1571:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1571:13:1571:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1571:23:1571:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1571:13:1571:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1571:23:1571:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1572:13:1572:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1572:13:1572:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1572:23:1572:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1578:16:1578:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1578:22:1578:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1578:41:1583:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1579:13:1582:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1580:20:1580:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1580:29:1580:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1581:20:1581:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1581:29:1581:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1572:13:1572:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1572:23:1572:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1578:16:1578:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1578:22:1578:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1578:41:1583:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1579:13:1582:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1580:20:1580:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1580:29:1580:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1581:20:1581:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1581:29:1581:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1587:23:1587:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1587:23:1587:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1587:34:1587:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1587:23:1587:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1587:34:1587:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1587:45:1590:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1588:13:1588:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1588:13:1588:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1588:23:1588:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1588:13:1588:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1588:23:1588:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1589:13:1589:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1589:13:1589:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1589:23:1589:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1595:19:1595:22 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1595:25:1595:27 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1595:44:1600:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1596:13:1599:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1597:20:1597:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1597:29:1597:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1598:20:1598:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1598:29:1598:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1604:26:1604:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1604:26:1604:34 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1604:37:1604:39 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1604:48:1607:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1589:13:1589:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1589:23:1589:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1595:16:1595:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1595:22:1595:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1595:41:1600:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1596:13:1599:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1597:20:1597:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1597:29:1597:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1598:20:1598:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1598:29:1598:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1604:23:1604:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1604:23:1604:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1604:34:1604:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1604:45:1607:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1605:13:1605:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1605:13:1605:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1605:23:1605:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1605:13:1605:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1605:23:1605:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1606:13:1606:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1606:13:1606:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1606:23:1606:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1612:18:1612:21 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1612:24:1612:26 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1612:43:1617:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1613:13:1616:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1614:20:1614:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1614:29:1614:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1615:20:1615:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1615:29:1615:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1621:25:1621:33 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1621:25:1621:33 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1621:36:1621:38 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1621:47:1624:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1606:13:1606:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1606:23:1606:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1612:19:1612:22 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1612:25:1612:27 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1612:44:1617:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1613:13:1616:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1614:20:1614:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1614:29:1614:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1615:20:1615:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1615:29:1615:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1621:26:1621:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1621:26:1621:34 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1621:37:1621:39 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1621:48:1624:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1622:13:1622:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1622:13:1622:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1622:23:1622:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1622:13:1622:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1622:23:1622:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1623:13:1623:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1623:13:1623:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1623:23:1623:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1629:19:1629:22 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1629:25:1629:27 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1629:44:1634:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1630:13:1633:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1631:20:1631:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1631:29:1631:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1632:20:1632:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1632:29:1632:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1638:26:1638:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1638:26:1638:34 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1638:37:1638:39 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1638:48:1641:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1623:13:1623:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1623:23:1623:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1629:18:1629:21 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1629:24:1629:26 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1629:43:1634:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1630:13:1633:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1631:20:1631:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1631:29:1631:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1632:20:1632:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1632:29:1632:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1638:25:1638:33 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1638:25:1638:33 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1638:36:1638:38 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1638:47:1641:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1639:13:1639:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1639:13:1639:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1639:23:1639:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1639:13:1639:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1639:23:1639:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1640:13:1640:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1640:13:1640:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1640:23:1640:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1646:16:1646:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1646:22:1646:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1646:40:1651:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1647:13:1650:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1648:20:1648:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1648:30:1648:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1649:20:1649:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1649:30:1649:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1655:23:1655:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1655:23:1655:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1655:34:1655:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1655:44:1658:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1640:13:1640:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1640:23:1640:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1646:19:1646:22 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1646:25:1646:27 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1646:44:1651:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1647:13:1650:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1648:20:1648:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1648:29:1648:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1649:20:1649:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1649:29:1649:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1655:26:1655:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1655:26:1655:34 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1655:37:1655:39 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1655:48:1658:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1656:13:1656:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1656:13:1656:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1656:24:1656:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1656:13:1656:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1656:23:1656:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1657:13:1657:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1657:13:1657:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1657:24:1657:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1663:16:1663:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1657:13:1657:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1657:23:1657:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1663:16:1663:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1663:22:1663:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1663:40:1668:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1664:13:1667:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1665:20:1665:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1663:40:1668:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1664:13:1667:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1665:20:1665:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1665:30:1665:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1666:20:1666:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1666:20:1666:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1666:30:1666:32 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1672:23:1672:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1672:23:1672:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1672:23:1672:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1672:34:1672:36 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1672:44:1675:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1673:13:1673:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1673:13:1673:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1673:13:1673:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1673:24:1673:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1674:13:1674:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1674:13:1674:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1674:13:1674:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1674:24:1674:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1680:16:1680:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1680:30:1685:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1681:13:1684:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1682:21:1682:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1683:21:1683:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1690:16:1690:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1690:30:1695:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1691:13:1694:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1692:21:1692:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1693:21:1693:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1699:15:1699:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1699:15:1699:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1699:22:1699:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1699:22:1699:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1699:44:1701:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:13:1700:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1700:13:1700:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1700:13:1700:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:13:1700:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:23:1700:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1700:23:1700:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1700:34:1700:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1700:34:1700:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1700:34:1700:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:44:1700:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1700:44:1700:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1703:15:1703:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1703:15:1703:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1703:22:1703:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1703:22:1703:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1703:44:1705:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:13:1704:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1704:13:1704:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1704:13:1704:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:13:1704:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:23:1704:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1704:23:1704:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1704:34:1704:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1704:34:1704:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1704:34:1704:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:44:1704:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1704:44:1704:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1709:24:1709:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1709:24:1709:28 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1709:31:1709:35 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1709:31:1709:35 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1709:75:1711:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1709:75:1711:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1710:14:1710:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1710:14:1710:17 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1710:23:1710:26 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1710:23:1710:26 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1710:43:1710:62 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1710:45:1710:49 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1710:45:1710:49 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1710:55:1710:59 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1710:55:1710:59 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1713:15:1713:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1713:15:1713:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1713:22:1713:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1713:22:1713:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1713:44:1715:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:13:1714:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1714:13:1714:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1714:13:1714:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:13:1714:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:22:1714:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1714:22:1714:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1714:33:1714:36 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1714:33:1714:36 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1714:33:1714:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:42:1714:46 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1714:42:1714:46 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1717:15:1717:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1717:15:1717:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1717:22:1717:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1717:22:1717:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1717:44:1719:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:13:1718:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1718:13:1718:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1718:13:1718:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:13:1718:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:23:1718:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1718:23:1718:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1718:34:1718:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1718:34:1718:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1718:34:1718:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:44:1718:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1718:44:1718:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1721:15:1721:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1721:15:1721:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1721:22:1721:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1721:22:1721:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1721:44:1723:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:13:1722:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1722:13:1722:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1722:13:1722:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:13:1722:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:22:1722:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1722:22:1722:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1722:33:1722:36 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1722:33:1722:36 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1722:33:1722:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:42:1722:46 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1722:42:1722:46 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1725:15:1725:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1725:15:1725:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1725:22:1725:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1725:22:1725:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1725:44:1727:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:13:1726:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1726:13:1726:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1726:13:1726:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:13:1726:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:23:1726:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1726:23:1726:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1726:34:1726:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1726:34:1726:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1726:34:1726:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:44:1726:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1726:44:1726:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1730:26:1730:26 | a | | main.rs:1730:18:1730:23 | T | -| main.rs:1730:32:1730:32 | b | | main.rs:1730:18:1730:23 | T | -| main.rs:1730:51:1732:5 | { ... } | | main.rs:1730:18:1730:23 | T::Output[Add] | -| main.rs:1731:9:1731:9 | a | | main.rs:1730:18:1730:23 | T | -| main.rs:1731:13:1731:13 | b | | main.rs:1730:18:1730:23 | T | -| main.rs:1734:16:1865:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1738:23:1738:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1738:31:1738:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:23:1739:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:31:1739:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1740:23:1740:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1740:30:1740:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:23:1741:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:31:1741:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1742:23:1742:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1742:30:1742:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1743:23:1743:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1743:32:1743:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:23:1746:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:31:1746:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:23:1747:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:31:1747:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:23:1748:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:31:1748:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:23:1749:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:31:1749:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:23:1750:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:31:1750:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:39:1751:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:45:1751:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1754:17:1754:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1754:34:1754:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1755:9:1755:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1755:27:1755:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1757:17:1757:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1757:34:1757:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:9:1758:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:27:1758:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:17:1760:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:34:1760:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1761:9:1761:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1761:27:1761:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1763:17:1763:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1763:34:1763:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1764:9:1764:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1764:27:1764:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:17:1766:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:34:1766:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:9:1767:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:27:1767:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1770:26:1770:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1770:34:1770:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1771:25:1771:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1771:33:1771:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:26:1772:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:34:1772:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:23:1773:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:32:1773:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:23:1774:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:32:1774:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1777:17:1777:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1777:37:1777:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:9:1778:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:30:1778:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:17:1780:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:36:1780:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1781:9:1781:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1781:29:1781:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:17:1783:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:37:1783:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:9:1784:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:30:1784:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:17:1786:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:34:1786:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:9:1787:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:28:1787:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:17:1789:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:34:1789:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:9:1790:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:28:1790:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1792:24:1792:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:24:1793:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1796:13:1796:14 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1796:18:1796:36 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1797:13:1797:14 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1797:18:1797:36 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1800:23:1800:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1800:29:1800:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1801:23:1801:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1801:29:1801:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1802:23:1802:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1802:28:1802:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1803:23:1803:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1803:29:1803:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1804:23:1804:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1804:28:1804:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1805:23:1805:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1805:29:1805:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1808:24:1808:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1808:29:1808:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1809:24:1809:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1809:29:1809:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1810:24:1810:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1810:29:1810:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1811:24:1811:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1811:29:1811:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1812:24:1812:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1812:29:1812:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1815:17:1815:31 | vec2_add_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1815:35:1815:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1816:9:1816:23 | vec2_add_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1816:28:1816:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1818:17:1818:31 | vec2_sub_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1818:35:1818:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1819:9:1819:23 | vec2_sub_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1819:28:1819:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1821:17:1821:31 | vec2_mul_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1821:35:1821:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1822:9:1822:23 | vec2_mul_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1822:28:1822:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1824:17:1824:31 | vec2_div_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1824:35:1824:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1825:9:1825:23 | vec2_div_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1825:28:1825:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1827:17:1827:31 | vec2_rem_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1827:35:1827:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1828:9:1828:23 | vec2_rem_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1828:28:1828:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1831:27:1831:28 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1831:32:1831:33 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1832:26:1832:27 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1832:31:1832:32 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1833:27:1833:28 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1833:32:1833:33 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1834:24:1834:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1834:30:1834:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1835:24:1835:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1835:30:1835:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1838:17:1838:34 | vec2_bitand_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1838:38:1838:39 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1839:9:1839:26 | vec2_bitand_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1839:31:1839:32 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1841:17:1841:33 | vec2_bitor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1841:37:1841:38 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1842:9:1842:25 | vec2_bitor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1842:30:1842:31 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1844:17:1844:34 | vec2_bitxor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1844:38:1844:39 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1845:9:1845:26 | vec2_bitxor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1845:31:1845:32 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1847:17:1847:31 | vec2_shl_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1847:35:1847:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1848:9:1848:23 | vec2_shl_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1848:29:1848:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1850:17:1850:31 | vec2_shr_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1850:35:1850:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1851:9:1851:23 | vec2_shr_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1851:29:1851:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1854:25:1854:26 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1855:25:1855:26 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1859:30:1859:48 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1864:30:1864:48 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1874:18:1874:21 | SelfParam | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1874:24:1874:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1877:25:1879:5 | { ... } | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1882:9:1882:20 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1886:9:1886:16 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1886:9:1886:16 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:1895:13:1895:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1895:13:1895:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | &mut | -| main.rs:1895:13:1895:42 | SelfParam | Ptr.TRefMut | main.rs:1889:5:1889:14 | S2 | -| main.rs:1896:13:1896:15 | _cx | | {EXTERNAL LOCATION} | &mut | -| main.rs:1896:13:1896:15 | _cx | TRefMut | {EXTERNAL LOCATION} | Context | -| main.rs:1897:44:1899:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1897:44:1899:9 | { ... } | T | main.rs:1871:5:1871:14 | S1 | -| main.rs:1906:22:1914:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1907:9:1907:12 | f1(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1907:9:1907:12 | f1(...) | dyn(Output) | main.rs:1871:5:1871:14 | S1 | -| main.rs:1908:9:1908:12 | f2(...) | | main.rs:1881:16:1881:39 | impl ... | -| main.rs:1909:9:1909:12 | f3(...) | | main.rs:1885:16:1885:39 | impl ... | -| main.rs:1910:9:1910:12 | f4(...) | | main.rs:1902:16:1902:39 | impl ... | -| main.rs:1912:13:1912:13 | b | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1912:17:1912:28 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1913:9:1913:9 | b | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1924:15:1924:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1924:15:1924:19 | SelfParam | TRef | main.rs:1923:5:1925:5 | Self [trait Trait1] | -| main.rs:1924:22:1924:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1928:15:1928:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1928:15:1928:19 | SelfParam | TRef | main.rs:1927:5:1929:5 | Self [trait Trait2] | -| main.rs:1928:22:1928:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1932:15:1932:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1932:15:1932:19 | SelfParam | TRef | main.rs:1918:5:1919:14 | S1 | -| main.rs:1932:22:1932:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1936:15:1936:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1936:15:1936:19 | SelfParam | TRef | main.rs:1918:5:1919:14 | S1 | -| main.rs:1936:22:1936:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1944:18:1944:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1944:18:1944:22 | SelfParam | TRef | main.rs:1943:5:1945:5 | Self [trait MyTrait] | -| main.rs:1948:18:1948:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1948:18:1948:22 | SelfParam | TRef | main.rs:1918:5:1919:14 | S1 | -| main.rs:1948:31:1950:9 | { ... } | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1954:18:1954:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1954:18:1954:22 | SelfParam | TRef | main.rs:1921:5:1921:22 | S3 | -| main.rs:1954:18:1954:22 | SelfParam | TRef.T3 | main.rs:1953:10:1953:17 | T | -| main.rs:1954:30:1957:9 | { ... } | | main.rs:1953:10:1953:17 | T | -| main.rs:1955:25:1955:28 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1955:25:1955:28 | self | TRef | main.rs:1921:5:1921:22 | S3 | -| main.rs:1955:25:1955:28 | self | TRef.T3 | main.rs:1953:10:1953:17 | T | -| main.rs:1964:41:1964:41 | t | | main.rs:1964:26:1964:38 | B | -| main.rs:1964:52:1966:5 | { ... } | | main.rs:1964:23:1964:23 | A | -| main.rs:1965:9:1965:9 | t | | main.rs:1964:26:1964:38 | B | -| main.rs:1968:34:1968:34 | x | | main.rs:1968:24:1968:31 | T | -| main.rs:1968:59:1970:5 | { ... } | | main.rs:1968:43:1968:57 | impl ... | -| main.rs:1968:59:1970:5 | { ... } | impl(T) | main.rs:1968:24:1968:31 | T | -| main.rs:1969:12:1969:12 | x | | main.rs:1968:24:1968:31 | T | -| main.rs:1972:34:1972:34 | x | | main.rs:1972:24:1972:31 | T | -| main.rs:1972:67:1974:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1972:67:1974:5 | { ... } | T | main.rs:1972:50:1972:64 | impl ... | -| main.rs:1972:67:1974:5 | { ... } | T.impl(T) | main.rs:1972:24:1972:31 | T | -| main.rs:1973:17:1973:17 | x | | main.rs:1972:24:1972:31 | T | -| main.rs:1976:34:1976:34 | x | | main.rs:1976:24:1976:31 | T | -| main.rs:1976:78:1978:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1976:78:1978:5 | { ... } | T0 | main.rs:1976:44:1976:58 | impl ... | -| main.rs:1976:78:1978:5 | { ... } | T0.impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1976:78:1978:5 | { ... } | T1 | main.rs:1976:61:1976:75 | impl ... | -| main.rs:1976:78:1978:5 | { ... } | T1.impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1977:9:1977:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1977:13:1977:13 | x | | main.rs:1976:24:1976:31 | T | -| main.rs:1977:28:1977:28 | x | | main.rs:1976:24:1976:31 | T | -| main.rs:1980:26:1980:26 | t | | main.rs:1980:29:1980:43 | impl ... | -| main.rs:1980:51:1982:5 | { ... } | | main.rs:1980:23:1980:23 | A | -| main.rs:1981:9:1981:9 | t | | main.rs:1980:29:1980:43 | impl ... | -| main.rs:1984:16:1998:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1985:13:1985:13 | x | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1985:17:1985:20 | f1(...) | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1986:9:1986:9 | x | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1987:9:1987:9 | x | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1988:13:1988:13 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1988:17:1988:32 | get_a_my_trait(...) | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1989:32:1989:32 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1990:13:1990:13 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1990:17:1990:32 | get_a_my_trait(...) | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1991:32:1991:32 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1993:17:1993:35 | get_a_my_trait2(...) | | main.rs:1968:43:1968:57 | impl ... | -| main.rs:1996:17:1996:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1996:17:1996:35 | get_a_my_trait3(...) | T | main.rs:1972:50:1972:64 | impl ... | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | T0 | main.rs:1976:44:1976:58 | impl ... | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | T1 | main.rs:1976:61:1976:75 | impl ... | -| main.rs:2008:16:2008:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2008:16:2008:20 | SelfParam | TRef | main.rs:2004:5:2005:13 | S | -| main.rs:2008:31:2010:9 | { ... } | | main.rs:2004:5:2005:13 | S | -| main.rs:2019:26:2021:9 | { ... } | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2019:26:2021:9 | { ... } | T | main.rs:2018:10:2018:10 | T | -| main.rs:2020:13:2020:38 | MyVec {...} | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2020:27:2020:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2020:27:2020:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2023:17:2023:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:2023:17:2023:25 | SelfParam | TRefMut | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2023:17:2023:25 | SelfParam | TRefMut.T | main.rs:2018:10:2018:10 | T | -| main.rs:2023:28:2023:32 | value | | main.rs:2018:10:2018:10 | T | -| main.rs:2023:38:2025:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2024:13:2024:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:2024:13:2024:16 | self | TRefMut | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2024:13:2024:16 | self | TRefMut.T | main.rs:2018:10:2018:10 | T | -| main.rs:2024:28:2024:32 | value | | main.rs:2018:10:2018:10 | T | -| main.rs:2032:18:2032:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2032:18:2032:22 | SelfParam | TRef | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2032:18:2032:22 | SelfParam | TRef.T | main.rs:2028:10:2028:10 | T | -| main.rs:2032:25:2032:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2032:56:2034:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2032:56:2034:9 | { ... } | TRef | main.rs:2028:10:2028:10 | T | -| main.rs:2033:13:2033:29 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2033:14:2033:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2033:14:2033:17 | self | TRef | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2033:14:2033:17 | self | TRef.T | main.rs:2028:10:2028:10 | T | -| main.rs:2033:24:2033:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2037:22:2037:26 | slice | | {EXTERNAL LOCATION} | & | -| main.rs:2037:22:2037:26 | slice | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:2037:22:2037:26 | slice | TRef.TSlice | main.rs:2004:5:2005:13 | S | -| main.rs:2037:35:2039:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2038:17:2038:21 | slice | | {EXTERNAL LOCATION} | & | -| main.rs:2038:17:2038:21 | slice | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:2038:17:2038:21 | slice | TRef.TSlice | main.rs:2004:5:2005:13 | S | -| main.rs:2041:37:2041:37 | a | | main.rs:2041:20:2041:34 | T | -| main.rs:2041:43:2041:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2044:5:2046:5 | { ... } | | main.rs:2041:20:2041:34 | T::Output[Index] | -| main.rs:2045:9:2045:9 | a | | main.rs:2041:20:2041:34 | T | -| main.rs:2045:11:2045:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2048:16:2059:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2049:17:2049:19 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2049:23:2049:34 | ...::new(...) | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2050:9:2050:11 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2051:9:2051:11 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2053:13:2053:14 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2053:13:2053:14 | xs | TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2053:26:2053:28 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2054:17:2054:18 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2054:17:2054:18 | xs | TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2056:29:2056:31 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2058:9:2058:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2058:23:2058:25 | &xs | | {EXTERNAL LOCATION} | & | -| main.rs:2058:24:2058:25 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2058:24:2058:25 | xs | TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2063:16:2065:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2064:25:2064:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | -| main.rs:2064:25:2064:35 | "Hello, {}" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2064:25:2064:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2064:38:2064:45 | "World!" | | {EXTERNAL LOCATION} | & | -| main.rs:2064:38:2064:45 | "World!" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2073:19:2073:22 | SelfParam | | main.rs:2069:5:2074:5 | Self [trait MyAdd] | -| main.rs:2073:25:2073:27 | rhs | | main.rs:2069:17:2069:26 | Rhs | -| main.rs:2080:19:2080:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2080:25:2080:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2080:45:2082:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2081:13:2081:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2089:19:2089:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2089:25:2089:29 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2089:25:2089:29 | value | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:2089:46:2091:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2090:14:2090:18 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2090:14:2090:18 | value | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:2098:19:2098:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2098:25:2098:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2098:46:2104:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2099:16:2099:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2113:19:2113:22 | SelfParam | | main.rs:2107:5:2107:19 | S | -| main.rs:2113:19:2113:22 | SelfParam | T | main.rs:2109:10:2109:17 | T | -| main.rs:2113:25:2113:29 | other | | main.rs:2107:5:2107:19 | S | -| main.rs:2113:25:2113:29 | other | T | main.rs:2109:10:2109:17 | T | -| main.rs:2113:54:2115:9 | { ... } | | main.rs:2107:5:2107:19 | S | -| main.rs:2113:54:2115:9 | { ... } | T | main.rs:2109:10:2109:17 | T::Output[MyAdd] | -| main.rs:2114:16:2114:19 | self | | main.rs:2107:5:2107:19 | S | -| main.rs:2114:16:2114:19 | self | T | main.rs:2109:10:2109:17 | T | -| main.rs:2114:31:2114:35 | other | | main.rs:2107:5:2107:19 | S | -| main.rs:2114:31:2114:35 | other | T | main.rs:2109:10:2109:17 | T | -| main.rs:2122:19:2122:22 | SelfParam | | main.rs:2107:5:2107:19 | S | -| main.rs:2122:19:2122:22 | SelfParam | T | main.rs:2118:10:2118:17 | T | -| main.rs:2122:25:2122:29 | other | | main.rs:2118:10:2118:17 | T | -| main.rs:2122:51:2124:9 | { ... } | | main.rs:2107:5:2107:19 | S | -| main.rs:2122:51:2124:9 | { ... } | T | main.rs:2118:10:2118:17 | T::Output[MyAdd] | -| main.rs:2123:16:2123:19 | self | | main.rs:2107:5:2107:19 | S | -| main.rs:2123:16:2123:19 | self | T | main.rs:2118:10:2118:17 | T | -| main.rs:2123:31:2123:35 | other | | main.rs:2118:10:2118:17 | T | -| main.rs:2134:19:2134:22 | SelfParam | | main.rs:2107:5:2107:19 | S | -| main.rs:2134:19:2134:22 | SelfParam | T | main.rs:2127:14:2127:14 | T | -| main.rs:2134:25:2134:29 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2134:25:2134:29 | other | TRef | main.rs:2127:14:2127:14 | T | -| main.rs:2134:55:2136:9 | { ... } | | main.rs:2107:5:2107:19 | S | -| main.rs:2134:55:2136:9 | { ... } | T | main.rs:2127:14:2127:14 | T::Output[MyAdd] | -| main.rs:2135:16:2135:19 | self | | main.rs:2107:5:2107:19 | S | -| main.rs:2135:16:2135:19 | self | T | main.rs:2127:14:2127:14 | T | -| main.rs:2135:31:2135:35 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2135:31:2135:35 | other | TRef | main.rs:2127:14:2127:14 | T | -| main.rs:2141:20:2141:24 | value | | main.rs:2139:18:2139:18 | T | -| main.rs:2146:20:2146:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2146:40:2148:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2147:13:2147:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2153:20:2153:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2153:41:2159:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2154:16:2154:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2164:21:2164:25 | value | | main.rs:2162:19:2162:19 | T | -| main.rs:2164:31:2164:31 | x | | main.rs:2162:5:2165:5 | Self [trait MyFrom2] | -| main.rs:2169:21:2169:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2169:33:2169:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2169:48:2171:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2170:13:2170:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2176:21:2176:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2176:34:2176:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2176:49:2182:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2177:16:2177:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2187:15:2187:15 | x | | main.rs:2185:5:2191:5 | Self [trait MySelfTrait] | -| main.rs:2190:15:2190:15 | x | | main.rs:2185:5:2191:5 | Self [trait MySelfTrait] | -| main.rs:2195:15:2195:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2195:31:2197:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2196:13:2196:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2200:15:2200:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2200:32:2202:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2201:13:2201:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2207:15:2207:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2207:31:2209:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2212:15:2212:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2212:32:2214:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2213:13:2213:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2217:16:2242:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1680:16:1680:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1680:22:1680:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1680:40:1685:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1681:13:1684:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1682:20:1682:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1682:30:1682:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1683:20:1683:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1683:30:1683:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1689:23:1689:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1689:23:1689:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1689:34:1689:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1689:44:1692:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1690:13:1690:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1690:13:1690:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1690:24:1690:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1691:13:1691:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1691:13:1691:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1691:24:1691:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1697:16:1697:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1697:30:1702:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1698:13:1701:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1699:21:1699:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1700:21:1700:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1707:16:1707:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1707:30:1712:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1708:13:1711:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1709:21:1709:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1710:21:1710:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1716:15:1716:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1716:15:1716:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1716:22:1716:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1716:22:1716:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1716:44:1718:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:13:1717:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1717:13:1717:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1717:13:1717:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:13:1717:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:23:1717:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1717:23:1717:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1717:34:1717:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1717:34:1717:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1717:34:1717:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:44:1717:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1717:44:1717:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1720:15:1720:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1720:15:1720:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1720:22:1720:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1720:22:1720:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1720:44:1722:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:13:1721:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1721:13:1721:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1721:13:1721:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:13:1721:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:23:1721:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1721:23:1721:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1721:34:1721:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1721:34:1721:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1721:34:1721:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:44:1721:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1721:44:1721:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1726:24:1726:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1726:24:1726:28 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1726:31:1726:35 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1726:31:1726:35 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1726:75:1728:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1726:75:1728:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1727:14:1727:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1727:14:1727:17 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1727:23:1727:26 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1727:23:1727:26 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1727:43:1727:62 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1727:45:1727:49 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1727:45:1727:49 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1727:55:1727:59 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1727:55:1727:59 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1730:15:1730:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1730:15:1730:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1730:22:1730:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1730:22:1730:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1730:44:1732:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:13:1731:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1731:13:1731:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1731:13:1731:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:13:1731:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:22:1731:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1731:22:1731:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1731:33:1731:36 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1731:33:1731:36 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1731:33:1731:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:42:1731:46 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1731:42:1731:46 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1734:15:1734:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1734:15:1734:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1734:22:1734:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1734:22:1734:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1734:44:1736:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:13:1735:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1735:13:1735:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1735:13:1735:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:13:1735:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:23:1735:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1735:23:1735:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1735:34:1735:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1735:34:1735:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1735:34:1735:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:44:1735:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1735:44:1735:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1738:15:1738:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1738:15:1738:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1738:22:1738:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1738:22:1738:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1738:44:1740:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:13:1739:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1739:13:1739:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1739:13:1739:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:13:1739:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:22:1739:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1739:22:1739:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1739:33:1739:36 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1739:33:1739:36 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1739:33:1739:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:42:1739:46 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1739:42:1739:46 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1742:15:1742:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1742:15:1742:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1742:22:1742:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1742:22:1742:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1742:44:1744:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:13:1743:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1743:13:1743:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1743:13:1743:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:13:1743:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:23:1743:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1743:23:1743:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1743:34:1743:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1743:34:1743:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1743:34:1743:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:44:1743:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1743:44:1743:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1747:26:1747:26 | a | | main.rs:1747:18:1747:23 | T | +| main.rs:1747:32:1747:32 | b | | main.rs:1747:18:1747:23 | T | +| main.rs:1747:51:1749:5 | { ... } | | main.rs:1747:18:1747:23 | T::Output[Add] | +| main.rs:1748:9:1748:9 | a | | main.rs:1747:18:1747:23 | T | +| main.rs:1748:13:1748:13 | b | | main.rs:1747:18:1747:23 | T | +| main.rs:1751:16:1882:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1755:23:1755:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1755:31:1755:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:23:1756:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:31:1756:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1757:23:1757:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1757:30:1757:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1758:23:1758:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1758:31:1758:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1759:23:1759:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1759:30:1759:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1760:23:1760:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1760:32:1760:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:23:1763:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:31:1763:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:23:1764:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:31:1764:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:23:1765:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:31:1765:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:23:1766:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:31:1766:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:23:1767:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:31:1767:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:39:1768:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:45:1768:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1771:17:1771:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1771:34:1771:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:9:1772:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:27:1772:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1774:17:1774:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1774:34:1774:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1775:9:1775:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1775:27:1775:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1777:17:1777:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1777:34:1777:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1778:9:1778:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1778:27:1778:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:17:1780:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:34:1780:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:9:1781:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:27:1781:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1783:17:1783:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1783:34:1783:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:9:1784:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:27:1784:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:26:1787:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:34:1787:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1788:25:1788:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1788:33:1788:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:26:1789:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:34:1789:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:23:1790:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:32:1790:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:23:1791:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:32:1791:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1794:17:1794:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1794:37:1794:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:9:1795:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:30:1795:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1797:17:1797:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1797:36:1797:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:9:1798:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:29:1798:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1800:17:1800:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1800:37:1800:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:9:1801:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:30:1801:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1803:17:1803:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1803:34:1803:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:9:1804:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:28:1804:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:17:1806:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:34:1806:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:9:1807:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:28:1807:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1809:24:1809:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1810:24:1810:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1813:13:1813:14 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1813:18:1813:36 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1814:13:1814:14 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1814:18:1814:36 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1817:23:1817:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1817:29:1817:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1818:23:1818:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1818:29:1818:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1819:23:1819:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1819:28:1819:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1820:23:1820:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1820:29:1820:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1821:23:1821:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1821:28:1821:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1822:23:1822:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1822:29:1822:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1825:24:1825:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1825:29:1825:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1826:24:1826:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1826:29:1826:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1827:24:1827:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1827:29:1827:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1828:24:1828:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1828:29:1828:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1829:24:1829:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1829:29:1829:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1832:17:1832:31 | vec2_add_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1832:35:1832:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1833:9:1833:23 | vec2_add_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1833:28:1833:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1835:17:1835:31 | vec2_sub_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1835:35:1835:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1836:9:1836:23 | vec2_sub_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1836:28:1836:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1838:17:1838:31 | vec2_mul_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1838:35:1838:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1839:9:1839:23 | vec2_mul_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1839:28:1839:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1841:17:1841:31 | vec2_div_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1841:35:1841:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1842:9:1842:23 | vec2_div_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1842:28:1842:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1844:17:1844:31 | vec2_rem_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1844:35:1844:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1845:9:1845:23 | vec2_rem_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1845:28:1845:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1848:27:1848:28 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1848:32:1848:33 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1849:26:1849:27 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1849:31:1849:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1850:27:1850:28 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1850:32:1850:33 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1851:24:1851:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1851:30:1851:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1852:24:1852:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1852:30:1852:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1855:17:1855:34 | vec2_bitand_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1855:38:1855:39 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1856:9:1856:26 | vec2_bitand_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1856:31:1856:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1858:17:1858:33 | vec2_bitor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1858:37:1858:38 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1859:9:1859:25 | vec2_bitor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1859:30:1859:31 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1861:17:1861:34 | vec2_bitxor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1861:38:1861:39 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1862:9:1862:26 | vec2_bitxor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1862:31:1862:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1864:17:1864:31 | vec2_shl_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1864:35:1864:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1865:9:1865:23 | vec2_shl_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1865:29:1865:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1867:17:1867:31 | vec2_shr_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1867:35:1867:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1868:9:1868:23 | vec2_shr_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1868:29:1868:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1871:25:1871:26 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1872:25:1872:26 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1876:30:1876:48 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1881:30:1881:48 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1891:18:1891:21 | SelfParam | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1891:24:1891:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1894:25:1896:5 | { ... } | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1899:9:1899:20 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1903:9:1903:16 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1903:9:1903:16 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:1912:13:1912:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1912:13:1912:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | &mut | +| main.rs:1912:13:1912:42 | SelfParam | Ptr.TRefMut | main.rs:1906:5:1906:14 | S2 | +| main.rs:1913:13:1913:15 | _cx | | {EXTERNAL LOCATION} | &mut | +| main.rs:1913:13:1913:15 | _cx | TRefMut | {EXTERNAL LOCATION} | Context | +| main.rs:1914:44:1916:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1914:44:1916:9 | { ... } | T | main.rs:1888:5:1888:14 | S1 | +| main.rs:1923:22:1931:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1924:9:1924:12 | f1(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1924:9:1924:12 | f1(...) | dyn(Output) | main.rs:1888:5:1888:14 | S1 | +| main.rs:1925:9:1925:12 | f2(...) | | main.rs:1898:16:1898:39 | impl ... | +| main.rs:1926:9:1926:12 | f3(...) | | main.rs:1902:16:1902:39 | impl ... | +| main.rs:1927:9:1927:12 | f4(...) | | main.rs:1919:16:1919:39 | impl ... | +| main.rs:1929:13:1929:13 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1929:17:1929:28 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1930:9:1930:9 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1941:15:1941:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1941:15:1941:19 | SelfParam | TRef | main.rs:1940:5:1942:5 | Self [trait Trait1] | +| main.rs:1941:22:1941:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1945:15:1945:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1945:15:1945:19 | SelfParam | TRef | main.rs:1944:5:1946:5 | Self [trait Trait2] | +| main.rs:1945:22:1945:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1949:15:1949:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1949:15:1949:19 | SelfParam | TRef | main.rs:1935:5:1936:14 | S1 | +| main.rs:1949:22:1949:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1953:15:1953:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1953:15:1953:19 | SelfParam | TRef | main.rs:1935:5:1936:14 | S1 | +| main.rs:1953:22:1953:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1961:18:1961:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1961:18:1961:22 | SelfParam | TRef | main.rs:1960:5:1962:5 | Self [trait MyTrait] | +| main.rs:1965:18:1965:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1965:18:1965:22 | SelfParam | TRef | main.rs:1935:5:1936:14 | S1 | +| main.rs:1965:31:1967:9 | { ... } | | main.rs:1937:5:1937:14 | S2 | +| main.rs:1971:18:1971:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1971:18:1971:22 | SelfParam | TRef | main.rs:1938:5:1938:22 | S3 | +| main.rs:1971:18:1971:22 | SelfParam | TRef.T3 | main.rs:1970:10:1970:17 | T | +| main.rs:1971:30:1974:9 | { ... } | | main.rs:1970:10:1970:17 | T | +| main.rs:1972:25:1972:28 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1972:25:1972:28 | self | TRef | main.rs:1938:5:1938:22 | S3 | +| main.rs:1972:25:1972:28 | self | TRef.T3 | main.rs:1970:10:1970:17 | T | +| main.rs:1981:41:1981:41 | t | | main.rs:1981:26:1981:38 | B | +| main.rs:1981:52:1983:5 | { ... } | | main.rs:1981:23:1981:23 | A | +| main.rs:1982:9:1982:9 | t | | main.rs:1981:26:1981:38 | B | +| main.rs:1985:34:1985:34 | x | | main.rs:1985:24:1985:31 | T | +| main.rs:1985:59:1987:5 | { ... } | | main.rs:1985:43:1985:57 | impl ... | +| main.rs:1985:59:1987:5 | { ... } | impl(T) | main.rs:1985:24:1985:31 | T | +| main.rs:1986:12:1986:12 | x | | main.rs:1985:24:1985:31 | T | +| main.rs:1989:34:1989:34 | x | | main.rs:1989:24:1989:31 | T | +| main.rs:1989:67:1991:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1989:67:1991:5 | { ... } | T | main.rs:1989:50:1989:64 | impl ... | +| main.rs:1989:67:1991:5 | { ... } | T.impl(T) | main.rs:1989:24:1989:31 | T | +| main.rs:1990:17:1990:17 | x | | main.rs:1989:24:1989:31 | T | +| main.rs:1993:34:1993:34 | x | | main.rs:1993:24:1993:31 | T | +| main.rs:1993:78:1995:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1993:78:1995:5 | { ... } | T0 | main.rs:1993:44:1993:58 | impl ... | +| main.rs:1993:78:1995:5 | { ... } | T0.impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1993:78:1995:5 | { ... } | T1 | main.rs:1993:61:1993:75 | impl ... | +| main.rs:1993:78:1995:5 | { ... } | T1.impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1994:9:1994:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1994:13:1994:13 | x | | main.rs:1993:24:1993:31 | T | +| main.rs:1994:28:1994:28 | x | | main.rs:1993:24:1993:31 | T | +| main.rs:1997:26:1997:26 | t | | main.rs:1997:29:1997:43 | impl ... | +| main.rs:1997:51:1999:5 | { ... } | | main.rs:1997:23:1997:23 | A | +| main.rs:1998:9:1998:9 | t | | main.rs:1997:29:1997:43 | impl ... | +| main.rs:2001:16:2015:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2002:13:2002:13 | x | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2002:17:2002:20 | f1(...) | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2003:9:2003:9 | x | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2004:9:2004:9 | x | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2005:13:2005:13 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2005:17:2005:32 | get_a_my_trait(...) | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2006:32:2006:32 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2007:13:2007:13 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2007:17:2007:32 | get_a_my_trait(...) | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2008:32:2008:32 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2010:17:2010:35 | get_a_my_trait2(...) | | main.rs:1985:43:1985:57 | impl ... | +| main.rs:2013:17:2013:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2013:17:2013:35 | get_a_my_trait3(...) | T | main.rs:1989:50:1989:64 | impl ... | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T0 | main.rs:1993:44:1993:58 | impl ... | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T1 | main.rs:1993:61:1993:75 | impl ... | +| main.rs:2025:16:2025:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2025:16:2025:20 | SelfParam | TRef | main.rs:2021:5:2022:13 | S | +| main.rs:2025:31:2027:9 | { ... } | | main.rs:2021:5:2022:13 | S | +| main.rs:2036:26:2038:9 | { ... } | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2036:26:2038:9 | { ... } | T | main.rs:2035:10:2035:10 | T | +| main.rs:2037:13:2037:38 | MyVec {...} | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2037:27:2037:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2037:27:2037:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2040:17:2040:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:2040:17:2040:25 | SelfParam | TRefMut | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2040:17:2040:25 | SelfParam | TRefMut.T | main.rs:2035:10:2035:10 | T | +| main.rs:2040:28:2040:32 | value | | main.rs:2035:10:2035:10 | T | +| main.rs:2040:38:2042:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2041:13:2041:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:2041:13:2041:16 | self | TRefMut | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2041:13:2041:16 | self | TRefMut.T | main.rs:2035:10:2035:10 | T | +| main.rs:2041:28:2041:32 | value | | main.rs:2035:10:2035:10 | T | +| main.rs:2049:18:2049:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2049:18:2049:22 | SelfParam | TRef | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2049:18:2049:22 | SelfParam | TRef.T | main.rs:2045:10:2045:10 | T | +| main.rs:2049:25:2049:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2049:56:2051:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2049:56:2051:9 | { ... } | TRef | main.rs:2045:10:2045:10 | T | +| main.rs:2050:13:2050:29 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2050:14:2050:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2050:14:2050:17 | self | TRef | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2050:14:2050:17 | self | TRef.T | main.rs:2045:10:2045:10 | T | +| main.rs:2050:24:2050:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2054:22:2054:26 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2054:22:2054:26 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2054:22:2054:26 | slice | TRef.TSlice | main.rs:2021:5:2022:13 | S | +| main.rs:2054:35:2056:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2055:17:2055:21 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2055:17:2055:21 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2055:17:2055:21 | slice | TRef.TSlice | main.rs:2021:5:2022:13 | S | +| main.rs:2058:37:2058:37 | a | | main.rs:2058:20:2058:34 | T | +| main.rs:2058:43:2058:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2061:5:2063:5 | { ... } | | main.rs:2058:20:2058:34 | T::Output[Index] | +| main.rs:2062:9:2062:9 | a | | main.rs:2058:20:2058:34 | T | +| main.rs:2062:11:2062:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2065:16:2076:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2066:17:2066:19 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2066:23:2066:34 | ...::new(...) | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2067:9:2067:11 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2068:9:2068:11 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2070:13:2070:14 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2070:13:2070:14 | xs | TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2070:26:2070:28 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2071:17:2071:18 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2071:17:2071:18 | xs | TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2073:29:2073:31 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2075:9:2075:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2075:23:2075:25 | &xs | | {EXTERNAL LOCATION} | & | +| main.rs:2075:24:2075:25 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2075:24:2075:25 | xs | TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2080:16:2082:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2081:25:2081:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | +| main.rs:2081:25:2081:35 | "Hello, {}" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2081:25:2081:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2081:38:2081:45 | "World!" | | {EXTERNAL LOCATION} | & | +| main.rs:2081:38:2081:45 | "World!" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2090:19:2090:22 | SelfParam | | main.rs:2086:5:2091:5 | Self [trait MyAdd] | +| main.rs:2090:25:2090:27 | rhs | | main.rs:2086:17:2086:26 | Rhs | +| main.rs:2097:19:2097:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:25:2097:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:45:2099:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:13:2098:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2106:19:2106:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2106:25:2106:29 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2106:25:2106:29 | value | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2106:46:2108:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:14:2107:18 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2107:14:2107:18 | value | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2115:19:2115:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2115:25:2115:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2115:46:2121:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2116:16:2116:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2130:19:2130:22 | SelfParam | | main.rs:2124:5:2124:19 | S | +| main.rs:2130:19:2130:22 | SelfParam | T | main.rs:2126:10:2126:17 | T | +| main.rs:2130:25:2130:29 | other | | main.rs:2124:5:2124:19 | S | +| main.rs:2130:25:2130:29 | other | T | main.rs:2126:10:2126:17 | T | +| main.rs:2130:54:2132:9 | { ... } | | main.rs:2124:5:2124:19 | S | +| main.rs:2130:54:2132:9 | { ... } | T | main.rs:2126:10:2126:17 | T::Output[MyAdd] | +| main.rs:2131:16:2131:19 | self | | main.rs:2124:5:2124:19 | S | +| main.rs:2131:16:2131:19 | self | T | main.rs:2126:10:2126:17 | T | +| main.rs:2131:31:2131:35 | other | | main.rs:2124:5:2124:19 | S | +| main.rs:2131:31:2131:35 | other | T | main.rs:2126:10:2126:17 | T | +| main.rs:2139:19:2139:22 | SelfParam | | main.rs:2124:5:2124:19 | S | +| main.rs:2139:19:2139:22 | SelfParam | T | main.rs:2135:10:2135:17 | T | +| main.rs:2139:25:2139:29 | other | | main.rs:2135:10:2135:17 | T | +| main.rs:2139:51:2141:9 | { ... } | | main.rs:2124:5:2124:19 | S | +| main.rs:2139:51:2141:9 | { ... } | T | main.rs:2135:10:2135:17 | T::Output[MyAdd] | +| main.rs:2140:16:2140:19 | self | | main.rs:2124:5:2124:19 | S | +| main.rs:2140:16:2140:19 | self | T | main.rs:2135:10:2135:17 | T | +| main.rs:2140:31:2140:35 | other | | main.rs:2135:10:2135:17 | T | +| main.rs:2151:19:2151:22 | SelfParam | | main.rs:2124:5:2124:19 | S | +| main.rs:2151:19:2151:22 | SelfParam | T | main.rs:2144:14:2144:14 | T | +| main.rs:2151:25:2151:29 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2151:25:2151:29 | other | TRef | main.rs:2144:14:2144:14 | T | +| main.rs:2151:55:2153:9 | { ... } | | main.rs:2124:5:2124:19 | S | +| main.rs:2151:55:2153:9 | { ... } | T | main.rs:2144:14:2144:14 | T::Output[MyAdd] | +| main.rs:2152:16:2152:19 | self | | main.rs:2124:5:2124:19 | S | +| main.rs:2152:16:2152:19 | self | T | main.rs:2144:14:2144:14 | T | +| main.rs:2152:31:2152:35 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2152:31:2152:35 | other | TRef | main.rs:2144:14:2144:14 | T | +| main.rs:2158:20:2158:24 | value | | main.rs:2156:18:2156:18 | T | +| main.rs:2163:20:2163:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2163:40:2165:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2164:13:2164:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2170:20:2170:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2170:41:2176:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2171:16:2171:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2181:21:2181:25 | value | | main.rs:2179:19:2179:19 | T | +| main.rs:2181:31:2181:31 | x | | main.rs:2179:5:2182:5 | Self [trait MyFrom2] | +| main.rs:2186:21:2186:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2186:33:2186:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2186:48:2188:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2187:13:2187:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2193:21:2193:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2193:34:2193:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2193:49:2199:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2194:16:2194:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2204:15:2204:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | +| main.rs:2207:15:2207:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | +| main.rs:2212:15:2212:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2212:31:2214:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2213:13:2213:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2217:15:2217:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2217:32:2219:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2218:13:2218:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2219:9:2219:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2219:18:2219:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2220:9:2220:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2220:18:2220:22 | &5i64 | | {EXTERNAL LOCATION} | & | -| main.rs:2220:19:2220:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2221:9:2221:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2221:18:2221:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2223:11:2223:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2223:26:2223:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2224:11:2224:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2224:24:2224:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2225:11:2225:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2225:24:2225:28 | &3i64 | | {EXTERNAL LOCATION} | & | -| main.rs:2225:25:2225:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:13:2227:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:17:2227:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:30:2227:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2228:13:2228:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2228:17:2228:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2228:30:2228:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2229:13:2229:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2229:38:2229:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2230:9:2230:34 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2230:23:2230:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2230:30:2230:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2231:9:2231:33 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2231:23:2231:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2231:29:2231:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2232:9:2232:38 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2232:27:2232:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2232:34:2232:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2234:9:2234:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2234:17:2234:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2235:9:2235:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2235:17:2235:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2236:9:2236:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2236:18:2236:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2237:9:2237:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2237:18:2237:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2238:9:2238:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2238:25:2238:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2239:25:2239:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2240:9:2240:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2240:25:2240:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2241:25:2241:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2249:26:2251:9 | { ... } | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2250:13:2250:25 | MyCallable {...} | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2253:17:2253:21 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2253:17:2253:21 | SelfParam | TRef | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2253:31:2255:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2258:16:2365:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2261:9:2261:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2261:18:2261:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2261:28:2261:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2262:9:2262:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2262:18:2262:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2262:32:2262:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| main.rs:2262:43:2262:44 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2263:9:2263:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2263:18:2263:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2263:40:2263:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2265:13:2265:17 | vals1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2265:21:2265:31 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2265:22:2265:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2266:9:2266:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2266:18:2266:22 | vals1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2266:24:2266:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2268:13:2268:17 | vals2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2268:21:2268:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2268:22:2268:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2269:9:2269:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2269:18:2269:22 | vals2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2269:24:2269:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2271:13:2271:17 | vals3 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2271:13:2271:17 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | -| main.rs:2271:31:2271:39 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2272:9:2272:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2272:18:2272:22 | vals3 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2272:18:2272:22 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | -| main.rs:2272:24:2272:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2274:13:2274:17 | vals4 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2274:13:2274:17 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | -| main.rs:2274:31:2274:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2275:9:2275:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2275:18:2275:22 | vals4 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2275:18:2275:22 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | -| main.rs:2275:24:2275:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2277:17:2277:24 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2277:28:2277:48 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2277:29:2277:33 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2277:29:2277:33 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2277:36:2277:40 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2277:36:2277:40 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2277:43:2277:47 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2277:43:2277:47 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2224:15:2224:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2224:31:2226:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2229:15:2229:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2229:32:2231:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2230:13:2230:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2234:16:2259:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2235:13:2235:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2236:9:2236:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2236:18:2236:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2237:9:2237:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2237:18:2237:22 | &5i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2237:19:2237:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2238:9:2238:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2238:18:2238:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2240:11:2240:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2240:26:2240:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2241:11:2241:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2241:24:2241:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:11:2242:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:24:2242:28 | &3i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2242:25:2242:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2244:13:2244:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2244:17:2244:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2244:30:2244:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2245:13:2245:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2245:17:2245:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2245:30:2245:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2246:13:2246:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2246:38:2246:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2247:9:2247:34 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2247:23:2247:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2247:30:2247:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2248:9:2248:33 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2248:23:2248:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2248:29:2248:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2249:9:2249:38 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2249:27:2249:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2249:34:2249:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2251:9:2251:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2251:17:2251:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2252:9:2252:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2252:17:2252:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2253:9:2253:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2253:18:2253:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2254:9:2254:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2254:18:2254:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2255:9:2255:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2255:25:2255:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2256:25:2256:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2257:9:2257:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2257:25:2257:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2258:25:2258:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2266:26:2268:9 | { ... } | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2267:13:2267:25 | MyCallable {...} | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2270:17:2270:21 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2270:17:2270:21 | SelfParam | TRef | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2270:31:2272:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2275:16:2382:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2278:9:2278:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2278:18:2278:26 | &strings1 | | {EXTERNAL LOCATION} | & | -| main.rs:2278:19:2278:26 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2278:18:2278:26 | [...] | | {EXTERNAL LOCATION} | [;] | | main.rs:2278:28:2278:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2279:9:2279:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2279:18:2279:30 | &mut strings1 | | {EXTERNAL LOCATION} | &mut | -| main.rs:2279:23:2279:30 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2279:32:2279:33 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2280:9:2280:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2280:18:2280:25 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2280:27:2280:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2282:13:2282:20 | strings2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2283:9:2287:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2284:13:2284:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2284:26:2284:30 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2284:26:2284:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2285:13:2285:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2285:26:2285:30 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2285:26:2285:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2286:13:2286:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2286:26:2286:30 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2286:26:2286:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2288:9:2288:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2288:18:2288:25 | strings2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2288:27:2288:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2290:13:2290:20 | strings3 | | {EXTERNAL LOCATION} | & | -| main.rs:2291:9:2295:9 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2291:10:2295:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2292:13:2292:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2292:26:2292:30 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2292:26:2292:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2293:13:2293:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2293:26:2293:30 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2293:26:2293:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2294:13:2294:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2294:26:2294:30 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2294:26:2294:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2296:9:2296:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2296:18:2296:25 | strings3 | | {EXTERNAL LOCATION} | & | -| main.rs:2296:27:2296:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2298:13:2298:21 | callables | | {EXTERNAL LOCATION} | [;] | -| main.rs:2298:25:2298:81 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2298:26:2298:42 | ...::new(...) | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2298:45:2298:61 | ...::new(...) | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2298:64:2298:80 | ...::new(...) | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2299:9:2303:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2300:12:2300:20 | callables | | {EXTERNAL LOCATION} | [;] | -| main.rs:2301:9:2303:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2307:9:2307:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2307:18:2307:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2307:24:2307:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2308:9:2308:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2308:18:2308:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2308:19:2308:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2308:19:2308:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2308:28:2308:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2309:13:2309:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2309:21:2309:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2310:9:2310:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2310:18:2310:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2310:24:2310:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2311:13:2311:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2311:26:2311:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2312:9:2312:51 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2312:18:2312:48 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2312:19:2312:36 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2312:20:2312:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:26:2312:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:32:2312:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:38:2312:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2312:50:2312:51 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2314:13:2314:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2315:9:2318:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2316:20:2316:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2317:18:2317:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2319:9:2319:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2319:18:2319:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2319:25:2319:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2279:9:2279:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2279:18:2279:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2279:32:2279:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:2279:43:2279:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2280:9:2280:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2280:18:2280:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2280:40:2280:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2282:13:2282:17 | vals1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2282:21:2282:31 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2282:22:2282:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2283:9:2283:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2283:18:2283:22 | vals1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2283:24:2283:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2285:13:2285:17 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2285:21:2285:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2285:22:2285:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2286:9:2286:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2286:18:2286:22 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2286:24:2286:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2288:13:2288:17 | vals3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2288:13:2288:17 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2288:31:2288:39 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2289:9:2289:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2289:18:2289:22 | vals3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2289:18:2289:22 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2289:24:2289:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2291:13:2291:17 | vals4 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2291:13:2291:17 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2291:31:2291:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2292:9:2292:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2292:18:2292:22 | vals4 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2292:18:2292:22 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2292:24:2292:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2294:17:2294:24 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2294:28:2294:48 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2294:29:2294:33 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2294:29:2294:33 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2294:36:2294:40 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2294:36:2294:40 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2294:43:2294:47 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2294:43:2294:47 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2295:9:2295:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2295:18:2295:26 | &strings1 | | {EXTERNAL LOCATION} | & | +| main.rs:2295:19:2295:26 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2295:28:2295:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2296:9:2296:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2296:18:2296:30 | &mut strings1 | | {EXTERNAL LOCATION} | &mut | +| main.rs:2296:23:2296:30 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2296:32:2296:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2297:9:2297:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2297:18:2297:25 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2297:27:2297:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2299:13:2299:20 | strings2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2300:9:2304:9 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2301:13:2301:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2301:26:2301:30 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2301:26:2301:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2302:13:2302:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2302:26:2302:30 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2302:26:2302:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2303:13:2303:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2303:26:2303:30 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2303:26:2303:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2305:9:2305:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2305:18:2305:25 | strings2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2305:27:2305:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2307:13:2307:20 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2308:9:2312:9 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2308:10:2312:9 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2309:13:2309:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2309:26:2309:30 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2309:26:2309:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2310:13:2310:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2310:26:2310:30 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2310:26:2310:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2311:13:2311:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2311:26:2311:30 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2311:26:2311:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2313:9:2313:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2313:18:2313:25 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2313:27:2313:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2315:13:2315:21 | callables | | {EXTERNAL LOCATION} | [;] | +| main.rs:2315:25:2315:81 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2315:26:2315:42 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2315:45:2315:61 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2315:64:2315:80 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2316:9:2320:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2317:12:2317:20 | callables | | {EXTERNAL LOCATION} | [;] | +| main.rs:2318:9:2320:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2324:9:2324:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2324:18:2324:22 | 0..10 | | {EXTERNAL LOCATION} | Range | | main.rs:2324:24:2324:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2326:13:2326:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2326:13:2326:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2326:13:2326:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2326:32:2326:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2326:33:2326:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2327:9:2327:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2327:18:2327:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2327:18:2327:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2327:18:2327:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2327:25:2327:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2329:22:2329:33 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2329:23:2329:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2330:9:2330:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2330:25:2330:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2332:13:2332:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2332:21:2332:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2332:31:2332:42 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2332:32:2332:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2333:9:2333:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2333:18:2333:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2333:24:2333:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2335:13:2335:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2335:13:2335:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2335:13:2335:17 | vals6 | T | {EXTERNAL LOCATION} | & | -| main.rs:2335:13:2335:17 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | -| main.rs:2335:32:2335:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2335:33:2335:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2336:9:2336:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2336:18:2336:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2336:18:2336:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2336:18:2336:22 | vals6 | T | {EXTERNAL LOCATION} | & | -| main.rs:2336:18:2336:22 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | -| main.rs:2336:24:2336:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2338:17:2338:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2338:17:2338:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2338:25:2338:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2338:25:2338:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2339:9:2339:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2339:9:2339:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2339:20:2339:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2340:9:2340:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2340:18:2340:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2340:18:2340:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2340:24:2340:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2344:17:2347:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2345:13:2346:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2345:29:2346:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2349:17:2349:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2349:17:2349:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2349:24:2349:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2349:24:2349:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2350:9:2350:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2350:9:2350:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2350:24:2350:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2350:24:2350:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2350:33:2350:37 | "one" | | {EXTERNAL LOCATION} | & | -| main.rs:2350:33:2350:37 | "one" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2351:9:2351:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2351:9:2351:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2351:24:2351:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2351:24:2351:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2351:33:2351:37 | "two" | | {EXTERNAL LOCATION} | & | -| main.rs:2351:33:2351:37 | "two" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2352:9:2352:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2352:20:2352:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2352:20:2352:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2352:32:2352:33 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2353:9:2353:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2353:22:2353:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2353:22:2353:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2353:36:2353:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2354:9:2354:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2354:13:2354:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2354:29:2354:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2354:29:2354:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2354:41:2354:42 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2355:9:2355:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2355:13:2355:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2355:29:2355:33 | &map1 | | {EXTERNAL LOCATION} | & | -| main.rs:2355:30:2355:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2355:30:2355:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2355:35:2355:36 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2359:17:2359:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2361:17:2364:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2361:23:2361:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2362:9:2364:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2363:13:2363:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2375:40:2377:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2375:40:2377:9 | { ... } | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2375:40:2377:9 | { ... } | T.T | main.rs:2374:10:2374:19 | T | -| main.rs:2379:30:2381:9 | { ... } | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2379:30:2381:9 | { ... } | T | main.rs:2374:10:2374:19 | T | -| main.rs:2383:19:2383:22 | SelfParam | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2383:19:2383:22 | SelfParam | T | main.rs:2374:10:2374:19 | T | -| main.rs:2383:33:2385:9 | { ... } | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2383:33:2385:9 | { ... } | T | main.rs:2374:10:2374:19 | T | -| main.rs:2384:13:2384:16 | self | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2384:13:2384:16 | self | T | main.rs:2374:10:2374:19 | T | -| main.rs:2396:15:2396:15 | x | | main.rs:2396:12:2396:12 | T | -| main.rs:2396:26:2398:5 | { ... } | | main.rs:2396:12:2396:12 | T | -| main.rs:2397:9:2397:9 | x | | main.rs:2396:12:2396:12 | T | -| main.rs:2400:16:2422:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2401:13:2401:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2401:13:2401:14 | x1 | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2401:13:2401:14 | x1 | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2401:34:2401:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2401:34:2401:48 | ...::assoc_fun(...) | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2402:13:2402:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2402:13:2402:14 | x2 | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2402:13:2402:14 | x2 | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2402:18:2402:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2402:18:2402:38 | ...::assoc_fun(...) | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2402:18:2402:38 | ...::assoc_fun(...) | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2403:13:2403:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2403:13:2403:14 | x3 | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2403:13:2403:14 | x3 | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2403:18:2403:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2403:18:2403:32 | ...::assoc_fun(...) | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2403:18:2403:32 | ...::assoc_fun(...) | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2404:13:2404:14 | x4 | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2404:13:2404:14 | x4 | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2404:18:2404:48 | ...::method(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2404:18:2404:48 | ...::method(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2404:35:2404:47 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2405:13:2405:14 | x5 | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2405:13:2405:14 | x5 | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2405:18:2405:42 | ...::method(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2405:18:2405:42 | ...::method(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2405:29:2405:41 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2409:21:2409:33 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2410:13:2410:15 | x10 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2410:13:2410:15 | x10 | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2410:19:2413:9 | S5::<...> {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2410:19:2413:9 | S5::<...> {...} | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2414:13:2414:15 | x11 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2414:19:2414:34 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2415:13:2415:15 | x12 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2415:19:2415:33 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2416:13:2416:15 | x13 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2416:19:2419:9 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2418:20:2418:32 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2420:13:2420:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2420:19:2420:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2421:13:2421:15 | x15 | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2421:13:2421:15 | x15 | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2421:19:2421:37 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2421:19:2421:37 | ...::default(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2430:35:2432:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2430:35:2432:9 | { ... } | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2430:35:2432:9 | { ... } | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2431:13:2431:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2431:14:2431:18 | S1 {...} | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2431:21:2431:25 | S1 {...} | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2433:16:2433:19 | SelfParam | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2433:22:2433:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2436:16:2470:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2437:13:2437:13 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2437:13:2437:13 | a | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2437:13:2437:13 | a | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2437:17:2437:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2437:17:2437:30 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2437:17:2437:30 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:17:2438:17 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2438:17:2438:17 | b | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:17:2438:17 | b | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:21:2438:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2438:21:2438:34 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:21:2438:34 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:13:2439:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2439:22:2439:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2439:22:2439:35 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:22:2439:35 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:13:2440:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2440:26:2440:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2440:26:2440:39 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:26:2440:39 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:13:2441:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2441:30:2441:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2441:30:2441:43 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:30:2441:43 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2443:9:2443:9 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2443:9:2443:9 | a | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2443:9:2443:9 | a | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2444:9:2444:9 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2444:9:2444:9 | b | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2444:9:2444:9 | b | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2457:13:2457:16 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2457:20:2457:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2458:13:2458:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:22:2458:25 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2459:13:2459:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2459:23:2459:26 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2461:20:2461:25 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2463:13:2463:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2463:30:2463:41 | "unexpected" | | {EXTERNAL LOCATION} | & | -| main.rs:2463:30:2463:41 | "unexpected" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2463:30:2463:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2463:30:2463:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2464:25:2464:34 | "expected" | | {EXTERNAL LOCATION} | & | -| main.rs:2464:25:2464:34 | "expected" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2464:25:2464:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2464:25:2464:34 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2468:13:2468:13 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2468:17:2468:31 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2468:18:2468:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2468:18:2468:31 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2468:18:2468:31 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2469:9:2469:9 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2475:27:2497:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2476:13:2476:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2476:13:2476:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2476:27:2476:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2476:27:2476:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2476:36:2476:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:15:2479:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2479:15:2479:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2480:24:2482:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2481:26:2481:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2481:26:2481:36 | "Boxed 100\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2481:26:2481:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2481:26:2481:36 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2483:22:2486:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2485:26:2485:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2485:26:2485:42 | "Boxed value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2485:26:2485:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2485:26:2485:51 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2490:13:2490:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2490:13:2490:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:26:2490:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2490:26:2490:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:35:2490:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2490:35:2490:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:44:2490:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2491:15:2491:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2491:15:2491:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2492:26:2495:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2494:26:2494:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2494:26:2494:43 | "Nested boxed: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2494:26:2494:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2494:26:2494:59 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2506:36:2508:9 | { ... } | | main.rs:2503:5:2503:22 | Path | -| main.rs:2507:13:2507:19 | Path {...} | | main.rs:2503:5:2503:22 | Path | -| main.rs:2510:29:2510:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2510:29:2510:33 | SelfParam | TRef | main.rs:2503:5:2503:22 | Path | -| main.rs:2510:59:2512:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2510:59:2512:9 | { ... } | E | {EXTERNAL LOCATION} | () | -| main.rs:2510:59:2512:9 | { ... } | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2511:16:2511:29 | ...::new(...) | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2518:39:2520:9 | { ... } | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2519:13:2519:22 | PathBuf {...} | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2528:18:2528:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2528:18:2528:22 | SelfParam | TRef | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2528:34:2532:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2528:34:2532:9 | { ... } | TRef | main.rs:2503:5:2503:22 | Path | -| main.rs:2530:33:2530:43 | ...::new(...) | | main.rs:2503:5:2503:22 | Path | -| main.rs:2531:13:2531:17 | &path | | {EXTERNAL LOCATION} | & | -| main.rs:2535:16:2543:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2536:13:2536:17 | path1 | | main.rs:2503:5:2503:22 | Path | -| main.rs:2536:21:2536:31 | ...::new(...) | | main.rs:2503:5:2503:22 | Path | -| main.rs:2537:21:2537:25 | path1 | | main.rs:2503:5:2503:22 | Path | -| main.rs:2540:13:2540:20 | pathbuf1 | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2540:24:2540:37 | ...::new(...) | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2541:24:2541:31 | pathbuf1 | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2548:14:2548:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2548:14:2548:18 | SelfParam | TRef | main.rs:2547:5:2549:5 | Self [trait MyTrait] | -| main.rs:2555:14:2555:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2555:14:2555:18 | SelfParam | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2555:14:2555:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2555:28:2557:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2556:13:2556:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2556:13:2556:16 | self | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2556:13:2556:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:14:2561:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2561:14:2561:18 | SelfParam | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2561:14:2561:18 | SelfParam | TRef.T | main.rs:2551:5:2552:19 | S | -| main.rs:2561:14:2561:18 | SelfParam | TRef.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:28:2563:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:13:2562:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2562:13:2562:16 | self | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2562:13:2562:16 | self | TRef.T | main.rs:2551:5:2552:19 | S | -| main.rs:2562:13:2562:16 | self | TRef.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:15:2567:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2567:15:2567:19 | SelfParam | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2567:15:2567:19 | SelfParam | TRef.T | main.rs:2566:10:2566:16 | T | -| main.rs:2567:33:2569:9 | { ... } | | main.rs:2551:5:2552:19 | S | -| main.rs:2567:33:2569:9 | { ... } | T | main.rs:2551:5:2552:19 | S | -| main.rs:2567:33:2569:9 | { ... } | T.T | main.rs:2566:10:2566:16 | T | -| main.rs:2568:17:2568:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2568:17:2568:20 | self | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2568:17:2568:20 | self | TRef.T | main.rs:2566:10:2566:16 | T | -| main.rs:2572:14:2572:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2572:48:2589:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2572:48:2589:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2572:48:2589:5 | { ... } | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2572:48:2589:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:20:2573:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2583:12:2583:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2585:13:2585:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2585:13:2585:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2587:13:2587:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2587:13:2587:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2593:22:2597:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2594:18:2594:18 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:33:2596:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:13:2595:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2602:11:2602:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2602:30:2610:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2605:13:2607:13 | if cond {...} | | {EXTERNAL LOCATION} | () | -| main.rs:2605:16:2605:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2605:21:2607:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2613:20:2620:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2618:18:2618:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2618:18:2618:26 | "b: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2618:18:2618:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2618:18:2618:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2622:20:2624:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2627:11:2627:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2627:30:2635:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2628:13:2628:13 | a | | {EXTERNAL LOCATION} | () | -| main.rs:2628:17:2632:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2629:13:2631:13 | if cond {...} | | {EXTERNAL LOCATION} | () | -| main.rs:2629:16:2629:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2629:21:2631:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2633:18:2633:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2633:18:2633:26 | "a: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2633:18:2633:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2633:18:2633:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2633:29:2633:29 | a | | {EXTERNAL LOCATION} | () | -| main.rs:2643:14:2643:17 | SelfParam | | main.rs:2639:5:2640:13 | S | -| main.rs:2643:20:2643:21 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2646:41:2648:5 | { ... } | | main.rs:2646:22:2646:31 | T | -| main.rs:2650:16:2703:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2652:13:2652:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2652:13:2652:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2656:26:2656:28 | opt | | {EXTERNAL LOCATION} | Option | -| main.rs:2656:26:2656:28 | opt | T | main.rs:2656:23:2656:23 | T | -| main.rs:2656:42:2656:42 | x | | main.rs:2656:23:2656:23 | T | -| main.rs:2656:48:2656:49 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2659:9:2659:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2666:13:2666:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2666:17:2666:39 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2667:13:2667:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2667:13:2667:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2667:13:2667:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2667:40:2667:40 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2668:13:2668:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2668:13:2668:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2668:17:2668:52 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2668:17:2668:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2670:13:2670:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2670:13:2670:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2670:17:2672:9 | ...::B::<...> {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2671:20:2671:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2674:29:2674:29 | e | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2674:29:2674:29 | e | T1 | main.rs:2674:26:2674:26 | T | -| main.rs:2674:29:2674:29 | e | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2674:53:2674:53 | x | | main.rs:2674:26:2674:26 | T | -| main.rs:2674:59:2674:60 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2677:13:2677:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2677:17:2679:9 | ...::B {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2678:20:2678:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2680:9:2680:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2680:23:2680:23 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2683:13:2683:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2683:13:2683:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2683:13:2683:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2687:29:2687:31 | res | | {EXTERNAL LOCATION} | Result | -| main.rs:2687:29:2687:31 | res | E | main.rs:2687:26:2687:26 | E | -| main.rs:2687:29:2687:31 | res | T | main.rs:2687:23:2687:23 | T | -| main.rs:2687:48:2687:48 | x | | main.rs:2687:26:2687:26 | E | -| main.rs:2687:54:2687:55 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2690:9:2690:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2690:23:2690:27 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2692:17:2692:17 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2692:17:2692:17 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2692:21:2692:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2692:21:2692:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2693:9:2693:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2693:9:2693:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2696:9:2696:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2696:9:2696:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2699:9:2699:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2702:9:2702:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2702:9:2702:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2709:14:2709:17 | SelfParam | | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2712:14:2712:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2712:14:2712:18 | SelfParam | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2712:21:2712:25 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2712:21:2712:25 | other | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2712:44:2714:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2712:44:2714:9 | { ... } | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2713:13:2713:16 | self | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | -| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | i32 | -| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | usize | -| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | usize | -| main.rs:2733:14:2733:17 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2733:14:2733:17 | SelfParam | TRef | main.rs:2731:10:2731:10 | T | -| main.rs:2733:28:2735:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2733:28:2735:9 | { ... } | TRef | main.rs:2731:10:2731:10 | T | -| main.rs:2734:13:2734:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2734:13:2734:16 | self | TRef | main.rs:2731:10:2731:10 | T | -| main.rs:2738:25:2742:5 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2744:12:2752:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2745:13:2745:13 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2746:13:2746:13 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2746:17:2746:18 | &1 | | {EXTERNAL LOCATION} | & | -| main.rs:2747:17:2747:17 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2747:21:2747:21 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2750:13:2750:13 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2751:23:2751:23 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2766:22:2766:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2766:22:2766:26 | SelfParam | TRef | main.rs:2765:5:2767:5 | Self [trait Container] | -| main.rs:2769:34:2769:34 | c | | {EXTERNAL LOCATION} | & | -| main.rs:2769:34:2769:34 | c | TRef | main.rs:2769:15:2769:31 | T | -| main.rs:2769:49:2771:5 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2770:9:2770:9 | c | | {EXTERNAL LOCATION} | & | -| main.rs:2770:9:2770:9 | c | TRef | main.rs:2769:15:2769:31 | T | -| main.rs:2774:22:2774:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2774:22:2774:26 | SelfParam | TRef | main.rs:2763:5:2763:21 | Gen | -| main.rs:2774:22:2774:26 | SelfParam | TRef.T | main.rs:2773:10:2773:17 | GT | -| main.rs:2774:35:2776:9 | { ... } | | main.rs:2773:10:2773:17 | GT | -| main.rs:2775:13:2775:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2775:13:2775:16 | self | TRef | main.rs:2763:5:2763:21 | Gen | -| main.rs:2775:13:2775:16 | self | TRef.T | main.rs:2773:10:2773:17 | GT | -| main.rs:2779:15:2783:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2782:17:2782:26 | my_get(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2782:24:2782:25 | &g | | {EXTERNAL LOCATION} | & | -| main.rs:2786:11:2821:1 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2787:5:2787:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2788:5:2788:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2789:5:2789:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2789:20:2789:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2789:41:2789:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2790:5:2790:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2791:5:2791:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2792:5:2792:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2793:5:2793:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2794:5:2794:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2795:5:2795:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2796:5:2796:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2797:5:2797:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2798:5:2798:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2799:5:2799:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2800:5:2800:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2801:5:2801:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2802:5:2802:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2803:5:2803:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2804:5:2804:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2805:5:2805:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:2805:5:2805:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:2806:5:2806:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2807:5:2807:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2808:5:2808:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2809:5:2809:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2810:5:2810:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2811:5:2811:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2812:5:2812:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2813:5:2813:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2814:5:2814:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2815:5:2815:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2816:5:2816:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2817:5:2817:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2818:5:2818:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2819:5:2819:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2819:5:2819:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2819:5:2819:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2819:5:2819:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:16:2819:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2820:5:2820:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2325:9:2325:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2325:18:2325:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2325:19:2325:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2325:19:2325:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2325:28:2325:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2326:13:2326:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2326:21:2326:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2327:9:2327:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2327:18:2327:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2327:24:2327:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2328:13:2328:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2328:26:2328:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2329:9:2329:51 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2329:18:2329:48 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2329:19:2329:36 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2329:20:2329:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:26:2329:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:32:2329:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:38:2329:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2329:50:2329:51 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2331:13:2331:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2332:9:2335:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2333:20:2333:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2334:18:2334:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2336:9:2336:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2336:18:2336:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2336:25:2336:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2341:9:2341:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2341:24:2341:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2343:13:2343:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2343:13:2343:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2343:13:2343:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:32:2343:43 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2343:33:2343:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2344:9:2344:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2344:18:2344:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2344:18:2344:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2344:18:2344:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2344:25:2344:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2346:22:2346:33 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2346:23:2346:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2347:9:2347:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2347:25:2347:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2349:13:2349:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2349:21:2349:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2349:31:2349:42 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2349:32:2349:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2350:9:2350:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2350:18:2350:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2350:24:2350:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2352:13:2352:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2352:13:2352:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2352:13:2352:17 | vals6 | T | {EXTERNAL LOCATION} | & | +| main.rs:2352:13:2352:17 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2352:32:2352:43 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2352:33:2352:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2353:9:2353:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2353:18:2353:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2353:18:2353:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2353:18:2353:22 | vals6 | T | {EXTERNAL LOCATION} | & | +| main.rs:2353:18:2353:22 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2353:24:2353:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2355:17:2355:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2355:17:2355:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2355:25:2355:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2355:25:2355:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2356:9:2356:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2356:9:2356:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2356:20:2356:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2357:9:2357:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2357:18:2357:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2357:18:2357:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2357:24:2357:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2361:17:2364:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2362:13:2363:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2362:29:2363:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2366:17:2366:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2366:17:2366:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2366:24:2366:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2366:24:2366:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2367:9:2367:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2367:9:2367:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2367:24:2367:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2367:24:2367:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2367:33:2367:37 | "one" | | {EXTERNAL LOCATION} | & | +| main.rs:2367:33:2367:37 | "one" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2368:9:2368:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2368:9:2368:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2368:24:2368:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2368:24:2368:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2368:33:2368:37 | "two" | | {EXTERNAL LOCATION} | & | +| main.rs:2368:33:2368:37 | "two" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2369:9:2369:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2369:20:2369:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2369:20:2369:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2369:32:2369:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2370:9:2370:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2370:22:2370:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2370:22:2370:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2370:36:2370:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2371:9:2371:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2371:13:2371:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2371:29:2371:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2371:29:2371:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2371:41:2371:42 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2372:9:2372:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2372:13:2372:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2372:29:2372:33 | &map1 | | {EXTERNAL LOCATION} | & | +| main.rs:2372:30:2372:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2372:30:2372:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2372:35:2372:36 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2376:17:2376:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2378:17:2381:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2378:23:2378:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2379:9:2381:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2380:13:2380:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2392:40:2394:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2392:40:2394:9 | { ... } | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2392:40:2394:9 | { ... } | T.T | main.rs:2391:10:2391:19 | T | +| main.rs:2396:30:2398:9 | { ... } | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2396:30:2398:9 | { ... } | T | main.rs:2391:10:2391:19 | T | +| main.rs:2400:19:2400:22 | SelfParam | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2400:19:2400:22 | SelfParam | T | main.rs:2391:10:2391:19 | T | +| main.rs:2400:33:2402:9 | { ... } | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2400:33:2402:9 | { ... } | T | main.rs:2391:10:2391:19 | T | +| main.rs:2401:13:2401:16 | self | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2401:13:2401:16 | self | T | main.rs:2391:10:2391:19 | T | +| main.rs:2413:15:2413:15 | x | | main.rs:2413:12:2413:12 | T | +| main.rs:2413:26:2415:5 | { ... } | | main.rs:2413:12:2413:12 | T | +| main.rs:2414:9:2414:9 | x | | main.rs:2413:12:2413:12 | T | +| main.rs:2417:16:2439:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2418:13:2418:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2418:13:2418:14 | x1 | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2418:13:2418:14 | x1 | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2418:34:2418:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2418:34:2418:48 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2419:13:2419:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2419:13:2419:14 | x2 | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2419:13:2419:14 | x2 | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2420:13:2420:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2420:13:2420:14 | x3 | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2420:13:2420:14 | x3 | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2421:13:2421:14 | x4 | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2421:13:2421:14 | x4 | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2421:18:2421:48 | ...::method(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2421:18:2421:48 | ...::method(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2421:35:2421:47 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2422:13:2422:14 | x5 | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2422:13:2422:14 | x5 | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2422:18:2422:42 | ...::method(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2422:18:2422:42 | ...::method(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2422:29:2422:41 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2426:21:2426:33 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2427:13:2427:15 | x10 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2427:13:2427:15 | x10 | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2427:19:2430:9 | S5::<...> {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2427:19:2430:9 | S5::<...> {...} | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2431:13:2431:15 | x11 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2431:19:2431:34 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2432:13:2432:15 | x12 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2432:19:2432:33 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2433:13:2433:15 | x13 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2433:19:2436:9 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2435:20:2435:32 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2437:13:2437:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2437:19:2437:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2438:13:2438:15 | x15 | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2438:13:2438:15 | x15 | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2438:19:2438:37 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2438:19:2438:37 | ...::default(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2447:35:2449:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2447:35:2449:9 | { ... } | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2447:35:2449:9 | { ... } | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2448:13:2448:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2448:14:2448:18 | S1 {...} | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2448:21:2448:25 | S1 {...} | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2450:16:2450:19 | SelfParam | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2450:22:2450:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2453:16:2487:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2454:13:2454:13 | a | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2454:13:2454:13 | a | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2454:13:2454:13 | a | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2454:17:2454:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2454:17:2454:30 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2454:17:2454:30 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:17:2455:17 | b | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2455:17:2455:17 | b | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:17:2455:17 | b | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:21:2455:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2455:21:2455:34 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:21:2455:34 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:13:2456:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2456:22:2456:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2456:22:2456:35 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:22:2456:35 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:13:2457:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2457:26:2457:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2457:26:2457:39 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:26:2457:39 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:13:2458:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2458:30:2458:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2458:30:2458:43 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:30:2458:43 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2460:9:2460:9 | a | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2460:9:2460:9 | a | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2460:9:2460:9 | a | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2461:9:2461:9 | b | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2461:9:2461:9 | b | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2461:9:2461:9 | b | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2474:13:2474:16 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2474:20:2474:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2475:13:2475:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2475:22:2475:25 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2476:13:2476:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2476:23:2476:26 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2478:20:2478:25 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2480:13:2480:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2480:30:2480:41 | "unexpected" | | {EXTERNAL LOCATION} | & | +| main.rs:2480:30:2480:41 | "unexpected" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2480:30:2480:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2480:30:2480:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2481:25:2481:34 | "expected" | | {EXTERNAL LOCATION} | & | +| main.rs:2481:25:2481:34 | "expected" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2481:25:2481:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2481:25:2481:34 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2485:13:2485:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2485:17:2485:31 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2485:18:2485:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2485:18:2485:31 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2485:18:2485:31 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2486:9:2486:9 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2492:27:2514:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2493:13:2493:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2493:13:2493:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2493:27:2493:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2493:27:2493:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2493:36:2493:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2496:15:2496:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2496:15:2496:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2497:24:2499:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2498:26:2498:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2498:26:2498:36 | "Boxed 100\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2498:26:2498:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2498:26:2498:36 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2500:22:2503:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2502:26:2502:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2502:26:2502:42 | "Boxed value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2502:26:2502:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2502:26:2502:51 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2507:13:2507:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2507:13:2507:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:26:2507:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2507:26:2507:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:35:2507:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2507:35:2507:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:44:2507:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:15:2508:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2508:15:2508:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2509:26:2512:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2511:26:2511:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2511:26:2511:43 | "Nested boxed: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2511:26:2511:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2511:26:2511:59 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2523:36:2525:9 | { ... } | | main.rs:2520:5:2520:22 | Path | +| main.rs:2524:13:2524:19 | Path {...} | | main.rs:2520:5:2520:22 | Path | +| main.rs:2527:29:2527:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2527:29:2527:33 | SelfParam | TRef | main.rs:2520:5:2520:22 | Path | +| main.rs:2527:59:2529:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2527:59:2529:9 | { ... } | E | {EXTERNAL LOCATION} | () | +| main.rs:2527:59:2529:9 | { ... } | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2528:16:2528:29 | ...::new(...) | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2535:39:2537:9 | { ... } | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2536:13:2536:22 | PathBuf {...} | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2545:18:2545:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2545:18:2545:22 | SelfParam | TRef | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2545:34:2549:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2545:34:2549:9 | { ... } | TRef | main.rs:2520:5:2520:22 | Path | +| main.rs:2547:33:2547:43 | ...::new(...) | | main.rs:2520:5:2520:22 | Path | +| main.rs:2548:13:2548:17 | &path | | {EXTERNAL LOCATION} | & | +| main.rs:2552:16:2560:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2553:13:2553:17 | path1 | | main.rs:2520:5:2520:22 | Path | +| main.rs:2553:21:2553:31 | ...::new(...) | | main.rs:2520:5:2520:22 | Path | +| main.rs:2554:21:2554:25 | path1 | | main.rs:2520:5:2520:22 | Path | +| main.rs:2557:13:2557:20 | pathbuf1 | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2557:24:2557:37 | ...::new(...) | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2558:24:2558:31 | pathbuf1 | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2565:14:2565:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2565:14:2565:18 | SelfParam | TRef | main.rs:2564:5:2566:5 | Self [trait MyTrait] | +| main.rs:2572:14:2572:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2572:14:2572:18 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2572:14:2572:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:28:2574:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:13:2573:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2573:13:2573:16 | self | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2573:13:2573:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2578:14:2578:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2578:14:2578:18 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2578:14:2578:18 | SelfParam | TRef.T | main.rs:2568:5:2569:19 | S | +| main.rs:2578:14:2578:18 | SelfParam | TRef.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2578:28:2580:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2579:13:2579:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2579:13:2579:16 | self | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2579:13:2579:16 | self | TRef.T | main.rs:2568:5:2569:19 | S | +| main.rs:2579:13:2579:16 | self | TRef.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2584:15:2584:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2584:15:2584:19 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2584:15:2584:19 | SelfParam | TRef.T | main.rs:2583:10:2583:16 | T | +| main.rs:2584:33:2586:9 | { ... } | | main.rs:2568:5:2569:19 | S | +| main.rs:2584:33:2586:9 | { ... } | T | main.rs:2568:5:2569:19 | S | +| main.rs:2584:33:2586:9 | { ... } | T.T | main.rs:2583:10:2583:16 | T | +| main.rs:2585:17:2585:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2585:17:2585:20 | self | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2585:17:2585:20 | self | TRef.T | main.rs:2583:10:2583:16 | T | +| main.rs:2589:14:2589:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2589:48:2606:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2589:48:2606:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:48:2606:5 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2589:48:2606:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:20:2590:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2600:12:2600:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2602:13:2602:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2602:13:2602:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2604:13:2604:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2604:13:2604:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2610:22:2614:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2611:18:2611:18 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:33:2613:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:13:2612:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:11:2619:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2619:30:2627:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2622:13:2624:13 | if cond {...} | | {EXTERNAL LOCATION} | () | +| main.rs:2622:16:2622:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2622:21:2624:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2630:20:2637:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2635:18:2635:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2635:18:2635:26 | "b: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2635:18:2635:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2635:18:2635:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2639:20:2641:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2644:11:2644:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2644:30:2652:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2645:13:2645:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2645:17:2649:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2646:13:2648:13 | if cond {...} | | {EXTERNAL LOCATION} | () | +| main.rs:2646:16:2646:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2646:21:2648:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2650:18:2650:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2650:18:2650:26 | "a: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2650:18:2650:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2650:18:2650:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2650:29:2650:29 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2660:14:2660:17 | SelfParam | | main.rs:2656:5:2657:13 | S | +| main.rs:2660:20:2660:21 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2663:41:2665:5 | { ... } | | main.rs:2663:22:2663:31 | T | +| main.rs:2667:16:2720:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2669:13:2669:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2669:13:2669:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:26:2673:28 | opt | | {EXTERNAL LOCATION} | Option | +| main.rs:2673:26:2673:28 | opt | T | main.rs:2673:23:2673:23 | T | +| main.rs:2673:42:2673:42 | x | | main.rs:2673:23:2673:23 | T | +| main.rs:2673:48:2673:49 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2676:9:2676:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2683:13:2683:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2683:17:2683:39 | ...::A {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2684:13:2684:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2684:13:2684:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:13:2684:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2684:40:2684:40 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2685:13:2685:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2685:13:2685:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2685:17:2685:52 | ...::A {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2685:17:2685:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2687:13:2687:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2687:13:2687:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:17:2689:9 | ...::B::<...> {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2687:17:2689:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2688:20:2688:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2691:29:2691:29 | e | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2691:29:2691:29 | e | T1 | main.rs:2691:26:2691:26 | T | +| main.rs:2691:29:2691:29 | e | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2691:53:2691:53 | x | | main.rs:2691:26:2691:26 | T | +| main.rs:2691:59:2691:60 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2694:13:2694:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2694:17:2696:9 | ...::B {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2695:20:2695:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2697:9:2697:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2697:23:2697:23 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2700:13:2700:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2700:13:2700:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2700:13:2700:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:29:2704:31 | res | | {EXTERNAL LOCATION} | Result | +| main.rs:2704:29:2704:31 | res | E | main.rs:2704:26:2704:26 | E | +| main.rs:2704:29:2704:31 | res | T | main.rs:2704:23:2704:23 | T | +| main.rs:2704:48:2704:48 | x | | main.rs:2704:26:2704:26 | E | +| main.rs:2704:54:2704:55 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2707:9:2707:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2707:23:2707:27 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:2709:17:2709:17 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2709:17:2709:17 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2709:21:2709:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2709:21:2709:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2710:9:2710:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2710:9:2710:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2713:9:2713:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2713:9:2713:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2716:9:2716:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2719:9:2719:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2719:9:2719:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2726:14:2726:17 | SelfParam | | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2729:14:2729:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2729:14:2729:18 | SelfParam | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2729:21:2729:25 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2729:21:2729:25 | other | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2729:44:2731:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2729:44:2731:9 | { ... } | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2730:13:2730:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2730:13:2730:16 | self | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2736:14:2736:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:28:2738:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:13:2737:16 | self | | {EXTERNAL LOCATION} | i32 | +| main.rs:2743:14:2743:17 | SelfParam | | {EXTERNAL LOCATION} | usize | +| main.rs:2743:28:2745:9 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2744:13:2744:16 | self | | {EXTERNAL LOCATION} | usize | +| main.rs:2750:14:2750:17 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2750:14:2750:17 | SelfParam | TRef | main.rs:2748:10:2748:10 | T | +| main.rs:2750:28:2752:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2750:28:2752:9 | { ... } | TRef | main.rs:2748:10:2748:10 | T | +| main.rs:2751:13:2751:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2751:13:2751:16 | self | TRef | main.rs:2748:10:2748:10 | T | +| main.rs:2755:25:2759:5 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2761:12:2769:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2762:13:2762:13 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2763:13:2763:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2763:17:2763:18 | &1 | | {EXTERNAL LOCATION} | & | +| main.rs:2764:17:2764:17 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2764:21:2764:21 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2767:13:2767:13 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2768:23:2768:23 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2783:22:2783:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2783:22:2783:26 | SelfParam | TRef | main.rs:2782:5:2784:5 | Self [trait Container] | +| main.rs:2786:34:2786:34 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2786:34:2786:34 | c | TRef | main.rs:2786:15:2786:31 | T | +| main.rs:2786:49:2788:5 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2787:9:2787:9 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2787:9:2787:9 | c | TRef | main.rs:2786:15:2786:31 | T | +| main.rs:2791:22:2791:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2791:22:2791:26 | SelfParam | TRef | main.rs:2780:5:2780:21 | Gen | +| main.rs:2791:22:2791:26 | SelfParam | TRef.T | main.rs:2790:10:2790:17 | GT | +| main.rs:2791:35:2793:9 | { ... } | | main.rs:2790:10:2790:17 | GT | +| main.rs:2792:13:2792:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2792:13:2792:16 | self | TRef | main.rs:2780:5:2780:21 | Gen | +| main.rs:2792:13:2792:16 | self | TRef.T | main.rs:2790:10:2790:17 | GT | +| main.rs:2796:15:2800:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2799:17:2799:26 | my_get(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2799:24:2799:25 | &g | | {EXTERNAL LOCATION} | & | +| main.rs:2803:11:2838:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2804:5:2804:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2805:5:2805:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2806:5:2806:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2806:20:2806:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2806:41:2806:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2807:5:2807:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2808:5:2808:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2809:5:2809:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2810:5:2810:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2811:5:2811:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2812:5:2812:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2813:5:2813:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2814:5:2814:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2815:5:2815:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2816:5:2816:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2817:5:2817:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2818:5:2818:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2819:5:2819:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2820:5:2820:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2821:5:2821:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2822:5:2822:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2822:5:2822:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:2823:5:2823:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2824:5:2824:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2825:5:2825:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2826:5:2826:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2827:5:2827:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2828:5:2828:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2829:5:2829:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2830:5:2830:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2831:5:2831:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2832:5:2832:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2833:5:2833:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2834:5:2834:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2835:5:2835:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2836:5:2836:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2836:5:2836:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2836:5:2836:20 | ...::f(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2836:5:2836:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2836:16:2836:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2837:5:2837:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:4:19:4:23 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:4:19:4:23 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] | | overloading.rs:4:34:6:9 | { ... } | | {EXTERNAL LOCATION} | bool | @@ -7938,5070 +7948,5088 @@ inferType | main.rs:259:15:259:18 | SelfParam | | main.rs:256:5:265:5 | Self [trait MyTrait] | | main.rs:262:9:264:9 | { ... } | | main.rs:256:5:265:5 | Self [trait MyTrait] | | main.rs:263:13:263:16 | self | | main.rs:256:5:265:5 | Self [trait MyTrait] | -| main.rs:269:16:269:19 | SelfParam | | main.rs:267:5:272:5 | Self [trait MyProduct] | -| main.rs:271:16:271:19 | SelfParam | | main.rs:267:5:272:5 | Self [trait MyProduct] | -| main.rs:274:43:274:43 | x | | main.rs:274:26:274:40 | T2 | -| main.rs:274:56:276:5 | { ... } | | main.rs:274:22:274:23 | T1 | -| main.rs:275:9:275:9 | x | | main.rs:274:26:274:40 | T2 | -| main.rs:275:9:275:14 | x.m1() | | main.rs:274:22:274:23 | T1 | -| main.rs:280:15:280:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | -| main.rs:280:15:280:18 | SelfParam | A | main.rs:249:5:250:14 | S1 | -| main.rs:280:27:282:9 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:281:13:281:16 | self | | main.rs:238:5:241:5 | MyThing | -| main.rs:281:13:281:16 | self | A | main.rs:249:5:250:14 | S1 | -| main.rs:281:13:281:18 | self.a | | main.rs:249:5:250:14 | S1 | -| main.rs:287:15:287:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | -| main.rs:287:15:287:18 | SelfParam | A | main.rs:251:5:252:14 | S2 | -| main.rs:287:29:289:9 | { ... } | | main.rs:238:5:241:5 | MyThing | -| main.rs:287:29:289:9 | { ... } | A | main.rs:251:5:252:14 | S2 | -| main.rs:288:13:288:30 | Self {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:288:13:288:30 | Self {...} | A | main.rs:251:5:252:14 | S2 | -| main.rs:288:23:288:26 | self | | main.rs:238:5:241:5 | MyThing | -| main.rs:288:23:288:26 | self | A | main.rs:251:5:252:14 | S2 | -| main.rs:288:23:288:28 | self.a | | main.rs:251:5:252:14 | S2 | -| main.rs:299:15:299:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | -| main.rs:299:15:299:18 | SelfParam | A | main.rs:253:5:254:14 | S3 | -| main.rs:299:27:301:9 | { ... } | | main.rs:294:10:294:11 | TD | -| main.rs:300:13:300:25 | ...::default(...) | | main.rs:294:10:294:11 | TD | -| main.rs:306:15:306:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:306:15:306:18 | SelfParam | P1 | main.rs:304:10:304:10 | I | -| main.rs:306:15:306:18 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:306:26:308:9 | { ... } | | main.rs:304:10:304:10 | I | -| main.rs:307:13:307:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:307:13:307:16 | self | P1 | main.rs:304:10:304:10 | I | -| main.rs:307:13:307:16 | self | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:307:13:307:19 | self.p1 | | main.rs:304:10:304:10 | I | -| main.rs:313:15:313:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:313:15:313:18 | SelfParam | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:313:15:313:18 | SelfParam | P2 | main.rs:251:5:252:14 | S2 | -| main.rs:313:27:315:9 | { ... } | | main.rs:253:5:254:14 | S3 | -| main.rs:314:13:314:14 | S3 | | main.rs:253:5:254:14 | S3 | -| main.rs:320:15:320:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:320:15:320:18 | SelfParam | P1 | main.rs:238:5:241:5 | MyThing | -| main.rs:320:15:320:18 | SelfParam | P1.A | main.rs:318:10:318:11 | TT | -| main.rs:320:15:320:18 | SelfParam | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:320:27:323:9 | { ... } | | main.rs:318:10:318:11 | TT | -| main.rs:321:17:321:21 | alpha | | main.rs:238:5:241:5 | MyThing | -| main.rs:321:17:321:21 | alpha | A | main.rs:318:10:318:11 | TT | -| main.rs:321:25:321:28 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:321:25:321:28 | self | P1 | main.rs:238:5:241:5 | MyThing | -| main.rs:321:25:321:28 | self | P1.A | main.rs:318:10:318:11 | TT | -| main.rs:321:25:321:28 | self | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:321:25:321:31 | self.p1 | | main.rs:238:5:241:5 | MyThing | -| main.rs:321:25:321:31 | self.p1 | A | main.rs:318:10:318:11 | TT | -| main.rs:322:13:322:17 | alpha | | main.rs:238:5:241:5 | MyThing | -| main.rs:322:13:322:17 | alpha | A | main.rs:318:10:318:11 | TT | -| main.rs:322:13:322:19 | alpha.a | | main.rs:318:10:318:11 | TT | -| main.rs:329:16:329:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:329:16:329:19 | SelfParam | P1 | main.rs:327:10:327:10 | A | -| main.rs:329:16:329:19 | SelfParam | P2 | main.rs:327:10:327:10 | A | -| main.rs:329:27:331:9 | { ... } | | main.rs:327:10:327:10 | A | -| main.rs:330:13:330:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:330:13:330:16 | self | P1 | main.rs:327:10:327:10 | A | -| main.rs:330:13:330:16 | self | P2 | main.rs:327:10:327:10 | A | -| main.rs:330:13:330:19 | self.p1 | | main.rs:327:10:327:10 | A | -| main.rs:334:16:334:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:334:16:334:19 | SelfParam | P1 | main.rs:327:10:327:10 | A | -| main.rs:334:16:334:19 | SelfParam | P2 | main.rs:327:10:327:10 | A | -| main.rs:334:27:336:9 | { ... } | | main.rs:327:10:327:10 | A | -| main.rs:335:13:335:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:335:13:335:16 | self | P1 | main.rs:327:10:327:10 | A | -| main.rs:335:13:335:16 | self | P2 | main.rs:327:10:327:10 | A | -| main.rs:335:13:335:19 | self.p2 | | main.rs:327:10:327:10 | A | -| main.rs:342:16:342:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:342:16:342:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:342:16:342:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:342:28:344:9 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:343:13:343:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:343:13:343:16 | self | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:343:13:343:16 | self | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:343:13:343:19 | self.p2 | | main.rs:249:5:250:14 | S1 | -| main.rs:347:16:347:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | -| main.rs:347:16:347:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:347:16:347:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:347:28:349:9 | { ... } | | main.rs:251:5:252:14 | S2 | -| main.rs:348:13:348:16 | self | | main.rs:243:5:247:5 | MyPair | -| main.rs:348:13:348:16 | self | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:348:13:348:16 | self | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:348:13:348:19 | self.p1 | | main.rs:251:5:252:14 | S2 | -| main.rs:352:46:352:46 | p | | main.rs:352:24:352:43 | P | -| main.rs:352:58:354:5 | { ... } | | main.rs:352:16:352:17 | V1 | -| main.rs:353:9:353:9 | p | | main.rs:352:24:352:43 | P | -| main.rs:353:9:353:15 | p.fst() | | main.rs:352:16:352:17 | V1 | -| main.rs:356:46:356:46 | p | | main.rs:356:24:356:43 | P | -| main.rs:356:58:358:5 | { ... } | | main.rs:356:20:356:21 | V2 | -| main.rs:357:9:357:9 | p | | main.rs:356:24:356:43 | P | -| main.rs:357:9:357:15 | p.snd() | | main.rs:356:20:356:21 | V2 | -| main.rs:360:54:360:54 | p | | main.rs:243:5:247:5 | MyPair | -| main.rs:360:54:360:54 | p | P1 | main.rs:360:20:360:21 | V0 | -| main.rs:360:54:360:54 | p | P2 | main.rs:360:32:360:51 | P | -| main.rs:360:78:362:5 | { ... } | | main.rs:360:24:360:25 | V1 | -| main.rs:361:9:361:9 | p | | main.rs:243:5:247:5 | MyPair | -| main.rs:361:9:361:9 | p | P1 | main.rs:360:20:360:21 | V0 | -| main.rs:361:9:361:9 | p | P2 | main.rs:360:32:360:51 | P | -| main.rs:361:9:361:12 | p.p2 | | main.rs:360:32:360:51 | P | -| main.rs:361:9:361:18 | ... .fst() | | main.rs:360:24:360:25 | V1 | -| main.rs:366:23:366:26 | SelfParam | | main.rs:364:5:367:5 | Self [trait ConvertTo] | -| main.rs:371:23:371:26 | SelfParam | | main.rs:369:10:369:23 | T | -| main.rs:371:35:373:9 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:372:13:372:16 | self | | main.rs:369:10:369:23 | T | -| main.rs:372:13:372:21 | self.m1() | | main.rs:249:5:250:14 | S1 | -| main.rs:376:41:376:45 | thing | | main.rs:376:23:376:38 | T | -| main.rs:376:57:378:5 | { ... } | | main.rs:376:19:376:20 | TS | -| main.rs:377:9:377:13 | thing | | main.rs:376:23:376:38 | T | -| main.rs:377:9:377:26 | thing.convert_to() | | main.rs:376:19:376:20 | TS | -| main.rs:380:56:380:60 | thing | | main.rs:380:39:380:53 | TP | -| main.rs:380:73:383:5 | { ... } | | main.rs:249:5:250:14 | S1 | -| main.rs:382:9:382:13 | thing | | main.rs:380:39:380:53 | TP | -| main.rs:382:9:382:26 | thing.convert_to() | | main.rs:249:5:250:14 | S1 | -| main.rs:385:16:456:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:386:13:386:20 | thing_s1 | | main.rs:238:5:241:5 | MyThing | -| main.rs:386:13:386:20 | thing_s1 | A | main.rs:249:5:250:14 | S1 | -| main.rs:386:24:386:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:386:24:386:40 | MyThing {...} | A | main.rs:249:5:250:14 | S1 | -| main.rs:386:37:386:38 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:387:13:387:20 | thing_s2 | | main.rs:238:5:241:5 | MyThing | -| main.rs:387:13:387:20 | thing_s2 | A | main.rs:251:5:252:14 | S2 | -| main.rs:387:24:387:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:387:24:387:40 | MyThing {...} | A | main.rs:251:5:252:14 | S2 | -| main.rs:387:37:387:38 | S2 | | main.rs:251:5:252:14 | S2 | -| main.rs:388:13:388:20 | thing_s3 | | main.rs:238:5:241:5 | MyThing | -| main.rs:388:13:388:20 | thing_s3 | A | main.rs:253:5:254:14 | S3 | -| main.rs:388:24:388:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:388:24:388:40 | MyThing {...} | A | main.rs:253:5:254:14 | S3 | -| main.rs:388:37:388:38 | S3 | | main.rs:253:5:254:14 | S3 | -| main.rs:392:9:392:39 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:392:18:392:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:392:18:392:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:392:18:392:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:392:18:392:38 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:392:18:392:38 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:392:26:392:33 | thing_s1 | | main.rs:238:5:241:5 | MyThing | -| main.rs:392:26:392:33 | thing_s1 | A | main.rs:249:5:250:14 | S1 | -| main.rs:392:26:392:38 | thing_s1.m1() | | main.rs:249:5:250:14 | S1 | -| main.rs:393:9:393:41 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:393:18:393:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:393:18:393:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:393:18:393:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:393:18:393:40 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:393:18:393:40 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:393:26:393:33 | thing_s2 | | main.rs:238:5:241:5 | MyThing | -| main.rs:393:26:393:33 | thing_s2 | A | main.rs:251:5:252:14 | S2 | -| main.rs:393:26:393:38 | thing_s2.m1() | | main.rs:238:5:241:5 | MyThing | -| main.rs:393:26:393:38 | thing_s2.m1() | A | main.rs:251:5:252:14 | S2 | -| main.rs:393:26:393:40 | ... .a | | main.rs:251:5:252:14 | S2 | -| main.rs:394:13:394:14 | s3 | | main.rs:253:5:254:14 | S3 | -| main.rs:394:22:394:29 | thing_s3 | | main.rs:238:5:241:5 | MyThing | -| main.rs:394:22:394:29 | thing_s3 | A | main.rs:253:5:254:14 | S3 | -| main.rs:394:22:394:34 | thing_s3.m1() | | main.rs:253:5:254:14 | S3 | -| main.rs:395:9:395:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:395:18:395:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:395:18:395:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:395:18:395:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:395:18:395:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:395:18:395:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:395:26:395:27 | s3 | | main.rs:253:5:254:14 | S3 | -| main.rs:397:13:397:14 | p1 | | main.rs:243:5:247:5 | MyPair | -| main.rs:397:13:397:14 | p1 | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:397:13:397:14 | p1 | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:397:18:397:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:397:18:397:42 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:397:18:397:42 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:397:31:397:32 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:397:39:397:40 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:398:9:398:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:398:18:398:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:398:18:398:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:398:18:398:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:398:18:398:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:398:18:398:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:398:26:398:27 | p1 | | main.rs:243:5:247:5 | MyPair | -| main.rs:398:26:398:27 | p1 | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:398:26:398:27 | p1 | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:398:26:398:32 | p1.m1() | | main.rs:249:5:250:14 | S1 | -| main.rs:400:13:400:14 | p2 | | main.rs:243:5:247:5 | MyPair | -| main.rs:400:13:400:14 | p2 | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:400:13:400:14 | p2 | P2 | main.rs:251:5:252:14 | S2 | -| main.rs:400:18:400:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:400:18:400:42 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:400:18:400:42 | MyPair {...} | P2 | main.rs:251:5:252:14 | S2 | -| main.rs:400:31:400:32 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:400:39:400:40 | S2 | | main.rs:251:5:252:14 | S2 | -| main.rs:401:9:401:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:401:18:401:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:401:18:401:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:401:18:401:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:401:18:401:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:401:18:401:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:401:26:401:27 | p2 | | main.rs:243:5:247:5 | MyPair | -| main.rs:401:26:401:27 | p2 | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:401:26:401:27 | p2 | P2 | main.rs:251:5:252:14 | S2 | -| main.rs:401:26:401:32 | p2.m1() | | main.rs:253:5:254:14 | S3 | -| main.rs:403:13:403:14 | p3 | | main.rs:243:5:247:5 | MyPair | -| main.rs:403:13:403:14 | p3 | P1 | main.rs:238:5:241:5 | MyThing | -| main.rs:403:13:403:14 | p3 | P1.A | main.rs:249:5:250:14 | S1 | -| main.rs:403:13:403:14 | p3 | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:403:18:406:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:403:18:406:9 | MyPair {...} | P1 | main.rs:238:5:241:5 | MyThing | -| main.rs:403:18:406:9 | MyPair {...} | P1.A | main.rs:249:5:250:14 | S1 | -| main.rs:403:18:406:9 | MyPair {...} | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:404:17:404:33 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:404:17:404:33 | MyThing {...} | A | main.rs:249:5:250:14 | S1 | -| main.rs:404:30:404:31 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:405:17:405:18 | S3 | | main.rs:253:5:254:14 | S3 | -| main.rs:407:9:407:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:268:15:268:18 | SelfParam | | main.rs:267:5:269:5 | Self [trait MyTrait2] | +| main.rs:273:16:273:19 | SelfParam | | main.rs:271:5:276:5 | Self [trait MyProduct] | +| main.rs:275:16:275:19 | SelfParam | | main.rs:271:5:276:5 | Self [trait MyProduct] | +| main.rs:278:43:278:43 | x | | main.rs:278:26:278:40 | T2 | +| main.rs:278:56:280:5 | { ... } | | main.rs:278:22:278:23 | T1 | +| main.rs:279:9:279:9 | x | | main.rs:278:26:278:40 | T2 | +| main.rs:279:9:279:14 | x.m1() | | main.rs:278:22:278:23 | T1 | +| main.rs:282:71:282:71 | x | | main.rs:282:53:282:68 | T3 | +| main.rs:282:84:284:5 | { ... } | | main.rs:282:32:282:33 | T1 | +| main.rs:283:9:283:9 | x | | main.rs:282:53:282:68 | T3 | +| main.rs:283:9:283:14 | x.m3() | | main.rs:282:36:282:50 | T2 | +| main.rs:283:9:283:19 | ... .m1() | | main.rs:282:32:282:33 | T1 | +| main.rs:288:15:288:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:288:15:288:18 | SelfParam | A | main.rs:249:5:250:14 | S1 | +| main.rs:288:27:290:9 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:289:13:289:16 | self | | main.rs:238:5:241:5 | MyThing | +| main.rs:289:13:289:16 | self | A | main.rs:249:5:250:14 | S1 | +| main.rs:289:13:289:18 | self.a | | main.rs:249:5:250:14 | S1 | +| main.rs:295:15:295:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:295:15:295:18 | SelfParam | A | main.rs:251:5:252:14 | S2 | +| main.rs:295:29:297:9 | { ... } | | main.rs:238:5:241:5 | MyThing | +| main.rs:295:29:297:9 | { ... } | A | main.rs:251:5:252:14 | S2 | +| main.rs:296:13:296:30 | Self {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:296:13:296:30 | Self {...} | A | main.rs:251:5:252:14 | S2 | +| main.rs:296:23:296:26 | self | | main.rs:238:5:241:5 | MyThing | +| main.rs:296:23:296:26 | self | A | main.rs:251:5:252:14 | S2 | +| main.rs:296:23:296:28 | self.a | | main.rs:251:5:252:14 | S2 | +| main.rs:302:15:302:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:302:15:302:18 | SelfParam | A | main.rs:251:5:252:14 | S2 | +| main.rs:302:36:304:9 | { ... } | | main.rs:238:5:241:5 | MyThing | +| main.rs:302:36:304:9 | { ... } | A | main.rs:249:5:250:14 | S1 | +| main.rs:303:13:303:29 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:303:13:303:29 | MyThing {...} | A | main.rs:249:5:250:14 | S1 | +| main.rs:303:26:303:27 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:314:15:314:18 | SelfParam | | main.rs:238:5:241:5 | MyThing | +| main.rs:314:15:314:18 | SelfParam | A | main.rs:253:5:254:14 | S3 | +| main.rs:314:27:316:9 | { ... } | | main.rs:309:10:309:11 | TD | +| main.rs:315:13:315:25 | ...::default(...) | | main.rs:309:10:309:11 | TD | +| main.rs:321:15:321:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:321:15:321:18 | SelfParam | P1 | main.rs:319:10:319:10 | I | +| main.rs:321:15:321:18 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:321:26:323:9 | { ... } | | main.rs:319:10:319:10 | I | +| main.rs:322:13:322:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:322:13:322:16 | self | P1 | main.rs:319:10:319:10 | I | +| main.rs:322:13:322:16 | self | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:322:13:322:19 | self.p1 | | main.rs:319:10:319:10 | I | +| main.rs:328:15:328:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:328:15:328:18 | SelfParam | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:328:15:328:18 | SelfParam | P2 | main.rs:251:5:252:14 | S2 | +| main.rs:328:27:330:9 | { ... } | | main.rs:253:5:254:14 | S3 | +| main.rs:329:13:329:14 | S3 | | main.rs:253:5:254:14 | S3 | +| main.rs:335:15:335:18 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:335:15:335:18 | SelfParam | P1 | main.rs:238:5:241:5 | MyThing | +| main.rs:335:15:335:18 | SelfParam | P1.A | main.rs:333:10:333:11 | TT | +| main.rs:335:15:335:18 | SelfParam | P2 | main.rs:253:5:254:14 | S3 | +| main.rs:335:27:338:9 | { ... } | | main.rs:333:10:333:11 | TT | +| main.rs:336:17:336:21 | alpha | | main.rs:238:5:241:5 | MyThing | +| main.rs:336:17:336:21 | alpha | A | main.rs:333:10:333:11 | TT | +| main.rs:336:25:336:28 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:336:25:336:28 | self | P1 | main.rs:238:5:241:5 | MyThing | +| main.rs:336:25:336:28 | self | P1.A | main.rs:333:10:333:11 | TT | +| main.rs:336:25:336:28 | self | P2 | main.rs:253:5:254:14 | S3 | +| main.rs:336:25:336:31 | self.p1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:336:25:336:31 | self.p1 | A | main.rs:333:10:333:11 | TT | +| main.rs:337:13:337:17 | alpha | | main.rs:238:5:241:5 | MyThing | +| main.rs:337:13:337:17 | alpha | A | main.rs:333:10:333:11 | TT | +| main.rs:337:13:337:19 | alpha.a | | main.rs:333:10:333:11 | TT | +| main.rs:344:16:344:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:344:16:344:19 | SelfParam | P1 | main.rs:342:10:342:10 | A | +| main.rs:344:16:344:19 | SelfParam | P2 | main.rs:342:10:342:10 | A | +| main.rs:344:27:346:9 | { ... } | | main.rs:342:10:342:10 | A | +| main.rs:345:13:345:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:345:13:345:16 | self | P1 | main.rs:342:10:342:10 | A | +| main.rs:345:13:345:16 | self | P2 | main.rs:342:10:342:10 | A | +| main.rs:345:13:345:19 | self.p1 | | main.rs:342:10:342:10 | A | +| main.rs:349:16:349:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:349:16:349:19 | SelfParam | P1 | main.rs:342:10:342:10 | A | +| main.rs:349:16:349:19 | SelfParam | P2 | main.rs:342:10:342:10 | A | +| main.rs:349:27:351:9 | { ... } | | main.rs:342:10:342:10 | A | +| main.rs:350:13:350:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:350:13:350:16 | self | P1 | main.rs:342:10:342:10 | A | +| main.rs:350:13:350:16 | self | P2 | main.rs:342:10:342:10 | A | +| main.rs:350:13:350:19 | self.p2 | | main.rs:342:10:342:10 | A | +| main.rs:357:16:357:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:357:16:357:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:357:16:357:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:357:28:359:9 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:358:13:358:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:358:13:358:16 | self | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:358:13:358:16 | self | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:358:13:358:19 | self.p2 | | main.rs:249:5:250:14 | S1 | +| main.rs:362:16:362:19 | SelfParam | | main.rs:243:5:247:5 | MyPair | +| main.rs:362:16:362:19 | SelfParam | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:362:16:362:19 | SelfParam | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:362:28:364:9 | { ... } | | main.rs:251:5:252:14 | S2 | +| main.rs:363:13:363:16 | self | | main.rs:243:5:247:5 | MyPair | +| main.rs:363:13:363:16 | self | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:363:13:363:16 | self | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:363:13:363:19 | self.p1 | | main.rs:251:5:252:14 | S2 | +| main.rs:367:46:367:46 | p | | main.rs:367:24:367:43 | P | +| main.rs:367:58:369:5 | { ... } | | main.rs:367:16:367:17 | V1 | +| main.rs:368:9:368:9 | p | | main.rs:367:24:367:43 | P | +| main.rs:368:9:368:15 | p.fst() | | main.rs:367:16:367:17 | V1 | +| main.rs:371:46:371:46 | p | | main.rs:371:24:371:43 | P | +| main.rs:371:58:373:5 | { ... } | | main.rs:371:20:371:21 | V2 | +| main.rs:372:9:372:9 | p | | main.rs:371:24:371:43 | P | +| main.rs:372:9:372:15 | p.snd() | | main.rs:371:20:371:21 | V2 | +| main.rs:375:54:375:54 | p | | main.rs:243:5:247:5 | MyPair | +| main.rs:375:54:375:54 | p | P1 | main.rs:375:20:375:21 | V0 | +| main.rs:375:54:375:54 | p | P2 | main.rs:375:32:375:51 | P | +| main.rs:375:78:377:5 | { ... } | | main.rs:375:24:375:25 | V1 | +| main.rs:376:9:376:9 | p | | main.rs:243:5:247:5 | MyPair | +| main.rs:376:9:376:9 | p | P1 | main.rs:375:20:375:21 | V0 | +| main.rs:376:9:376:9 | p | P2 | main.rs:375:32:375:51 | P | +| main.rs:376:9:376:12 | p.p2 | | main.rs:375:32:375:51 | P | +| main.rs:376:9:376:18 | ... .fst() | | main.rs:375:24:375:25 | V1 | +| main.rs:381:23:381:26 | SelfParam | | main.rs:379:5:382:5 | Self [trait ConvertTo] | +| main.rs:386:23:386:26 | SelfParam | | main.rs:384:10:384:23 | T | +| main.rs:386:35:388:9 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:387:13:387:16 | self | | main.rs:384:10:384:23 | T | +| main.rs:387:13:387:21 | self.m1() | | main.rs:249:5:250:14 | S1 | +| main.rs:391:41:391:45 | thing | | main.rs:391:23:391:38 | T | +| main.rs:391:57:393:5 | { ... } | | main.rs:391:19:391:20 | TS | +| main.rs:392:9:392:13 | thing | | main.rs:391:23:391:38 | T | +| main.rs:392:9:392:26 | thing.convert_to() | | main.rs:391:19:391:20 | TS | +| main.rs:395:56:395:60 | thing | | main.rs:395:39:395:53 | TP | +| main.rs:395:73:398:5 | { ... } | | main.rs:249:5:250:14 | S1 | +| main.rs:397:9:397:13 | thing | | main.rs:395:39:395:53 | TP | +| main.rs:397:9:397:26 | thing.convert_to() | | main.rs:249:5:250:14 | S1 | +| main.rs:400:16:473:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:401:13:401:20 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:401:13:401:20 | thing_s1 | A | main.rs:249:5:250:14 | S1 | +| main.rs:401:24:401:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:401:24:401:40 | MyThing {...} | A | main.rs:249:5:250:14 | S1 | +| main.rs:401:37:401:38 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:402:13:402:20 | thing_s2 | | main.rs:238:5:241:5 | MyThing | +| main.rs:402:13:402:20 | thing_s2 | A | main.rs:251:5:252:14 | S2 | +| main.rs:402:24:402:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:402:24:402:40 | MyThing {...} | A | main.rs:251:5:252:14 | S2 | +| main.rs:402:37:402:38 | S2 | | main.rs:251:5:252:14 | S2 | +| main.rs:403:13:403:20 | thing_s3 | | main.rs:238:5:241:5 | MyThing | +| main.rs:403:13:403:20 | thing_s3 | A | main.rs:253:5:254:14 | S3 | +| main.rs:403:24:403:40 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:403:24:403:40 | MyThing {...} | A | main.rs:253:5:254:14 | S3 | +| main.rs:403:37:403:38 | S3 | | main.rs:253:5:254:14 | S3 | +| main.rs:407:9:407:39 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:407:18:407:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:407:18:407:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:407:18:407:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:407:18:407:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:407:18:407:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:407:26:407:27 | p3 | | main.rs:243:5:247:5 | MyPair | -| main.rs:407:26:407:27 | p3 | P1 | main.rs:238:5:241:5 | MyThing | -| main.rs:407:26:407:27 | p3 | P1.A | main.rs:249:5:250:14 | S1 | -| main.rs:407:26:407:27 | p3 | P2 | main.rs:253:5:254:14 | S3 | -| main.rs:407:26:407:32 | p3.m1() | | main.rs:249:5:250:14 | S1 | -| main.rs:410:13:410:13 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:410:13:410:13 | a | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:410:13:410:13 | a | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:410:17:410:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:410:17:410:41 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:410:17:410:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:410:30:410:31 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:410:38:410:39 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:411:13:411:13 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:411:17:411:17 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:411:17:411:17 | a | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:411:17:411:17 | a | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:411:17:411:23 | a.fst() | | main.rs:249:5:250:14 | S1 | -| main.rs:412:9:412:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:412:18:412:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:412:18:412:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:412:18:412:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:412:18:412:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:412:18:412:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:412:26:412:26 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:413:13:413:13 | y | | main.rs:249:5:250:14 | S1 | -| main.rs:413:17:413:17 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:413:17:413:17 | a | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:413:17:413:17 | a | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:413:17:413:23 | a.snd() | | main.rs:249:5:250:14 | S1 | -| main.rs:414:9:414:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:414:18:414:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:414:18:414:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:414:18:414:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:414:18:414:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:414:18:414:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:414:26:414:26 | y | | main.rs:249:5:250:14 | S1 | -| main.rs:420:13:420:13 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:420:13:420:13 | b | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:420:13:420:13 | b | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:420:17:420:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:420:17:420:41 | MyPair {...} | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:420:17:420:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:420:30:420:31 | S2 | | main.rs:251:5:252:14 | S2 | -| main.rs:420:38:420:39 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:421:13:421:13 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:421:17:421:17 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:421:17:421:17 | b | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:421:17:421:17 | b | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:421:17:421:23 | b.fst() | | main.rs:249:5:250:14 | S1 | -| main.rs:422:9:422:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:407:18:407:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:407:18:407:38 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:407:18:407:38 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:407:26:407:33 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:407:26:407:33 | thing_s1 | A | main.rs:249:5:250:14 | S1 | +| main.rs:407:26:407:38 | thing_s1.m1() | | main.rs:249:5:250:14 | S1 | +| main.rs:408:9:408:41 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:408:18:408:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:408:18:408:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:408:18:408:40 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:408:18:408:40 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:408:18:408:40 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:408:26:408:33 | thing_s2 | | main.rs:238:5:241:5 | MyThing | +| main.rs:408:26:408:33 | thing_s2 | A | main.rs:251:5:252:14 | S2 | +| main.rs:408:26:408:38 | thing_s2.m1() | | main.rs:238:5:241:5 | MyThing | +| main.rs:408:26:408:38 | thing_s2.m1() | A | main.rs:251:5:252:14 | S2 | +| main.rs:408:26:408:40 | ... .a | | main.rs:251:5:252:14 | S2 | +| main.rs:409:13:409:14 | s3 | | main.rs:253:5:254:14 | S3 | +| main.rs:409:22:409:29 | thing_s3 | | main.rs:238:5:241:5 | MyThing | +| main.rs:409:22:409:29 | thing_s3 | A | main.rs:253:5:254:14 | S3 | +| main.rs:409:22:409:34 | thing_s3.m1() | | main.rs:253:5:254:14 | S3 | +| main.rs:410:9:410:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:410:18:410:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:410:18:410:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:410:18:410:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:410:18:410:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:410:18:410:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:410:26:410:27 | s3 | | main.rs:253:5:254:14 | S3 | +| main.rs:412:13:412:14 | p1 | | main.rs:243:5:247:5 | MyPair | +| main.rs:412:13:412:14 | p1 | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:412:13:412:14 | p1 | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:412:18:412:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:412:18:412:42 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:412:18:412:42 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:412:31:412:32 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:412:39:412:40 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:413:9:413:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:413:18:413:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:413:18:413:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:413:18:413:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:413:18:413:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:413:18:413:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:413:26:413:27 | p1 | | main.rs:243:5:247:5 | MyPair | +| main.rs:413:26:413:27 | p1 | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:413:26:413:27 | p1 | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:413:26:413:32 | p1.m1() | | main.rs:249:5:250:14 | S1 | +| main.rs:415:13:415:14 | p2 | | main.rs:243:5:247:5 | MyPair | +| main.rs:415:13:415:14 | p2 | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:415:13:415:14 | p2 | P2 | main.rs:251:5:252:14 | S2 | +| main.rs:415:18:415:42 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:415:18:415:42 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:415:18:415:42 | MyPair {...} | P2 | main.rs:251:5:252:14 | S2 | +| main.rs:415:31:415:32 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:415:39:415:40 | S2 | | main.rs:251:5:252:14 | S2 | +| main.rs:416:9:416:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:416:18:416:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:416:18:416:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:416:18:416:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:416:18:416:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:416:18:416:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:416:26:416:27 | p2 | | main.rs:243:5:247:5 | MyPair | +| main.rs:416:26:416:27 | p2 | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:416:26:416:27 | p2 | P2 | main.rs:251:5:252:14 | S2 | +| main.rs:416:26:416:32 | p2.m1() | | main.rs:253:5:254:14 | S3 | +| main.rs:418:13:418:14 | p3 | | main.rs:243:5:247:5 | MyPair | +| main.rs:418:13:418:14 | p3 | P1 | main.rs:238:5:241:5 | MyThing | +| main.rs:418:13:418:14 | p3 | P1.A | main.rs:249:5:250:14 | S1 | +| main.rs:418:13:418:14 | p3 | P2 | main.rs:253:5:254:14 | S3 | +| main.rs:418:18:421:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:418:18:421:9 | MyPair {...} | P1 | main.rs:238:5:241:5 | MyThing | +| main.rs:418:18:421:9 | MyPair {...} | P1.A | main.rs:249:5:250:14 | S1 | +| main.rs:418:18:421:9 | MyPair {...} | P2 | main.rs:253:5:254:14 | S3 | +| main.rs:419:17:419:33 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:419:17:419:33 | MyThing {...} | A | main.rs:249:5:250:14 | S1 | +| main.rs:419:30:419:31 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:420:17:420:18 | S3 | | main.rs:253:5:254:14 | S3 | +| main.rs:422:9:422:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:422:18:422:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:422:18:422:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:422:18:422:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:422:18:422:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:422:18:422:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:422:26:422:26 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:423:13:423:13 | y | | main.rs:251:5:252:14 | S2 | -| main.rs:423:17:423:17 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:423:17:423:17 | b | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:423:17:423:17 | b | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:423:17:423:23 | b.snd() | | main.rs:251:5:252:14 | S2 | -| main.rs:424:9:424:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:424:18:424:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:424:18:424:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:424:18:424:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:424:18:424:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:424:18:424:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:424:26:424:26 | y | | main.rs:251:5:252:14 | S2 | -| main.rs:428:13:428:13 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:428:17:428:39 | call_trait_m1(...) | | main.rs:249:5:250:14 | S1 | -| main.rs:428:31:428:38 | thing_s1 | | main.rs:238:5:241:5 | MyThing | -| main.rs:428:31:428:38 | thing_s1 | A | main.rs:249:5:250:14 | S1 | +| main.rs:422:18:422:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:422:18:422:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:422:18:422:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:422:26:422:27 | p3 | | main.rs:243:5:247:5 | MyPair | +| main.rs:422:26:422:27 | p3 | P1 | main.rs:238:5:241:5 | MyThing | +| main.rs:422:26:422:27 | p3 | P1.A | main.rs:249:5:250:14 | S1 | +| main.rs:422:26:422:27 | p3 | P2 | main.rs:253:5:254:14 | S3 | +| main.rs:422:26:422:32 | p3.m1() | | main.rs:249:5:250:14 | S1 | +| main.rs:425:13:425:13 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:425:13:425:13 | a | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:425:13:425:13 | a | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:425:17:425:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:425:17:425:41 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:425:17:425:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:425:30:425:31 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:425:38:425:39 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:426:13:426:13 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:426:17:426:17 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:426:17:426:17 | a | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:426:17:426:17 | a | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:426:17:426:23 | a.fst() | | main.rs:249:5:250:14 | S1 | +| main.rs:427:9:427:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:427:18:427:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:427:18:427:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:427:18:427:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:427:18:427:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:427:18:427:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:427:26:427:26 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:428:13:428:13 | y | | main.rs:249:5:250:14 | S1 | +| main.rs:428:17:428:17 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:428:17:428:17 | a | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:428:17:428:17 | a | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:428:17:428:23 | a.snd() | | main.rs:249:5:250:14 | S1 | | main.rs:429:9:429:27 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:429:18:429:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:429:18:429:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | main.rs:429:18:429:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:429:18:429:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:429:26:429:26 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:430:13:430:13 | y | | main.rs:238:5:241:5 | MyThing | -| main.rs:430:13:430:13 | y | A | main.rs:251:5:252:14 | S2 | -| main.rs:430:17:430:39 | call_trait_m1(...) | | main.rs:238:5:241:5 | MyThing | -| main.rs:430:17:430:39 | call_trait_m1(...) | A | main.rs:251:5:252:14 | S2 | -| main.rs:430:31:430:38 | thing_s2 | | main.rs:238:5:241:5 | MyThing | -| main.rs:430:31:430:38 | thing_s2 | A | main.rs:251:5:252:14 | S2 | -| main.rs:431:9:431:29 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:431:18:431:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:431:18:431:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:431:18:431:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:431:18:431:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:431:18:431:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:431:26:431:26 | y | | main.rs:238:5:241:5 | MyThing | -| main.rs:431:26:431:26 | y | A | main.rs:251:5:252:14 | S2 | -| main.rs:431:26:431:28 | y.a | | main.rs:251:5:252:14 | S2 | -| main.rs:434:13:434:13 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:434:13:434:13 | a | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:434:13:434:13 | a | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:434:17:434:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:434:17:434:41 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:434:17:434:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:434:30:434:31 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:434:38:434:39 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:435:13:435:13 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:435:17:435:26 | get_fst(...) | | main.rs:249:5:250:14 | S1 | -| main.rs:435:25:435:25 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:435:25:435:25 | a | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:435:25:435:25 | a | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:436:9:436:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:436:18:436:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:436:18:436:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:436:18:436:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:436:18:436:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:436:18:436:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:436:26:436:26 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:437:13:437:13 | y | | main.rs:249:5:250:14 | S1 | -| main.rs:437:17:437:26 | get_snd(...) | | main.rs:249:5:250:14 | S1 | -| main.rs:437:25:437:25 | a | | main.rs:243:5:247:5 | MyPair | -| main.rs:437:25:437:25 | a | P1 | main.rs:249:5:250:14 | S1 | -| main.rs:437:25:437:25 | a | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:438:9:438:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:438:18:438:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:438:18:438:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:438:18:438:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:438:18:438:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:438:18:438:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:438:26:438:26 | y | | main.rs:249:5:250:14 | S1 | -| main.rs:441:13:441:13 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:441:13:441:13 | b | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:441:13:441:13 | b | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:441:17:441:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:441:17:441:41 | MyPair {...} | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:441:17:441:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:441:30:441:31 | S2 | | main.rs:251:5:252:14 | S2 | -| main.rs:441:38:441:39 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:442:13:442:13 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:442:17:442:26 | get_fst(...) | | main.rs:249:5:250:14 | S1 | -| main.rs:442:25:442:25 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:442:25:442:25 | b | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:442:25:442:25 | b | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:443:9:443:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:443:18:443:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:443:18:443:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:443:18:443:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:443:18:443:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:443:18:443:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:443:26:443:26 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:444:13:444:13 | y | | main.rs:251:5:252:14 | S2 | -| main.rs:444:17:444:26 | get_snd(...) | | main.rs:251:5:252:14 | S2 | -| main.rs:444:25:444:25 | b | | main.rs:243:5:247:5 | MyPair | -| main.rs:444:25:444:25 | b | P1 | main.rs:251:5:252:14 | S2 | -| main.rs:444:25:444:25 | b | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:445:9:445:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:445:18:445:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:445:18:445:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:445:18:445:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:445:18:445:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:445:18:445:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:445:26:445:26 | y | | main.rs:251:5:252:14 | S2 | -| main.rs:447:13:447:13 | c | | main.rs:243:5:247:5 | MyPair | -| main.rs:447:13:447:13 | c | P1 | main.rs:253:5:254:14 | S3 | -| main.rs:447:13:447:13 | c | P2 | main.rs:243:5:247:5 | MyPair | -| main.rs:447:13:447:13 | c | P2.P1 | main.rs:251:5:252:14 | S2 | -| main.rs:447:13:447:13 | c | P2.P2 | main.rs:249:5:250:14 | S1 | -| main.rs:447:17:450:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:447:17:450:9 | MyPair {...} | P1 | main.rs:253:5:254:14 | S3 | -| main.rs:447:17:450:9 | MyPair {...} | P2 | main.rs:243:5:247:5 | MyPair | -| main.rs:447:17:450:9 | MyPair {...} | P2.P1 | main.rs:251:5:252:14 | S2 | -| main.rs:447:17:450:9 | MyPair {...} | P2.P2 | main.rs:249:5:250:14 | S1 | -| main.rs:448:17:448:18 | S3 | | main.rs:253:5:254:14 | S3 | +| main.rs:429:26:429:26 | y | | main.rs:249:5:250:14 | S1 | +| main.rs:435:13:435:13 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:435:13:435:13 | b | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:435:13:435:13 | b | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:435:17:435:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:435:17:435:41 | MyPair {...} | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:435:17:435:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:435:30:435:31 | S2 | | main.rs:251:5:252:14 | S2 | +| main.rs:435:38:435:39 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:436:13:436:13 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:436:17:436:17 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:436:17:436:17 | b | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:436:17:436:17 | b | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:436:17:436:23 | b.fst() | | main.rs:249:5:250:14 | S1 | +| main.rs:437:9:437:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:437:18:437:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:437:18:437:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:437:18:437:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:437:18:437:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:437:18:437:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:437:26:437:26 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:438:13:438:13 | y | | main.rs:251:5:252:14 | S2 | +| main.rs:438:17:438:17 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:438:17:438:17 | b | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:438:17:438:17 | b | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:438:17:438:23 | b.snd() | | main.rs:251:5:252:14 | S2 | +| main.rs:439:9:439:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:439:18:439:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:439:18:439:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:439:18:439:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:439:18:439:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:439:18:439:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:439:26:439:26 | y | | main.rs:251:5:252:14 | S2 | +| main.rs:443:13:443:13 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:443:17:443:39 | call_trait_m1(...) | | main.rs:249:5:250:14 | S1 | +| main.rs:443:31:443:38 | thing_s1 | | main.rs:238:5:241:5 | MyThing | +| main.rs:443:31:443:38 | thing_s1 | A | main.rs:249:5:250:14 | S1 | +| main.rs:444:9:444:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:444:18:444:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:444:18:444:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:444:18:444:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:444:18:444:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:444:18:444:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:444:26:444:26 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:445:13:445:13 | y | | main.rs:238:5:241:5 | MyThing | +| main.rs:445:13:445:13 | y | A | main.rs:251:5:252:14 | S2 | +| main.rs:445:17:445:39 | call_trait_m1(...) | | main.rs:238:5:241:5 | MyThing | +| main.rs:445:17:445:39 | call_trait_m1(...) | A | main.rs:251:5:252:14 | S2 | +| main.rs:445:31:445:38 | thing_s2 | | main.rs:238:5:241:5 | MyThing | +| main.rs:445:31:445:38 | thing_s2 | A | main.rs:251:5:252:14 | S2 | +| main.rs:446:9:446:29 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:446:18:446:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:446:18:446:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:446:18:446:28 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:446:18:446:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:446:18:446:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:446:26:446:26 | y | | main.rs:238:5:241:5 | MyThing | +| main.rs:446:26:446:26 | y | A | main.rs:251:5:252:14 | S2 | +| main.rs:446:26:446:28 | y.a | | main.rs:251:5:252:14 | S2 | +| main.rs:449:13:449:13 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:449:13:449:13 | a | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:449:13:449:13 | a | P2 | main.rs:249:5:250:14 | S1 | | main.rs:449:17:449:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | -| main.rs:449:17:449:41 | MyPair {...} | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:449:17:449:41 | MyPair {...} | P1 | main.rs:249:5:250:14 | S1 | | main.rs:449:17:449:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | -| main.rs:449:30:449:31 | S2 | | main.rs:251:5:252:14 | S2 | +| main.rs:449:30:449:31 | S1 | | main.rs:249:5:250:14 | S1 | | main.rs:449:38:449:39 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:451:13:451:13 | x | | main.rs:249:5:250:14 | S1 | -| main.rs:451:17:451:30 | get_snd_fst(...) | | main.rs:249:5:250:14 | S1 | -| main.rs:451:29:451:29 | c | | main.rs:243:5:247:5 | MyPair | -| main.rs:451:29:451:29 | c | P1 | main.rs:253:5:254:14 | S3 | -| main.rs:451:29:451:29 | c | P2 | main.rs:243:5:247:5 | MyPair | -| main.rs:451:29:451:29 | c | P2.P1 | main.rs:251:5:252:14 | S2 | -| main.rs:451:29:451:29 | c | P2.P2 | main.rs:249:5:250:14 | S1 | -| main.rs:453:13:453:17 | thing | | main.rs:238:5:241:5 | MyThing | -| main.rs:453:13:453:17 | thing | A | main.rs:249:5:250:14 | S1 | -| main.rs:453:21:453:37 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | -| main.rs:453:21:453:37 | MyThing {...} | A | main.rs:249:5:250:14 | S1 | -| main.rs:453:34:453:35 | S1 | | main.rs:249:5:250:14 | S1 | -| main.rs:454:13:454:13 | i | | main.rs:249:5:250:14 | S1 | -| main.rs:454:17:454:21 | thing | | main.rs:238:5:241:5 | MyThing | -| main.rs:454:17:454:21 | thing | A | main.rs:249:5:250:14 | S1 | -| main.rs:454:17:454:34 | thing.convert_to() | | main.rs:249:5:250:14 | S1 | -| main.rs:455:28:455:32 | thing | | main.rs:238:5:241:5 | MyThing | -| main.rs:455:28:455:32 | thing | A | main.rs:249:5:250:14 | S1 | -| main.rs:474:19:474:22 | SelfParam | | main.rs:472:5:475:5 | Self [trait FirstTrait] | -| main.rs:479:19:479:22 | SelfParam | | main.rs:477:5:480:5 | Self [trait SecondTrait] | -| main.rs:482:64:482:64 | x | | main.rs:482:45:482:61 | T | -| main.rs:482:70:486:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:484:13:484:14 | s1 | | main.rs:482:35:482:42 | I | -| main.rs:484:18:484:18 | x | | main.rs:482:45:482:61 | T | -| main.rs:484:18:484:27 | x.method() | | main.rs:482:35:482:42 | I | -| main.rs:485:9:485:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:485:18:485:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:485:18:485:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:485:18:485:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:485:18:485:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:485:18:485:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:485:26:485:27 | s1 | | main.rs:482:35:482:42 | I | -| main.rs:488:65:488:65 | x | | main.rs:488:46:488:62 | T | -| main.rs:488:71:492:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:490:13:490:14 | s2 | | main.rs:488:36:488:43 | I | -| main.rs:490:18:490:18 | x | | main.rs:488:46:488:62 | T | -| main.rs:490:18:490:27 | x.method() | | main.rs:488:36:488:43 | I | -| main.rs:491:9:491:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:491:18:491:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:491:18:491:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:491:18:491:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:491:18:491:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:491:18:491:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:491:26:491:27 | s2 | | main.rs:488:36:488:43 | I | -| main.rs:494:49:494:49 | x | | main.rs:494:30:494:46 | T | -| main.rs:494:55:497:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:495:13:495:13 | s | | main.rs:464:5:465:14 | S1 | -| main.rs:495:17:495:17 | x | | main.rs:494:30:494:46 | T | -| main.rs:495:17:495:26 | x.method() | | main.rs:464:5:465:14 | S1 | -| main.rs:496:9:496:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:496:18:496:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:496:18:496:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:496:18:496:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:496:18:496:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:496:18:496:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:496:26:496:26 | s | | main.rs:464:5:465:14 | S1 | -| main.rs:499:53:499:53 | x | | main.rs:499:34:499:50 | T | -| main.rs:499:59:502:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:500:13:500:13 | s | | main.rs:464:5:465:14 | S1 | -| main.rs:500:17:500:17 | x | | main.rs:499:34:499:50 | T | -| main.rs:500:17:500:26 | x.method() | | main.rs:464:5:465:14 | S1 | -| main.rs:501:9:501:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:501:18:501:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:501:18:501:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:501:18:501:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:501:18:501:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:501:18:501:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:501:26:501:26 | s | | main.rs:464:5:465:14 | S1 | -| main.rs:504:43:504:43 | x | | main.rs:504:40:504:40 | T | -| main.rs:507:5:510:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:508:13:508:13 | s | | main.rs:464:5:465:14 | S1 | -| main.rs:508:17:508:17 | x | | main.rs:504:40:504:40 | T | -| main.rs:508:17:508:26 | x.method() | | main.rs:464:5:465:14 | S1 | -| main.rs:509:9:509:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:509:18:509:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:509:18:509:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:509:18:509:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:509:18:509:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:509:18:509:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:509:26:509:26 | s | | main.rs:464:5:465:14 | S1 | -| main.rs:513:16:513:19 | SelfParam | | main.rs:512:5:516:5 | Self [trait Pair] | -| main.rs:515:16:515:19 | SelfParam | | main.rs:512:5:516:5 | Self [trait Pair] | -| main.rs:518:53:518:53 | x | | main.rs:518:50:518:50 | T | -| main.rs:518:59:518:59 | y | | main.rs:518:50:518:50 | T | -| main.rs:522:5:525:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:523:13:523:13 | _ | | main.rs:464:5:465:14 | S1 | -| main.rs:523:17:523:17 | x | | main.rs:518:50:518:50 | T | -| main.rs:523:17:523:23 | x.fst() | | main.rs:464:5:465:14 | S1 | -| main.rs:524:13:524:13 | _ | | main.rs:464:5:465:14 | S1 | -| main.rs:524:17:524:17 | y | | main.rs:518:50:518:50 | T | -| main.rs:524:17:524:26 | y.method() | | main.rs:464:5:465:14 | S1 | -| main.rs:527:58:527:58 | x | | main.rs:527:41:527:55 | T | -| main.rs:527:64:527:64 | y | | main.rs:527:41:527:55 | T | -| main.rs:527:70:532:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:529:13:529:14 | s1 | | main.rs:464:5:465:14 | S1 | -| main.rs:529:18:529:18 | x | | main.rs:527:41:527:55 | T | -| main.rs:529:18:529:24 | x.fst() | | main.rs:464:5:465:14 | S1 | -| main.rs:530:13:530:14 | s2 | | main.rs:467:5:468:14 | S2 | -| main.rs:530:18:530:18 | y | | main.rs:527:41:527:55 | T | -| main.rs:530:18:530:24 | y.snd() | | main.rs:467:5:468:14 | S2 | -| main.rs:531:9:531:38 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:531:18:531:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:531:18:531:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:531:18:531:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:531:18:531:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:531:18:531:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:531:32:531:33 | s1 | | main.rs:464:5:465:14 | S1 | -| main.rs:531:36:531:37 | s2 | | main.rs:467:5:468:14 | S2 | -| main.rs:534:69:534:69 | x | | main.rs:534:52:534:66 | T | -| main.rs:534:75:534:75 | y | | main.rs:534:52:534:66 | T | -| main.rs:534:81:539:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:536:13:536:14 | s1 | | main.rs:464:5:465:14 | S1 | -| main.rs:536:18:536:18 | x | | main.rs:534:52:534:66 | T | -| main.rs:536:18:536:24 | x.fst() | | main.rs:464:5:465:14 | S1 | -| main.rs:537:13:537:14 | s2 | | main.rs:534:41:534:49 | T2 | -| main.rs:537:18:537:18 | y | | main.rs:534:52:534:66 | T | -| main.rs:537:18:537:24 | y.snd() | | main.rs:534:41:534:49 | T2 | -| main.rs:538:9:538:38 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:538:18:538:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:538:18:538:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:538:18:538:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:538:18:538:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:538:18:538:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:538:32:538:33 | s1 | | main.rs:464:5:465:14 | S1 | -| main.rs:538:36:538:37 | s2 | | main.rs:534:41:534:49 | T2 | -| main.rs:541:50:541:50 | x | | main.rs:541:41:541:47 | T | -| main.rs:541:56:541:56 | y | | main.rs:541:41:541:47 | T | -| main.rs:541:62:546:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:543:13:543:14 | s1 | | {EXTERNAL LOCATION} | bool | -| main.rs:543:18:543:18 | x | | main.rs:541:41:541:47 | T | -| main.rs:543:18:543:24 | x.fst() | | {EXTERNAL LOCATION} | bool | -| main.rs:544:13:544:14 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:544:18:544:18 | y | | main.rs:541:41:541:47 | T | -| main.rs:544:18:544:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:545:9:545:38 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:545:18:545:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:545:18:545:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:545:18:545:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:545:18:545:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:545:18:545:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:545:32:545:33 | s1 | | {EXTERNAL LOCATION} | bool | -| main.rs:545:36:545:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:548:54:548:54 | x | | main.rs:548:41:548:51 | T | -| main.rs:548:60:548:60 | y | | main.rs:548:41:548:51 | T | -| main.rs:548:66:553:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:550:13:550:14 | s1 | | {EXTERNAL LOCATION} | u8 | -| main.rs:550:18:550:18 | x | | main.rs:548:41:548:51 | T | -| main.rs:550:18:550:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | -| main.rs:551:13:551:14 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:551:18:551:18 | y | | main.rs:548:41:548:51 | T | -| main.rs:551:18:551:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | -| main.rs:552:9:552:38 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:552:18:552:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:552:18:552:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:552:18:552:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:552:18:552:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:552:18:552:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:552:32:552:33 | s1 | | {EXTERNAL LOCATION} | u8 | -| main.rs:552:36:552:37 | s2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:560:18:560:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:560:18:560:22 | SelfParam | TRef | main.rs:557:5:561:5 | Self [trait TraitWithSelfTp] | -| main.rs:563:40:563:44 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:563:40:563:44 | thing | TRef | main.rs:563:17:563:37 | T | -| main.rs:563:56:565:5 | { ... } | | main.rs:563:14:563:14 | A | -| main.rs:564:9:564:13 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:564:9:564:13 | thing | TRef | main.rs:563:17:563:37 | T | -| main.rs:564:9:564:21 | thing.get_a() | | main.rs:563:14:563:14 | A | -| main.rs:568:44:568:48 | thing | | main.rs:568:24:568:41 | S | -| main.rs:568:61:571:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:569:13:569:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:569:13:569:15 | _ms | T | main.rs:568:24:568:41 | S | -| main.rs:569:19:569:23 | thing | | main.rs:568:24:568:41 | S | -| main.rs:569:19:569:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | -| main.rs:569:19:569:31 | thing.get_a() | T | main.rs:568:24:568:41 | S | -| main.rs:570:9:570:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:570:9:570:9 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:576:55:576:59 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:576:55:576:59 | thing | TRef | main.rs:576:25:576:52 | S | -| main.rs:576:66:579:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:578:13:578:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:578:13:578:15 | _ms | T | main.rs:576:25:576:52 | S | -| main.rs:578:19:578:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:578:19:578:30 | get_a(...) | T | main.rs:576:25:576:52 | S | -| main.rs:578:25:578:29 | thing | | {EXTERNAL LOCATION} | & | -| main.rs:578:25:578:29 | thing | TRef | main.rs:576:25:576:52 | S | -| main.rs:587:18:587:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:587:18:587:22 | SelfParam | TRef | main.rs:581:5:583:5 | MyStruct | -| main.rs:587:41:589:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:587:41:589:9 | { ... } | T | main.rs:581:5:583:5 | MyStruct | -| main.rs:588:13:588:48 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:588:13:588:48 | Some(...) | T | main.rs:581:5:583:5 | MyStruct | -| main.rs:588:18:588:47 | MyStruct {...} | | main.rs:581:5:583:5 | MyStruct | -| main.rs:588:36:588:39 | self | | {EXTERNAL LOCATION} | & | -| main.rs:588:36:588:39 | self | TRef | main.rs:581:5:583:5 | MyStruct | -| main.rs:588:36:588:45 | self.value | | {EXTERNAL LOCATION} | i32 | -| main.rs:594:19:597:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:595:13:595:13 | s | | main.rs:581:5:583:5 | MyStruct | -| main.rs:595:17:595:37 | MyStruct {...} | | main.rs:581:5:583:5 | MyStruct | -| main.rs:595:35:595:35 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:596:13:596:15 | _ms | | {EXTERNAL LOCATION} | Option | -| main.rs:596:13:596:15 | _ms | T | main.rs:581:5:583:5 | MyStruct | -| main.rs:596:19:596:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:596:19:596:27 | get_a(...) | T | main.rs:581:5:583:5 | MyStruct | -| main.rs:596:25:596:26 | &s | | {EXTERNAL LOCATION} | & | -| main.rs:596:25:596:26 | &s | TRef | main.rs:581:5:583:5 | MyStruct | -| main.rs:596:26:596:26 | s | | main.rs:581:5:583:5 | MyStruct | -| main.rs:612:15:612:18 | SelfParam | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:614:15:614:18 | SelfParam | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:617:9:619:9 | { ... } | | main.rs:611:19:611:19 | A | -| main.rs:618:13:618:16 | self | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:618:13:618:21 | self.m1() | | main.rs:611:19:611:19 | A | -| main.rs:621:18:621:18 | x | | main.rs:611:5:622:5 | Self [trait MyTrait] | -| main.rs:625:15:625:18 | SelfParam | | main.rs:608:5:609:14 | S2 | -| main.rs:625:26:627:9 | { ... } | | main.rs:624:10:624:19 | T | -| main.rs:626:13:626:30 | ...::default(...) | | main.rs:624:10:624:19 | T | -| main.rs:629:18:629:18 | x | | main.rs:608:5:609:14 | S2 | -| main.rs:629:32:631:9 | { ... } | | main.rs:624:10:624:19 | T | -| main.rs:630:13:630:30 | ...::default(...) | | main.rs:624:10:624:19 | T | -| main.rs:635:15:635:18 | SelfParam | | main.rs:606:5:607:14 | S1 | -| main.rs:635:28:637:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:636:13:636:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:639:18:639:18 | x | | main.rs:606:5:607:14 | S1 | -| main.rs:639:34:641:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:640:13:640:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:646:50:646:50 | x | | main.rs:646:26:646:47 | T2 | -| main.rs:646:63:649:5 | { ... } | | main.rs:646:22:646:23 | T1 | -| main.rs:647:9:647:9 | x | | main.rs:646:26:646:47 | T2 | -| main.rs:647:9:647:14 | x.m1() | | main.rs:646:22:646:23 | T1 | -| main.rs:648:9:648:9 | x | | main.rs:646:26:646:47 | T2 | -| main.rs:648:9:648:14 | x.m1() | | main.rs:646:22:646:23 | T1 | -| main.rs:650:52:650:52 | x | | main.rs:650:28:650:49 | T2 | -| main.rs:650:65:654:5 | { ... } | | main.rs:650:24:650:25 | T1 | -| main.rs:651:13:651:13 | y | | main.rs:650:24:650:25 | T1 | -| main.rs:651:17:651:25 | ...::m1(...) | | main.rs:650:24:650:25 | T1 | -| main.rs:651:24:651:24 | x | | main.rs:650:28:650:49 | T2 | -| main.rs:652:9:652:9 | y | | main.rs:650:24:650:25 | T1 | -| main.rs:653:9:653:17 | ...::m1(...) | | main.rs:650:24:650:25 | T1 | -| main.rs:653:16:653:16 | x | | main.rs:650:28:650:49 | T2 | -| main.rs:655:52:655:52 | x | | main.rs:655:28:655:49 | T2 | -| main.rs:655:65:659:5 | { ... } | | main.rs:655:24:655:25 | T1 | -| main.rs:656:13:656:13 | y | | main.rs:655:24:655:25 | T1 | -| main.rs:656:17:656:30 | ...::m1(...) | | main.rs:655:24:655:25 | T1 | -| main.rs:656:29:656:29 | x | | main.rs:655:28:655:49 | T2 | -| main.rs:657:9:657:9 | y | | main.rs:655:24:655:25 | T1 | -| main.rs:658:9:658:22 | ...::m1(...) | | main.rs:655:24:655:25 | T1 | -| main.rs:658:21:658:21 | x | | main.rs:655:28:655:49 | T2 | -| main.rs:660:55:660:55 | x | | main.rs:660:31:660:52 | T2 | -| main.rs:660:68:664:5 | { ... } | | main.rs:660:27:660:28 | T1 | -| main.rs:661:13:661:13 | y | | main.rs:660:27:660:28 | T1 | -| main.rs:661:17:661:28 | ...::assoc(...) | | main.rs:660:27:660:28 | T1 | -| main.rs:661:27:661:27 | x | | main.rs:660:31:660:52 | T2 | -| main.rs:662:9:662:9 | y | | main.rs:660:27:660:28 | T1 | -| main.rs:663:9:663:20 | ...::assoc(...) | | main.rs:660:27:660:28 | T1 | -| main.rs:663:19:663:19 | x | | main.rs:660:31:660:52 | T2 | -| main.rs:665:55:665:55 | x | | main.rs:665:31:665:52 | T2 | -| main.rs:665:68:669:5 | { ... } | | main.rs:665:27:665:28 | T1 | -| main.rs:666:13:666:13 | y | | main.rs:665:27:665:28 | T1 | -| main.rs:666:17:666:33 | ...::assoc(...) | | main.rs:665:27:665:28 | T1 | -| main.rs:666:32:666:32 | x | | main.rs:665:31:665:52 | T2 | -| main.rs:667:9:667:9 | y | | main.rs:665:27:665:28 | T1 | -| main.rs:668:9:668:25 | ...::assoc(...) | | main.rs:665:27:665:28 | T1 | -| main.rs:668:24:668:24 | x | | main.rs:665:31:665:52 | T2 | -| main.rs:673:49:673:49 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:673:49:673:49 | x | T | main.rs:673:32:673:46 | T2 | -| main.rs:673:71:675:5 | { ... } | | main.rs:673:28:673:29 | T1 | -| main.rs:674:9:674:9 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:674:9:674:9 | x | T | main.rs:673:32:673:46 | T2 | -| main.rs:674:9:674:11 | x.a | | main.rs:673:32:673:46 | T2 | -| main.rs:674:9:674:16 | ... .m1() | | main.rs:673:28:673:29 | T1 | -| main.rs:676:51:676:51 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:676:51:676:51 | x | T | main.rs:676:34:676:48 | T2 | -| main.rs:676:73:678:5 | { ... } | | main.rs:676:30:676:31 | T1 | -| main.rs:677:9:677:19 | ...::m1(...) | | main.rs:676:30:676:31 | T1 | -| main.rs:677:16:677:16 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:677:16:677:16 | x | T | main.rs:676:34:676:48 | T2 | -| main.rs:677:16:677:18 | x.a | | main.rs:676:34:676:48 | T2 | -| main.rs:679:51:679:51 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:679:51:679:51 | x | T | main.rs:679:34:679:48 | T2 | -| main.rs:679:73:681:5 | { ... } | | main.rs:679:30:679:31 | T1 | -| main.rs:680:9:680:24 | ...::m1(...) | | main.rs:679:30:679:31 | T1 | -| main.rs:680:21:680:21 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:680:21:680:21 | x | T | main.rs:679:34:679:48 | T2 | -| main.rs:680:21:680:23 | x.a | | main.rs:679:34:679:48 | T2 | -| main.rs:684:15:684:18 | SelfParam | | main.rs:601:5:604:5 | MyThing | -| main.rs:684:15:684:18 | SelfParam | T | main.rs:683:10:683:10 | T | -| main.rs:684:26:686:9 | { ... } | | main.rs:683:10:683:10 | T | -| main.rs:685:13:685:16 | self | | main.rs:601:5:604:5 | MyThing | -| main.rs:685:13:685:16 | self | T | main.rs:683:10:683:10 | T | -| main.rs:685:13:685:18 | self.a | | main.rs:683:10:683:10 | T | -| main.rs:688:18:688:18 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:688:18:688:18 | x | T | main.rs:683:10:683:10 | T | -| main.rs:688:32:690:9 | { ... } | | main.rs:683:10:683:10 | T | -| main.rs:689:13:689:13 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:689:13:689:13 | x | T | main.rs:683:10:683:10 | T | -| main.rs:689:13:689:15 | x.a | | main.rs:683:10:683:10 | T | -| main.rs:695:15:695:18 | SelfParam | | main.rs:693:5:696:5 | Self [trait MyTrait2] | -| main.rs:700:15:700:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:700:15:700:19 | SelfParam | TRef | main.rs:698:5:701:5 | Self [trait MyTrait3] | -| main.rs:703:46:703:46 | x | | main.rs:703:22:703:43 | T | -| main.rs:703:52:703:52 | y | | {EXTERNAL LOCATION} | & | -| main.rs:703:52:703:52 | y | TRef | main.rs:703:22:703:43 | T | -| main.rs:703:59:706:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:704:9:704:9 | x | | main.rs:703:22:703:43 | T | -| main.rs:704:9:704:14 | x.m2() | | {EXTERNAL LOCATION} | () | -| main.rs:705:9:705:9 | y | | {EXTERNAL LOCATION} | & | -| main.rs:705:9:705:9 | y | TRef | main.rs:703:22:703:43 | T | -| main.rs:705:9:705:14 | y.m2() | | {EXTERNAL LOCATION} | () | -| main.rs:708:16:766:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:709:13:709:13 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:709:13:709:13 | x | T | main.rs:606:5:607:14 | S1 | -| main.rs:709:17:709:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:709:17:709:33 | MyThing {...} | T | main.rs:606:5:607:14 | S1 | -| main.rs:709:30:709:31 | S1 | | main.rs:606:5:607:14 | S1 | -| main.rs:710:13:710:13 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:710:13:710:13 | y | T | main.rs:608:5:609:14 | S2 | -| main.rs:710:17:710:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:710:17:710:33 | MyThing {...} | T | main.rs:608:5:609:14 | S2 | -| main.rs:710:30:710:31 | S2 | | main.rs:608:5:609:14 | S2 | -| main.rs:712:9:712:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:712:18:712:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:712:18:712:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:712:18:712:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:712:18:712:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:712:18:712:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:712:26:712:26 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:712:26:712:26 | x | T | main.rs:606:5:607:14 | S1 | -| main.rs:712:26:712:31 | x.m1() | | main.rs:606:5:607:14 | S1 | -| main.rs:713:9:713:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:713:18:713:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:713:18:713:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:713:18:713:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:713:18:713:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:713:18:713:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:713:26:713:26 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:713:26:713:26 | y | T | main.rs:608:5:609:14 | S2 | -| main.rs:713:26:713:31 | y.m1() | | main.rs:608:5:609:14 | S2 | -| main.rs:715:13:715:13 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:715:13:715:13 | x | T | main.rs:606:5:607:14 | S1 | -| main.rs:715:17:715:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:715:17:715:33 | MyThing {...} | T | main.rs:606:5:607:14 | S1 | -| main.rs:715:30:715:31 | S1 | | main.rs:606:5:607:14 | S1 | -| main.rs:716:13:716:13 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:716:13:716:13 | y | T | main.rs:608:5:609:14 | S2 | -| main.rs:716:17:716:33 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:716:17:716:33 | MyThing {...} | T | main.rs:608:5:609:14 | S2 | -| main.rs:716:30:716:31 | S2 | | main.rs:608:5:609:14 | S2 | -| main.rs:718:9:718:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:718:18:718:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:718:18:718:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:718:18:718:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:718:18:718:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:718:18:718:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:718:26:718:26 | x | | main.rs:601:5:604:5 | MyThing | -| main.rs:718:26:718:26 | x | T | main.rs:606:5:607:14 | S1 | -| main.rs:718:26:718:31 | x.m2() | | main.rs:606:5:607:14 | S1 | -| main.rs:719:9:719:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:719:18:719:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:719:18:719:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:719:18:719:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:719:18:719:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:719:18:719:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:719:26:719:26 | y | | main.rs:601:5:604:5 | MyThing | -| main.rs:719:26:719:26 | y | T | main.rs:608:5:609:14 | S2 | -| main.rs:719:26:719:31 | y.m2() | | main.rs:608:5:609:14 | S2 | -| main.rs:721:13:721:14 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:721:13:721:14 | x2 | T | main.rs:606:5:607:14 | S1 | -| main.rs:721:18:721:34 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:721:18:721:34 | MyThing {...} | T | main.rs:606:5:607:14 | S1 | -| main.rs:721:31:721:32 | S1 | | main.rs:606:5:607:14 | S1 | -| main.rs:722:13:722:14 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:722:13:722:14 | y2 | T | main.rs:608:5:609:14 | S2 | -| main.rs:722:18:722:34 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:722:18:722:34 | MyThing {...} | T | main.rs:608:5:609:14 | S2 | -| main.rs:722:31:722:32 | S2 | | main.rs:608:5:609:14 | S2 | -| main.rs:724:13:724:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:724:17:724:33 | call_trait_m1(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:724:31:724:32 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:724:31:724:32 | x2 | T | main.rs:606:5:607:14 | S1 | -| main.rs:725:9:725:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:725:18:725:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:725:18:725:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:725:18:725:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:725:18:725:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:725:18:725:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:725:26:725:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:726:13:726:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:726:17:726:35 | call_trait_m1_2(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:726:33:726:34 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:726:33:726:34 | x2 | T | main.rs:606:5:607:14 | S1 | -| main.rs:727:9:727:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:727:18:727:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:727:18:727:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:727:18:727:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:727:18:727:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:727:18:727:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:727:26:727:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:728:13:728:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:728:17:728:35 | call_trait_m1_3(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:728:33:728:34 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:728:33:728:34 | x2 | T | main.rs:606:5:607:14 | S1 | -| main.rs:729:9:729:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:450:13:450:13 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:450:17:450:26 | get_fst(...) | | main.rs:249:5:250:14 | S1 | +| main.rs:450:25:450:25 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:450:25:450:25 | a | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:450:25:450:25 | a | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:451:9:451:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:451:18:451:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:451:18:451:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:451:18:451:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:451:18:451:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:451:18:451:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:451:26:451:26 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:452:13:452:13 | y | | main.rs:249:5:250:14 | S1 | +| main.rs:452:17:452:26 | get_snd(...) | | main.rs:249:5:250:14 | S1 | +| main.rs:452:25:452:25 | a | | main.rs:243:5:247:5 | MyPair | +| main.rs:452:25:452:25 | a | P1 | main.rs:249:5:250:14 | S1 | +| main.rs:452:25:452:25 | a | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:453:9:453:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:453:18:453:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:453:18:453:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:453:18:453:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:453:18:453:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:453:18:453:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:453:26:453:26 | y | | main.rs:249:5:250:14 | S1 | +| main.rs:456:13:456:13 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:456:13:456:13 | b | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:456:13:456:13 | b | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:456:17:456:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:456:17:456:41 | MyPair {...} | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:456:17:456:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:456:30:456:31 | S2 | | main.rs:251:5:252:14 | S2 | +| main.rs:456:38:456:39 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:457:13:457:13 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:457:17:457:26 | get_fst(...) | | main.rs:249:5:250:14 | S1 | +| main.rs:457:25:457:25 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:457:25:457:25 | b | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:457:25:457:25 | b | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:458:9:458:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:458:18:458:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:458:18:458:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:458:18:458:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:458:18:458:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:458:18:458:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:458:26:458:26 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:459:13:459:13 | y | | main.rs:251:5:252:14 | S2 | +| main.rs:459:17:459:26 | get_snd(...) | | main.rs:251:5:252:14 | S2 | +| main.rs:459:25:459:25 | b | | main.rs:243:5:247:5 | MyPair | +| main.rs:459:25:459:25 | b | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:459:25:459:25 | b | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:460:9:460:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:460:18:460:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:460:18:460:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:460:18:460:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:460:18:460:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:460:18:460:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:460:26:460:26 | y | | main.rs:251:5:252:14 | S2 | +| main.rs:462:13:462:13 | c | | main.rs:243:5:247:5 | MyPair | +| main.rs:462:13:462:13 | c | P1 | main.rs:253:5:254:14 | S3 | +| main.rs:462:13:462:13 | c | P2 | main.rs:243:5:247:5 | MyPair | +| main.rs:462:13:462:13 | c | P2.P1 | main.rs:251:5:252:14 | S2 | +| main.rs:462:13:462:13 | c | P2.P2 | main.rs:249:5:250:14 | S1 | +| main.rs:462:17:465:9 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:462:17:465:9 | MyPair {...} | P1 | main.rs:253:5:254:14 | S3 | +| main.rs:462:17:465:9 | MyPair {...} | P2 | main.rs:243:5:247:5 | MyPair | +| main.rs:462:17:465:9 | MyPair {...} | P2.P1 | main.rs:251:5:252:14 | S2 | +| main.rs:462:17:465:9 | MyPair {...} | P2.P2 | main.rs:249:5:250:14 | S1 | +| main.rs:463:17:463:18 | S3 | | main.rs:253:5:254:14 | S3 | +| main.rs:464:17:464:41 | MyPair {...} | | main.rs:243:5:247:5 | MyPair | +| main.rs:464:17:464:41 | MyPair {...} | P1 | main.rs:251:5:252:14 | S2 | +| main.rs:464:17:464:41 | MyPair {...} | P2 | main.rs:249:5:250:14 | S1 | +| main.rs:464:30:464:31 | S2 | | main.rs:251:5:252:14 | S2 | +| main.rs:464:38:464:39 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:466:13:466:13 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:466:17:466:30 | get_snd_fst(...) | | main.rs:249:5:250:14 | S1 | +| main.rs:466:29:466:29 | c | | main.rs:243:5:247:5 | MyPair | +| main.rs:466:29:466:29 | c | P1 | main.rs:253:5:254:14 | S3 | +| main.rs:466:29:466:29 | c | P2 | main.rs:243:5:247:5 | MyPair | +| main.rs:466:29:466:29 | c | P2.P1 | main.rs:251:5:252:14 | S2 | +| main.rs:466:29:466:29 | c | P2.P2 | main.rs:249:5:250:14 | S1 | +| main.rs:468:13:468:17 | thing | | main.rs:238:5:241:5 | MyThing | +| main.rs:468:13:468:17 | thing | A | main.rs:249:5:250:14 | S1 | +| main.rs:468:21:468:37 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:468:21:468:37 | MyThing {...} | A | main.rs:249:5:250:14 | S1 | +| main.rs:468:34:468:35 | S1 | | main.rs:249:5:250:14 | S1 | +| main.rs:469:13:469:13 | i | | main.rs:249:5:250:14 | S1 | +| main.rs:469:17:469:21 | thing | | main.rs:238:5:241:5 | MyThing | +| main.rs:469:17:469:21 | thing | A | main.rs:249:5:250:14 | S1 | +| main.rs:469:17:469:34 | thing.convert_to() | | main.rs:249:5:250:14 | S1 | +| main.rs:470:28:470:32 | thing | | main.rs:238:5:241:5 | MyThing | +| main.rs:470:28:470:32 | thing | A | main.rs:249:5:250:14 | S1 | +| main.rs:472:13:472:13 | x | | main.rs:249:5:250:14 | S1 | +| main.rs:472:17:472:58 | call_trait_m1_trait2_m3(...) | | main.rs:249:5:250:14 | S1 | +| main.rs:472:41:472:57 | MyThing {...} | | main.rs:238:5:241:5 | MyThing | +| main.rs:472:41:472:57 | MyThing {...} | A | main.rs:251:5:252:14 | S2 | +| main.rs:472:54:472:55 | S2 | | main.rs:251:5:252:14 | S2 | +| main.rs:491:19:491:22 | SelfParam | | main.rs:489:5:492:5 | Self [trait FirstTrait] | +| main.rs:496:19:496:22 | SelfParam | | main.rs:494:5:497:5 | Self [trait SecondTrait] | +| main.rs:499:64:499:64 | x | | main.rs:499:45:499:61 | T | +| main.rs:499:70:503:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:501:13:501:14 | s1 | | main.rs:499:35:499:42 | I | +| main.rs:501:18:501:18 | x | | main.rs:499:45:499:61 | T | +| main.rs:501:18:501:27 | x.method() | | main.rs:499:35:499:42 | I | +| main.rs:502:9:502:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:502:18:502:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:502:18:502:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:502:18:502:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:502:18:502:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:502:18:502:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:502:26:502:27 | s1 | | main.rs:499:35:499:42 | I | +| main.rs:505:65:505:65 | x | | main.rs:505:46:505:62 | T | +| main.rs:505:71:509:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:507:13:507:14 | s2 | | main.rs:505:36:505:43 | I | +| main.rs:507:18:507:18 | x | | main.rs:505:46:505:62 | T | +| main.rs:507:18:507:27 | x.method() | | main.rs:505:36:505:43 | I | +| main.rs:508:9:508:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:508:18:508:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:508:18:508:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:508:18:508:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:508:18:508:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:508:18:508:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:508:26:508:27 | s2 | | main.rs:505:36:505:43 | I | +| main.rs:511:49:511:49 | x | | main.rs:511:30:511:46 | T | +| main.rs:511:55:514:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:512:13:512:13 | s | | main.rs:481:5:482:14 | S1 | +| main.rs:512:17:512:17 | x | | main.rs:511:30:511:46 | T | +| main.rs:512:17:512:26 | x.method() | | main.rs:481:5:482:14 | S1 | +| main.rs:513:9:513:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:513:18:513:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:513:18:513:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:513:18:513:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:513:18:513:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:513:18:513:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:513:26:513:26 | s | | main.rs:481:5:482:14 | S1 | +| main.rs:516:53:516:53 | x | | main.rs:516:34:516:50 | T | +| main.rs:516:59:519:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:517:13:517:13 | s | | main.rs:481:5:482:14 | S1 | +| main.rs:517:17:517:17 | x | | main.rs:516:34:516:50 | T | +| main.rs:517:17:517:26 | x.method() | | main.rs:481:5:482:14 | S1 | +| main.rs:518:9:518:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:518:18:518:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:518:18:518:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:518:18:518:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:518:18:518:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:518:18:518:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:518:26:518:26 | s | | main.rs:481:5:482:14 | S1 | +| main.rs:521:43:521:43 | x | | main.rs:521:40:521:40 | T | +| main.rs:524:5:527:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:525:13:525:13 | s | | main.rs:481:5:482:14 | S1 | +| main.rs:525:17:525:17 | x | | main.rs:521:40:521:40 | T | +| main.rs:525:17:525:26 | x.method() | | main.rs:481:5:482:14 | S1 | +| main.rs:526:9:526:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:526:18:526:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:526:18:526:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:526:18:526:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:526:18:526:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:526:18:526:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:526:26:526:26 | s | | main.rs:481:5:482:14 | S1 | +| main.rs:530:16:530:19 | SelfParam | | main.rs:529:5:533:5 | Self [trait Pair] | +| main.rs:532:16:532:19 | SelfParam | | main.rs:529:5:533:5 | Self [trait Pair] | +| main.rs:535:53:535:53 | x | | main.rs:535:50:535:50 | T | +| main.rs:535:59:535:59 | y | | main.rs:535:50:535:50 | T | +| main.rs:539:5:542:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:540:13:540:13 | _ | | main.rs:481:5:482:14 | S1 | +| main.rs:540:17:540:17 | x | | main.rs:535:50:535:50 | T | +| main.rs:540:17:540:23 | x.fst() | | main.rs:481:5:482:14 | S1 | +| main.rs:541:13:541:13 | _ | | main.rs:481:5:482:14 | S1 | +| main.rs:541:17:541:17 | y | | main.rs:535:50:535:50 | T | +| main.rs:541:17:541:26 | y.method() | | main.rs:481:5:482:14 | S1 | +| main.rs:544:58:544:58 | x | | main.rs:544:41:544:55 | T | +| main.rs:544:64:544:64 | y | | main.rs:544:41:544:55 | T | +| main.rs:544:70:549:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:546:13:546:14 | s1 | | main.rs:481:5:482:14 | S1 | +| main.rs:546:18:546:18 | x | | main.rs:544:41:544:55 | T | +| main.rs:546:18:546:24 | x.fst() | | main.rs:481:5:482:14 | S1 | +| main.rs:547:13:547:14 | s2 | | main.rs:484:5:485:14 | S2 | +| main.rs:547:18:547:18 | y | | main.rs:544:41:544:55 | T | +| main.rs:547:18:547:24 | y.snd() | | main.rs:484:5:485:14 | S2 | +| main.rs:548:9:548:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:548:18:548:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:548:18:548:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:548:18:548:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:548:18:548:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:548:18:548:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:548:32:548:33 | s1 | | main.rs:481:5:482:14 | S1 | +| main.rs:548:36:548:37 | s2 | | main.rs:484:5:485:14 | S2 | +| main.rs:551:69:551:69 | x | | main.rs:551:52:551:66 | T | +| main.rs:551:75:551:75 | y | | main.rs:551:52:551:66 | T | +| main.rs:551:81:556:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:553:13:553:14 | s1 | | main.rs:481:5:482:14 | S1 | +| main.rs:553:18:553:18 | x | | main.rs:551:52:551:66 | T | +| main.rs:553:18:553:24 | x.fst() | | main.rs:481:5:482:14 | S1 | +| main.rs:554:13:554:14 | s2 | | main.rs:551:41:551:49 | T2 | +| main.rs:554:18:554:18 | y | | main.rs:551:52:551:66 | T | +| main.rs:554:18:554:24 | y.snd() | | main.rs:551:41:551:49 | T2 | +| main.rs:555:9:555:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:555:18:555:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:555:18:555:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:555:18:555:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:555:18:555:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:555:18:555:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:555:32:555:33 | s1 | | main.rs:481:5:482:14 | S1 | +| main.rs:555:36:555:37 | s2 | | main.rs:551:41:551:49 | T2 | +| main.rs:558:50:558:50 | x | | main.rs:558:41:558:47 | T | +| main.rs:558:56:558:56 | y | | main.rs:558:41:558:47 | T | +| main.rs:558:62:563:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:560:13:560:14 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:560:18:560:18 | x | | main.rs:558:41:558:47 | T | +| main.rs:560:18:560:24 | x.fst() | | {EXTERNAL LOCATION} | bool | +| main.rs:561:13:561:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:561:18:561:18 | y | | main.rs:558:41:558:47 | T | +| main.rs:561:18:561:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:562:9:562:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:562:18:562:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:562:18:562:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:562:18:562:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:562:18:562:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:562:18:562:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:562:32:562:33 | s1 | | {EXTERNAL LOCATION} | bool | +| main.rs:562:36:562:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:565:54:565:54 | x | | main.rs:565:41:565:51 | T | +| main.rs:565:60:565:60 | y | | main.rs:565:41:565:51 | T | +| main.rs:565:66:570:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:567:13:567:14 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:567:18:567:18 | x | | main.rs:565:41:565:51 | T | +| main.rs:567:18:567:24 | x.fst() | | {EXTERNAL LOCATION} | u8 | +| main.rs:568:13:568:14 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:568:18:568:18 | y | | main.rs:565:41:565:51 | T | +| main.rs:568:18:568:24 | y.snd() | | {EXTERNAL LOCATION} | i64 | +| main.rs:569:9:569:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:569:18:569:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:569:18:569:29 | "{:?}, {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:569:18:569:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:569:18:569:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:569:18:569:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:569:32:569:33 | s1 | | {EXTERNAL LOCATION} | u8 | +| main.rs:569:36:569:37 | s2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:577:18:577:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:577:18:577:22 | SelfParam | TRef | main.rs:574:5:578:5 | Self [trait TraitWithSelfTp] | +| main.rs:580:40:580:44 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:580:40:580:44 | thing | TRef | main.rs:580:17:580:37 | T | +| main.rs:580:56:582:5 | { ... } | | main.rs:580:14:580:14 | A | +| main.rs:581:9:581:13 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:581:9:581:13 | thing | TRef | main.rs:580:17:580:37 | T | +| main.rs:581:9:581:21 | thing.get_a() | | main.rs:580:14:580:14 | A | +| main.rs:585:44:585:48 | thing | | main.rs:585:24:585:41 | S | +| main.rs:585:61:588:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:586:13:586:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:586:13:586:15 | _ms | T | main.rs:585:24:585:41 | S | +| main.rs:586:19:586:23 | thing | | main.rs:585:24:585:41 | S | +| main.rs:586:19:586:31 | thing.get_a() | | {EXTERNAL LOCATION} | Option | +| main.rs:586:19:586:31 | thing.get_a() | T | main.rs:585:24:585:41 | S | +| main.rs:587:9:587:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:587:9:587:9 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:593:55:593:59 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:593:55:593:59 | thing | TRef | main.rs:593:25:593:52 | S | +| main.rs:593:66:596:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:595:13:595:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:595:13:595:15 | _ms | T | main.rs:593:25:593:52 | S | +| main.rs:595:19:595:30 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:595:19:595:30 | get_a(...) | T | main.rs:593:25:593:52 | S | +| main.rs:595:25:595:29 | thing | | {EXTERNAL LOCATION} | & | +| main.rs:595:25:595:29 | thing | TRef | main.rs:593:25:593:52 | S | +| main.rs:604:18:604:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:604:18:604:22 | SelfParam | TRef | main.rs:598:5:600:5 | MyStruct | +| main.rs:604:41:606:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:604:41:606:9 | { ... } | T | main.rs:598:5:600:5 | MyStruct | +| main.rs:605:13:605:48 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:605:13:605:48 | Some(...) | T | main.rs:598:5:600:5 | MyStruct | +| main.rs:605:18:605:47 | MyStruct {...} | | main.rs:598:5:600:5 | MyStruct | +| main.rs:605:36:605:39 | self | | {EXTERNAL LOCATION} | & | +| main.rs:605:36:605:39 | self | TRef | main.rs:598:5:600:5 | MyStruct | +| main.rs:605:36:605:45 | self.value | | {EXTERNAL LOCATION} | i32 | +| main.rs:611:19:614:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:612:13:612:13 | s | | main.rs:598:5:600:5 | MyStruct | +| main.rs:612:17:612:37 | MyStruct {...} | | main.rs:598:5:600:5 | MyStruct | +| main.rs:612:35:612:35 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:613:13:613:15 | _ms | | {EXTERNAL LOCATION} | Option | +| main.rs:613:13:613:15 | _ms | T | main.rs:598:5:600:5 | MyStruct | +| main.rs:613:19:613:27 | get_a(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:613:19:613:27 | get_a(...) | T | main.rs:598:5:600:5 | MyStruct | +| main.rs:613:25:613:26 | &s | | {EXTERNAL LOCATION} | & | +| main.rs:613:25:613:26 | &s | TRef | main.rs:598:5:600:5 | MyStruct | +| main.rs:613:26:613:26 | s | | main.rs:598:5:600:5 | MyStruct | +| main.rs:629:15:629:18 | SelfParam | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:631:15:631:18 | SelfParam | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:634:9:636:9 | { ... } | | main.rs:628:19:628:19 | A | +| main.rs:635:13:635:16 | self | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:635:13:635:21 | self.m1() | | main.rs:628:19:628:19 | A | +| main.rs:638:18:638:18 | x | | main.rs:628:5:639:5 | Self [trait MyTrait] | +| main.rs:642:15:642:18 | SelfParam | | main.rs:625:5:626:14 | S2 | +| main.rs:642:26:644:9 | { ... } | | main.rs:641:10:641:19 | T | +| main.rs:643:13:643:30 | ...::default(...) | | main.rs:641:10:641:19 | T | +| main.rs:646:18:646:18 | x | | main.rs:625:5:626:14 | S2 | +| main.rs:646:32:648:9 | { ... } | | main.rs:641:10:641:19 | T | +| main.rs:647:13:647:30 | ...::default(...) | | main.rs:641:10:641:19 | T | +| main.rs:652:15:652:18 | SelfParam | | main.rs:623:5:624:14 | S1 | +| main.rs:652:28:654:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:653:13:653:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:656:18:656:18 | x | | main.rs:623:5:624:14 | S1 | +| main.rs:656:34:658:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:657:13:657:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:663:50:663:50 | x | | main.rs:663:26:663:47 | T2 | +| main.rs:663:63:666:5 | { ... } | | main.rs:663:22:663:23 | T1 | +| main.rs:664:9:664:9 | x | | main.rs:663:26:663:47 | T2 | +| main.rs:664:9:664:14 | x.m1() | | main.rs:663:22:663:23 | T1 | +| main.rs:665:9:665:9 | x | | main.rs:663:26:663:47 | T2 | +| main.rs:665:9:665:14 | x.m1() | | main.rs:663:22:663:23 | T1 | +| main.rs:667:52:667:52 | x | | main.rs:667:28:667:49 | T2 | +| main.rs:667:65:671:5 | { ... } | | main.rs:667:24:667:25 | T1 | +| main.rs:668:13:668:13 | y | | main.rs:667:24:667:25 | T1 | +| main.rs:668:17:668:25 | ...::m1(...) | | main.rs:667:24:667:25 | T1 | +| main.rs:668:24:668:24 | x | | main.rs:667:28:667:49 | T2 | +| main.rs:669:9:669:9 | y | | main.rs:667:24:667:25 | T1 | +| main.rs:670:9:670:17 | ...::m1(...) | | main.rs:667:24:667:25 | T1 | +| main.rs:670:16:670:16 | x | | main.rs:667:28:667:49 | T2 | +| main.rs:672:52:672:52 | x | | main.rs:672:28:672:49 | T2 | +| main.rs:672:65:676:5 | { ... } | | main.rs:672:24:672:25 | T1 | +| main.rs:673:13:673:13 | y | | main.rs:672:24:672:25 | T1 | +| main.rs:673:17:673:30 | ...::m1(...) | | main.rs:672:24:672:25 | T1 | +| main.rs:673:29:673:29 | x | | main.rs:672:28:672:49 | T2 | +| main.rs:674:9:674:9 | y | | main.rs:672:24:672:25 | T1 | +| main.rs:675:9:675:22 | ...::m1(...) | | main.rs:672:24:672:25 | T1 | +| main.rs:675:21:675:21 | x | | main.rs:672:28:672:49 | T2 | +| main.rs:677:55:677:55 | x | | main.rs:677:31:677:52 | T2 | +| main.rs:677:68:681:5 | { ... } | | main.rs:677:27:677:28 | T1 | +| main.rs:678:13:678:13 | y | | main.rs:677:27:677:28 | T1 | +| main.rs:678:17:678:28 | ...::assoc(...) | | main.rs:677:27:677:28 | T1 | +| main.rs:678:27:678:27 | x | | main.rs:677:31:677:52 | T2 | +| main.rs:679:9:679:9 | y | | main.rs:677:27:677:28 | T1 | +| main.rs:680:9:680:20 | ...::assoc(...) | | main.rs:677:27:677:28 | T1 | +| main.rs:680:19:680:19 | x | | main.rs:677:31:677:52 | T2 | +| main.rs:682:55:682:55 | x | | main.rs:682:31:682:52 | T2 | +| main.rs:682:68:686:5 | { ... } | | main.rs:682:27:682:28 | T1 | +| main.rs:683:13:683:13 | y | | main.rs:682:27:682:28 | T1 | +| main.rs:683:17:683:33 | ...::assoc(...) | | main.rs:682:27:682:28 | T1 | +| main.rs:683:32:683:32 | x | | main.rs:682:31:682:52 | T2 | +| main.rs:684:9:684:9 | y | | main.rs:682:27:682:28 | T1 | +| main.rs:685:9:685:25 | ...::assoc(...) | | main.rs:682:27:682:28 | T1 | +| main.rs:685:24:685:24 | x | | main.rs:682:31:682:52 | T2 | +| main.rs:690:49:690:49 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:690:49:690:49 | x | T | main.rs:690:32:690:46 | T2 | +| main.rs:690:71:692:5 | { ... } | | main.rs:690:28:690:29 | T1 | +| main.rs:691:9:691:9 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:691:9:691:9 | x | T | main.rs:690:32:690:46 | T2 | +| main.rs:691:9:691:11 | x.a | | main.rs:690:32:690:46 | T2 | +| main.rs:691:9:691:16 | ... .m1() | | main.rs:690:28:690:29 | T1 | +| main.rs:693:51:693:51 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:693:51:693:51 | x | T | main.rs:693:34:693:48 | T2 | +| main.rs:693:73:695:5 | { ... } | | main.rs:693:30:693:31 | T1 | +| main.rs:694:9:694:19 | ...::m1(...) | | main.rs:693:30:693:31 | T1 | +| main.rs:694:16:694:16 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:694:16:694:16 | x | T | main.rs:693:34:693:48 | T2 | +| main.rs:694:16:694:18 | x.a | | main.rs:693:34:693:48 | T2 | +| main.rs:696:51:696:51 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:696:51:696:51 | x | T | main.rs:696:34:696:48 | T2 | +| main.rs:696:73:698:5 | { ... } | | main.rs:696:30:696:31 | T1 | +| main.rs:697:9:697:24 | ...::m1(...) | | main.rs:696:30:696:31 | T1 | +| main.rs:697:21:697:21 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:697:21:697:21 | x | T | main.rs:696:34:696:48 | T2 | +| main.rs:697:21:697:23 | x.a | | main.rs:696:34:696:48 | T2 | +| main.rs:701:15:701:18 | SelfParam | | main.rs:618:5:621:5 | MyThing | +| main.rs:701:15:701:18 | SelfParam | T | main.rs:700:10:700:10 | T | +| main.rs:701:26:703:9 | { ... } | | main.rs:700:10:700:10 | T | +| main.rs:702:13:702:16 | self | | main.rs:618:5:621:5 | MyThing | +| main.rs:702:13:702:16 | self | T | main.rs:700:10:700:10 | T | +| main.rs:702:13:702:18 | self.a | | main.rs:700:10:700:10 | T | +| main.rs:705:18:705:18 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:705:18:705:18 | x | T | main.rs:700:10:700:10 | T | +| main.rs:705:32:707:9 | { ... } | | main.rs:700:10:700:10 | T | +| main.rs:706:13:706:13 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:706:13:706:13 | x | T | main.rs:700:10:700:10 | T | +| main.rs:706:13:706:15 | x.a | | main.rs:700:10:700:10 | T | +| main.rs:712:15:712:18 | SelfParam | | main.rs:710:5:713:5 | Self [trait MyTrait2] | +| main.rs:717:15:717:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:717:15:717:19 | SelfParam | TRef | main.rs:715:5:718:5 | Self [trait MyTrait3] | +| main.rs:720:46:720:46 | x | | main.rs:720:22:720:43 | T | +| main.rs:720:52:720:52 | y | | {EXTERNAL LOCATION} | & | +| main.rs:720:52:720:52 | y | TRef | main.rs:720:22:720:43 | T | +| main.rs:720:59:723:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:721:9:721:9 | x | | main.rs:720:22:720:43 | T | +| main.rs:721:9:721:14 | x.m2() | | {EXTERNAL LOCATION} | () | +| main.rs:722:9:722:9 | y | | {EXTERNAL LOCATION} | & | +| main.rs:722:9:722:9 | y | TRef | main.rs:720:22:720:43 | T | +| main.rs:722:9:722:14 | y.m2() | | {EXTERNAL LOCATION} | () | +| main.rs:725:16:783:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:726:13:726:13 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:726:13:726:13 | x | T | main.rs:623:5:624:14 | S1 | +| main.rs:726:17:726:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:726:17:726:33 | MyThing {...} | T | main.rs:623:5:624:14 | S1 | +| main.rs:726:30:726:31 | S1 | | main.rs:623:5:624:14 | S1 | +| main.rs:727:13:727:13 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:727:13:727:13 | y | T | main.rs:625:5:626:14 | S2 | +| main.rs:727:17:727:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:727:17:727:33 | MyThing {...} | T | main.rs:625:5:626:14 | S2 | +| main.rs:727:30:727:31 | S2 | | main.rs:625:5:626:14 | S2 | +| main.rs:729:9:729:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:729:18:729:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:729:18:729:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:729:18:729:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:729:18:729:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:729:18:729:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:729:26:729:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:730:13:730:13 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:730:17:730:33 | call_trait_m1(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:730:31:730:32 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:730:31:730:32 | y2 | T | main.rs:608:5:609:14 | S2 | -| main.rs:731:9:731:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:731:18:731:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:731:18:731:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:731:18:731:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:731:18:731:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:731:18:731:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:731:26:731:26 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:732:13:732:13 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:732:17:732:35 | call_trait_m1_2(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:732:33:732:34 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:732:33:732:34 | y2 | T | main.rs:608:5:609:14 | S2 | -| main.rs:733:9:733:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:733:18:733:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:733:18:733:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:733:18:733:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:733:18:733:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:733:18:733:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:733:26:733:26 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:734:13:734:13 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:734:17:734:35 | call_trait_m1_3(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:734:33:734:34 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:734:33:734:34 | y2 | T | main.rs:608:5:609:14 | S2 | -| main.rs:735:9:735:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:729:18:729:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:729:18:729:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:729:18:729:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:729:26:729:26 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:729:26:729:26 | x | T | main.rs:623:5:624:14 | S1 | +| main.rs:729:26:729:31 | x.m1() | | main.rs:623:5:624:14 | S1 | +| main.rs:730:9:730:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:730:18:730:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:730:18:730:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:730:18:730:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:730:18:730:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:730:18:730:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:730:26:730:26 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:730:26:730:26 | y | T | main.rs:625:5:626:14 | S2 | +| main.rs:730:26:730:31 | y.m1() | | main.rs:625:5:626:14 | S2 | +| main.rs:732:13:732:13 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:732:13:732:13 | x | T | main.rs:623:5:624:14 | S1 | +| main.rs:732:17:732:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:732:17:732:33 | MyThing {...} | T | main.rs:623:5:624:14 | S1 | +| main.rs:732:30:732:31 | S1 | | main.rs:623:5:624:14 | S1 | +| main.rs:733:13:733:13 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:733:13:733:13 | y | T | main.rs:625:5:626:14 | S2 | +| main.rs:733:17:733:33 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:733:17:733:33 | MyThing {...} | T | main.rs:625:5:626:14 | S2 | +| main.rs:733:30:733:31 | S2 | | main.rs:625:5:626:14 | S2 | +| main.rs:735:9:735:32 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:735:18:735:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:735:18:735:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:735:18:735:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:735:18:735:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:735:18:735:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:735:26:735:26 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:736:13:736:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:736:17:736:38 | call_trait_assoc_1(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:736:36:736:37 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:736:36:736:37 | x2 | T | main.rs:606:5:607:14 | S1 | -| main.rs:737:9:737:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:737:18:737:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:737:18:737:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:737:18:737:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:737:18:737:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:737:18:737:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:737:26:737:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:738:13:738:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:738:17:738:38 | call_trait_assoc_2(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:738:36:738:37 | x2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:738:36:738:37 | x2 | T | main.rs:606:5:607:14 | S1 | -| main.rs:739:9:739:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:739:18:739:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:739:18:739:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:739:18:739:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:739:18:739:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:739:18:739:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:739:26:739:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:740:13:740:13 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:740:17:740:38 | call_trait_assoc_1(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:740:36:740:37 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:740:36:740:37 | y2 | T | main.rs:608:5:609:14 | S2 | -| main.rs:741:9:741:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:741:18:741:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:741:18:741:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:741:18:741:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:741:18:741:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:741:18:741:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:741:26:741:26 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:742:13:742:13 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:742:17:742:38 | call_trait_assoc_2(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:742:36:742:37 | y2 | | main.rs:601:5:604:5 | MyThing | -| main.rs:742:36:742:37 | y2 | T | main.rs:608:5:609:14 | S2 | -| main.rs:743:9:743:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:743:18:743:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:743:18:743:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:743:18:743:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:743:18:743:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:743:18:743:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:743:26:743:26 | a | | main.rs:608:5:609:14 | S2 | -| main.rs:745:13:745:14 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:745:13:745:14 | x3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:745:13:745:14 | x3 | T.T | main.rs:606:5:607:14 | S1 | -| main.rs:745:18:747:9 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:745:18:747:9 | MyThing {...} | T | main.rs:601:5:604:5 | MyThing | -| main.rs:745:18:747:9 | MyThing {...} | T.T | main.rs:606:5:607:14 | S1 | -| main.rs:746:16:746:32 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:746:16:746:32 | MyThing {...} | T | main.rs:606:5:607:14 | S1 | -| main.rs:746:29:746:30 | S1 | | main.rs:606:5:607:14 | S1 | -| main.rs:748:13:748:14 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:748:13:748:14 | y3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:748:13:748:14 | y3 | T.T | main.rs:608:5:609:14 | S2 | -| main.rs:748:18:750:9 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:748:18:750:9 | MyThing {...} | T | main.rs:601:5:604:5 | MyThing | -| main.rs:748:18:750:9 | MyThing {...} | T.T | main.rs:608:5:609:14 | S2 | -| main.rs:749:16:749:32 | MyThing {...} | | main.rs:601:5:604:5 | MyThing | -| main.rs:749:16:749:32 | MyThing {...} | T | main.rs:608:5:609:14 | S2 | -| main.rs:749:29:749:30 | S2 | | main.rs:608:5:609:14 | S2 | -| main.rs:752:13:752:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:752:17:752:39 | call_trait_thing_m1(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:752:37:752:38 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:752:37:752:38 | x3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:752:37:752:38 | x3 | T.T | main.rs:606:5:607:14 | S1 | -| main.rs:753:9:753:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:753:18:753:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:753:18:753:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:753:18:753:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:753:18:753:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:753:18:753:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:753:26:753:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:754:13:754:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:754:17:754:41 | call_trait_thing_m1_2(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:754:39:754:40 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:754:39:754:40 | x3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:754:39:754:40 | x3 | T.T | main.rs:606:5:607:14 | S1 | -| main.rs:755:9:755:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:755:18:755:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:755:18:755:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:755:18:755:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:755:18:755:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:755:18:755:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:755:26:755:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:756:13:756:13 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:756:17:756:41 | call_trait_thing_m1_3(...) | | main.rs:606:5:607:14 | S1 | -| main.rs:756:39:756:40 | x3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:756:39:756:40 | x3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:756:39:756:40 | x3 | T.T | main.rs:606:5:607:14 | S1 | -| main.rs:757:9:757:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:757:18:757:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:757:18:757:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:757:18:757:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:757:18:757:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:757:18:757:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:757:26:757:26 | a | | main.rs:606:5:607:14 | S1 | -| main.rs:758:13:758:13 | b | | main.rs:608:5:609:14 | S2 | -| main.rs:758:17:758:39 | call_trait_thing_m1(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:758:37:758:38 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:758:37:758:38 | y3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:758:37:758:38 | y3 | T.T | main.rs:608:5:609:14 | S2 | -| main.rs:759:9:759:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:759:18:759:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:759:18:759:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:759:18:759:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:759:18:759:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:759:18:759:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:759:26:759:26 | b | | main.rs:608:5:609:14 | S2 | -| main.rs:760:13:760:13 | b | | main.rs:608:5:609:14 | S2 | -| main.rs:760:17:760:41 | call_trait_thing_m1_2(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:760:39:760:40 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:760:39:760:40 | y3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:760:39:760:40 | y3 | T.T | main.rs:608:5:609:14 | S2 | -| main.rs:761:9:761:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:761:18:761:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:761:18:761:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:761:18:761:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:761:18:761:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:761:18:761:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:761:26:761:26 | b | | main.rs:608:5:609:14 | S2 | -| main.rs:762:13:762:13 | b | | main.rs:608:5:609:14 | S2 | -| main.rs:762:17:762:41 | call_trait_thing_m1_3(...) | | main.rs:608:5:609:14 | S2 | -| main.rs:762:39:762:40 | y3 | | main.rs:601:5:604:5 | MyThing | -| main.rs:762:39:762:40 | y3 | T | main.rs:601:5:604:5 | MyThing | -| main.rs:762:39:762:40 | y3 | T.T | main.rs:608:5:609:14 | S2 | -| main.rs:763:9:763:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:763:18:763:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:763:18:763:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:763:18:763:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:763:18:763:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:763:18:763:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:763:26:763:26 | b | | main.rs:608:5:609:14 | S2 | -| main.rs:764:13:764:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:764:17:764:26 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:764:24:764:25 | S1 | | main.rs:606:5:607:14 | S1 | -| main.rs:765:13:765:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:765:22:765:31 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:765:29:765:30 | S2 | | main.rs:608:5:609:14 | S2 | -| main.rs:782:15:782:18 | SelfParam | | main.rs:770:5:774:5 | MyEnum | -| main.rs:782:15:782:18 | SelfParam | A | main.rs:781:10:781:10 | T | -| main.rs:782:26:787:9 | { ... } | | main.rs:781:10:781:10 | T | -| main.rs:783:13:786:13 | match self { ... } | | main.rs:781:10:781:10 | T | -| main.rs:783:19:783:22 | self | | main.rs:770:5:774:5 | MyEnum | -| main.rs:783:19:783:22 | self | A | main.rs:781:10:781:10 | T | -| main.rs:784:17:784:29 | ...::C1(...) | | main.rs:770:5:774:5 | MyEnum | -| main.rs:784:17:784:29 | ...::C1(...) | A | main.rs:781:10:781:10 | T | -| main.rs:784:28:784:28 | a | | main.rs:781:10:781:10 | T | -| main.rs:784:34:784:34 | a | | main.rs:781:10:781:10 | T | -| main.rs:785:17:785:32 | ...::C2 {...} | | main.rs:770:5:774:5 | MyEnum | -| main.rs:785:17:785:32 | ...::C2 {...} | A | main.rs:781:10:781:10 | T | -| main.rs:785:30:785:30 | a | | main.rs:781:10:781:10 | T | -| main.rs:785:37:785:37 | a | | main.rs:781:10:781:10 | T | -| main.rs:790:16:796:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:791:13:791:13 | x | | main.rs:770:5:774:5 | MyEnum | -| main.rs:791:13:791:13 | x | A | main.rs:776:5:777:14 | S1 | -| main.rs:791:17:791:30 | ...::C1(...) | | main.rs:770:5:774:5 | MyEnum | -| main.rs:791:17:791:30 | ...::C1(...) | A | main.rs:776:5:777:14 | S1 | -| main.rs:791:28:791:29 | S1 | | main.rs:776:5:777:14 | S1 | -| main.rs:792:13:792:13 | y | | main.rs:770:5:774:5 | MyEnum | -| main.rs:792:13:792:13 | y | A | main.rs:778:5:779:14 | S2 | -| main.rs:792:17:792:36 | ...::C2 {...} | | main.rs:770:5:774:5 | MyEnum | -| main.rs:792:17:792:36 | ...::C2 {...} | A | main.rs:778:5:779:14 | S2 | -| main.rs:792:33:792:34 | S2 | | main.rs:778:5:779:14 | S2 | -| main.rs:794:9:794:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:794:18:794:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:794:18:794:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:794:18:794:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:794:18:794:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:794:18:794:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:794:26:794:26 | x | | main.rs:770:5:774:5 | MyEnum | -| main.rs:794:26:794:26 | x | A | main.rs:776:5:777:14 | S1 | -| main.rs:794:26:794:31 | x.m1() | | main.rs:776:5:777:14 | S1 | -| main.rs:795:9:795:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:795:18:795:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:795:18:795:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:795:18:795:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:795:18:795:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:795:18:795:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:795:26:795:26 | y | | main.rs:770:5:774:5 | MyEnum | -| main.rs:795:26:795:26 | y | A | main.rs:778:5:779:14 | S2 | -| main.rs:795:26:795:31 | y.m1() | | main.rs:778:5:779:14 | S2 | -| main.rs:817:15:817:18 | SelfParam | | main.rs:815:5:818:5 | Self [trait MyTrait1] | -| main.rs:822:15:822:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:822:15:822:19 | SelfParam | TRef | main.rs:820:5:832:5 | Self [trait MyTrait2] | -| main.rs:825:9:831:9 | { ... } | | main.rs:820:20:820:22 | Tr2 | -| main.rs:826:13:830:13 | if ... {...} else {...} | | main.rs:820:20:820:22 | Tr2 | -| main.rs:826:16:826:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:826:16:826:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:826:20:826:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:826:22:828:13 | { ... } | | main.rs:820:20:820:22 | Tr2 | -| main.rs:827:17:827:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:827:17:827:20 | self | TRef | main.rs:820:5:832:5 | Self [trait MyTrait2] | -| main.rs:827:17:827:25 | self.m1() | | main.rs:820:20:820:22 | Tr2 | -| main.rs:828:20:830:13 | { ... } | | main.rs:820:20:820:22 | Tr2 | -| main.rs:829:17:829:31 | ...::m1(...) | | main.rs:820:20:820:22 | Tr2 | -| main.rs:829:26:829:30 | * ... | | main.rs:820:5:832:5 | Self [trait MyTrait2] | -| main.rs:829:27:829:30 | self | | {EXTERNAL LOCATION} | & | -| main.rs:829:27:829:30 | self | TRef | main.rs:820:5:832:5 | Self [trait MyTrait2] | -| main.rs:836:15:836:18 | SelfParam | | main.rs:834:5:846:5 | Self [trait MyTrait3] | -| main.rs:839:9:845:9 | { ... } | | main.rs:834:20:834:22 | Tr3 | -| main.rs:840:13:844:13 | if ... {...} else {...} | | main.rs:834:20:834:22 | Tr3 | -| main.rs:840:16:840:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:840:16:840:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:840:20:840:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:840:22:842:13 | { ... } | | main.rs:834:20:834:22 | Tr3 | -| main.rs:841:17:841:20 | self | | main.rs:834:5:846:5 | Self [trait MyTrait3] | -| main.rs:841:17:841:25 | self.m2() | | main.rs:800:5:803:5 | MyThing | -| main.rs:841:17:841:25 | self.m2() | A | main.rs:834:20:834:22 | Tr3 | -| main.rs:841:17:841:27 | ... .a | | main.rs:834:20:834:22 | Tr3 | -| main.rs:842:20:844:13 | { ... } | | main.rs:834:20:834:22 | Tr3 | -| main.rs:843:17:843:31 | ...::m2(...) | | main.rs:800:5:803:5 | MyThing | -| main.rs:843:17:843:31 | ...::m2(...) | A | main.rs:834:20:834:22 | Tr3 | -| main.rs:843:17:843:33 | ... .a | | main.rs:834:20:834:22 | Tr3 | -| main.rs:843:26:843:30 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:843:26:843:30 | &self | TRef | main.rs:834:5:846:5 | Self [trait MyTrait3] | -| main.rs:843:27:843:30 | self | | main.rs:834:5:846:5 | Self [trait MyTrait3] | -| main.rs:850:15:850:18 | SelfParam | | main.rs:800:5:803:5 | MyThing | -| main.rs:850:15:850:18 | SelfParam | A | main.rs:848:10:848:10 | T | -| main.rs:850:26:852:9 | { ... } | | main.rs:848:10:848:10 | T | -| main.rs:851:13:851:16 | self | | main.rs:800:5:803:5 | MyThing | -| main.rs:851:13:851:16 | self | A | main.rs:848:10:848:10 | T | -| main.rs:851:13:851:18 | self.a | | main.rs:848:10:848:10 | T | -| main.rs:859:15:859:18 | SelfParam | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:859:15:859:18 | SelfParam | A | main.rs:857:10:857:10 | T | -| main.rs:859:35:861:9 | { ... } | | main.rs:800:5:803:5 | MyThing | -| main.rs:859:35:861:9 | { ... } | A | main.rs:857:10:857:10 | T | -| main.rs:860:13:860:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:860:13:860:33 | MyThing {...} | A | main.rs:857:10:857:10 | T | -| main.rs:860:26:860:29 | self | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:860:26:860:29 | self | A | main.rs:857:10:857:10 | T | -| main.rs:860:26:860:31 | self.a | | main.rs:857:10:857:10 | T | -| main.rs:868:44:868:44 | x | | main.rs:868:26:868:41 | T2 | -| main.rs:868:57:870:5 | { ... } | | main.rs:868:22:868:23 | T1 | -| main.rs:869:9:869:9 | x | | main.rs:868:26:868:41 | T2 | -| main.rs:869:9:869:14 | x.m1() | | main.rs:868:22:868:23 | T1 | -| main.rs:872:56:872:56 | x | | main.rs:872:39:872:53 | T | -| main.rs:872:62:876:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:874:13:874:13 | a | | main.rs:800:5:803:5 | MyThing | -| main.rs:874:13:874:13 | a | A | main.rs:810:5:811:14 | S1 | -| main.rs:874:17:874:17 | x | | main.rs:872:39:872:53 | T | -| main.rs:874:17:874:22 | x.m1() | | main.rs:800:5:803:5 | MyThing | -| main.rs:874:17:874:22 | x.m1() | A | main.rs:810:5:811:14 | S1 | -| main.rs:875:9:875:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:875:18:875:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:875:18:875:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:875:18:875:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:875:18:875:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:875:18:875:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:875:26:875:26 | a | | main.rs:800:5:803:5 | MyThing | -| main.rs:875:26:875:26 | a | A | main.rs:810:5:811:14 | S1 | -| main.rs:878:16:902:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:879:13:879:13 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:879:13:879:13 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:879:17:879:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:879:17:879:33 | MyThing {...} | A | main.rs:810:5:811:14 | S1 | -| main.rs:879:30:879:31 | S1 | | main.rs:810:5:811:14 | S1 | -| main.rs:880:13:880:13 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:880:13:880:13 | y | A | main.rs:812:5:813:14 | S2 | -| main.rs:880:17:880:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:880:17:880:33 | MyThing {...} | A | main.rs:812:5:813:14 | S2 | -| main.rs:880:30:880:31 | S2 | | main.rs:812:5:813:14 | S2 | -| main.rs:882:9:882:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:882:18:882:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:882:18:882:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:882:18:882:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:882:18:882:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:882:18:882:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:882:26:882:26 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:882:26:882:26 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:882:26:882:31 | x.m1() | | main.rs:810:5:811:14 | S1 | -| main.rs:883:9:883:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:883:18:883:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:883:18:883:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:883:18:883:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:883:18:883:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:883:18:883:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:883:26:883:26 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:883:26:883:26 | y | A | main.rs:812:5:813:14 | S2 | -| main.rs:883:26:883:31 | y.m1() | | main.rs:812:5:813:14 | S2 | -| main.rs:885:13:885:13 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:885:13:885:13 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:885:17:885:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:885:17:885:33 | MyThing {...} | A | main.rs:810:5:811:14 | S1 | -| main.rs:885:30:885:31 | S1 | | main.rs:810:5:811:14 | S1 | -| main.rs:886:13:886:13 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:886:13:886:13 | y | A | main.rs:812:5:813:14 | S2 | -| main.rs:886:17:886:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:886:17:886:33 | MyThing {...} | A | main.rs:812:5:813:14 | S2 | -| main.rs:886:30:886:31 | S2 | | main.rs:812:5:813:14 | S2 | -| main.rs:888:9:888:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:888:18:888:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:888:18:888:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:888:18:888:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:888:18:888:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:888:18:888:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:888:26:888:26 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:888:26:888:26 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:888:26:888:31 | x.m2() | | main.rs:810:5:811:14 | S1 | -| main.rs:889:9:889:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:889:18:889:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:889:18:889:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:889:18:889:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:889:18:889:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:889:18:889:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:889:26:889:26 | y | | main.rs:800:5:803:5 | MyThing | -| main.rs:889:26:889:26 | y | A | main.rs:812:5:813:14 | S2 | -| main.rs:889:26:889:31 | y.m2() | | main.rs:812:5:813:14 | S2 | -| main.rs:891:13:891:13 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:891:13:891:13 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:891:17:891:34 | MyThing2 {...} | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:891:17:891:34 | MyThing2 {...} | A | main.rs:810:5:811:14 | S1 | -| main.rs:891:31:891:32 | S1 | | main.rs:810:5:811:14 | S1 | -| main.rs:892:13:892:13 | y | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:892:13:892:13 | y | A | main.rs:812:5:813:14 | S2 | -| main.rs:892:17:892:34 | MyThing2 {...} | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:892:17:892:34 | MyThing2 {...} | A | main.rs:812:5:813:14 | S2 | -| main.rs:892:31:892:32 | S2 | | main.rs:812:5:813:14 | S2 | -| main.rs:894:9:894:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:894:18:894:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:894:18:894:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:894:18:894:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:894:18:894:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:894:18:894:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:894:26:894:26 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:894:26:894:26 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:894:26:894:31 | x.m3() | | main.rs:810:5:811:14 | S1 | -| main.rs:895:9:895:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:895:18:895:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:895:18:895:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:895:18:895:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:895:18:895:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:895:18:895:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:895:26:895:26 | y | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:895:26:895:26 | y | A | main.rs:812:5:813:14 | S2 | -| main.rs:895:26:895:31 | y.m3() | | main.rs:812:5:813:14 | S2 | -| main.rs:897:13:897:13 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:897:13:897:13 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:897:17:897:33 | MyThing {...} | | main.rs:800:5:803:5 | MyThing | -| main.rs:897:17:897:33 | MyThing {...} | A | main.rs:810:5:811:14 | S1 | -| main.rs:897:30:897:31 | S1 | | main.rs:810:5:811:14 | S1 | -| main.rs:898:13:898:13 | s | | main.rs:810:5:811:14 | S1 | -| main.rs:898:17:898:32 | call_trait_m1(...) | | main.rs:810:5:811:14 | S1 | -| main.rs:898:31:898:31 | x | | main.rs:800:5:803:5 | MyThing | -| main.rs:898:31:898:31 | x | A | main.rs:810:5:811:14 | S1 | -| main.rs:900:13:900:13 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:900:13:900:13 | x | A | main.rs:812:5:813:14 | S2 | -| main.rs:900:17:900:34 | MyThing2 {...} | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:900:17:900:34 | MyThing2 {...} | A | main.rs:812:5:813:14 | S2 | -| main.rs:900:31:900:32 | S2 | | main.rs:812:5:813:14 | S2 | -| main.rs:901:13:901:13 | s | | main.rs:800:5:803:5 | MyThing | -| main.rs:901:13:901:13 | s | A | main.rs:812:5:813:14 | S2 | -| main.rs:901:17:901:32 | call_trait_m1(...) | | main.rs:800:5:803:5 | MyThing | -| main.rs:901:17:901:32 | call_trait_m1(...) | A | main.rs:812:5:813:14 | S2 | -| main.rs:901:31:901:31 | x | | main.rs:805:5:808:5 | MyThing2 | -| main.rs:901:31:901:31 | x | A | main.rs:812:5:813:14 | S2 | -| main.rs:918:22:918:22 | x | | {EXTERNAL LOCATION} | & | -| main.rs:918:22:918:22 | x | TRef | main.rs:918:11:918:19 | T | -| main.rs:918:35:920:5 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:918:35:920:5 | { ... } | TRef | main.rs:918:11:918:19 | T | -| main.rs:919:9:919:9 | x | | {EXTERNAL LOCATION} | & | -| main.rs:919:9:919:9 | x | TRef | main.rs:918:11:918:19 | T | -| main.rs:923:17:923:20 | SelfParam | | main.rs:908:5:909:14 | S1 | -| main.rs:923:29:925:9 | { ... } | | main.rs:911:5:912:14 | S2 | -| main.rs:924:13:924:14 | S2 | | main.rs:911:5:912:14 | S2 | -| main.rs:928:21:928:21 | x | | main.rs:928:13:928:14 | T1 | -| main.rs:931:5:933:5 | { ... } | | main.rs:928:17:928:18 | T2 | -| main.rs:932:9:932:9 | x | | main.rs:928:13:928:14 | T1 | -| main.rs:932:9:932:16 | x.into() | | main.rs:928:17:928:18 | T2 | -| main.rs:935:16:951:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:936:13:936:13 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:936:17:936:18 | S1 | | main.rs:908:5:909:14 | S1 | -| main.rs:937:9:937:32 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:937:18:937:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:937:18:937:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:937:18:937:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:937:18:937:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:937:18:937:31 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:937:26:937:31 | id(...) | | {EXTERNAL LOCATION} | & | -| main.rs:937:26:937:31 | id(...) | TRef | main.rs:908:5:909:14 | S1 | -| main.rs:937:29:937:30 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:937:29:937:30 | &x | TRef | main.rs:908:5:909:14 | S1 | -| main.rs:937:30:937:30 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:939:13:939:13 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:939:17:939:18 | S1 | | main.rs:908:5:909:14 | S1 | -| main.rs:940:9:940:38 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:940:18:940:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:940:18:940:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:940:18:940:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:940:18:940:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:940:18:940:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:940:26:940:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:940:26:940:37 | id::<...>(...) | TRef | main.rs:908:5:909:14 | S1 | -| main.rs:940:35:940:36 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:940:35:940:36 | &x | TRef | main.rs:908:5:909:14 | S1 | -| main.rs:940:36:940:36 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:942:13:942:13 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:942:17:942:18 | S1 | | main.rs:908:5:909:14 | S1 | -| main.rs:944:9:944:45 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:944:18:944:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:944:18:944:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:944:18:944:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:944:18:944:44 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:944:18:944:44 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:944:26:944:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | -| main.rs:944:26:944:44 | id::<...>(...) | TRef | main.rs:914:5:914:25 | dyn Trait | -| main.rs:944:42:944:43 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:944:42:944:43 | &x | TRef | main.rs:908:5:909:14 | S1 | -| main.rs:944:43:944:43 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:946:13:946:13 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:946:17:946:18 | S1 | | main.rs:908:5:909:14 | S1 | -| main.rs:947:9:947:25 | into::<...>(...) | | main.rs:911:5:912:14 | S2 | -| main.rs:947:24:947:24 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:949:13:949:13 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:949:17:949:18 | S1 | | main.rs:908:5:909:14 | S1 | -| main.rs:950:13:950:13 | y | | main.rs:911:5:912:14 | S2 | -| main.rs:950:21:950:27 | into(...) | | main.rs:911:5:912:14 | S2 | -| main.rs:950:26:950:26 | x | | main.rs:908:5:909:14 | S1 | -| main.rs:964:22:964:25 | SelfParam | | main.rs:955:5:961:5 | PairOption | -| main.rs:964:22:964:25 | SelfParam | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:964:22:964:25 | SelfParam | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:964:35:971:9 | { ... } | | main.rs:963:15:963:17 | Snd | -| main.rs:965:13:970:13 | match self { ... } | | file://:0:0:0:0 | ! | -| main.rs:965:13:970:13 | match self { ... } | | main.rs:963:15:963:17 | Snd | -| main.rs:965:19:965:22 | self | | main.rs:955:5:961:5 | PairOption | -| main.rs:965:19:965:22 | self | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:965:19:965:22 | self | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:966:17:966:38 | ...::PairNone(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:966:17:966:38 | ...::PairNone(...) | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:966:17:966:38 | ...::PairNone(...) | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:966:43:966:82 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:966:50:966:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | -| main.rs:966:50:966:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:966:50:966:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:966:50:966:81 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:966:50:966:81 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:967:17:967:38 | ...::PairFst(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:967:17:967:38 | ...::PairFst(...) | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:967:17:967:38 | ...::PairFst(...) | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:967:37:967:37 | _ | | main.rs:963:10:963:12 | Fst | -| main.rs:967:43:967:81 | MacroExpr | | file://:0:0:0:0 | ! | -| main.rs:967:50:967:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | -| main.rs:967:50:967:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | -| main.rs:967:50:967:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | -| main.rs:967:50:967:80 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:967:50:967:80 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:968:17:968:40 | ...::PairSnd(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:968:17:968:40 | ...::PairSnd(...) | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:968:17:968:40 | ...::PairSnd(...) | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:968:37:968:39 | snd | | main.rs:963:15:963:17 | Snd | -| main.rs:968:45:968:47 | snd | | main.rs:963:15:963:17 | Snd | -| main.rs:969:17:969:44 | ...::PairBoth(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:969:17:969:44 | ...::PairBoth(...) | Fst | main.rs:963:10:963:12 | Fst | -| main.rs:969:17:969:44 | ...::PairBoth(...) | Snd | main.rs:963:15:963:17 | Snd | -| main.rs:969:38:969:38 | _ | | main.rs:963:10:963:12 | Fst | -| main.rs:969:41:969:43 | snd | | main.rs:963:15:963:17 | Snd | -| main.rs:969:49:969:51 | snd | | main.rs:963:15:963:17 | Snd | -| main.rs:995:10:995:10 | t | | main.rs:955:5:961:5 | PairOption | -| main.rs:995:10:995:10 | t | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:995:10:995:10 | t | Snd | main.rs:955:5:961:5 | PairOption | -| main.rs:995:10:995:10 | t | Snd.Fst | main.rs:977:5:978:14 | S2 | -| main.rs:995:10:995:10 | t | Snd.Snd | main.rs:980:5:981:14 | S3 | -| main.rs:995:30:998:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:996:13:996:13 | x | | main.rs:980:5:981:14 | S3 | -| main.rs:996:17:996:17 | t | | main.rs:955:5:961:5 | PairOption | -| main.rs:996:17:996:17 | t | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:996:17:996:17 | t | Snd | main.rs:955:5:961:5 | PairOption | -| main.rs:996:17:996:17 | t | Snd.Fst | main.rs:977:5:978:14 | S2 | -| main.rs:996:17:996:17 | t | Snd.Snd | main.rs:980:5:981:14 | S3 | -| main.rs:996:17:996:29 | t.unwrapSnd() | | main.rs:955:5:961:5 | PairOption | -| main.rs:996:17:996:29 | t.unwrapSnd() | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:996:17:996:29 | t.unwrapSnd() | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:996:17:996:41 | ... .unwrapSnd() | | main.rs:980:5:981:14 | S3 | -| main.rs:997:9:997:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:997:18:997:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:997:18:997:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:997:18:997:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:997:18:997:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:997:18:997:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:997:26:997:26 | x | | main.rs:980:5:981:14 | S3 | -| main.rs:1008:16:1028:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1010:13:1010:14 | p1 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1010:13:1010:14 | p1 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1010:13:1010:14 | p1 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1010:26:1010:53 | ...::PairBoth(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:1010:26:1010:53 | ...::PairBoth(...) | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1010:26:1010:53 | ...::PairBoth(...) | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1010:47:1010:48 | S1 | | main.rs:974:5:975:14 | S1 | -| main.rs:1010:51:1010:52 | S2 | | main.rs:977:5:978:14 | S2 | -| main.rs:1011:9:1011:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1011:18:1011:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1011:18:1011:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1011:18:1011:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1011:18:1011:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1011:18:1011:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1011:26:1011:27 | p1 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1011:26:1011:27 | p1 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1011:26:1011:27 | p1 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1014:13:1014:14 | p2 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1014:13:1014:14 | p2 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1014:13:1014:14 | p2 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1014:26:1014:47 | ...::PairNone(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:1014:26:1014:47 | ...::PairNone(...) | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1014:26:1014:47 | ...::PairNone(...) | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1015:9:1015:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1015:18:1015:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1015:18:1015:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1015:18:1015:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1015:18:1015:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1015:18:1015:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1015:26:1015:27 | p2 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1015:26:1015:27 | p2 | Fst | main.rs:974:5:975:14 | S1 | -| main.rs:1015:26:1015:27 | p2 | Snd | main.rs:977:5:978:14 | S2 | -| main.rs:1018:13:1018:14 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1018:13:1018:14 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1018:13:1018:14 | p3 | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1018:34:1018:56 | ...::PairSnd(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:1018:34:1018:56 | ...::PairSnd(...) | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1018:34:1018:56 | ...::PairSnd(...) | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1018:54:1018:55 | S3 | | main.rs:980:5:981:14 | S3 | -| main.rs:1019:9:1019:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1019:18:1019:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1019:18:1019:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1019:18:1019:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1019:18:1019:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1019:18:1019:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1019:26:1019:27 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1019:26:1019:27 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1019:26:1019:27 | p3 | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1022:13:1022:14 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1022:13:1022:14 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1022:13:1022:14 | p3 | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1022:35:1022:56 | ...::PairNone(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:1022:35:1022:56 | ...::PairNone(...) | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1022:35:1022:56 | ...::PairNone(...) | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1023:9:1023:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1023:18:1023:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1023:18:1023:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1023:18:1023:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1023:18:1023:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1023:18:1023:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1023:26:1023:27 | p3 | | main.rs:955:5:961:5 | PairOption | -| main.rs:1023:26:1023:27 | p3 | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1023:26:1023:27 | p3 | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1025:9:1025:55 | g(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1025:11:1025:54 | ...::PairSnd(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:1025:11:1025:54 | ...::PairSnd(...) | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1025:11:1025:54 | ...::PairSnd(...) | Snd | main.rs:955:5:961:5 | PairOption | -| main.rs:1025:11:1025:54 | ...::PairSnd(...) | Snd.Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1025:11:1025:54 | ...::PairSnd(...) | Snd.Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1025:31:1025:53 | ...::PairSnd(...) | | main.rs:955:5:961:5 | PairOption | -| main.rs:1025:31:1025:53 | ...::PairSnd(...) | Fst | main.rs:977:5:978:14 | S2 | -| main.rs:1025:31:1025:53 | ...::PairSnd(...) | Snd | main.rs:980:5:981:14 | S3 | -| main.rs:1025:51:1025:52 | S3 | | main.rs:980:5:981:14 | S3 | -| main.rs:1027:13:1027:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1027:13:1027:13 | x | E | main.rs:974:5:975:14 | S1 | -| main.rs:1027:13:1027:13 | x | T | main.rs:1000:5:1000:34 | S4 | -| main.rs:1027:13:1027:13 | x | T.T41 | main.rs:977:5:978:14 | S2 | -| main.rs:1027:13:1027:13 | x | T.T42 | main.rs:1002:5:1002:22 | S5 | -| main.rs:1027:13:1027:13 | x | T.T42.T5 | main.rs:977:5:978:14 | S2 | -| main.rs:1040:16:1040:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1040:16:1040:24 | SelfParam | TRefMut | main.rs:1038:5:1045:5 | Self [trait MyTrait] | -| main.rs:1040:27:1040:31 | value | | main.rs:1038:19:1038:19 | S | -| main.rs:1042:21:1042:29 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1042:21:1042:29 | SelfParam | TRefMut | main.rs:1038:5:1045:5 | Self [trait MyTrait] | -| main.rs:1042:32:1042:36 | value | | main.rs:1038:19:1038:19 | S | -| main.rs:1042:42:1044:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1043:13:1043:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1043:13:1043:16 | self | TRefMut | main.rs:1038:5:1045:5 | Self [trait MyTrait] | -| main.rs:1043:13:1043:27 | self.set(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1043:22:1043:26 | value | | main.rs:1038:19:1038:19 | S | -| main.rs:1049:16:1049:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1049:16:1049:24 | SelfParam | TRefMut | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1049:16:1049:24 | SelfParam | TRefMut.T | main.rs:1047:10:1047:10 | T | -| main.rs:1049:27:1049:31 | value | | main.rs:1047:10:1047:10 | T | -| main.rs:1049:37:1049:38 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1053:26:1055:9 | { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1053:26:1055:9 | { ... } | T | main.rs:1052:10:1052:10 | T | -| main.rs:1054:13:1054:30 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1054:13:1054:30 | ...::MyNone(...) | T | main.rs:1052:10:1052:10 | T | -| main.rs:1059:20:1059:23 | SelfParam | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1059:20:1059:23 | SelfParam | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1059:20:1059:23 | SelfParam | T.T | main.rs:1058:10:1058:10 | T | -| main.rs:1059:41:1064:9 | { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1059:41:1064:9 | { ... } | T | main.rs:1058:10:1058:10 | T | -| main.rs:1060:13:1063:13 | match self { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1060:13:1063:13 | match self { ... } | T | main.rs:1058:10:1058:10 | T | -| main.rs:1060:19:1060:22 | self | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1060:19:1060:22 | self | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1060:19:1060:22 | self | T.T | main.rs:1058:10:1058:10 | T | -| main.rs:1061:17:1061:34 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1061:17:1061:34 | ...::MyNone(...) | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1061:17:1061:34 | ...::MyNone(...) | T.T | main.rs:1058:10:1058:10 | T | -| main.rs:1061:39:1061:56 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1061:39:1061:56 | ...::MyNone(...) | T | main.rs:1058:10:1058:10 | T | -| main.rs:1062:17:1062:35 | ...::MySome(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1062:17:1062:35 | ...::MySome(...) | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1062:17:1062:35 | ...::MySome(...) | T.T | main.rs:1058:10:1058:10 | T | -| main.rs:1062:34:1062:34 | x | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1062:34:1062:34 | x | T | main.rs:1058:10:1058:10 | T | -| main.rs:1062:40:1062:40 | x | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1062:40:1062:40 | x | T | main.rs:1058:10:1058:10 | T | -| main.rs:1070:16:1115:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1071:13:1071:14 | x1 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1071:13:1071:14 | x1 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1071:18:1071:37 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1071:18:1071:37 | ...::new(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1072:9:1072:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1072:18:1072:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1072:18:1072:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1072:18:1072:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1072:18:1072:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1072:18:1072:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1072:26:1072:27 | x1 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1072:26:1072:27 | x1 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1074:17:1074:18 | x2 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1074:17:1074:18 | x2 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1074:22:1074:36 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1074:22:1074:36 | ...::new(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1075:9:1075:10 | x2 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1075:9:1075:10 | x2 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1075:9:1075:17 | x2.set(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1075:16:1075:16 | S | | main.rs:1067:5:1068:13 | S | -| main.rs:1076:9:1076:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1076:18:1076:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1076:18:1076:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1076:18:1076:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1076:18:1076:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1076:18:1076:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1076:26:1076:27 | x2 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1076:26:1076:27 | x2 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1078:17:1078:18 | x3 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1078:17:1078:18 | x3 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1078:22:1078:36 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1078:22:1078:36 | ...::new(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1079:9:1079:10 | x3 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1079:9:1079:10 | x3 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1079:9:1079:22 | x3.call_set(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1079:21:1079:21 | S | | main.rs:1067:5:1068:13 | S | -| main.rs:1080:9:1080:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1080:18:1080:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1080:18:1080:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1080:18:1080:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1080:18:1080:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1080:18:1080:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1080:26:1080:27 | x3 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1080:26:1080:27 | x3 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1082:17:1082:18 | x4 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1082:17:1082:18 | x4 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1082:22:1082:36 | ...::new(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1082:22:1082:36 | ...::new(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1083:9:1083:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1083:23:1083:29 | &mut x4 | | {EXTERNAL LOCATION} | &mut | -| main.rs:1083:23:1083:29 | &mut x4 | TRefMut | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1083:23:1083:29 | &mut x4 | TRefMut.T | main.rs:1067:5:1068:13 | S | -| main.rs:1083:28:1083:29 | x4 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1083:28:1083:29 | x4 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1083:32:1083:32 | S | | main.rs:1067:5:1068:13 | S | -| main.rs:1084:9:1084:28 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1084:18:1084:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1084:18:1084:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1084:18:1084:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1084:18:1084:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1084:18:1084:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1084:26:1084:27 | x4 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1084:26:1084:27 | x4 | T | main.rs:1067:5:1068:13 | S | -| main.rs:1086:13:1086:14 | x5 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1086:13:1086:14 | x5 | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1086:13:1086:14 | x5 | T.T | main.rs:1067:5:1068:13 | S | -| main.rs:1086:18:1086:58 | ...::MySome(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1086:18:1086:58 | ...::MySome(...) | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1086:18:1086:58 | ...::MySome(...) | T.T | main.rs:1067:5:1068:13 | S | -| main.rs:1086:35:1086:57 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1086:35:1086:57 | ...::MyNone(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1087:9:1087:38 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1087:18:1087:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1087:18:1087:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1087:18:1087:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1087:18:1087:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1087:18:1087:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1087:26:1087:27 | x5 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1087:26:1087:27 | x5 | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1087:26:1087:27 | x5 | T.T | main.rs:1067:5:1068:13 | S | -| main.rs:1087:26:1087:37 | x5.flatten() | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1087:26:1087:37 | x5.flatten() | T | main.rs:1067:5:1068:13 | S | -| main.rs:1089:13:1089:14 | x6 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1089:13:1089:14 | x6 | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1089:13:1089:14 | x6 | T.T | main.rs:1067:5:1068:13 | S | -| main.rs:1089:18:1089:58 | ...::MySome(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1089:18:1089:58 | ...::MySome(...) | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1089:18:1089:58 | ...::MySome(...) | T.T | main.rs:1067:5:1068:13 | S | -| main.rs:1089:35:1089:57 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1089:35:1089:57 | ...::MyNone(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1090:9:1090:62 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1090:18:1090:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1090:18:1090:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1090:18:1090:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1090:18:1090:61 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1090:18:1090:61 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1090:26:1090:61 | ...::flatten(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1090:26:1090:61 | ...::flatten(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1090:59:1090:60 | x6 | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1090:59:1090:60 | x6 | T | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1090:59:1090:60 | x6 | T.T | main.rs:1067:5:1068:13 | S | -| main.rs:1093:13:1093:19 | from_if | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1093:13:1093:19 | from_if | T | main.rs:1067:5:1068:13 | S | -| main.rs:1093:23:1097:9 | if ... {...} else {...} | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1093:23:1097:9 | if ... {...} else {...} | T | main.rs:1067:5:1068:13 | S | -| main.rs:1093:26:1093:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1093:26:1093:30 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1093:30:1093:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1093:32:1095:9 | { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1093:32:1095:9 | { ... } | T | main.rs:1067:5:1068:13 | S | -| main.rs:1094:13:1094:30 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1094:13:1094:30 | ...::MyNone(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1095:16:1097:9 | { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1095:16:1097:9 | { ... } | T | main.rs:1067:5:1068:13 | S | -| main.rs:1096:13:1096:31 | ...::MySome(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1096:13:1096:31 | ...::MySome(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1096:30:1096:30 | S | | main.rs:1067:5:1068:13 | S | -| main.rs:1098:9:1098:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1098:18:1098:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1098:18:1098:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1098:18:1098:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1098:18:1098:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1098:18:1098:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1098:26:1098:32 | from_if | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1098:26:1098:32 | from_if | T | main.rs:1067:5:1068:13 | S | -| main.rs:1101:13:1101:22 | from_match | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1101:13:1101:22 | from_match | T | main.rs:1067:5:1068:13 | S | -| main.rs:1101:26:1104:9 | match ... { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1101:26:1104:9 | match ... { ... } | T | main.rs:1067:5:1068:13 | S | -| main.rs:1101:32:1101:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1101:32:1101:36 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1101:36:1101:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1102:13:1102:16 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1102:21:1102:38 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1102:21:1102:38 | ...::MyNone(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1103:13:1103:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1103:22:1103:40 | ...::MySome(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1103:22:1103:40 | ...::MySome(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1103:39:1103:39 | S | | main.rs:1067:5:1068:13 | S | -| main.rs:1105:9:1105:36 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1105:18:1105:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1105:18:1105:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1105:18:1105:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1105:18:1105:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1105:18:1105:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1105:26:1105:35 | from_match | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1105:26:1105:35 | from_match | T | main.rs:1067:5:1068:13 | S | -| main.rs:1108:13:1108:21 | from_loop | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1108:13:1108:21 | from_loop | T | main.rs:1067:5:1068:13 | S | -| main.rs:1108:25:1113:9 | loop { ... } | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1108:25:1113:9 | loop { ... } | T | main.rs:1067:5:1068:13 | S | -| main.rs:1108:30:1113:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1109:13:1111:13 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1109:16:1109:16 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1109:16:1109:20 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1109:20:1109:20 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1109:22:1111:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1110:23:1110:40 | ...::MyNone(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1110:23:1110:40 | ...::MyNone(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1112:19:1112:37 | ...::MySome(...) | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1112:19:1112:37 | ...::MySome(...) | T | main.rs:1067:5:1068:13 | S | -| main.rs:1112:36:1112:36 | S | | main.rs:1067:5:1068:13 | S | -| main.rs:1114:9:1114:35 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1114:18:1114:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1114:18:1114:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1114:18:1114:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1114:18:1114:34 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1114:18:1114:34 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1114:26:1114:34 | from_loop | | main.rs:1032:5:1036:5 | MyOption | -| main.rs:1114:26:1114:34 | from_loop | T | main.rs:1067:5:1068:13 | S | -| main.rs:1132:15:1132:18 | SelfParam | | main.rs:1120:5:1121:19 | S | -| main.rs:1132:15:1132:18 | SelfParam | T | main.rs:1131:10:1131:10 | T | -| main.rs:1132:26:1134:9 | { ... } | | main.rs:1131:10:1131:10 | T | -| main.rs:1133:13:1133:16 | self | | main.rs:1120:5:1121:19 | S | -| main.rs:1133:13:1133:16 | self | T | main.rs:1131:10:1131:10 | T | -| main.rs:1133:13:1133:18 | self.0 | | main.rs:1131:10:1131:10 | T | -| main.rs:1136:15:1136:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1136:15:1136:19 | SelfParam | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1136:15:1136:19 | SelfParam | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1136:28:1138:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1136:28:1138:9 | { ... } | TRef | main.rs:1131:10:1131:10 | T | -| main.rs:1137:13:1137:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1137:13:1137:19 | &... | TRef | main.rs:1131:10:1131:10 | T | -| main.rs:1137:14:1137:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1137:14:1137:17 | self | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1137:14:1137:17 | self | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1137:14:1137:19 | self.0 | | main.rs:1131:10:1131:10 | T | -| main.rs:1140:15:1140:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1140:15:1140:25 | SelfParam | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1140:15:1140:25 | SelfParam | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1140:34:1142:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1140:34:1142:9 | { ... } | TRef | main.rs:1131:10:1131:10 | T | -| main.rs:1141:13:1141:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1141:13:1141:19 | &... | TRef | main.rs:1131:10:1131:10 | T | -| main.rs:1141:14:1141:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1141:14:1141:17 | self | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1141:14:1141:17 | self | TRef.T | main.rs:1131:10:1131:10 | T | -| main.rs:1141:14:1141:19 | self.0 | | main.rs:1131:10:1131:10 | T | -| main.rs:1146:29:1146:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1146:29:1146:33 | SelfParam | TRef | main.rs:1145:5:1148:5 | Self [trait ATrait] | -| main.rs:1147:33:1147:36 | SelfParam | | main.rs:1145:5:1148:5 | Self [trait ATrait] | -| main.rs:1153:29:1153:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1153:29:1153:33 | SelfParam | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1153:29:1153:33 | SelfParam | TRef.TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1153:43:1155:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1154:13:1154:22 | (...) | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1154:13:1154:24 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1154:14:1154:21 | * ... | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1154:15:1154:21 | (...) | | {EXTERNAL LOCATION} | & | -| main.rs:1154:15:1154:21 | (...) | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1154:16:1154:20 | * ... | | {EXTERNAL LOCATION} | & | -| main.rs:1154:16:1154:20 | * ... | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1154:17:1154:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1154:17:1154:20 | self | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1154:17:1154:20 | self | TRef.TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1158:33:1158:36 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1158:33:1158:36 | SelfParam | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1158:46:1160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1159:13:1159:19 | (...) | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1159:13:1159:21 | ... .a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1159:14:1159:18 | * ... | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1159:15:1159:18 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1159:15:1159:18 | self | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1163:16:1213:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1164:13:1164:14 | x1 | | main.rs:1120:5:1121:19 | S | -| main.rs:1164:13:1164:14 | x1 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1164:18:1164:22 | S(...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1164:18:1164:22 | S(...) | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1164:20:1164:21 | S2 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1165:9:1165:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1165:18:1165:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1165:18:1165:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1165:18:1165:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1165:18:1165:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1165:18:1165:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1165:26:1165:27 | x1 | | main.rs:1120:5:1121:19 | S | -| main.rs:1165:26:1165:27 | x1 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1165:26:1165:32 | x1.m1() | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1167:13:1167:14 | x2 | | main.rs:1120:5:1121:19 | S | -| main.rs:1167:13:1167:14 | x2 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1167:18:1167:22 | S(...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1167:18:1167:22 | S(...) | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1167:20:1167:21 | S2 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1169:9:1169:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1169:18:1169:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1169:18:1169:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1169:18:1169:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1169:18:1169:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1169:18:1169:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1169:26:1169:27 | x2 | | main.rs:1120:5:1121:19 | S | -| main.rs:1169:26:1169:27 | x2 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1169:26:1169:32 | x2.m2() | | {EXTERNAL LOCATION} | & | -| main.rs:1169:26:1169:32 | x2.m2() | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1170:9:1170:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1170:18:1170:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1170:18:1170:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1170:18:1170:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1170:18:1170:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1170:18:1170:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1170:26:1170:27 | x2 | | main.rs:1120:5:1121:19 | S | -| main.rs:1170:26:1170:27 | x2 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1170:26:1170:32 | x2.m3() | | {EXTERNAL LOCATION} | & | -| main.rs:1170:26:1170:32 | x2.m3() | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1172:13:1172:14 | x3 | | main.rs:1120:5:1121:19 | S | -| main.rs:1172:13:1172:14 | x3 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1172:18:1172:22 | S(...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1172:18:1172:22 | S(...) | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1172:20:1172:21 | S2 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1174:9:1174:42 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1174:18:1174:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1174:18:1174:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1174:18:1174:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1174:18:1174:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1174:18:1174:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1174:26:1174:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1174:26:1174:41 | ...::m2(...) | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1174:38:1174:40 | &x3 | | {EXTERNAL LOCATION} | & | -| main.rs:1174:38:1174:40 | &x3 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1174:38:1174:40 | &x3 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1174:39:1174:40 | x3 | | main.rs:1120:5:1121:19 | S | -| main.rs:1174:39:1174:40 | x3 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1175:9:1175:42 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1175:18:1175:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1175:18:1175:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1175:18:1175:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1175:18:1175:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1175:18:1175:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1175:26:1175:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1175:26:1175:41 | ...::m3(...) | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1175:38:1175:40 | &x3 | | {EXTERNAL LOCATION} | & | -| main.rs:1175:38:1175:40 | &x3 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1175:38:1175:40 | &x3 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1175:39:1175:40 | x3 | | main.rs:1120:5:1121:19 | S | -| main.rs:1175:39:1175:40 | x3 | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1177:13:1177:14 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1177:13:1177:14 | x4 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1177:13:1177:14 | x4 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1177:18:1177:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1177:18:1177:23 | &... | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1177:18:1177:23 | &... | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1177:19:1177:23 | S(...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1177:19:1177:23 | S(...) | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1177:21:1177:22 | S2 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1179:9:1179:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1179:18:1179:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1179:18:1179:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1179:18:1179:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1179:18:1179:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1179:18:1179:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1179:26:1179:27 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1179:26:1179:27 | x4 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1179:26:1179:27 | x4 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1179:26:1179:32 | x4.m2() | | {EXTERNAL LOCATION} | & | -| main.rs:1179:26:1179:32 | x4.m2() | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1180:9:1180:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1180:18:1180:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1180:18:1180:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1180:18:1180:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1180:18:1180:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1180:18:1180:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1180:26:1180:27 | x4 | | {EXTERNAL LOCATION} | & | -| main.rs:1180:26:1180:27 | x4 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1180:26:1180:27 | x4 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1180:26:1180:32 | x4.m3() | | {EXTERNAL LOCATION} | & | -| main.rs:1180:26:1180:32 | x4.m3() | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1182:13:1182:14 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1182:13:1182:14 | x5 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1182:13:1182:14 | x5 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1182:18:1182:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1182:18:1182:23 | &... | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1182:18:1182:23 | &... | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1182:19:1182:23 | S(...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1182:19:1182:23 | S(...) | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1182:21:1182:22 | S2 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1184:9:1184:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1184:18:1184:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1184:18:1184:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1184:18:1184:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1184:18:1184:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1184:18:1184:32 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1184:26:1184:27 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1184:26:1184:27 | x5 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1184:26:1184:27 | x5 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1184:26:1184:32 | x5.m1() | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1185:9:1185:30 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1185:18:1185:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1185:18:1185:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1185:18:1185:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1185:18:1185:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1185:18:1185:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1185:26:1185:27 | x5 | | {EXTERNAL LOCATION} | & | -| main.rs:1185:26:1185:27 | x5 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1185:26:1185:27 | x5 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1185:26:1185:29 | x5.0 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1187:13:1187:14 | x6 | | {EXTERNAL LOCATION} | & | -| main.rs:1187:13:1187:14 | x6 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1187:13:1187:14 | x6 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1187:18:1187:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1187:18:1187:23 | &... | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1187:18:1187:23 | &... | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1187:19:1187:23 | S(...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1187:19:1187:23 | S(...) | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1187:21:1187:22 | S2 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1190:9:1190:36 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1190:18:1190:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1190:18:1190:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1190:18:1190:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1190:18:1190:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1190:18:1190:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1190:26:1190:30 | (...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1190:26:1190:30 | (...) | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1190:26:1190:35 | ... .m1() | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1190:27:1190:29 | * ... | | main.rs:1120:5:1121:19 | S | -| main.rs:1190:27:1190:29 | * ... | T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1190:28:1190:29 | x6 | | {EXTERNAL LOCATION} | & | -| main.rs:1190:28:1190:29 | x6 | TRef | main.rs:1120:5:1121:19 | S | -| main.rs:1190:28:1190:29 | x6 | TRef.T | main.rs:1123:5:1124:14 | S2 | -| main.rs:1192:13:1192:14 | x7 | | main.rs:1120:5:1121:19 | S | -| main.rs:1192:13:1192:14 | x7 | T | {EXTERNAL LOCATION} | & | -| main.rs:1192:13:1192:14 | x7 | T.TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1192:18:1192:23 | S(...) | | main.rs:1120:5:1121:19 | S | -| main.rs:1192:18:1192:23 | S(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:1192:18:1192:23 | S(...) | T.TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1192:20:1192:22 | &S2 | | {EXTERNAL LOCATION} | & | -| main.rs:1192:20:1192:22 | &S2 | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1192:21:1192:22 | S2 | | main.rs:1123:5:1124:14 | S2 | -| main.rs:1195:13:1195:13 | t | | {EXTERNAL LOCATION} | & | -| main.rs:1195:13:1195:13 | t | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1195:17:1195:18 | x7 | | main.rs:1120:5:1121:19 | S | -| main.rs:1195:17:1195:18 | x7 | T | {EXTERNAL LOCATION} | & | -| main.rs:1195:17:1195:18 | x7 | T.TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1195:17:1195:23 | x7.m1() | | {EXTERNAL LOCATION} | & | -| main.rs:1195:17:1195:23 | x7.m1() | TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1196:9:1196:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:735:18:735:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:735:18:735:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:735:18:735:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:735:26:735:26 | x | | main.rs:618:5:621:5 | MyThing | +| main.rs:735:26:735:26 | x | T | main.rs:623:5:624:14 | S1 | +| main.rs:735:26:735:31 | x.m2() | | main.rs:623:5:624:14 | S1 | +| main.rs:736:9:736:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:736:18:736:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:736:18:736:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:736:18:736:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:736:18:736:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:736:18:736:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:736:26:736:26 | y | | main.rs:618:5:621:5 | MyThing | +| main.rs:736:26:736:26 | y | T | main.rs:625:5:626:14 | S2 | +| main.rs:736:26:736:31 | y.m2() | | main.rs:625:5:626:14 | S2 | +| main.rs:738:13:738:14 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:738:13:738:14 | x2 | T | main.rs:623:5:624:14 | S1 | +| main.rs:738:18:738:34 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:738:18:738:34 | MyThing {...} | T | main.rs:623:5:624:14 | S1 | +| main.rs:738:31:738:32 | S1 | | main.rs:623:5:624:14 | S1 | +| main.rs:739:13:739:14 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:739:13:739:14 | y2 | T | main.rs:625:5:626:14 | S2 | +| main.rs:739:18:739:34 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:739:18:739:34 | MyThing {...} | T | main.rs:625:5:626:14 | S2 | +| main.rs:739:31:739:32 | S2 | | main.rs:625:5:626:14 | S2 | +| main.rs:741:13:741:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:741:17:741:33 | call_trait_m1(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:741:31:741:32 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:741:31:741:32 | x2 | T | main.rs:623:5:624:14 | S1 | +| main.rs:742:9:742:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:742:18:742:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:742:18:742:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:742:18:742:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:742:18:742:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:742:18:742:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:742:26:742:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:743:13:743:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:743:17:743:35 | call_trait_m1_2(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:743:33:743:34 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:743:33:743:34 | x2 | T | main.rs:623:5:624:14 | S1 | +| main.rs:744:9:744:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:744:18:744:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:744:18:744:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:744:18:744:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:744:18:744:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:744:18:744:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:744:26:744:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:745:13:745:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:745:17:745:35 | call_trait_m1_3(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:745:33:745:34 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:745:33:745:34 | x2 | T | main.rs:623:5:624:14 | S1 | +| main.rs:746:9:746:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:746:18:746:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:746:18:746:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:746:18:746:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:746:18:746:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:746:18:746:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:746:26:746:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:747:13:747:13 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:747:17:747:33 | call_trait_m1(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:747:31:747:32 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:747:31:747:32 | y2 | T | main.rs:625:5:626:14 | S2 | +| main.rs:748:9:748:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:748:18:748:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:748:18:748:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:748:18:748:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:748:18:748:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:748:18:748:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:748:26:748:26 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:749:13:749:13 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:749:17:749:35 | call_trait_m1_2(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:749:33:749:34 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:749:33:749:34 | y2 | T | main.rs:625:5:626:14 | S2 | +| main.rs:750:9:750:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:750:18:750:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:750:18:750:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:750:18:750:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:750:18:750:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:750:18:750:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:750:26:750:26 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:751:13:751:13 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:751:17:751:35 | call_trait_m1_3(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:751:33:751:34 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:751:33:751:34 | y2 | T | main.rs:625:5:626:14 | S2 | +| main.rs:752:9:752:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:752:18:752:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:752:18:752:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:752:18:752:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:752:18:752:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:752:18:752:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:752:26:752:26 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:753:13:753:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:753:17:753:38 | call_trait_assoc_1(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:753:36:753:37 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:753:36:753:37 | x2 | T | main.rs:623:5:624:14 | S1 | +| main.rs:754:9:754:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:754:18:754:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:754:18:754:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:754:18:754:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:754:18:754:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:754:18:754:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:754:26:754:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:755:13:755:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:755:17:755:38 | call_trait_assoc_2(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:755:36:755:37 | x2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:755:36:755:37 | x2 | T | main.rs:623:5:624:14 | S1 | +| main.rs:756:9:756:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:756:18:756:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:756:18:756:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:756:18:756:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:756:18:756:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:756:18:756:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:756:26:756:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:757:13:757:13 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:757:17:757:38 | call_trait_assoc_1(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:757:36:757:37 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:757:36:757:37 | y2 | T | main.rs:625:5:626:14 | S2 | +| main.rs:758:9:758:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:758:18:758:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:758:18:758:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:758:18:758:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:758:18:758:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:758:18:758:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:758:26:758:26 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:759:13:759:13 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:759:17:759:38 | call_trait_assoc_2(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:759:36:759:37 | y2 | | main.rs:618:5:621:5 | MyThing | +| main.rs:759:36:759:37 | y2 | T | main.rs:625:5:626:14 | S2 | +| main.rs:760:9:760:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:760:18:760:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:760:18:760:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:760:18:760:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:760:18:760:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:760:18:760:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:760:26:760:26 | a | | main.rs:625:5:626:14 | S2 | +| main.rs:762:13:762:14 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:762:13:762:14 | x3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:762:13:762:14 | x3 | T.T | main.rs:623:5:624:14 | S1 | +| main.rs:762:18:764:9 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:762:18:764:9 | MyThing {...} | T | main.rs:618:5:621:5 | MyThing | +| main.rs:762:18:764:9 | MyThing {...} | T.T | main.rs:623:5:624:14 | S1 | +| main.rs:763:16:763:32 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:763:16:763:32 | MyThing {...} | T | main.rs:623:5:624:14 | S1 | +| main.rs:763:29:763:30 | S1 | | main.rs:623:5:624:14 | S1 | +| main.rs:765:13:765:14 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:765:13:765:14 | y3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:765:13:765:14 | y3 | T.T | main.rs:625:5:626:14 | S2 | +| main.rs:765:18:767:9 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:765:18:767:9 | MyThing {...} | T | main.rs:618:5:621:5 | MyThing | +| main.rs:765:18:767:9 | MyThing {...} | T.T | main.rs:625:5:626:14 | S2 | +| main.rs:766:16:766:32 | MyThing {...} | | main.rs:618:5:621:5 | MyThing | +| main.rs:766:16:766:32 | MyThing {...} | T | main.rs:625:5:626:14 | S2 | +| main.rs:766:29:766:30 | S2 | | main.rs:625:5:626:14 | S2 | +| main.rs:769:13:769:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:769:17:769:39 | call_trait_thing_m1(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:769:37:769:38 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:769:37:769:38 | x3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:769:37:769:38 | x3 | T.T | main.rs:623:5:624:14 | S1 | +| main.rs:770:9:770:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:770:18:770:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:770:18:770:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:770:18:770:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:770:18:770:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:770:18:770:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:770:26:770:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:771:13:771:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:771:17:771:41 | call_trait_thing_m1_2(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:771:39:771:40 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:771:39:771:40 | x3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:771:39:771:40 | x3 | T.T | main.rs:623:5:624:14 | S1 | +| main.rs:772:9:772:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:772:18:772:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:772:18:772:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:772:18:772:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:772:18:772:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:772:18:772:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:772:26:772:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:773:13:773:13 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:773:17:773:41 | call_trait_thing_m1_3(...) | | main.rs:623:5:624:14 | S1 | +| main.rs:773:39:773:40 | x3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:773:39:773:40 | x3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:773:39:773:40 | x3 | T.T | main.rs:623:5:624:14 | S1 | +| main.rs:774:9:774:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:774:18:774:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:774:18:774:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:774:18:774:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:774:18:774:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:774:18:774:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:774:26:774:26 | a | | main.rs:623:5:624:14 | S1 | +| main.rs:775:13:775:13 | b | | main.rs:625:5:626:14 | S2 | +| main.rs:775:17:775:39 | call_trait_thing_m1(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:775:37:775:38 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:775:37:775:38 | y3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:775:37:775:38 | y3 | T.T | main.rs:625:5:626:14 | S2 | +| main.rs:776:9:776:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:776:18:776:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:776:18:776:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:776:18:776:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:776:18:776:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:776:18:776:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:776:26:776:26 | b | | main.rs:625:5:626:14 | S2 | +| main.rs:777:13:777:13 | b | | main.rs:625:5:626:14 | S2 | +| main.rs:777:17:777:41 | call_trait_thing_m1_2(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:777:39:777:40 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:777:39:777:40 | y3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:777:39:777:40 | y3 | T.T | main.rs:625:5:626:14 | S2 | +| main.rs:778:9:778:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:778:18:778:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:778:18:778:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:778:18:778:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:778:18:778:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:778:18:778:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:778:26:778:26 | b | | main.rs:625:5:626:14 | S2 | +| main.rs:779:13:779:13 | b | | main.rs:625:5:626:14 | S2 | +| main.rs:779:17:779:41 | call_trait_thing_m1_3(...) | | main.rs:625:5:626:14 | S2 | +| main.rs:779:39:779:40 | y3 | | main.rs:618:5:621:5 | MyThing | +| main.rs:779:39:779:40 | y3 | T | main.rs:618:5:621:5 | MyThing | +| main.rs:779:39:779:40 | y3 | T.T | main.rs:625:5:626:14 | S2 | +| main.rs:780:9:780:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:780:18:780:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:780:18:780:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:780:18:780:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:780:18:780:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:780:18:780:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:780:26:780:26 | b | | main.rs:625:5:626:14 | S2 | +| main.rs:781:13:781:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:781:17:781:26 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:781:24:781:25 | S1 | | main.rs:623:5:624:14 | S1 | +| main.rs:782:13:782:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:782:22:782:31 | ...::m2(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:782:29:782:30 | S2 | | main.rs:625:5:626:14 | S2 | +| main.rs:799:15:799:18 | SelfParam | | main.rs:787:5:791:5 | MyEnum | +| main.rs:799:15:799:18 | SelfParam | A | main.rs:798:10:798:10 | T | +| main.rs:799:26:804:9 | { ... } | | main.rs:798:10:798:10 | T | +| main.rs:800:13:803:13 | match self { ... } | | main.rs:798:10:798:10 | T | +| main.rs:800:19:800:22 | self | | main.rs:787:5:791:5 | MyEnum | +| main.rs:800:19:800:22 | self | A | main.rs:798:10:798:10 | T | +| main.rs:801:17:801:29 | ...::C1(...) | | main.rs:787:5:791:5 | MyEnum | +| main.rs:801:17:801:29 | ...::C1(...) | A | main.rs:798:10:798:10 | T | +| main.rs:801:28:801:28 | a | | main.rs:798:10:798:10 | T | +| main.rs:801:34:801:34 | a | | main.rs:798:10:798:10 | T | +| main.rs:802:17:802:32 | ...::C2 {...} | | main.rs:787:5:791:5 | MyEnum | +| main.rs:802:17:802:32 | ...::C2 {...} | A | main.rs:798:10:798:10 | T | +| main.rs:802:30:802:30 | a | | main.rs:798:10:798:10 | T | +| main.rs:802:37:802:37 | a | | main.rs:798:10:798:10 | T | +| main.rs:807:16:813:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:808:13:808:13 | x | | main.rs:787:5:791:5 | MyEnum | +| main.rs:808:13:808:13 | x | A | main.rs:793:5:794:14 | S1 | +| main.rs:808:17:808:30 | ...::C1(...) | | main.rs:787:5:791:5 | MyEnum | +| main.rs:808:17:808:30 | ...::C1(...) | A | main.rs:793:5:794:14 | S1 | +| main.rs:808:28:808:29 | S1 | | main.rs:793:5:794:14 | S1 | +| main.rs:809:13:809:13 | y | | main.rs:787:5:791:5 | MyEnum | +| main.rs:809:13:809:13 | y | A | main.rs:795:5:796:14 | S2 | +| main.rs:809:17:809:36 | ...::C2 {...} | | main.rs:787:5:791:5 | MyEnum | +| main.rs:809:17:809:36 | ...::C2 {...} | A | main.rs:795:5:796:14 | S2 | +| main.rs:809:33:809:34 | S2 | | main.rs:795:5:796:14 | S2 | +| main.rs:811:9:811:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:811:18:811:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:811:18:811:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:811:18:811:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:811:18:811:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:811:18:811:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:811:26:811:26 | x | | main.rs:787:5:791:5 | MyEnum | +| main.rs:811:26:811:26 | x | A | main.rs:793:5:794:14 | S1 | +| main.rs:811:26:811:31 | x.m1() | | main.rs:793:5:794:14 | S1 | +| main.rs:812:9:812:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:812:18:812:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:812:18:812:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:812:18:812:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:812:18:812:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:812:18:812:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:812:26:812:26 | y | | main.rs:787:5:791:5 | MyEnum | +| main.rs:812:26:812:26 | y | A | main.rs:795:5:796:14 | S2 | +| main.rs:812:26:812:31 | y.m1() | | main.rs:795:5:796:14 | S2 | +| main.rs:834:15:834:18 | SelfParam | | main.rs:832:5:835:5 | Self [trait MyTrait1] | +| main.rs:839:15:839:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:839:15:839:19 | SelfParam | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | +| main.rs:842:9:848:9 | { ... } | | main.rs:837:20:837:22 | Tr2 | +| main.rs:843:13:847:13 | if ... {...} else {...} | | main.rs:837:20:837:22 | Tr2 | +| main.rs:843:16:843:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:843:16:843:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:843:20:843:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:843:22:845:13 | { ... } | | main.rs:837:20:837:22 | Tr2 | +| main.rs:844:17:844:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:844:17:844:20 | self | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | +| main.rs:844:17:844:25 | self.m1() | | main.rs:837:20:837:22 | Tr2 | +| main.rs:845:20:847:13 | { ... } | | main.rs:837:20:837:22 | Tr2 | +| main.rs:846:17:846:31 | ...::m1(...) | | main.rs:837:20:837:22 | Tr2 | +| main.rs:846:26:846:30 | * ... | | main.rs:837:5:849:5 | Self [trait MyTrait2] | +| main.rs:846:27:846:30 | self | | {EXTERNAL LOCATION} | & | +| main.rs:846:27:846:30 | self | TRef | main.rs:837:5:849:5 | Self [trait MyTrait2] | +| main.rs:853:15:853:18 | SelfParam | | main.rs:851:5:863:5 | Self [trait MyTrait3] | +| main.rs:856:9:862:9 | { ... } | | main.rs:851:20:851:22 | Tr3 | +| main.rs:857:13:861:13 | if ... {...} else {...} | | main.rs:851:20:851:22 | Tr3 | +| main.rs:857:16:857:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:857:16:857:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:857:20:857:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:857:22:859:13 | { ... } | | main.rs:851:20:851:22 | Tr3 | +| main.rs:858:17:858:20 | self | | main.rs:851:5:863:5 | Self [trait MyTrait3] | +| main.rs:858:17:858:25 | self.m2() | | main.rs:817:5:820:5 | MyThing | +| main.rs:858:17:858:25 | self.m2() | A | main.rs:851:20:851:22 | Tr3 | +| main.rs:858:17:858:27 | ... .a | | main.rs:851:20:851:22 | Tr3 | +| main.rs:859:20:861:13 | { ... } | | main.rs:851:20:851:22 | Tr3 | +| main.rs:860:17:860:31 | ...::m2(...) | | main.rs:817:5:820:5 | MyThing | +| main.rs:860:17:860:31 | ...::m2(...) | A | main.rs:851:20:851:22 | Tr3 | +| main.rs:860:17:860:33 | ... .a | | main.rs:851:20:851:22 | Tr3 | +| main.rs:860:26:860:30 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:860:26:860:30 | &self | TRef | main.rs:851:5:863:5 | Self [trait MyTrait3] | +| main.rs:860:27:860:30 | self | | main.rs:851:5:863:5 | Self [trait MyTrait3] | +| main.rs:867:15:867:18 | SelfParam | | main.rs:817:5:820:5 | MyThing | +| main.rs:867:15:867:18 | SelfParam | A | main.rs:865:10:865:10 | T | +| main.rs:867:26:869:9 | { ... } | | main.rs:865:10:865:10 | T | +| main.rs:868:13:868:16 | self | | main.rs:817:5:820:5 | MyThing | +| main.rs:868:13:868:16 | self | A | main.rs:865:10:865:10 | T | +| main.rs:868:13:868:18 | self.a | | main.rs:865:10:865:10 | T | +| main.rs:876:15:876:18 | SelfParam | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:876:15:876:18 | SelfParam | A | main.rs:874:10:874:10 | T | +| main.rs:876:35:878:9 | { ... } | | main.rs:817:5:820:5 | MyThing | +| main.rs:876:35:878:9 | { ... } | A | main.rs:874:10:874:10 | T | +| main.rs:877:13:877:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:877:13:877:33 | MyThing {...} | A | main.rs:874:10:874:10 | T | +| main.rs:877:26:877:29 | self | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:877:26:877:29 | self | A | main.rs:874:10:874:10 | T | +| main.rs:877:26:877:31 | self.a | | main.rs:874:10:874:10 | T | +| main.rs:885:44:885:44 | x | | main.rs:885:26:885:41 | T2 | +| main.rs:885:57:887:5 | { ... } | | main.rs:885:22:885:23 | T1 | +| main.rs:886:9:886:9 | x | | main.rs:885:26:885:41 | T2 | +| main.rs:886:9:886:14 | x.m1() | | main.rs:885:22:885:23 | T1 | +| main.rs:889:56:889:56 | x | | main.rs:889:39:889:53 | T | +| main.rs:889:62:893:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:891:13:891:13 | a | | main.rs:817:5:820:5 | MyThing | +| main.rs:891:13:891:13 | a | A | main.rs:827:5:828:14 | S1 | +| main.rs:891:17:891:17 | x | | main.rs:889:39:889:53 | T | +| main.rs:891:17:891:22 | x.m1() | | main.rs:817:5:820:5 | MyThing | +| main.rs:891:17:891:22 | x.m1() | A | main.rs:827:5:828:14 | S1 | +| main.rs:892:9:892:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:892:18:892:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:892:18:892:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:892:18:892:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:892:18:892:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:892:18:892:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:892:26:892:26 | a | | main.rs:817:5:820:5 | MyThing | +| main.rs:892:26:892:26 | a | A | main.rs:827:5:828:14 | S1 | +| main.rs:895:16:919:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:896:13:896:13 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:896:13:896:13 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:896:17:896:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:896:17:896:33 | MyThing {...} | A | main.rs:827:5:828:14 | S1 | +| main.rs:896:30:896:31 | S1 | | main.rs:827:5:828:14 | S1 | +| main.rs:897:13:897:13 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:897:13:897:13 | y | A | main.rs:829:5:830:14 | S2 | +| main.rs:897:17:897:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:897:17:897:33 | MyThing {...} | A | main.rs:829:5:830:14 | S2 | +| main.rs:897:30:897:31 | S2 | | main.rs:829:5:830:14 | S2 | +| main.rs:899:9:899:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:899:18:899:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:899:18:899:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:899:18:899:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:899:18:899:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:899:18:899:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:899:26:899:26 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:899:26:899:26 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:899:26:899:31 | x.m1() | | main.rs:827:5:828:14 | S1 | +| main.rs:900:9:900:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:900:18:900:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:900:18:900:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:900:18:900:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:900:18:900:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:900:18:900:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:900:26:900:26 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:900:26:900:26 | y | A | main.rs:829:5:830:14 | S2 | +| main.rs:900:26:900:31 | y.m1() | | main.rs:829:5:830:14 | S2 | +| main.rs:902:13:902:13 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:902:13:902:13 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:902:17:902:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:902:17:902:33 | MyThing {...} | A | main.rs:827:5:828:14 | S1 | +| main.rs:902:30:902:31 | S1 | | main.rs:827:5:828:14 | S1 | +| main.rs:903:13:903:13 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:903:13:903:13 | y | A | main.rs:829:5:830:14 | S2 | +| main.rs:903:17:903:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:903:17:903:33 | MyThing {...} | A | main.rs:829:5:830:14 | S2 | +| main.rs:903:30:903:31 | S2 | | main.rs:829:5:830:14 | S2 | +| main.rs:905:9:905:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:905:18:905:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:905:18:905:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:905:18:905:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:905:18:905:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:905:18:905:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:905:26:905:26 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:905:26:905:26 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:905:26:905:31 | x.m2() | | main.rs:827:5:828:14 | S1 | +| main.rs:906:9:906:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:906:18:906:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:906:18:906:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:906:18:906:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:906:18:906:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:906:18:906:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:906:26:906:26 | y | | main.rs:817:5:820:5 | MyThing | +| main.rs:906:26:906:26 | y | A | main.rs:829:5:830:14 | S2 | +| main.rs:906:26:906:31 | y.m2() | | main.rs:829:5:830:14 | S2 | +| main.rs:908:13:908:13 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:908:13:908:13 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:908:17:908:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:908:17:908:34 | MyThing2 {...} | A | main.rs:827:5:828:14 | S1 | +| main.rs:908:31:908:32 | S1 | | main.rs:827:5:828:14 | S1 | +| main.rs:909:13:909:13 | y | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:909:13:909:13 | y | A | main.rs:829:5:830:14 | S2 | +| main.rs:909:17:909:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:909:17:909:34 | MyThing2 {...} | A | main.rs:829:5:830:14 | S2 | +| main.rs:909:31:909:32 | S2 | | main.rs:829:5:830:14 | S2 | +| main.rs:911:9:911:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:911:18:911:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:911:18:911:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:911:18:911:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:911:18:911:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:911:18:911:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:911:26:911:26 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:911:26:911:26 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:911:26:911:31 | x.m3() | | main.rs:827:5:828:14 | S1 | +| main.rs:912:9:912:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:912:18:912:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:912:18:912:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:912:18:912:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:912:18:912:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:912:18:912:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:912:26:912:26 | y | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:912:26:912:26 | y | A | main.rs:829:5:830:14 | S2 | +| main.rs:912:26:912:31 | y.m3() | | main.rs:829:5:830:14 | S2 | +| main.rs:914:13:914:13 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:914:13:914:13 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:914:17:914:33 | MyThing {...} | | main.rs:817:5:820:5 | MyThing | +| main.rs:914:17:914:33 | MyThing {...} | A | main.rs:827:5:828:14 | S1 | +| main.rs:914:30:914:31 | S1 | | main.rs:827:5:828:14 | S1 | +| main.rs:915:13:915:13 | s | | main.rs:827:5:828:14 | S1 | +| main.rs:915:17:915:32 | call_trait_m1(...) | | main.rs:827:5:828:14 | S1 | +| main.rs:915:31:915:31 | x | | main.rs:817:5:820:5 | MyThing | +| main.rs:915:31:915:31 | x | A | main.rs:827:5:828:14 | S1 | +| main.rs:917:13:917:13 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:917:13:917:13 | x | A | main.rs:829:5:830:14 | S2 | +| main.rs:917:17:917:34 | MyThing2 {...} | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:917:17:917:34 | MyThing2 {...} | A | main.rs:829:5:830:14 | S2 | +| main.rs:917:31:917:32 | S2 | | main.rs:829:5:830:14 | S2 | +| main.rs:918:13:918:13 | s | | main.rs:817:5:820:5 | MyThing | +| main.rs:918:13:918:13 | s | A | main.rs:829:5:830:14 | S2 | +| main.rs:918:17:918:32 | call_trait_m1(...) | | main.rs:817:5:820:5 | MyThing | +| main.rs:918:17:918:32 | call_trait_m1(...) | A | main.rs:829:5:830:14 | S2 | +| main.rs:918:31:918:31 | x | | main.rs:822:5:825:5 | MyThing2 | +| main.rs:918:31:918:31 | x | A | main.rs:829:5:830:14 | S2 | +| main.rs:935:22:935:22 | x | | {EXTERNAL LOCATION} | & | +| main.rs:935:22:935:22 | x | TRef | main.rs:935:11:935:19 | T | +| main.rs:935:35:937:5 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:935:35:937:5 | { ... } | TRef | main.rs:935:11:935:19 | T | +| main.rs:936:9:936:9 | x | | {EXTERNAL LOCATION} | & | +| main.rs:936:9:936:9 | x | TRef | main.rs:935:11:935:19 | T | +| main.rs:940:17:940:20 | SelfParam | | main.rs:925:5:926:14 | S1 | +| main.rs:940:29:942:9 | { ... } | | main.rs:928:5:929:14 | S2 | +| main.rs:941:13:941:14 | S2 | | main.rs:928:5:929:14 | S2 | +| main.rs:945:21:945:21 | x | | main.rs:945:13:945:14 | T1 | +| main.rs:948:5:950:5 | { ... } | | main.rs:945:17:945:18 | T2 | +| main.rs:949:9:949:9 | x | | main.rs:945:13:945:14 | T1 | +| main.rs:949:9:949:16 | x.into() | | main.rs:945:17:945:18 | T2 | +| main.rs:952:16:968:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:953:13:953:13 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:953:17:953:18 | S1 | | main.rs:925:5:926:14 | S1 | +| main.rs:954:9:954:32 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:954:18:954:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:954:18:954:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:954:18:954:31 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:954:18:954:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:954:18:954:31 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:954:26:954:31 | id(...) | | {EXTERNAL LOCATION} | & | +| main.rs:954:26:954:31 | id(...) | TRef | main.rs:925:5:926:14 | S1 | +| main.rs:954:29:954:30 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:954:29:954:30 | &x | TRef | main.rs:925:5:926:14 | S1 | +| main.rs:954:30:954:30 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:956:13:956:13 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:956:17:956:18 | S1 | | main.rs:925:5:926:14 | S1 | +| main.rs:957:9:957:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:957:18:957:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:957:18:957:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:957:18:957:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:957:18:957:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:957:18:957:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:957:26:957:37 | id::<...>(...) | | {EXTERNAL LOCATION} | & | +| main.rs:957:26:957:37 | id::<...>(...) | TRef | main.rs:925:5:926:14 | S1 | +| main.rs:957:35:957:36 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:957:35:957:36 | &x | TRef | main.rs:925:5:926:14 | S1 | +| main.rs:957:36:957:36 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:959:13:959:13 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:959:17:959:18 | S1 | | main.rs:925:5:926:14 | S1 | +| main.rs:961:9:961:45 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:961:18:961:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:961:18:961:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:961:18:961:44 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:961:18:961:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:961:18:961:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:961:26:961:44 | id::<...>(...) | | {EXTERNAL LOCATION} | & | +| main.rs:961:26:961:44 | id::<...>(...) | TRef | main.rs:931:5:931:25 | dyn Trait | +| main.rs:961:42:961:43 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:961:42:961:43 | &x | TRef | main.rs:925:5:926:14 | S1 | +| main.rs:961:43:961:43 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:963:13:963:13 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:963:17:963:18 | S1 | | main.rs:925:5:926:14 | S1 | +| main.rs:964:9:964:25 | into::<...>(...) | | main.rs:928:5:929:14 | S2 | +| main.rs:964:24:964:24 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:966:13:966:13 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:966:17:966:18 | S1 | | main.rs:925:5:926:14 | S1 | +| main.rs:967:13:967:13 | y | | main.rs:928:5:929:14 | S2 | +| main.rs:967:21:967:27 | into(...) | | main.rs:928:5:929:14 | S2 | +| main.rs:967:26:967:26 | x | | main.rs:925:5:926:14 | S1 | +| main.rs:981:22:981:25 | SelfParam | | main.rs:972:5:978:5 | PairOption | +| main.rs:981:22:981:25 | SelfParam | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:981:22:981:25 | SelfParam | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:981:35:988:9 | { ... } | | main.rs:980:15:980:17 | Snd | +| main.rs:982:13:987:13 | match self { ... } | | file://:0:0:0:0 | ! | +| main.rs:982:13:987:13 | match self { ... } | | main.rs:980:15:980:17 | Snd | +| main.rs:982:19:982:22 | self | | main.rs:972:5:978:5 | PairOption | +| main.rs:982:19:982:22 | self | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:982:19:982:22 | self | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:983:17:983:38 | ...::PairNone(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:983:17:983:38 | ...::PairNone(...) | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:983:17:983:38 | ...::PairNone(...) | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:983:43:983:82 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:983:50:983:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | & | +| main.rs:983:50:983:81 | "PairNone has no second elemen... | TRef | {EXTERNAL LOCATION} | str | +| main.rs:983:50:983:81 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:983:50:983:81 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:983:50:983:81 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:984:17:984:38 | ...::PairFst(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:984:17:984:38 | ...::PairFst(...) | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:984:17:984:38 | ...::PairFst(...) | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:984:37:984:37 | _ | | main.rs:980:10:980:12 | Fst | +| main.rs:984:43:984:81 | MacroExpr | | file://:0:0:0:0 | ! | +| main.rs:984:50:984:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | & | +| main.rs:984:50:984:80 | "PairFst has no second element... | TRef | {EXTERNAL LOCATION} | str | +| main.rs:984:50:984:80 | ...::panic_fmt(...) | | file://:0:0:0:0 | ! | +| main.rs:984:50:984:80 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:984:50:984:80 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:985:17:985:40 | ...::PairSnd(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:985:17:985:40 | ...::PairSnd(...) | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:985:17:985:40 | ...::PairSnd(...) | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:985:37:985:39 | snd | | main.rs:980:15:980:17 | Snd | +| main.rs:985:45:985:47 | snd | | main.rs:980:15:980:17 | Snd | +| main.rs:986:17:986:44 | ...::PairBoth(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:986:17:986:44 | ...::PairBoth(...) | Fst | main.rs:980:10:980:12 | Fst | +| main.rs:986:17:986:44 | ...::PairBoth(...) | Snd | main.rs:980:15:980:17 | Snd | +| main.rs:986:38:986:38 | _ | | main.rs:980:10:980:12 | Fst | +| main.rs:986:41:986:43 | snd | | main.rs:980:15:980:17 | Snd | +| main.rs:986:49:986:51 | snd | | main.rs:980:15:980:17 | Snd | +| main.rs:1012:10:1012:10 | t | | main.rs:972:5:978:5 | PairOption | +| main.rs:1012:10:1012:10 | t | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1012:10:1012:10 | t | Snd | main.rs:972:5:978:5 | PairOption | +| main.rs:1012:10:1012:10 | t | Snd.Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1012:10:1012:10 | t | Snd.Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1012:30:1015:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1013:13:1013:13 | x | | main.rs:997:5:998:14 | S3 | +| main.rs:1013:17:1013:17 | t | | main.rs:972:5:978:5 | PairOption | +| main.rs:1013:17:1013:17 | t | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1013:17:1013:17 | t | Snd | main.rs:972:5:978:5 | PairOption | +| main.rs:1013:17:1013:17 | t | Snd.Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1013:17:1013:17 | t | Snd.Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1013:17:1013:29 | t.unwrapSnd() | | main.rs:972:5:978:5 | PairOption | +| main.rs:1013:17:1013:29 | t.unwrapSnd() | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1013:17:1013:29 | t.unwrapSnd() | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1013:17:1013:41 | ... .unwrapSnd() | | main.rs:997:5:998:14 | S3 | +| main.rs:1014:9:1014:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1014:18:1014:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1014:18:1014:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1014:18:1014:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1014:18:1014:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1014:18:1014:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1014:26:1014:26 | x | | main.rs:997:5:998:14 | S3 | +| main.rs:1025:16:1045:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1027:13:1027:14 | p1 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1027:13:1027:14 | p1 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1027:13:1027:14 | p1 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1027:26:1027:53 | ...::PairBoth(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:1027:26:1027:53 | ...::PairBoth(...) | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1027:26:1027:53 | ...::PairBoth(...) | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1027:47:1027:48 | S1 | | main.rs:991:5:992:14 | S1 | +| main.rs:1027:51:1027:52 | S2 | | main.rs:994:5:995:14 | S2 | +| main.rs:1028:9:1028:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1028:18:1028:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1028:18:1028:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1028:18:1028:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1028:18:1028:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1028:26:1028:27 | p1 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1028:26:1028:27 | p1 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1028:26:1028:27 | p1 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1031:13:1031:14 | p2 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1031:13:1031:14 | p2 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1031:13:1031:14 | p2 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1031:26:1031:47 | ...::PairNone(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:1031:26:1031:47 | ...::PairNone(...) | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1031:26:1031:47 | ...::PairNone(...) | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1032:9:1032:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1032:18:1032:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1032:18:1032:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1032:18:1032:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1032:18:1032:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1032:18:1032:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1032:26:1032:27 | p2 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1032:26:1032:27 | p2 | Fst | main.rs:991:5:992:14 | S1 | +| main.rs:1032:26:1032:27 | p2 | Snd | main.rs:994:5:995:14 | S2 | +| main.rs:1035:13:1035:14 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1035:13:1035:14 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1035:13:1035:14 | p3 | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1035:34:1035:56 | ...::PairSnd(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:1035:34:1035:56 | ...::PairSnd(...) | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1035:34:1035:56 | ...::PairSnd(...) | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1035:54:1035:55 | S3 | | main.rs:997:5:998:14 | S3 | +| main.rs:1036:9:1036:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1036:18:1036:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1036:18:1036:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1036:18:1036:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1036:18:1036:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1036:18:1036:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1036:26:1036:27 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1036:26:1036:27 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1036:26:1036:27 | p3 | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1039:13:1039:14 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1039:13:1039:14 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1039:13:1039:14 | p3 | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1039:35:1039:56 | ...::PairNone(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:1039:35:1039:56 | ...::PairNone(...) | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1039:35:1039:56 | ...::PairNone(...) | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1040:9:1040:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1040:18:1040:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1040:18:1040:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1040:18:1040:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1040:18:1040:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1040:18:1040:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1040:26:1040:27 | p3 | | main.rs:972:5:978:5 | PairOption | +| main.rs:1040:26:1040:27 | p3 | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1040:26:1040:27 | p3 | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1042:9:1042:55 | g(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1042:11:1042:54 | ...::PairSnd(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:1042:11:1042:54 | ...::PairSnd(...) | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1042:11:1042:54 | ...::PairSnd(...) | Snd | main.rs:972:5:978:5 | PairOption | +| main.rs:1042:11:1042:54 | ...::PairSnd(...) | Snd.Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1042:11:1042:54 | ...::PairSnd(...) | Snd.Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1042:31:1042:53 | ...::PairSnd(...) | | main.rs:972:5:978:5 | PairOption | +| main.rs:1042:31:1042:53 | ...::PairSnd(...) | Fst | main.rs:994:5:995:14 | S2 | +| main.rs:1042:31:1042:53 | ...::PairSnd(...) | Snd | main.rs:997:5:998:14 | S3 | +| main.rs:1042:51:1042:52 | S3 | | main.rs:997:5:998:14 | S3 | +| main.rs:1044:13:1044:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1044:13:1044:13 | x | E | main.rs:991:5:992:14 | S1 | +| main.rs:1044:13:1044:13 | x | T | main.rs:1017:5:1017:34 | S4 | +| main.rs:1044:13:1044:13 | x | T.T41 | main.rs:994:5:995:14 | S2 | +| main.rs:1044:13:1044:13 | x | T.T42 | main.rs:1019:5:1019:22 | S5 | +| main.rs:1044:13:1044:13 | x | T.T42.T5 | main.rs:994:5:995:14 | S2 | +| main.rs:1057:16:1057:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1057:16:1057:24 | SelfParam | TRefMut | main.rs:1055:5:1062:5 | Self [trait MyTrait] | +| main.rs:1057:27:1057:31 | value | | main.rs:1055:19:1055:19 | S | +| main.rs:1059:21:1059:29 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1059:21:1059:29 | SelfParam | TRefMut | main.rs:1055:5:1062:5 | Self [trait MyTrait] | +| main.rs:1059:32:1059:36 | value | | main.rs:1055:19:1055:19 | S | +| main.rs:1059:42:1061:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1060:13:1060:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1060:13:1060:16 | self | TRefMut | main.rs:1055:5:1062:5 | Self [trait MyTrait] | +| main.rs:1060:13:1060:27 | self.set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1060:22:1060:26 | value | | main.rs:1055:19:1055:19 | S | +| main.rs:1066:16:1066:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1066:16:1066:24 | SelfParam | TRefMut | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1066:16:1066:24 | SelfParam | TRefMut.T | main.rs:1064:10:1064:10 | T | +| main.rs:1066:27:1066:31 | value | | main.rs:1064:10:1064:10 | T | +| main.rs:1066:37:1066:38 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1070:26:1072:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1070:26:1072:9 | { ... } | T | main.rs:1069:10:1069:10 | T | +| main.rs:1071:13:1071:30 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1071:13:1071:30 | ...::MyNone(...) | T | main.rs:1069:10:1069:10 | T | +| main.rs:1076:20:1076:23 | SelfParam | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1076:20:1076:23 | SelfParam | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1076:20:1076:23 | SelfParam | T.T | main.rs:1075:10:1075:10 | T | +| main.rs:1076:41:1081:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1076:41:1081:9 | { ... } | T | main.rs:1075:10:1075:10 | T | +| main.rs:1077:13:1080:13 | match self { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1077:13:1080:13 | match self { ... } | T | main.rs:1075:10:1075:10 | T | +| main.rs:1077:19:1077:22 | self | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1077:19:1077:22 | self | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1077:19:1077:22 | self | T.T | main.rs:1075:10:1075:10 | T | +| main.rs:1078:17:1078:34 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1078:17:1078:34 | ...::MyNone(...) | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1078:17:1078:34 | ...::MyNone(...) | T.T | main.rs:1075:10:1075:10 | T | +| main.rs:1078:39:1078:56 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1078:39:1078:56 | ...::MyNone(...) | T | main.rs:1075:10:1075:10 | T | +| main.rs:1079:17:1079:35 | ...::MySome(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1079:17:1079:35 | ...::MySome(...) | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1079:17:1079:35 | ...::MySome(...) | T.T | main.rs:1075:10:1075:10 | T | +| main.rs:1079:34:1079:34 | x | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1079:34:1079:34 | x | T | main.rs:1075:10:1075:10 | T | +| main.rs:1079:40:1079:40 | x | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1079:40:1079:40 | x | T | main.rs:1075:10:1075:10 | T | +| main.rs:1087:16:1132:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1088:13:1088:14 | x1 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1088:13:1088:14 | x1 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1088:18:1088:37 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1088:18:1088:37 | ...::new(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1089:9:1089:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1089:18:1089:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1089:18:1089:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1089:18:1089:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1089:18:1089:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1089:18:1089:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1089:26:1089:27 | x1 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1089:26:1089:27 | x1 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1091:17:1091:18 | x2 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1091:17:1091:18 | x2 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1091:22:1091:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1091:22:1091:36 | ...::new(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1092:9:1092:10 | x2 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1092:9:1092:10 | x2 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1092:9:1092:17 | x2.set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1092:16:1092:16 | S | | main.rs:1084:5:1085:13 | S | +| main.rs:1093:9:1093:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1093:18:1093:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1093:18:1093:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1093:18:1093:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1093:18:1093:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1093:18:1093:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1093:26:1093:27 | x2 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1093:26:1093:27 | x2 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1095:17:1095:18 | x3 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1095:17:1095:18 | x3 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1095:22:1095:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1095:22:1095:36 | ...::new(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1096:9:1096:10 | x3 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1096:9:1096:10 | x3 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1096:9:1096:22 | x3.call_set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1096:21:1096:21 | S | | main.rs:1084:5:1085:13 | S | +| main.rs:1097:9:1097:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1097:18:1097:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1097:18:1097:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1097:18:1097:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1097:18:1097:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1097:18:1097:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1097:26:1097:27 | x3 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1097:26:1097:27 | x3 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1099:17:1099:18 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1099:17:1099:18 | x4 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1099:22:1099:36 | ...::new(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1099:22:1099:36 | ...::new(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1100:9:1100:33 | ...::set(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1100:23:1100:29 | &mut x4 | | {EXTERNAL LOCATION} | &mut | +| main.rs:1100:23:1100:29 | &mut x4 | TRefMut | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1100:23:1100:29 | &mut x4 | TRefMut.T | main.rs:1084:5:1085:13 | S | +| main.rs:1100:28:1100:29 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1100:28:1100:29 | x4 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1100:32:1100:32 | S | | main.rs:1084:5:1085:13 | S | +| main.rs:1101:9:1101:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1101:18:1101:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1101:18:1101:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1101:18:1101:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1101:18:1101:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1101:18:1101:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1101:26:1101:27 | x4 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1101:26:1101:27 | x4 | T | main.rs:1084:5:1085:13 | S | +| main.rs:1103:13:1103:14 | x5 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1103:13:1103:14 | x5 | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1103:13:1103:14 | x5 | T.T | main.rs:1084:5:1085:13 | S | +| main.rs:1103:18:1103:58 | ...::MySome(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1103:18:1103:58 | ...::MySome(...) | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1103:18:1103:58 | ...::MySome(...) | T.T | main.rs:1084:5:1085:13 | S | +| main.rs:1103:35:1103:57 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1103:35:1103:57 | ...::MyNone(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1104:9:1104:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1104:18:1104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1104:18:1104:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1104:18:1104:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1104:18:1104:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1104:18:1104:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1104:26:1104:27 | x5 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1104:26:1104:27 | x5 | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1104:26:1104:27 | x5 | T.T | main.rs:1084:5:1085:13 | S | +| main.rs:1104:26:1104:37 | x5.flatten() | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1104:26:1104:37 | x5.flatten() | T | main.rs:1084:5:1085:13 | S | +| main.rs:1106:13:1106:14 | x6 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1106:13:1106:14 | x6 | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1106:13:1106:14 | x6 | T.T | main.rs:1084:5:1085:13 | S | +| main.rs:1106:18:1106:58 | ...::MySome(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1106:18:1106:58 | ...::MySome(...) | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1106:18:1106:58 | ...::MySome(...) | T.T | main.rs:1084:5:1085:13 | S | +| main.rs:1106:35:1106:57 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1106:35:1106:57 | ...::MyNone(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1107:9:1107:62 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1107:18:1107:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1107:18:1107:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1107:18:1107:61 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1107:18:1107:61 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1107:18:1107:61 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1107:26:1107:61 | ...::flatten(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1107:26:1107:61 | ...::flatten(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1107:59:1107:60 | x6 | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1107:59:1107:60 | x6 | T | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1107:59:1107:60 | x6 | T.T | main.rs:1084:5:1085:13 | S | +| main.rs:1110:13:1110:19 | from_if | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1110:13:1110:19 | from_if | T | main.rs:1084:5:1085:13 | S | +| main.rs:1110:23:1114:9 | if ... {...} else {...} | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1110:23:1114:9 | if ... {...} else {...} | T | main.rs:1084:5:1085:13 | S | +| main.rs:1110:26:1110:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1110:26:1110:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1110:30:1110:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1110:32:1112:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1110:32:1112:9 | { ... } | T | main.rs:1084:5:1085:13 | S | +| main.rs:1111:13:1111:30 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1111:13:1111:30 | ...::MyNone(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1112:16:1114:9 | { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1112:16:1114:9 | { ... } | T | main.rs:1084:5:1085:13 | S | +| main.rs:1113:13:1113:31 | ...::MySome(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1113:13:1113:31 | ...::MySome(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1113:30:1113:30 | S | | main.rs:1084:5:1085:13 | S | +| main.rs:1115:9:1115:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1115:18:1115:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1115:18:1115:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1115:18:1115:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1115:18:1115:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1115:18:1115:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1115:26:1115:32 | from_if | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1115:26:1115:32 | from_if | T | main.rs:1084:5:1085:13 | S | +| main.rs:1118:13:1118:22 | from_match | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1118:13:1118:22 | from_match | T | main.rs:1084:5:1085:13 | S | +| main.rs:1118:26:1121:9 | match ... { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1118:26:1121:9 | match ... { ... } | T | main.rs:1084:5:1085:13 | S | +| main.rs:1118:32:1118:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1118:32:1118:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1118:36:1118:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1119:13:1119:16 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1119:21:1119:38 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1119:21:1119:38 | ...::MyNone(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1120:13:1120:17 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1120:22:1120:40 | ...::MySome(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1120:22:1120:40 | ...::MySome(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1120:39:1120:39 | S | | main.rs:1084:5:1085:13 | S | +| main.rs:1122:9:1122:36 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1122:18:1122:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1122:18:1122:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1122:18:1122:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1122:18:1122:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1122:18:1122:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1122:26:1122:35 | from_match | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1122:26:1122:35 | from_match | T | main.rs:1084:5:1085:13 | S | +| main.rs:1125:13:1125:21 | from_loop | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1125:13:1125:21 | from_loop | T | main.rs:1084:5:1085:13 | S | +| main.rs:1125:25:1130:9 | loop { ... } | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1125:25:1130:9 | loop { ... } | T | main.rs:1084:5:1085:13 | S | +| main.rs:1125:30:1130:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1126:13:1128:13 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1126:16:1126:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1126:16:1126:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1126:20:1126:20 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1126:22:1128:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1127:23:1127:40 | ...::MyNone(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1127:23:1127:40 | ...::MyNone(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1129:19:1129:37 | ...::MySome(...) | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1129:19:1129:37 | ...::MySome(...) | T | main.rs:1084:5:1085:13 | S | +| main.rs:1129:36:1129:36 | S | | main.rs:1084:5:1085:13 | S | +| main.rs:1131:9:1131:35 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1131:18:1131:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1131:18:1131:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1131:18:1131:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1131:18:1131:34 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1131:18:1131:34 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1131:26:1131:34 | from_loop | | main.rs:1049:5:1053:5 | MyOption | +| main.rs:1131:26:1131:34 | from_loop | T | main.rs:1084:5:1085:13 | S | +| main.rs:1149:15:1149:18 | SelfParam | | main.rs:1137:5:1138:19 | S | +| main.rs:1149:15:1149:18 | SelfParam | T | main.rs:1148:10:1148:10 | T | +| main.rs:1149:26:1151:9 | { ... } | | main.rs:1148:10:1148:10 | T | +| main.rs:1150:13:1150:16 | self | | main.rs:1137:5:1138:19 | S | +| main.rs:1150:13:1150:16 | self | T | main.rs:1148:10:1148:10 | T | +| main.rs:1150:13:1150:18 | self.0 | | main.rs:1148:10:1148:10 | T | +| main.rs:1153:15:1153:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1153:15:1153:19 | SelfParam | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1153:15:1153:19 | SelfParam | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1153:28:1155:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1153:28:1155:9 | { ... } | TRef | main.rs:1148:10:1148:10 | T | +| main.rs:1154:13:1154:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1154:13:1154:19 | &... | TRef | main.rs:1148:10:1148:10 | T | +| main.rs:1154:14:1154:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1154:14:1154:17 | self | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1154:14:1154:17 | self | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1154:14:1154:19 | self.0 | | main.rs:1148:10:1148:10 | T | +| main.rs:1157:15:1157:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1157:15:1157:25 | SelfParam | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1157:15:1157:25 | SelfParam | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1157:34:1159:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1157:34:1159:9 | { ... } | TRef | main.rs:1148:10:1148:10 | T | +| main.rs:1158:13:1158:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1158:13:1158:19 | &... | TRef | main.rs:1148:10:1148:10 | T | +| main.rs:1158:14:1158:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1158:14:1158:17 | self | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1158:14:1158:17 | self | TRef.T | main.rs:1148:10:1148:10 | T | +| main.rs:1158:14:1158:19 | self.0 | | main.rs:1148:10:1148:10 | T | +| main.rs:1163:29:1163:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1163:29:1163:33 | SelfParam | TRef | main.rs:1162:5:1165:5 | Self [trait ATrait] | +| main.rs:1164:33:1164:36 | SelfParam | | main.rs:1162:5:1165:5 | Self [trait ATrait] | +| main.rs:1170:29:1170:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1170:29:1170:33 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1170:29:1170:33 | SelfParam | TRef.TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1170:43:1172:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1171:13:1171:22 | (...) | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1171:13:1171:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1171:14:1171:21 | * ... | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1171:15:1171:21 | (...) | | {EXTERNAL LOCATION} | & | +| main.rs:1171:15:1171:21 | (...) | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1171:16:1171:20 | * ... | | {EXTERNAL LOCATION} | & | +| main.rs:1171:16:1171:20 | * ... | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1171:17:1171:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1171:17:1171:20 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1171:17:1171:20 | self | TRef.TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1175:33:1175:36 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1175:33:1175:36 | SelfParam | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1175:46:1177:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1176:13:1176:19 | (...) | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1176:13:1176:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1176:14:1176:18 | * ... | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1176:15:1176:18 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1176:15:1176:18 | self | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1180:16:1230:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1181:13:1181:14 | x1 | | main.rs:1137:5:1138:19 | S | +| main.rs:1181:13:1181:14 | x1 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1181:18:1181:22 | S(...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1181:18:1181:22 | S(...) | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1181:20:1181:21 | S2 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1182:9:1182:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1182:18:1182:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1182:18:1182:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1182:18:1182:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1182:18:1182:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1182:18:1182:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1182:26:1182:27 | x1 | | main.rs:1137:5:1138:19 | S | +| main.rs:1182:26:1182:27 | x1 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1182:26:1182:32 | x1.m1() | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1184:13:1184:14 | x2 | | main.rs:1137:5:1138:19 | S | +| main.rs:1184:13:1184:14 | x2 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1184:18:1184:22 | S(...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1184:18:1184:22 | S(...) | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1184:20:1184:21 | S2 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1186:9:1186:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1186:18:1186:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1186:18:1186:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1186:18:1186:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1186:18:1186:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1186:18:1186:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1186:26:1186:27 | x2 | | main.rs:1137:5:1138:19 | S | +| main.rs:1186:26:1186:27 | x2 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1186:26:1186:32 | x2.m2() | | {EXTERNAL LOCATION} | & | +| main.rs:1186:26:1186:32 | x2.m2() | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1187:9:1187:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1187:18:1187:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1187:18:1187:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1187:18:1187:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1187:18:1187:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1187:18:1187:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1187:26:1187:27 | x2 | | main.rs:1137:5:1138:19 | S | +| main.rs:1187:26:1187:27 | x2 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1187:26:1187:32 | x2.m3() | | {EXTERNAL LOCATION} | & | +| main.rs:1187:26:1187:32 | x2.m3() | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1189:13:1189:14 | x3 | | main.rs:1137:5:1138:19 | S | +| main.rs:1189:13:1189:14 | x3 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1189:18:1189:22 | S(...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1189:18:1189:22 | S(...) | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1189:20:1189:21 | S2 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1191:9:1191:42 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1191:18:1191:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1191:18:1191:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1191:18:1191:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1191:18:1191:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1191:18:1191:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1191:26:1191:41 | ...::m2(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1191:26:1191:41 | ...::m2(...) | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1191:38:1191:40 | &x3 | | {EXTERNAL LOCATION} | & | +| main.rs:1191:38:1191:40 | &x3 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1191:38:1191:40 | &x3 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1191:39:1191:40 | x3 | | main.rs:1137:5:1138:19 | S | +| main.rs:1191:39:1191:40 | x3 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1192:9:1192:42 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1192:18:1192:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1192:18:1192:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1192:18:1192:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1192:18:1192:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1192:18:1192:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1192:26:1192:41 | ...::m3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1192:26:1192:41 | ...::m3(...) | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1192:38:1192:40 | &x3 | | {EXTERNAL LOCATION} | & | +| main.rs:1192:38:1192:40 | &x3 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1192:38:1192:40 | &x3 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1192:39:1192:40 | x3 | | main.rs:1137:5:1138:19 | S | +| main.rs:1192:39:1192:40 | x3 | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1194:13:1194:14 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1194:13:1194:14 | x4 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1194:13:1194:14 | x4 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1194:18:1194:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1194:18:1194:23 | &... | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1194:18:1194:23 | &... | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1194:19:1194:23 | S(...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1194:19:1194:23 | S(...) | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1194:21:1194:22 | S2 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1196:9:1196:33 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1196:18:1196:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1196:18:1196:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1196:18:1196:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1196:18:1196:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1196:18:1196:27 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1196:26:1196:27 | x7 | | main.rs:1120:5:1121:19 | S | -| main.rs:1196:26:1196:27 | x7 | T | {EXTERNAL LOCATION} | & | -| main.rs:1196:26:1196:27 | x7 | T.TRef | main.rs:1123:5:1124:14 | S2 | -| main.rs:1198:13:1198:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1198:26:1198:32 | "Hello" | | {EXTERNAL LOCATION} | & | -| main.rs:1198:26:1198:32 | "Hello" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1198:26:1198:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1202:13:1202:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1202:13:1202:13 | u | E | {EXTERNAL LOCATION} | ParseIntError | -| main.rs:1202:13:1202:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1202:17:1202:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1202:17:1202:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1202:17:1202:33 | x9.parse() | E | {EXTERNAL LOCATION} | ParseIntError | -| main.rs:1202:17:1202:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1204:13:1204:20 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1204:13:1204:20 | my_thing | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1204:24:1204:39 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1204:24:1204:39 | &... | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1204:25:1204:39 | MyInt {...} | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1204:36:1204:37 | 37 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1206:13:1206:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1206:17:1206:24 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1206:17:1206:24 | my_thing | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1206:17:1206:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1207:9:1207:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1196:18:1196:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1196:18:1196:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1196:18:1196:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1196:26:1196:27 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1196:26:1196:27 | x4 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1196:26:1196:27 | x4 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1196:26:1196:32 | x4.m2() | | {EXTERNAL LOCATION} | & | +| main.rs:1196:26:1196:32 | x4.m2() | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1197:9:1197:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1197:18:1197:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1197:18:1197:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1197:18:1197:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1197:18:1197:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1197:18:1197:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1197:26:1197:27 | x4 | | {EXTERNAL LOCATION} | & | +| main.rs:1197:26:1197:27 | x4 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1197:26:1197:27 | x4 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1197:26:1197:32 | x4.m3() | | {EXTERNAL LOCATION} | & | +| main.rs:1197:26:1197:32 | x4.m3() | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1199:13:1199:14 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1199:13:1199:14 | x5 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1199:13:1199:14 | x5 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1199:18:1199:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1199:18:1199:23 | &... | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1199:18:1199:23 | &... | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1199:19:1199:23 | S(...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1199:19:1199:23 | S(...) | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1199:21:1199:22 | S2 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1201:9:1201:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1201:18:1201:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1201:18:1201:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1201:18:1201:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1201:18:1201:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1201:18:1201:32 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1201:26:1201:27 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1201:26:1201:27 | x5 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1201:26:1201:27 | x5 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1201:26:1201:32 | x5.m1() | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1202:9:1202:30 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1202:18:1202:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1202:18:1202:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1202:18:1202:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1202:18:1202:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1202:18:1202:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1202:26:1202:27 | x5 | | {EXTERNAL LOCATION} | & | +| main.rs:1202:26:1202:27 | x5 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1202:26:1202:27 | x5 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1202:26:1202:29 | x5.0 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1204:13:1204:14 | x6 | | {EXTERNAL LOCATION} | & | +| main.rs:1204:13:1204:14 | x6 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1204:13:1204:14 | x6 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1204:18:1204:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1204:18:1204:23 | &... | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1204:18:1204:23 | &... | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1204:19:1204:23 | S(...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1204:19:1204:23 | S(...) | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1204:21:1204:22 | S2 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1207:9:1207:36 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1207:18:1207:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1207:18:1207:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1207:18:1207:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1207:18:1207:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1207:18:1207:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1207:26:1207:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1210:13:1210:20 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1210:13:1210:20 | my_thing | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1210:24:1210:39 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1210:24:1210:39 | &... | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1210:25:1210:39 | MyInt {...} | | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1210:36:1210:37 | 38 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1211:13:1211:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1211:17:1211:24 | my_thing | | {EXTERNAL LOCATION} | & | -| main.rs:1211:17:1211:24 | my_thing | TRef | main.rs:1126:5:1129:5 | MyInt | -| main.rs:1211:17:1211:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | -| main.rs:1212:9:1212:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1212:18:1212:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1212:18:1212:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1212:18:1212:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1212:18:1212:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1212:18:1212:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1212:26:1212:26 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:1219:16:1219:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1219:16:1219:20 | SelfParam | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1222:16:1222:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1222:16:1222:20 | SelfParam | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1222:32:1224:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1222:32:1224:9 | { ... } | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1223:13:1223:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1223:13:1223:16 | self | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1223:13:1223:22 | self.foo() | | {EXTERNAL LOCATION} | & | -| main.rs:1223:13:1223:22 | self.foo() | TRef | main.rs:1217:5:1225:5 | Self [trait MyTrait] | -| main.rs:1231:16:1231:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1231:16:1231:20 | SelfParam | TRef | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1231:36:1233:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1231:36:1233:9 | { ... } | TRef | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1232:13:1232:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1232:13:1232:16 | self | TRef | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1236:16:1239:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1237:13:1237:13 | x | | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1237:17:1237:24 | MyStruct | | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1238:9:1238:9 | x | | main.rs:1227:5:1227:20 | MyStruct | -| main.rs:1238:9:1238:15 | x.bar() | | {EXTERNAL LOCATION} | & | -| main.rs:1238:9:1238:15 | x.bar() | TRef | main.rs:1227:5:1227:20 | MyStruct | +| main.rs:1207:18:1207:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1207:18:1207:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1207:18:1207:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1207:26:1207:30 | (...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1207:26:1207:30 | (...) | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1207:26:1207:35 | ... .m1() | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1207:27:1207:29 | * ... | | main.rs:1137:5:1138:19 | S | +| main.rs:1207:27:1207:29 | * ... | T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1207:28:1207:29 | x6 | | {EXTERNAL LOCATION} | & | +| main.rs:1207:28:1207:29 | x6 | TRef | main.rs:1137:5:1138:19 | S | +| main.rs:1207:28:1207:29 | x6 | TRef.T | main.rs:1140:5:1141:14 | S2 | +| main.rs:1209:13:1209:14 | x7 | | main.rs:1137:5:1138:19 | S | +| main.rs:1209:13:1209:14 | x7 | T | {EXTERNAL LOCATION} | & | +| main.rs:1209:13:1209:14 | x7 | T.TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1209:18:1209:23 | S(...) | | main.rs:1137:5:1138:19 | S | +| main.rs:1209:18:1209:23 | S(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:1209:18:1209:23 | S(...) | T.TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1209:20:1209:22 | &S2 | | {EXTERNAL LOCATION} | & | +| main.rs:1209:20:1209:22 | &S2 | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1209:21:1209:22 | S2 | | main.rs:1140:5:1141:14 | S2 | +| main.rs:1212:13:1212:13 | t | | {EXTERNAL LOCATION} | & | +| main.rs:1212:13:1212:13 | t | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1212:17:1212:18 | x7 | | main.rs:1137:5:1138:19 | S | +| main.rs:1212:17:1212:18 | x7 | T | {EXTERNAL LOCATION} | & | +| main.rs:1212:17:1212:18 | x7 | T.TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1212:17:1212:23 | x7.m1() | | {EXTERNAL LOCATION} | & | +| main.rs:1212:17:1212:23 | x7.m1() | TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1213:9:1213:28 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1213:18:1213:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1213:18:1213:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1213:18:1213:27 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1213:18:1213:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1213:18:1213:27 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1213:26:1213:27 | x7 | | main.rs:1137:5:1138:19 | S | +| main.rs:1213:26:1213:27 | x7 | T | {EXTERNAL LOCATION} | & | +| main.rs:1213:26:1213:27 | x7 | T.TRef | main.rs:1140:5:1141:14 | S2 | +| main.rs:1215:13:1215:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1215:26:1215:32 | "Hello" | | {EXTERNAL LOCATION} | & | +| main.rs:1215:26:1215:32 | "Hello" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1215:26:1215:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1219:13:1219:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1219:13:1219:13 | u | E | {EXTERNAL LOCATION} | ParseIntError | +| main.rs:1219:13:1219:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1219:17:1219:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1219:17:1219:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1219:17:1219:33 | x9.parse() | E | {EXTERNAL LOCATION} | ParseIntError | +| main.rs:1219:17:1219:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1221:13:1221:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1221:13:1221:20 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1221:24:1221:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1221:24:1221:39 | &... | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1221:25:1221:39 | MyInt {...} | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1221:36:1221:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1223:13:1223:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1223:17:1223:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1223:17:1223:24 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1223:17:1223:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1224:9:1224:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1224:18:1224:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1224:18:1224:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1224:18:1224:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1224:18:1224:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1224:18:1224:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1224:26:1224:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1227:13:1227:20 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1227:13:1227:20 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1227:24:1227:39 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1227:24:1227:39 | &... | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1227:25:1227:39 | MyInt {...} | | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1227:36:1227:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1228:13:1228:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1228:17:1228:24 | my_thing | | {EXTERNAL LOCATION} | & | +| main.rs:1228:17:1228:24 | my_thing | TRef | main.rs:1143:5:1146:5 | MyInt | +| main.rs:1228:17:1228:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | +| main.rs:1229:9:1229:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1229:18:1229:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1229:18:1229:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1229:18:1229:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1229:18:1229:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1229:18:1229:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1229:26:1229:26 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1236:16:1236:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1236:16:1236:20 | SelfParam | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | +| main.rs:1239:16:1239:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1239:16:1239:20 | SelfParam | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | +| main.rs:1239:32:1241:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1239:32:1241:9 | { ... } | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | +| main.rs:1240:13:1240:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1240:13:1240:16 | self | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | +| main.rs:1240:13:1240:22 | self.foo() | | {EXTERNAL LOCATION} | & | +| main.rs:1240:13:1240:22 | self.foo() | TRef | main.rs:1234:5:1242:5 | Self [trait MyTrait] | | main.rs:1248:16:1248:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1248:16:1248:20 | SelfParam | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1248:16:1248:20 | SelfParam | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1248:32:1250:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1248:32:1250:9 | { ... } | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1248:32:1250:9 | { ... } | TRef.T | main.rs:1247:10:1247:10 | T | +| main.rs:1248:16:1248:20 | SelfParam | TRef | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1248:36:1250:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1248:36:1250:9 | { ... } | TRef | main.rs:1244:5:1244:20 | MyStruct | | main.rs:1249:13:1249:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1249:13:1249:16 | self | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1249:13:1249:16 | self | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1252:16:1252:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1252:16:1252:20 | SelfParam | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1252:16:1252:20 | SelfParam | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1252:23:1252:23 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1252:23:1252:23 | x | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1252:23:1252:23 | x | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1252:42:1254:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1252:42:1254:9 | { ... } | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1252:42:1254:9 | { ... } | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1253:13:1253:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1253:13:1253:16 | self | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1253:13:1253:16 | self | TRef.T | main.rs:1247:10:1247:10 | T | -| main.rs:1257:16:1263:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1258:13:1258:13 | x | | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1258:13:1258:13 | x | T | main.rs:1243:5:1243:13 | S | -| main.rs:1258:17:1258:27 | MyStruct(...) | | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1258:17:1258:27 | MyStruct(...) | T | main.rs:1243:5:1243:13 | S | -| main.rs:1258:26:1258:26 | S | | main.rs:1243:5:1243:13 | S | -| main.rs:1259:9:1259:9 | x | | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1259:9:1259:9 | x | T | main.rs:1243:5:1243:13 | S | -| main.rs:1259:9:1259:15 | x.foo() | | {EXTERNAL LOCATION} | & | -| main.rs:1259:9:1259:15 | x.foo() | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1259:9:1259:15 | x.foo() | TRef.T | main.rs:1243:5:1243:13 | S | -| main.rs:1260:13:1260:13 | x | | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1260:13:1260:13 | x | T | main.rs:1243:5:1243:13 | S | -| main.rs:1260:17:1260:27 | MyStruct(...) | | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1260:17:1260:27 | MyStruct(...) | T | main.rs:1243:5:1243:13 | S | -| main.rs:1260:26:1260:26 | S | | main.rs:1243:5:1243:13 | S | -| main.rs:1262:9:1262:9 | x | | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1262:9:1262:9 | x | T | main.rs:1243:5:1243:13 | S | -| main.rs:1262:9:1262:18 | x.bar(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1262:9:1262:18 | x.bar(...) | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1262:9:1262:18 | x.bar(...) | TRef.T | main.rs:1243:5:1243:13 | S | -| main.rs:1262:15:1262:17 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1262:15:1262:17 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1262:15:1262:17 | &... | TRef.TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1262:15:1262:17 | &... | TRef.TRef.T | main.rs:1243:5:1243:13 | S | -| main.rs:1262:16:1262:17 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1262:16:1262:17 | &x | TRef | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1262:16:1262:17 | &x | TRef.T | main.rs:1243:5:1243:13 | S | -| main.rs:1262:17:1262:17 | x | | main.rs:1245:5:1245:26 | MyStruct | -| main.rs:1262:17:1262:17 | x | T | main.rs:1243:5:1243:13 | S | -| main.rs:1273:17:1273:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1273:17:1273:25 | SelfParam | TRefMut | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1273:28:1275:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1274:13:1274:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1274:13:1274:16 | self | TRefMut | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1274:13:1274:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1274:13:1274:34 | ... = ... | | {EXTERNAL LOCATION} | () | -| main.rs:1274:25:1274:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1274:26:1274:29 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1274:26:1274:29 | self | TRefMut | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1274:26:1274:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1281:15:1281:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1281:15:1281:19 | SelfParam | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1281:31:1283:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1281:31:1283:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1282:13:1282:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1282:13:1282:19 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1282:13:1282:19 | &... | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1282:13:1282:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1282:13:1282:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1282:13:1282:19 | &... | TRef.TRef.TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1282:14:1282:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1282:14:1282:19 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1282:14:1282:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1282:14:1282:19 | &... | TRef.TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1282:15:1282:19 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:1282:15:1282:19 | &self | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1282:15:1282:19 | &self | TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1282:16:1282:19 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1282:16:1282:19 | self | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1285:15:1285:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1285:15:1285:25 | SelfParam | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1285:37:1287:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1285:37:1287:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1286:13:1286:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1286:13:1286:19 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1286:13:1286:19 | &... | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1286:13:1286:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1286:13:1286:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1286:13:1286:19 | &... | TRef.TRef.TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1286:14:1286:19 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1286:14:1286:19 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1286:14:1286:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1286:14:1286:19 | &... | TRef.TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1286:15:1286:19 | &self | | {EXTERNAL LOCATION} | & | -| main.rs:1286:15:1286:19 | &self | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1286:15:1286:19 | &self | TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1286:16:1286:19 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1286:16:1286:19 | self | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1289:15:1289:15 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1289:15:1289:15 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1289:34:1291:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1289:34:1291:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1290:13:1290:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1290:13:1290:13 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1293:15:1293:15 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1293:15:1293:15 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1293:34:1295:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1293:34:1295:9 | { ... } | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1294:13:1294:16 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1294:13:1294:16 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1294:13:1294:16 | &... | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1294:13:1294:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1294:13:1294:16 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1294:13:1294:16 | &... | TRef.TRef.TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1294:14:1294:16 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1294:14:1294:16 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1294:14:1294:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | -| main.rs:1294:14:1294:16 | &... | TRef.TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1294:15:1294:16 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1294:15:1294:16 | &x | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1294:15:1294:16 | &x | TRef.TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1294:16:1294:16 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1294:16:1294:16 | x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1298:16:1311:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1299:13:1299:13 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1299:17:1299:20 | S {...} | | main.rs:1278:5:1278:13 | S | -| main.rs:1300:9:1300:9 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1300:9:1300:14 | x.f1() | | {EXTERNAL LOCATION} | & | -| main.rs:1300:9:1300:14 | x.f1() | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1301:9:1301:9 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1301:9:1301:14 | x.f2() | | {EXTERNAL LOCATION} | & | -| main.rs:1301:9:1301:14 | x.f2() | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1302:9:1302:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1302:9:1302:17 | ...::f3(...) | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1302:15:1302:16 | &x | | {EXTERNAL LOCATION} | & | -| main.rs:1302:15:1302:16 | &x | TRef | main.rs:1278:5:1278:13 | S | -| main.rs:1302:16:1302:16 | x | | main.rs:1278:5:1278:13 | S | -| main.rs:1304:13:1304:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1304:17:1304:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1304:18:1304:24 | * ... | | {EXTERNAL LOCATION} | & | -| main.rs:1304:18:1304:24 | * ... | TRef | {EXTERNAL LOCATION} | bool | -| main.rs:1304:19:1304:24 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1304:19:1304:24 | &... | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1304:19:1304:24 | &... | TRef.TRef | {EXTERNAL LOCATION} | bool | -| main.rs:1304:20:1304:24 | &true | | {EXTERNAL LOCATION} | & | -| main.rs:1304:20:1304:24 | &true | TRef | {EXTERNAL LOCATION} | bool | -| main.rs:1304:21:1304:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1308:17:1308:20 | flag | | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1308:24:1308:41 | ...::default(...) | | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1309:9:1309:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1309:22:1309:30 | &mut flag | | {EXTERNAL LOCATION} | &mut | -| main.rs:1309:22:1309:30 | &mut flag | TRefMut | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1309:27:1309:30 | flag | | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1310:9:1310:30 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1310:18:1310:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1310:18:1310:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1310:18:1310:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1310:18:1310:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1310:18:1310:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1310:26:1310:29 | flag | | main.rs:1267:5:1270:5 | MyFlag | -| main.rs:1325:43:1328:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1325:43:1328:5 | { ... } | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1325:43:1328:5 | { ... } | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1326:13:1326:13 | x | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1326:17:1326:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1326:17:1326:30 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1326:17:1326:31 | TryExpr | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1326:28:1326:29 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1327:9:1327:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1327:9:1327:22 | ...::Ok(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1327:9:1327:22 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1327:20:1327:21 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1332:46:1336:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1332:46:1336:5 | { ... } | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1332:46:1336:5 | { ... } | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1333:13:1333:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1333:13:1333:13 | x | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1333:17:1333:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1333:17:1333:30 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1333:28:1333:29 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1334:13:1334:13 | y | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1334:17:1334:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1334:17:1334:17 | x | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1334:17:1334:18 | TryExpr | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1335:9:1335:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1335:9:1335:22 | ...::Ok(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1335:9:1335:22 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1335:20:1335:21 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1340:40:1345:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1340:40:1345:5 | { ... } | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1340:40:1345:5 | { ... } | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1341:13:1341:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1341:13:1341:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1341:13:1341:13 | x | T.T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1341:17:1341:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1341:17:1341:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1341:17:1341:42 | ...::Ok(...) | T.T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1341:28:1341:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1341:28:1341:41 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1341:39:1341:40 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:13:1343:13 | y | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:17:1343:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1343:17:1343:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1343:17:1343:17 | x | T.T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:17:1343:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1343:17:1343:18 | TryExpr | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:17:1343:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1343:17:1343:29 | ... .map(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:17:1343:30 | TryExpr | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:24:1343:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn Fn | -| main.rs:1343:24:1343:28 | \|...\| s | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| main.rs:1343:24:1343:28 | \|...\| s | dyn(Args).T0 | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:24:1343:28 | \|...\| s | dyn(Output) | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:25:1343:25 | s | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1343:28:1343:28 | s | | main.rs:1317:5:1318:14 | S1 | +| main.rs:1249:13:1249:16 | self | TRef | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1253:16:1256:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1254:13:1254:13 | x | | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1254:17:1254:24 | MyStruct | | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1255:9:1255:9 | x | | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1255:9:1255:15 | x.bar() | | {EXTERNAL LOCATION} | & | +| main.rs:1255:9:1255:15 | x.bar() | TRef | main.rs:1244:5:1244:20 | MyStruct | +| main.rs:1265:16:1265:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1265:16:1265:20 | SelfParam | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1265:16:1265:20 | SelfParam | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1265:32:1267:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1265:32:1267:9 | { ... } | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1265:32:1267:9 | { ... } | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1266:13:1266:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1266:13:1266:16 | self | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1266:13:1266:16 | self | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1269:16:1269:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1269:16:1269:20 | SelfParam | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1269:16:1269:20 | SelfParam | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1269:23:1269:23 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1269:23:1269:23 | x | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1269:23:1269:23 | x | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1269:42:1271:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1269:42:1271:9 | { ... } | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1269:42:1271:9 | { ... } | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1270:13:1270:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1270:13:1270:16 | self | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1270:13:1270:16 | self | TRef.T | main.rs:1264:10:1264:10 | T | +| main.rs:1274:16:1280:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1275:13:1275:13 | x | | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1275:13:1275:13 | x | T | main.rs:1260:5:1260:13 | S | +| main.rs:1275:17:1275:27 | MyStruct(...) | | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1275:17:1275:27 | MyStruct(...) | T | main.rs:1260:5:1260:13 | S | +| main.rs:1275:26:1275:26 | S | | main.rs:1260:5:1260:13 | S | +| main.rs:1276:9:1276:9 | x | | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1276:9:1276:9 | x | T | main.rs:1260:5:1260:13 | S | +| main.rs:1276:9:1276:15 | x.foo() | | {EXTERNAL LOCATION} | & | +| main.rs:1276:9:1276:15 | x.foo() | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1276:9:1276:15 | x.foo() | TRef.T | main.rs:1260:5:1260:13 | S | +| main.rs:1277:13:1277:13 | x | | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1277:13:1277:13 | x | T | main.rs:1260:5:1260:13 | S | +| main.rs:1277:17:1277:27 | MyStruct(...) | | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1277:17:1277:27 | MyStruct(...) | T | main.rs:1260:5:1260:13 | S | +| main.rs:1277:26:1277:26 | S | | main.rs:1260:5:1260:13 | S | +| main.rs:1279:9:1279:9 | x | | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1279:9:1279:9 | x | T | main.rs:1260:5:1260:13 | S | +| main.rs:1279:9:1279:18 | x.bar(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1279:9:1279:18 | x.bar(...) | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1279:9:1279:18 | x.bar(...) | TRef.T | main.rs:1260:5:1260:13 | S | +| main.rs:1279:15:1279:17 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1279:15:1279:17 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1279:15:1279:17 | &... | TRef.TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1279:15:1279:17 | &... | TRef.TRef.T | main.rs:1260:5:1260:13 | S | +| main.rs:1279:16:1279:17 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1279:16:1279:17 | &x | TRef | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1279:16:1279:17 | &x | TRef.T | main.rs:1260:5:1260:13 | S | +| main.rs:1279:17:1279:17 | x | | main.rs:1262:5:1262:26 | MyStruct | +| main.rs:1279:17:1279:17 | x | T | main.rs:1260:5:1260:13 | S | +| main.rs:1290:17:1290:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1290:17:1290:25 | SelfParam | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1290:28:1292:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1291:13:1291:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1291:13:1291:16 | self | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1291:13:1291:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1291:13:1291:34 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:1291:25:1291:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1291:26:1291:29 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1291:26:1291:29 | self | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1291:26:1291:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1298:15:1298:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1298:15:1298:19 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1298:31:1300:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1298:31:1300:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1299:13:1299:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1299:13:1299:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:13:1299:19 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1299:14:1299:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1299:14:1299:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:14:1299:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:14:1299:19 | &... | TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1299:15:1299:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1299:15:1299:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1299:15:1299:19 | &self | TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1299:16:1299:19 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1299:16:1299:19 | self | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1302:15:1302:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1302:15:1302:25 | SelfParam | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1302:37:1304:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1302:37:1304:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1303:13:1303:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1303:13:1303:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:13:1303:19 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1303:14:1303:19 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1303:14:1303:19 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:14:1303:19 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:14:1303:19 | &... | TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1303:15:1303:19 | &self | | {EXTERNAL LOCATION} | & | +| main.rs:1303:15:1303:19 | &self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1303:15:1303:19 | &self | TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1303:16:1303:19 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1303:16:1303:19 | self | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1306:15:1306:15 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1306:15:1306:15 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1306:34:1308:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1306:34:1308:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1307:13:1307:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1307:13:1307:13 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1310:15:1310:15 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1310:15:1310:15 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1310:34:1312:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1310:34:1312:9 | { ... } | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1311:13:1311:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1311:13:1311:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef.TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:13:1311:16 | &... | TRef.TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1311:14:1311:16 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1311:14:1311:16 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:14:1311:16 | &... | TRef.TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:14:1311:16 | &... | TRef.TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1311:15:1311:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1311:15:1311:16 | &x | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1311:15:1311:16 | &x | TRef.TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1311:16:1311:16 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1311:16:1311:16 | x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1315:16:1328:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1316:13:1316:13 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1316:17:1316:20 | S {...} | | main.rs:1295:5:1295:13 | S | +| main.rs:1317:9:1317:9 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1317:9:1317:14 | x.f1() | | {EXTERNAL LOCATION} | & | +| main.rs:1317:9:1317:14 | x.f1() | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1318:9:1318:9 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1318:9:1318:14 | x.f2() | | {EXTERNAL LOCATION} | & | +| main.rs:1318:9:1318:14 | x.f2() | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1319:9:1319:17 | ...::f3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1319:9:1319:17 | ...::f3(...) | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1319:15:1319:16 | &x | | {EXTERNAL LOCATION} | & | +| main.rs:1319:15:1319:16 | &x | TRef | main.rs:1295:5:1295:13 | S | +| main.rs:1319:16:1319:16 | x | | main.rs:1295:5:1295:13 | S | +| main.rs:1321:13:1321:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1321:17:1321:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1321:18:1321:24 | * ... | | {EXTERNAL LOCATION} | & | +| main.rs:1321:18:1321:24 | * ... | TRef | {EXTERNAL LOCATION} | bool | +| main.rs:1321:19:1321:24 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1321:19:1321:24 | &... | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1321:19:1321:24 | &... | TRef.TRef | {EXTERNAL LOCATION} | bool | +| main.rs:1321:20:1321:24 | &true | | {EXTERNAL LOCATION} | & | +| main.rs:1321:20:1321:24 | &true | TRef | {EXTERNAL LOCATION} | bool | +| main.rs:1321:21:1321:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1325:17:1325:20 | flag | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1325:24:1325:41 | ...::default(...) | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1326:9:1326:31 | ...::flip(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1326:22:1326:30 | &mut flag | | {EXTERNAL LOCATION} | &mut | +| main.rs:1326:22:1326:30 | &mut flag | TRefMut | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1326:27:1326:30 | flag | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1327:9:1327:30 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1327:18:1327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1327:18:1327:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1327:18:1327:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1327:18:1327:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1327:18:1327:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1327:26:1327:29 | flag | | main.rs:1284:5:1287:5 | MyFlag | +| main.rs:1342:43:1345:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1342:43:1345:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1342:43:1345:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1343:13:1343:13 | x | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1343:17:1343:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1343:17:1343:30 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1343:17:1343:31 | TryExpr | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1343:28:1343:29 | S1 | | main.rs:1334:5:1335:14 | S1 | | main.rs:1344:9:1344:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1344:9:1344:22 | ...::Ok(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1344:9:1344:22 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1344:20:1344:21 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1349:30:1349:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1349:30:1349:34 | input | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1349:30:1349:34 | input | T | main.rs:1349:20:1349:27 | T | -| main.rs:1349:69:1356:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1349:69:1356:5 | { ... } | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1349:69:1356:5 | { ... } | T | main.rs:1349:20:1349:27 | T | -| main.rs:1350:13:1350:17 | value | | main.rs:1349:20:1349:27 | T | -| main.rs:1350:21:1350:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1350:21:1350:25 | input | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1350:21:1350:25 | input | T | main.rs:1349:20:1349:27 | T | -| main.rs:1350:21:1350:26 | TryExpr | | main.rs:1349:20:1349:27 | T | -| main.rs:1351:13:1351:18 | mapped | | main.rs:1349:20:1349:27 | T | -| main.rs:1351:22:1351:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1351:22:1351:38 | ...::Ok(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1351:22:1351:38 | ...::Ok(...) | T | main.rs:1349:20:1349:27 | T | -| main.rs:1351:22:1354:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1351:22:1354:10 | ... .and_then(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1351:22:1354:10 | ... .and_then(...) | T | main.rs:1349:20:1349:27 | T | -| main.rs:1351:22:1354:11 | TryExpr | | main.rs:1349:20:1349:27 | T | -| main.rs:1351:33:1351:37 | value | | main.rs:1349:20:1349:27 | T | -| main.rs:1351:49:1354:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| main.rs:1351:49:1354:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| main.rs:1351:49:1354:9 | \|...\| ... | dyn(Args).T0 | main.rs:1349:20:1349:27 | T | -| main.rs:1351:49:1354:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | -| main.rs:1351:49:1354:9 | \|...\| ... | dyn(Output).E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1351:49:1354:9 | \|...\| ... | dyn(Output).T | main.rs:1349:20:1349:27 | T | -| main.rs:1351:50:1351:50 | v | | main.rs:1349:20:1349:27 | T | -| main.rs:1351:53:1354:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1351:53:1354:9 | { ... } | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1351:53:1354:9 | { ... } | T | main.rs:1349:20:1349:27 | T | -| main.rs:1352:13:1352:31 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1352:22:1352:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1352:22:1352:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1352:22:1352:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1352:22:1352:30 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1352:22:1352:30 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1352:30:1352:30 | v | | main.rs:1349:20:1349:27 | T | -| main.rs:1353:13:1353:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1353:13:1353:34 | ...::Ok::<...>(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1353:13:1353:34 | ...::Ok::<...>(...) | T | main.rs:1349:20:1349:27 | T | -| main.rs:1353:33:1353:33 | v | | main.rs:1349:20:1349:27 | T | -| main.rs:1355:9:1355:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1355:9:1355:23 | ...::Err(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1355:9:1355:23 | ...::Err(...) | T | main.rs:1349:20:1349:27 | T | -| main.rs:1355:21:1355:22 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1359:16:1375:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1360:9:1362:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1360:16:1360:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1360:16:1360:33 | ...::Ok(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1360:16:1360:33 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1360:27:1360:32 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1360:37:1360:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1360:37:1360:52 | try_same_error(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1360:37:1360:52 | try_same_error(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1360:54:1362:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1361:13:1361:36 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1361:22:1361:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1361:22:1361:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1361:22:1361:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1361:22:1361:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1361:22:1361:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1361:30:1361:35 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1364:9:1366:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1364:16:1364:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1364:16:1364:33 | ...::Ok(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1364:16:1364:33 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1364:27:1364:32 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1364:37:1364:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1364:37:1364:55 | try_convert_error(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1364:37:1364:55 | try_convert_error(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1364:57:1366:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1365:13:1365:36 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1365:22:1365:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1365:22:1365:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1365:22:1365:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1365:22:1365:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1365:22:1365:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1365:30:1365:35 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1368:9:1370:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1368:16:1368:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1368:16:1368:33 | ...::Ok(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1368:16:1368:33 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1368:27:1368:32 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1368:37:1368:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1368:37:1368:49 | try_chained(...) | E | main.rs:1320:5:1321:14 | S2 | -| main.rs:1368:37:1368:49 | try_chained(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1368:51:1370:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1369:13:1369:36 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1344:9:1344:22 | ...::Ok(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1344:9:1344:22 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1344:20:1344:21 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1349:46:1353:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1349:46:1353:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1349:46:1353:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1350:13:1350:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1350:13:1350:13 | x | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1350:17:1350:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1350:17:1350:30 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1350:28:1350:29 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1351:13:1351:13 | y | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1351:17:1351:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1351:17:1351:17 | x | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1351:17:1351:18 | TryExpr | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1352:9:1352:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1352:9:1352:22 | ...::Ok(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1352:9:1352:22 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1352:20:1352:21 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1357:40:1362:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1357:40:1362:5 | { ... } | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1357:40:1362:5 | { ... } | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1358:13:1358:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1358:13:1358:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1358:13:1358:13 | x | T.T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1358:17:1358:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1358:17:1358:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1358:17:1358:42 | ...::Ok(...) | T.T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1358:28:1358:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1358:28:1358:41 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1358:39:1358:40 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:13:1360:13 | y | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:17:1360:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1360:17:1360:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1360:17:1360:17 | x | T.T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:17:1360:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1360:17:1360:18 | TryExpr | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:17:1360:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1360:17:1360:29 | ... .map(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:17:1360:30 | TryExpr | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:24:1360:28 | \|...\| s | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:1360:24:1360:28 | \|...\| s | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:1360:24:1360:28 | \|...\| s | dyn(Args).T0 | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:24:1360:28 | \|...\| s | dyn(Output) | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:25:1360:25 | s | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1360:28:1360:28 | s | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1361:9:1361:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1361:9:1361:22 | ...::Ok(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1361:9:1361:22 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1361:20:1361:21 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1366:30:1366:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1366:30:1366:34 | input | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1366:30:1366:34 | input | T | main.rs:1366:20:1366:27 | T | +| main.rs:1366:69:1373:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1366:69:1373:5 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1366:69:1373:5 | { ... } | T | main.rs:1366:20:1366:27 | T | +| main.rs:1367:13:1367:17 | value | | main.rs:1366:20:1366:27 | T | +| main.rs:1367:21:1367:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1367:21:1367:25 | input | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1367:21:1367:25 | input | T | main.rs:1366:20:1366:27 | T | +| main.rs:1367:21:1367:26 | TryExpr | | main.rs:1366:20:1366:27 | T | +| main.rs:1368:13:1368:18 | mapped | | main.rs:1366:20:1366:27 | T | +| main.rs:1368:22:1368:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1368:22:1368:38 | ...::Ok(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1368:22:1368:38 | ...::Ok(...) | T | main.rs:1366:20:1366:27 | T | +| main.rs:1368:22:1371:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1368:22:1371:10 | ... .and_then(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1368:22:1371:10 | ... .and_then(...) | T | main.rs:1366:20:1366:27 | T | +| main.rs:1368:22:1371:11 | TryExpr | | main.rs:1366:20:1366:27 | T | +| main.rs:1368:33:1368:37 | value | | main.rs:1366:20:1366:27 | T | +| main.rs:1368:49:1371:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:1368:49:1371:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:1368:49:1371:9 | \|...\| ... | dyn(Args).T0 | main.rs:1366:20:1366:27 | T | +| main.rs:1368:49:1371:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | Result | +| main.rs:1368:49:1371:9 | \|...\| ... | dyn(Output).E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1368:49:1371:9 | \|...\| ... | dyn(Output).T | main.rs:1366:20:1366:27 | T | +| main.rs:1368:50:1368:50 | v | | main.rs:1366:20:1366:27 | T | +| main.rs:1368:53:1371:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1368:53:1371:9 | { ... } | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1368:53:1371:9 | { ... } | T | main.rs:1366:20:1366:27 | T | +| main.rs:1369:13:1369:31 | MacroExpr | | {EXTERNAL LOCATION} | () | | main.rs:1369:22:1369:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | | main.rs:1369:22:1369:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1369:22:1369:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1369:22:1369:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1369:22:1369:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1369:30:1369:35 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:9:1374:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1372:16:1372:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1372:16:1372:33 | ...::Ok(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:16:1372:33 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:27:1372:32 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:37:1372:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1372:37:1372:63 | try_complex(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:37:1372:63 | try_complex(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:49:1372:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1372:49:1372:62 | ...::Ok(...) | E | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:49:1372:62 | ...::Ok(...) | T | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:60:1372:61 | S1 | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1372:65:1374:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1373:13:1373:36 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:1373:22:1373:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:1373:22:1373:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1373:22:1373:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:1373:22:1373:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1373:22:1373:35 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1373:30:1373:35 | result | | main.rs:1317:5:1318:14 | S1 | -| main.rs:1379:16:1470:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1380:13:1380:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1380:22:1380:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1381:13:1381:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1381:17:1381:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1382:13:1382:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1382:17:1382:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1382:17:1382:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1382:21:1382:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1383:13:1383:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1383:17:1383:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1383:17:1383:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1384:13:1384:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1384:17:1384:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1385:13:1385:17 | hello | | {EXTERNAL LOCATION} | & | -| main.rs:1385:13:1385:17 | hello | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1385:21:1385:27 | "Hello" | | {EXTERNAL LOCATION} | & | -| main.rs:1385:21:1385:27 | "Hello" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:1386:13:1386:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1386:17:1386:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1387:13:1387:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1387:17:1387:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1388:13:1388:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1388:17:1388:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1391:26:1391:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1391:26:1391:30 | SelfParam | TRef | main.rs:1390:9:1394:9 | Self [trait MyTrait] | -| main.rs:1397:26:1397:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1397:26:1397:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:1397:26:1397:30 | SelfParam | TRef.TArray | main.rs:1396:14:1396:23 | T | -| main.rs:1397:39:1399:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1397:39:1399:13 | { ... } | TRef | main.rs:1396:14:1396:23 | T | -| main.rs:1398:17:1398:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1398:17:1398:20 | self | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:1398:17:1398:20 | self | TRef.TArray | main.rs:1396:14:1396:23 | T | -| main.rs:1398:17:1398:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | -| main.rs:1398:17:1398:36 | ... .unwrap() | TRef | main.rs:1396:14:1396:23 | T | -| main.rs:1398:26:1398:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1401:31:1403:13 | { ... } | | main.rs:1396:14:1396:23 | T | -| main.rs:1402:17:1402:28 | ...::default(...) | | main.rs:1396:14:1396:23 | T | -| main.rs:1406:13:1406:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1406:13:1406:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1406:17:1406:25 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1406:17:1406:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:1406:17:1406:37 | ... .my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1406:17:1406:37 | ... .my_method() | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1406:18:1406:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1406:21:1406:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1406:24:1406:24 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:13:1407:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1407:13:1407:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:17:1407:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1407:17:1407:47 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:22:1407:22 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:37:1407:46 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1407:37:1407:46 | &... | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:1407:37:1407:46 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:38:1407:46 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1407:38:1407:46 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:39:1407:39 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:42:1407:42 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1407:45:1407:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1408:13:1408:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1408:17:1408:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1408:24:1408:24 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1411:26:1411:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1411:26:1411:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1411:26:1411:30 | SelfParam | TRef.TSlice | main.rs:1410:14:1410:23 | T | -| main.rs:1411:39:1413:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1411:39:1413:13 | { ... } | TRef | main.rs:1410:14:1410:23 | T | -| main.rs:1412:17:1412:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1412:17:1412:20 | self | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1412:17:1412:20 | self | TRef.TSlice | main.rs:1410:14:1410:23 | T | -| main.rs:1412:17:1412:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1412:17:1412:27 | self.get(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:1412:17:1412:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | -| main.rs:1412:17:1412:36 | ... .unwrap() | TRef | main.rs:1410:14:1410:23 | T | -| main.rs:1412:26:1412:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1415:31:1417:13 | { ... } | | main.rs:1410:14:1410:23 | T | -| main.rs:1416:17:1416:28 | ...::default(...) | | main.rs:1410:14:1410:23 | T | -| main.rs:1420:13:1420:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1420:13:1420:13 | s | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1420:13:1420:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1420:25:1420:34 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1420:25:1420:34 | &... | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1420:25:1420:34 | &... | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:1420:25:1420:34 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:1420:25:1420:34 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1420:26:1420:34 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:1420:26:1420:34 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:1420:27:1420:27 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1420:30:1420:30 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1420:33:1420:33 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1421:13:1421:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1421:13:1421:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1421:17:1421:17 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1421:17:1421:17 | s | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1421:17:1421:17 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1421:17:1421:29 | s.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1421:17:1421:29 | s.my_method() | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1422:13:1422:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1422:13:1422:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1422:17:1422:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1422:17:1422:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1422:34:1422:34 | s | | {EXTERNAL LOCATION} | & | -| main.rs:1422:34:1422:34 | s | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:1422:34:1422:34 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | -| main.rs:1423:13:1423:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1423:17:1423:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1426:26:1426:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1426:26:1426:30 | SelfParam | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1426:26:1426:30 | SelfParam | TRef.T0 | main.rs:1425:14:1425:23 | T | -| main.rs:1426:26:1426:30 | SelfParam | TRef.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1426:39:1428:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1426:39:1428:13 | { ... } | TRef | main.rs:1425:14:1425:23 | T | -| main.rs:1427:17:1427:23 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1427:17:1427:23 | &... | TRef | main.rs:1425:14:1425:23 | T | -| main.rs:1427:18:1427:21 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1427:18:1427:21 | self | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1427:18:1427:21 | self | TRef.T0 | main.rs:1425:14:1425:23 | T | -| main.rs:1427:18:1427:21 | self | TRef.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1427:18:1427:23 | self.0 | | main.rs:1425:14:1425:23 | T | -| main.rs:1430:31:1432:13 | { ... } | | main.rs:1425:14:1425:23 | T | -| main.rs:1431:17:1431:28 | ...::default(...) | | main.rs:1425:14:1425:23 | T | -| main.rs:1435:13:1435:13 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1435:13:1435:13 | p | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:1435:13:1435:13 | p | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1435:17:1435:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1435:17:1435:23 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:1435:17:1435:23 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1435:18:1435:19 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1435:22:1435:22 | 7 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1436:13:1436:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1436:13:1436:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1436:17:1436:17 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1436:17:1436:17 | p | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:1436:17:1436:17 | p | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1436:17:1436:29 | p.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1436:17:1436:29 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:13:1437:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1437:13:1437:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:17:1437:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1437:17:1437:39 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:37:1437:38 | &p | | {EXTERNAL LOCATION} | & | -| main.rs:1437:37:1437:38 | &p | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1437:37:1437:38 | &p | TRef.T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:37:1437:38 | &p | TRef.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:38:1437:38 | p | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1437:38:1437:38 | p | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:1437:38:1437:38 | p | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:1438:13:1438:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1438:17:1438:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1441:26:1441:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1441:26:1441:30 | SelfParam | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1441:26:1441:30 | SelfParam | TRef.TRef | main.rs:1440:14:1440:23 | T | -| main.rs:1441:39:1443:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1441:39:1443:13 | { ... } | TRef | main.rs:1440:14:1440:23 | T | -| main.rs:1442:17:1442:21 | * ... | | {EXTERNAL LOCATION} | & | -| main.rs:1442:17:1442:21 | * ... | TRef | main.rs:1440:14:1440:23 | T | -| main.rs:1442:18:1442:21 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1442:18:1442:21 | self | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1442:18:1442:21 | self | TRef.TRef | main.rs:1440:14:1440:23 | T | -| main.rs:1445:31:1447:13 | { ... } | | main.rs:1440:14:1440:23 | T | -| main.rs:1446:17:1446:28 | ...::default(...) | | main.rs:1440:14:1440:23 | T | -| main.rs:1450:13:1450:13 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1450:13:1450:13 | r | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1450:17:1450:19 | &42 | | {EXTERNAL LOCATION} | & | -| main.rs:1450:17:1450:19 | &42 | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1450:18:1450:19 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1451:13:1451:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1451:13:1451:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1451:17:1451:17 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1451:17:1451:17 | r | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1451:17:1451:29 | r.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1451:17:1451:29 | r.my_method() | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1452:13:1452:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1452:13:1452:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1452:17:1452:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1452:17:1452:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1452:33:1452:34 | &r | | {EXTERNAL LOCATION} | & | -| main.rs:1452:33:1452:34 | &r | TRef | {EXTERNAL LOCATION} | & | -| main.rs:1452:33:1452:34 | &r | TRef.TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1452:34:1452:34 | r | | {EXTERNAL LOCATION} | & | -| main.rs:1452:34:1452:34 | r | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1453:13:1453:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1453:17:1453:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1456:26:1456:30 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1456:26:1456:30 | SelfParam | TRef | {EXTERNAL LOCATION} | *mut | -| main.rs:1456:26:1456:30 | SelfParam | TRef.TPtrMut | main.rs:1455:14:1455:23 | T | -| main.rs:1456:39:1458:13 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1456:39:1458:13 | { ... } | TRef | main.rs:1455:14:1455:23 | T | -| main.rs:1457:17:1457:34 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1457:17:1457:34 | { ... } | TRef | main.rs:1455:14:1455:23 | T | -| main.rs:1457:26:1457:32 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1457:26:1457:32 | &... | TRef | main.rs:1455:14:1455:23 | T | -| main.rs:1457:27:1457:32 | * ... | | main.rs:1455:14:1455:23 | T | -| main.rs:1457:28:1457:32 | * ... | | {EXTERNAL LOCATION} | *mut | -| main.rs:1457:28:1457:32 | * ... | TPtrMut | main.rs:1455:14:1455:23 | T | -| main.rs:1457:29:1457:32 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1457:29:1457:32 | self | TRef | {EXTERNAL LOCATION} | *mut | -| main.rs:1457:29:1457:32 | self | TRef.TPtrMut | main.rs:1455:14:1455:23 | T | -| main.rs:1460:31:1462:13 | { ... } | | main.rs:1455:14:1455:23 | T | -| main.rs:1461:17:1461:28 | ...::default(...) | | main.rs:1455:14:1455:23 | T | -| main.rs:1465:17:1465:17 | v | | {EXTERNAL LOCATION} | i32 | -| main.rs:1465:21:1465:22 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1466:13:1466:13 | p | | {EXTERNAL LOCATION} | *mut | -| main.rs:1466:13:1466:13 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1466:27:1466:32 | &mut v | | {EXTERNAL LOCATION} | &mut | -| main.rs:1466:27:1466:32 | &mut v | TRefMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1466:32:1466:32 | v | | {EXTERNAL LOCATION} | i32 | -| main.rs:1467:13:1467:13 | x | | {EXTERNAL LOCATION} | & | -| main.rs:1467:13:1467:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1467:17:1467:40 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1467:17:1467:40 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1467:26:1467:26 | p | | {EXTERNAL LOCATION} | *mut | -| main.rs:1467:26:1467:26 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1467:26:1467:38 | p.my_method() | | {EXTERNAL LOCATION} | & | -| main.rs:1467:26:1467:38 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1369:22:1369:30 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1369:22:1369:30 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1369:22:1369:30 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1369:30:1369:30 | v | | main.rs:1366:20:1366:27 | T | +| main.rs:1370:13:1370:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1370:13:1370:34 | ...::Ok::<...>(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1370:13:1370:34 | ...::Ok::<...>(...) | T | main.rs:1366:20:1366:27 | T | +| main.rs:1370:33:1370:33 | v | | main.rs:1366:20:1366:27 | T | +| main.rs:1372:9:1372:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1372:9:1372:23 | ...::Err(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1372:9:1372:23 | ...::Err(...) | T | main.rs:1366:20:1366:27 | T | +| main.rs:1372:21:1372:22 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1376:16:1392:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1377:9:1379:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1377:16:1377:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1377:16:1377:33 | ...::Ok(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:16:1377:33 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:27:1377:32 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:37:1377:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1377:37:1377:52 | try_same_error(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:37:1377:52 | try_same_error(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1377:54:1379:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1378:13:1378:36 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1378:22:1378:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1378:22:1378:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1378:22:1378:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1378:22:1378:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1378:22:1378:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1378:30:1378:35 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1381:9:1383:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1381:16:1381:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1381:16:1381:33 | ...::Ok(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1381:16:1381:33 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1381:27:1381:32 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1381:37:1381:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1381:37:1381:55 | try_convert_error(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1381:37:1381:55 | try_convert_error(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1381:57:1383:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1382:13:1382:36 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1382:22:1382:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1382:22:1382:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1382:22:1382:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1382:22:1382:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1382:22:1382:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1382:30:1382:35 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1385:9:1387:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1385:16:1385:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1385:16:1385:33 | ...::Ok(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1385:16:1385:33 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1385:27:1385:32 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1385:37:1385:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1385:37:1385:49 | try_chained(...) | E | main.rs:1337:5:1338:14 | S2 | +| main.rs:1385:37:1385:49 | try_chained(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1385:51:1387:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1386:13:1386:36 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1386:22:1386:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1386:22:1386:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1386:22:1386:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1386:22:1386:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1386:22:1386:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1386:30:1386:35 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:9:1391:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1389:16:1389:33 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1389:16:1389:33 | ...::Ok(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:16:1389:33 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:27:1389:32 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:37:1389:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1389:37:1389:63 | try_complex(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:37:1389:63 | try_complex(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:49:1389:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1389:49:1389:62 | ...::Ok(...) | E | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:49:1389:62 | ...::Ok(...) | T | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:60:1389:61 | S1 | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1389:65:1391:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1390:13:1390:36 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:1390:22:1390:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:1390:22:1390:27 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1390:22:1390:35 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:1390:22:1390:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1390:22:1390:35 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1390:30:1390:35 | result | | main.rs:1334:5:1335:14 | S1 | +| main.rs:1396:16:1487:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1397:13:1397:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1397:22:1397:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1398:13:1398:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1398:17:1398:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1399:13:1399:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1399:17:1399:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1399:17:1399:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1399:21:1399:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1400:13:1400:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1400:17:1400:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1400:17:1400:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1401:13:1401:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1401:17:1401:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1402:13:1402:17 | hello | | {EXTERNAL LOCATION} | & | +| main.rs:1402:13:1402:17 | hello | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1402:21:1402:27 | "Hello" | | {EXTERNAL LOCATION} | & | +| main.rs:1402:21:1402:27 | "Hello" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:1403:13:1403:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1403:17:1403:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1404:13:1404:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1404:17:1404:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1405:13:1405:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1405:17:1405:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1408:26:1408:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1408:26:1408:30 | SelfParam | TRef | main.rs:1407:9:1411:9 | Self [trait MyTrait] | +| main.rs:1414:26:1414:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1414:26:1414:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1414:26:1414:30 | SelfParam | TRef.TArray | main.rs:1413:14:1413:23 | T | +| main.rs:1414:39:1416:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1414:39:1416:13 | { ... } | TRef | main.rs:1413:14:1413:23 | T | +| main.rs:1415:17:1415:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1415:17:1415:20 | self | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1415:17:1415:20 | self | TRef.TArray | main.rs:1413:14:1413:23 | T | +| main.rs:1415:17:1415:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | +| main.rs:1415:17:1415:36 | ... .unwrap() | TRef | main.rs:1413:14:1413:23 | T | +| main.rs:1415:26:1415:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1418:31:1420:13 | { ... } | | main.rs:1413:14:1413:23 | T | +| main.rs:1419:17:1419:28 | ...::default(...) | | main.rs:1413:14:1413:23 | T | +| main.rs:1423:13:1423:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1423:13:1423:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1423:17:1423:25 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1423:17:1423:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1423:17:1423:37 | ... .my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1423:17:1423:37 | ... .my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1423:18:1423:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1423:21:1423:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1423:24:1423:24 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:13:1424:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1424:13:1424:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:17:1424:47 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1424:17:1424:47 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:22:1424:22 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:37:1424:46 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1424:37:1424:46 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1424:37:1424:46 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:38:1424:46 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1424:38:1424:46 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:39:1424:39 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:42:1424:42 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1424:45:1424:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1425:13:1425:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1425:17:1425:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1425:24:1425:24 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1428:26:1428:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1428:26:1428:30 | SelfParam | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1428:26:1428:30 | SelfParam | TRef.TSlice | main.rs:1427:14:1427:23 | T | +| main.rs:1428:39:1430:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1428:39:1430:13 | { ... } | TRef | main.rs:1427:14:1427:23 | T | +| main.rs:1429:17:1429:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1429:17:1429:20 | self | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1429:17:1429:20 | self | TRef.TSlice | main.rs:1427:14:1427:23 | T | +| main.rs:1429:17:1429:27 | self.get(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1429:17:1429:27 | self.get(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:1429:17:1429:36 | ... .unwrap() | | {EXTERNAL LOCATION} | & | +| main.rs:1429:17:1429:36 | ... .unwrap() | TRef | main.rs:1427:14:1427:23 | T | +| main.rs:1429:26:1429:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1432:31:1434:13 | { ... } | | main.rs:1427:14:1427:23 | T | +| main.rs:1433:17:1433:28 | ...::default(...) | | main.rs:1427:14:1427:23 | T | +| main.rs:1437:13:1437:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1437:13:1437:13 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1437:13:1437:13 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:25:1437:34 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1437:25:1437:34 | &... | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1437:25:1437:34 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:1437:25:1437:34 | &... | TRef.TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:25:1437:34 | &... | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:26:1437:34 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:1437:26:1437:34 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:27:1437:27 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:30:1437:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1437:33:1437:33 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1438:13:1438:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1438:13:1438:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1438:17:1438:17 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1438:17:1438:17 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1438:17:1438:17 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1438:17:1438:29 | s.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1438:17:1438:29 | s.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1439:13:1439:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1439:13:1439:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1439:17:1439:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1439:17:1439:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1439:34:1439:34 | s | | {EXTERNAL LOCATION} | & | +| main.rs:1439:34:1439:34 | s | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:1439:34:1439:34 | s | TRef.TSlice | {EXTERNAL LOCATION} | i32 | +| main.rs:1440:13:1440:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1440:17:1440:34 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:26:1443:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1443:26:1443:30 | SelfParam | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1443:26:1443:30 | SelfParam | TRef.T0 | main.rs:1442:14:1442:23 | T | +| main.rs:1443:26:1443:30 | SelfParam | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1443:39:1445:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1443:39:1445:13 | { ... } | TRef | main.rs:1442:14:1442:23 | T | +| main.rs:1444:17:1444:23 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1444:17:1444:23 | &... | TRef | main.rs:1442:14:1442:23 | T | +| main.rs:1444:18:1444:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1444:18:1444:21 | self | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1444:18:1444:21 | self | TRef.T0 | main.rs:1442:14:1442:23 | T | +| main.rs:1444:18:1444:21 | self | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1444:18:1444:23 | self.0 | | main.rs:1442:14:1442:23 | T | +| main.rs:1447:31:1449:13 | { ... } | | main.rs:1442:14:1442:23 | T | +| main.rs:1448:17:1448:28 | ...::default(...) | | main.rs:1442:14:1442:23 | T | +| main.rs:1452:13:1452:13 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1452:13:1452:13 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1452:13:1452:13 | p | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1452:17:1452:23 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1452:17:1452:23 | TupleExpr | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1452:17:1452:23 | TupleExpr | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1452:18:1452:19 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1452:22:1452:22 | 7 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1453:13:1453:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1453:13:1453:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1453:17:1453:17 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1453:17:1453:17 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1453:17:1453:17 | p | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1453:17:1453:29 | p.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1453:17:1453:29 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1454:13:1454:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1454:13:1454:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1454:17:1454:39 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1454:17:1454:39 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1454:37:1454:38 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1454:37:1454:38 | &p | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1454:37:1454:38 | &p | TRef.T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1454:37:1454:38 | &p | TRef.T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1454:38:1454:38 | p | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1454:38:1454:38 | p | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:1454:38:1454:38 | p | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:1455:13:1455:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1455:17:1455:39 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1458:26:1458:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1458:26:1458:30 | SelfParam | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1458:26:1458:30 | SelfParam | TRef.TRef | main.rs:1457:14:1457:23 | T | +| main.rs:1458:39:1460:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1458:39:1460:13 | { ... } | TRef | main.rs:1457:14:1457:23 | T | +| main.rs:1459:17:1459:21 | * ... | | {EXTERNAL LOCATION} | & | +| main.rs:1459:17:1459:21 | * ... | TRef | main.rs:1457:14:1457:23 | T | +| main.rs:1459:18:1459:21 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1459:18:1459:21 | self | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1459:18:1459:21 | self | TRef.TRef | main.rs:1457:14:1457:23 | T | +| main.rs:1462:31:1464:13 | { ... } | | main.rs:1457:14:1457:23 | T | +| main.rs:1463:17:1463:28 | ...::default(...) | | main.rs:1457:14:1457:23 | T | +| main.rs:1467:13:1467:13 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1467:13:1467:13 | r | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1467:17:1467:19 | &42 | | {EXTERNAL LOCATION} | & | +| main.rs:1467:17:1467:19 | &42 | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1467:18:1467:19 | 42 | | {EXTERNAL LOCATION} | i32 | | main.rs:1468:13:1468:13 | x | | {EXTERNAL LOCATION} | & | | main.rs:1468:13:1468:13 | x | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1468:17:1468:50 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:1468:17:1468:50 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1468:26:1468:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1468:26:1468:48 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:1468:46:1468:47 | &p | | {EXTERNAL LOCATION} | & | -| main.rs:1468:46:1468:47 | &p | TRef | {EXTERNAL LOCATION} | *mut | -| main.rs:1468:46:1468:47 | &p | TRef.TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1468:47:1468:47 | p | | {EXTERNAL LOCATION} | *mut | -| main.rs:1468:47:1468:47 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | -| main.rs:1469:13:1469:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1469:17:1469:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:1475:16:1487:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1476:13:1476:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1476:17:1476:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1476:17:1476:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1476:25:1476:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:13:1477:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:17:1477:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:17:1477:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1477:25:1477:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1479:17:1479:17 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1480:13:1480:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1480:20:1480:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1480:20:1480:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1480:26:1480:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1481:9:1485:9 | if cond {...} else {...} | | {EXTERNAL LOCATION} | () | -| main.rs:1481:12:1481:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1481:17:1483:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1482:17:1482:17 | z | | {EXTERNAL LOCATION} | () | -| main.rs:1482:21:1482:27 | (...) | | {EXTERNAL LOCATION} | () | -| main.rs:1482:22:1482:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1482:22:1482:26 | ... = ... | | {EXTERNAL LOCATION} | () | -| main.rs:1482:26:1482:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1483:16:1485:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1484:13:1484:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1484:13:1484:17 | ... = ... | | {EXTERNAL LOCATION} | () | -| main.rs:1484:17:1484:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1486:9:1486:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1500:30:1502:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1501:13:1501:31 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1501:23:1501:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1501:29:1501:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1508:16:1508:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1508:22:1508:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1508:41:1513:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1509:13:1512:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1510:20:1510:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1510:20:1510:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1510:20:1510:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1510:29:1510:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1510:29:1510:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1511:20:1511:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1511:20:1511:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1511:20:1511:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1511:29:1511:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1511:29:1511:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1518:23:1518:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1518:23:1518:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1518:34:1518:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1518:45:1521:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1519:13:1519:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1519:13:1519:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1519:13:1519:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1519:13:1519:27 | ... += ... | | {EXTERNAL LOCATION} | () | -| main.rs:1519:23:1519:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1519:23:1519:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1520:13:1520:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1520:13:1520:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1520:13:1520:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1520:13:1520:27 | ... += ... | | {EXTERNAL LOCATION} | () | -| main.rs:1520:23:1520:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1520:23:1520:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1526:16:1526:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1526:22:1526:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1526:41:1531:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1527:13:1530:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1528:20:1528:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1528:20:1528:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1528:20:1528:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1528:29:1528:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1528:29:1528:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:20:1529:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1529:20:1529:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:20:1529:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:29:1529:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1529:29:1529:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1536:23:1536:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1536:23:1536:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1536:34:1536:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1536:45:1539:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1468:17:1468:17 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1468:17:1468:17 | r | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1468:17:1468:29 | r.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1468:17:1468:29 | r.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1469:13:1469:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1469:13:1469:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1469:17:1469:35 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1469:17:1469:35 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1469:33:1469:34 | &r | | {EXTERNAL LOCATION} | & | +| main.rs:1469:33:1469:34 | &r | TRef | {EXTERNAL LOCATION} | & | +| main.rs:1469:33:1469:34 | &r | TRef.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1469:34:1469:34 | r | | {EXTERNAL LOCATION} | & | +| main.rs:1469:34:1469:34 | r | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1470:13:1470:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1470:17:1470:33 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1473:26:1473:30 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1473:26:1473:30 | SelfParam | TRef | {EXTERNAL LOCATION} | *mut | +| main.rs:1473:26:1473:30 | SelfParam | TRef.TPtrMut | main.rs:1472:14:1472:23 | T | +| main.rs:1473:39:1475:13 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1473:39:1475:13 | { ... } | TRef | main.rs:1472:14:1472:23 | T | +| main.rs:1474:17:1474:34 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1474:17:1474:34 | { ... } | TRef | main.rs:1472:14:1472:23 | T | +| main.rs:1474:26:1474:32 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1474:26:1474:32 | &... | TRef | main.rs:1472:14:1472:23 | T | +| main.rs:1474:27:1474:32 | * ... | | main.rs:1472:14:1472:23 | T | +| main.rs:1474:28:1474:32 | * ... | | {EXTERNAL LOCATION} | *mut | +| main.rs:1474:28:1474:32 | * ... | TPtrMut | main.rs:1472:14:1472:23 | T | +| main.rs:1474:29:1474:32 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1474:29:1474:32 | self | TRef | {EXTERNAL LOCATION} | *mut | +| main.rs:1474:29:1474:32 | self | TRef.TPtrMut | main.rs:1472:14:1472:23 | T | +| main.rs:1477:31:1479:13 | { ... } | | main.rs:1472:14:1472:23 | T | +| main.rs:1478:17:1478:28 | ...::default(...) | | main.rs:1472:14:1472:23 | T | +| main.rs:1482:17:1482:17 | v | | {EXTERNAL LOCATION} | i32 | +| main.rs:1482:21:1482:22 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1483:13:1483:13 | p | | {EXTERNAL LOCATION} | *mut | +| main.rs:1483:13:1483:13 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1483:27:1483:32 | &mut v | | {EXTERNAL LOCATION} | &mut | +| main.rs:1483:27:1483:32 | &mut v | TRefMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1483:32:1483:32 | v | | {EXTERNAL LOCATION} | i32 | +| main.rs:1484:13:1484:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1484:13:1484:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1484:17:1484:40 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1484:17:1484:40 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1484:26:1484:26 | p | | {EXTERNAL LOCATION} | *mut | +| main.rs:1484:26:1484:26 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1484:26:1484:38 | p.my_method() | | {EXTERNAL LOCATION} | & | +| main.rs:1484:26:1484:38 | p.my_method() | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1485:13:1485:13 | x | | {EXTERNAL LOCATION} | & | +| main.rs:1485:13:1485:13 | x | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1485:17:1485:50 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:1485:17:1485:50 | { ... } | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1485:26:1485:48 | ...::my_method(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1485:26:1485:48 | ...::my_method(...) | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:1485:46:1485:47 | &p | | {EXTERNAL LOCATION} | & | +| main.rs:1485:46:1485:47 | &p | TRef | {EXTERNAL LOCATION} | *mut | +| main.rs:1485:46:1485:47 | &p | TRef.TPtrMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1485:47:1485:47 | p | | {EXTERNAL LOCATION} | *mut | +| main.rs:1485:47:1485:47 | p | TPtrMut | {EXTERNAL LOCATION} | i32 | +| main.rs:1486:13:1486:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1486:17:1486:37 | ...::my_func(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:1492:16:1504:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1493:13:1493:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1493:17:1493:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1493:17:1493:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1493:25:1493:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:13:1494:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:17:1494:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:17:1494:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1494:25:1494:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1496:17:1496:17 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1497:13:1497:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1497:20:1497:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1497:20:1497:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1497:26:1497:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1498:9:1502:9 | if cond {...} else {...} | | {EXTERNAL LOCATION} | () | +| main.rs:1498:12:1498:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1498:17:1500:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1499:17:1499:17 | z | | {EXTERNAL LOCATION} | () | +| main.rs:1499:21:1499:27 | (...) | | {EXTERNAL LOCATION} | () | +| main.rs:1499:22:1499:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1499:22:1499:26 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:1499:26:1499:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1500:16:1502:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1501:13:1501:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1501:13:1501:17 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:1501:17:1501:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1503:9:1503:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1517:30:1519:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1518:13:1518:31 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1518:23:1518:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1518:29:1518:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1525:16:1525:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1525:22:1525:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1525:41:1530:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1526:13:1529:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1527:20:1527:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1527:20:1527:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1527:20:1527:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1527:29:1527:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1527:29:1527:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:20:1528:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1528:20:1528:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:20:1528:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:29:1528:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1528:29:1528:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1535:23:1535:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1535:23:1535:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1535:34:1535:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1535:45:1538:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1536:13:1536:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1536:13:1536:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1536:13:1536:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1536:13:1536:27 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:1536:23:1536:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1536:23:1536:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1537:13:1537:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1537:13:1537:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1537:13:1537:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1537:13:1537:27 | ... -= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1537:23:1537:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1537:23:1537:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:13:1538:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1538:13:1538:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1538:13:1538:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:13:1538:27 | ... -= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1538:23:1538:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1538:23:1538:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1544:16:1544:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1544:22:1544:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1544:41:1549:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1545:13:1548:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1546:20:1546:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1546:20:1546:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:20:1546:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:29:1546:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1546:29:1546:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:20:1547:23 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1547:20:1547:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:20:1547:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:29:1547:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1547:29:1547:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:13:1537:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1537:13:1537:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:13:1537:27 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:1537:23:1537:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1537:23:1537:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:16:1543:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1543:22:1543:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1543:41:1548:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1544:13:1547:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1545:20:1545:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1545:20:1545:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:20:1545:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:29:1545:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1545:29:1545:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:20:1546:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1546:20:1546:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:20:1546:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:29:1546:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1546:29:1546:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1553:23:1553:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1553:23:1553:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1553:34:1553:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1553:23:1553:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1553:34:1553:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1553:45:1556:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1554:13:1554:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1554:13:1554:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1554:13:1554:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1554:13:1554:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:13:1554:27 | ... *= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1554:23:1554:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1554:13:1554:27 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1554:23:1554:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1554:23:1554:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1555:13:1555:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1555:13:1555:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1555:13:1555:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1555:13:1555:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:13:1555:27 | ... *= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1555:23:1555:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1555:13:1555:27 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1555:23:1555:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1555:23:1555:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1561:16:1561:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1561:22:1561:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1561:41:1566:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1562:13:1565:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1563:20:1563:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1561:16:1561:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1561:22:1561:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1561:41:1566:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1562:13:1565:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1563:20:1563:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1563:20:1563:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:20:1563:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:29:1563:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1563:20:1563:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:29:1563:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1563:29:1563:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:20:1564:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1564:20:1564:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1564:20:1564:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:20:1564:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:29:1564:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1564:20:1564:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1564:29:1564:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1564:29:1564:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1570:23:1570:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1570:23:1570:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1570:34:1570:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1570:23:1570:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1570:34:1570:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1570:45:1573:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1571:13:1571:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1571:13:1571:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1571:13:1571:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1571:13:1571:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:13:1571:27 | ... /= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1571:23:1571:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1571:13:1571:27 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1571:23:1571:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1571:23:1571:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1572:13:1572:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1572:13:1572:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1572:13:1572:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1572:13:1572:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:13:1572:27 | ... /= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1572:23:1572:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1572:13:1572:27 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1572:23:1572:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1572:23:1572:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1578:16:1578:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1578:22:1578:24 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1578:41:1583:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1579:13:1582:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1580:20:1580:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1578:16:1578:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1578:22:1578:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1578:41:1583:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1579:13:1582:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1580:20:1580:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1580:20:1580:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:20:1580:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:29:1580:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1580:20:1580:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:29:1580:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1580:29:1580:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1581:20:1581:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1581:20:1581:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1581:20:1581:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1581:20:1581:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1581:29:1581:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1581:20:1581:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:29:1581:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1581:29:1581:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1587:23:1587:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1587:23:1587:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1587:34:1587:36 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1587:23:1587:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1587:34:1587:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1587:45:1590:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1588:13:1588:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1588:13:1588:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1588:13:1588:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1588:13:1588:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1588:13:1588:27 | ... %= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1588:23:1588:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1588:13:1588:27 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1588:23:1588:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1588:23:1588:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1589:13:1589:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1589:13:1589:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1589:13:1589:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1589:13:1589:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1589:13:1589:27 | ... %= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1589:23:1589:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1589:13:1589:27 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1589:23:1589:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1589:23:1589:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:19:1595:22 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1595:25:1595:27 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1595:44:1600:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1596:13:1599:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1597:20:1597:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1595:16:1595:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1595:22:1595:24 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1595:41:1600:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1596:13:1599:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1597:20:1597:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1597:20:1597:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1597:20:1597:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1597:29:1597:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1597:20:1597:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1597:29:1597:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1597:29:1597:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1598:20:1598:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1598:20:1598:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1598:20:1598:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1598:20:1598:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1598:29:1598:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1598:20:1598:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1598:29:1598:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1598:29:1598:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1604:26:1604:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1604:26:1604:34 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1604:37:1604:39 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1604:48:1607:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1604:23:1604:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1604:23:1604:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1604:34:1604:36 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1604:45:1607:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1605:13:1605:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1605:13:1605:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1605:13:1605:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1605:13:1605:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1605:13:1605:27 | ... &= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1605:23:1605:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1605:13:1605:27 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1605:23:1605:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1605:23:1605:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1606:13:1606:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1606:13:1606:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1606:13:1606:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1606:13:1606:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1606:13:1606:27 | ... &= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1606:23:1606:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1606:13:1606:27 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1606:23:1606:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1606:23:1606:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1612:18:1612:21 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1612:24:1612:26 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1612:43:1617:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1613:13:1616:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1614:20:1614:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1612:19:1612:22 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1612:25:1612:27 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1612:44:1617:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1613:13:1616:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1614:20:1614:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1614:20:1614:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1614:20:1614:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1614:29:1614:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1614:20:1614:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1614:29:1614:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1614:29:1614:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1615:20:1615:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1615:20:1615:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1615:20:1615:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1615:20:1615:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1615:29:1615:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1615:20:1615:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1615:29:1615:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1615:29:1615:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1621:25:1621:33 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1621:25:1621:33 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1621:36:1621:38 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1621:47:1624:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1621:26:1621:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1621:26:1621:34 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1621:37:1621:39 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1621:48:1624:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1622:13:1622:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1622:13:1622:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1622:13:1622:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1622:13:1622:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1622:13:1622:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1622:23:1622:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1622:13:1622:27 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1622:23:1622:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1622:23:1622:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1623:13:1623:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1623:13:1623:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1623:13:1623:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1623:13:1623:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1623:13:1623:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1623:23:1623:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1623:13:1623:27 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1623:23:1623:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1623:23:1623:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1629:19:1629:22 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1629:25:1629:27 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1629:44:1634:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1630:13:1633:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1631:20:1631:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1629:18:1629:21 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1629:24:1629:26 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1629:43:1634:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1630:13:1633:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1631:20:1631:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1631:20:1631:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1631:20:1631:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1631:29:1631:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1631:20:1631:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:29:1631:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1631:29:1631:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1632:20:1632:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1632:20:1632:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1632:20:1632:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1632:20:1632:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1632:29:1632:31 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1632:20:1632:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1632:29:1632:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1632:29:1632:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1638:26:1638:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1638:26:1638:34 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1638:37:1638:39 | rhs | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1638:48:1641:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1638:25:1638:33 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1638:25:1638:33 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1638:36:1638:38 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1638:47:1641:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1639:13:1639:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1639:13:1639:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1639:13:1639:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1639:13:1639:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1639:13:1639:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1639:23:1639:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1639:13:1639:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1639:23:1639:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1639:23:1639:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1640:13:1640:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1640:13:1640:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1640:13:1640:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1640:13:1640:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1640:13:1640:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1640:23:1640:25 | rhs | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1640:13:1640:27 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1640:23:1640:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1640:23:1640:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1646:16:1646:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1646:22:1646:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1646:40:1651:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1647:13:1650:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1648:20:1648:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1646:19:1646:22 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1646:25:1646:27 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1646:44:1651:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1647:13:1650:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1648:20:1648:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1648:20:1648:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1648:20:1648:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1648:30:1648:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1649:20:1649:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1648:20:1648:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1648:29:1648:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1648:29:1648:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:20:1649:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1649:20:1649:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1649:20:1649:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1649:30:1649:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1655:23:1655:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1655:23:1655:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1655:34:1655:36 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1655:44:1658:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1649:20:1649:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:29:1649:31 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1649:29:1649:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1655:26:1655:34 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1655:26:1655:34 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1655:37:1655:39 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1655:48:1658:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1656:13:1656:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1656:13:1656:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1656:13:1656:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1656:13:1656:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1656:13:1656:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1656:24:1656:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1656:13:1656:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1656:23:1656:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1656:23:1656:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1657:13:1657:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1657:13:1657:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1657:13:1657:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1657:13:1657:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1657:13:1657:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1657:24:1657:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1663:16:1663:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1657:13:1657:27 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1657:23:1657:25 | rhs | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1657:23:1657:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1663:16:1663:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1663:22:1663:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1663:40:1668:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1664:13:1667:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1665:20:1665:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1663:40:1668:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1664:13:1667:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1665:20:1665:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1665:20:1665:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1665:20:1665:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1665:20:1665:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1665:30:1665:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1666:20:1666:23 | self | | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1666:20:1666:23 | self | | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1666:20:1666:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1666:20:1666:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1666:20:1666:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1666:30:1666:32 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1672:23:1672:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:1672:23:1672:31 | SelfParam | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1672:23:1672:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1672:34:1672:36 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1672:44:1675:9 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:1673:13:1673:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1673:13:1673:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1673:13:1673:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1673:13:1673:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1673:13:1673:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1673:13:1673:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:1673:24:1673:26 | rhs | | {EXTERNAL LOCATION} | u32 | | main.rs:1674:13:1674:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:1674:13:1674:16 | self | TRefMut | main.rs:1493:5:1498:5 | Vec2 | +| main.rs:1674:13:1674:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | | main.rs:1674:13:1674:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1674:13:1674:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1674:13:1674:26 | ... <<= ... | | {EXTERNAL LOCATION} | () | | main.rs:1674:24:1674:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1680:16:1680:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1680:30:1685:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1681:13:1684:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1682:20:1682:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1682:21:1682:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1682:21:1682:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1683:20:1683:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1683:21:1683:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1683:21:1683:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1690:16:1690:19 | SelfParam | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1690:30:1695:9 | { ... } | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1691:13:1694:13 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1692:20:1692:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1692:21:1692:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1692:21:1692:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1693:20:1693:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1693:21:1693:24 | self | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1693:21:1693:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1699:15:1699:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1699:15:1699:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1699:22:1699:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1699:22:1699:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1699:44:1701:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:13:1700:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1700:13:1700:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1700:13:1700:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1700:13:1700:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:13:1700:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:23:1700:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1700:23:1700:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1700:23:1700:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1700:34:1700:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1700:34:1700:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1700:34:1700:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1700:34:1700:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1700:44:1700:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1700:44:1700:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1700:44:1700:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1703:15:1703:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1703:15:1703:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1703:22:1703:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1703:22:1703:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1703:44:1705:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:13:1704:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1704:13:1704:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1704:13:1704:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1704:13:1704:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:13:1704:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:23:1704:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1704:23:1704:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1704:23:1704:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1704:34:1704:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1704:34:1704:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1704:34:1704:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1704:34:1704:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1704:44:1704:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1704:44:1704:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1704:44:1704:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1709:24:1709:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1709:24:1709:28 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1709:31:1709:35 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1709:31:1709:35 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1709:75:1711:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1709:75:1711:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1710:13:1710:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:13:1710:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1710:13:1710:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1710:14:1710:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1710:14:1710:17 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1710:14:1710:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:14:1710:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:23:1710:26 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1710:23:1710:26 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1710:23:1710:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:43:1710:62 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:1710:43:1710:62 | &... | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:44:1710:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:45:1710:49 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1710:45:1710:49 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1710:45:1710:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:45:1710:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1710:55:1710:59 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1710:55:1710:59 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1710:55:1710:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1713:15:1713:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1713:15:1713:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1713:22:1713:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1713:22:1713:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1713:44:1715:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:13:1714:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1714:13:1714:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1714:13:1714:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1714:13:1714:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:13:1714:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:22:1714:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1714:22:1714:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1714:22:1714:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1714:33:1714:36 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1714:33:1714:36 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1714:33:1714:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1714:33:1714:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1714:42:1714:46 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1714:42:1714:46 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1714:42:1714:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1717:15:1717:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1717:15:1717:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1717:22:1717:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1717:22:1717:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1717:44:1719:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:13:1718:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1718:13:1718:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1718:13:1718:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1718:13:1718:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:13:1718:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:23:1718:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1718:23:1718:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1718:23:1718:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1718:34:1718:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1718:34:1718:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1718:34:1718:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1718:34:1718:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1718:44:1718:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1718:44:1718:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1718:44:1718:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1721:15:1721:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1721:15:1721:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1721:22:1721:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1721:22:1721:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1721:44:1723:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:13:1722:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1722:13:1722:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1722:13:1722:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:13:1722:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:13:1722:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:22:1722:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1722:22:1722:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1722:22:1722:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:33:1722:36 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1722:33:1722:36 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1722:33:1722:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1722:33:1722:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1722:42:1722:46 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1722:42:1722:46 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1722:42:1722:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1725:15:1725:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1725:15:1725:19 | SelfParam | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1725:22:1725:26 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1725:22:1725:26 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1725:44:1727:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:13:1726:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1726:13:1726:16 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1726:13:1726:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1726:13:1726:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:13:1726:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:23:1726:27 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1726:23:1726:27 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1726:23:1726:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1726:34:1726:37 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1726:34:1726:37 | self | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1726:34:1726:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1726:34:1726:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1726:44:1726:48 | other | | {EXTERNAL LOCATION} | & | -| main.rs:1726:44:1726:48 | other | TRef | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1726:44:1726:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1730:26:1730:26 | a | | main.rs:1730:18:1730:23 | T | -| main.rs:1730:32:1730:32 | b | | main.rs:1730:18:1730:23 | T | -| main.rs:1730:51:1732:5 | { ... } | | main.rs:1730:18:1730:23 | T::Output[Add] | -| main.rs:1731:9:1731:9 | a | | main.rs:1730:18:1730:23 | T | -| main.rs:1731:9:1731:13 | ... + ... | | main.rs:1730:18:1730:23 | T::Output[Add] | -| main.rs:1731:13:1731:13 | b | | main.rs:1730:18:1730:23 | T | -| main.rs:1734:16:1865:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1738:13:1738:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1738:22:1738:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1738:23:1738:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1738:23:1738:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1738:31:1738:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:13:1739:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1739:22:1739:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1739:23:1739:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1739:23:1739:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1739:31:1739:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1740:13:1740:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1740:22:1740:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1740:23:1740:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1740:23:1740:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1740:30:1740:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:13:1741:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1741:22:1741:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1741:23:1741:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1741:23:1741:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1741:31:1741:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1742:13:1742:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1742:22:1742:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1742:23:1742:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1742:23:1742:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1742:30:1742:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1743:13:1743:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1743:22:1743:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1743:23:1743:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1743:23:1743:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1743:32:1743:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:13:1746:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:23:1746:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:23:1746:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1746:31:1746:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:13:1747:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:23:1747:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:23:1747:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1747:31:1747:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:13:1748:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:23:1748:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:23:1748:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1748:31:1748:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:13:1749:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:23:1749:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:23:1749:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1749:31:1749:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:13:1750:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:23:1750:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:23:1750:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1750:31:1750:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:13:1751:25 | i64_param_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:29:1751:49 | param_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:39:1751:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1751:45:1751:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1754:17:1754:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1754:34:1754:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1755:9:1755:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1755:9:1755:31 | ... += ... | | {EXTERNAL LOCATION} | () | -| main.rs:1755:27:1755:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1757:17:1757:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1757:34:1757:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:9:1758:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1758:9:1758:31 | ... -= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1758:27:1758:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:17:1760:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1760:34:1760:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1761:9:1761:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1761:9:1761:31 | ... *= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1761:27:1761:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1763:17:1763:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1763:34:1763:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1764:9:1764:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1764:9:1764:31 | ... /= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1764:27:1764:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:17:1766:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1766:34:1766:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:9:1767:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1767:9:1767:31 | ... %= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1767:27:1767:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1770:13:1770:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1770:26:1770:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1770:26:1770:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1770:34:1770:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1771:13:1771:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1771:25:1771:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1771:25:1771:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1771:33:1771:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:13:1772:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:26:1772:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:26:1772:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1772:34:1772:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:13:1773:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:23:1773:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:23:1773:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1773:32:1773:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:13:1774:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:23:1774:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:23:1774:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1774:32:1774:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1777:17:1777:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1777:37:1777:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:9:1778:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1778:9:1778:34 | ... &= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1778:30:1778:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:17:1780:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1780:36:1780:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1781:9:1781:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1781:9:1781:33 | ... \|= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1781:29:1781:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:17:1783:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1783:37:1783:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:9:1784:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1784:9:1784:34 | ... ^= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1784:30:1784:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:17:1786:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1786:34:1786:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:9:1787:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1787:9:1787:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1787:28:1787:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:17:1789:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1789:34:1789:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:9:1790:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1790:9:1790:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1790:28:1790:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1792:13:1792:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1792:23:1792:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1792:24:1792:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:13:1793:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:23:1793:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1793:24:1793:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1796:13:1796:14 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1796:18:1796:36 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1796:28:1796:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1796:34:1796:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1797:13:1797:14 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1797:18:1797:36 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1797:28:1797:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1797:34:1797:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1800:13:1800:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1800:23:1800:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1800:23:1800:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1800:29:1800:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1801:13:1801:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1801:23:1801:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1801:23:1801:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1801:29:1801:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1802:13:1802:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1802:23:1802:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1802:23:1802:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1802:28:1802:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1803:13:1803:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1803:23:1803:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1803:23:1803:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1803:29:1803:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1804:13:1804:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1804:23:1804:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1804:23:1804:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1804:28:1804:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1805:13:1805:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1805:23:1805:24 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1805:23:1805:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1805:29:1805:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1808:13:1808:20 | vec2_add | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1808:24:1808:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1808:24:1808:30 | ... + ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1808:29:1808:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1809:13:1809:20 | vec2_sub | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1809:24:1809:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1809:24:1809:30 | ... - ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1809:29:1809:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1810:13:1810:20 | vec2_mul | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1810:24:1810:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1810:24:1810:30 | ... * ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1810:29:1810:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1811:13:1811:20 | vec2_div | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1811:24:1811:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1811:24:1811:30 | ... / ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1811:29:1811:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1812:13:1812:20 | vec2_rem | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1812:24:1812:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1812:24:1812:30 | ... % ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1812:29:1812:30 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1815:17:1815:31 | vec2_add_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1815:35:1815:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1816:9:1816:23 | vec2_add_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1816:9:1816:29 | ... += ... | | {EXTERNAL LOCATION} | () | -| main.rs:1816:28:1816:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1818:17:1818:31 | vec2_sub_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1818:35:1818:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1819:9:1819:23 | vec2_sub_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1819:9:1819:29 | ... -= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1819:28:1819:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1821:17:1821:31 | vec2_mul_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1821:35:1821:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1822:9:1822:23 | vec2_mul_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1822:9:1822:29 | ... *= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1822:28:1822:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1824:17:1824:31 | vec2_div_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1824:35:1824:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1825:9:1825:23 | vec2_div_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1825:9:1825:29 | ... /= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1825:28:1825:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1827:17:1827:31 | vec2_rem_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1827:35:1827:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1828:9:1828:23 | vec2_rem_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1828:9:1828:29 | ... %= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1828:28:1828:29 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1831:13:1831:23 | vec2_bitand | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1831:27:1831:28 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1831:27:1831:33 | ... & ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1831:32:1831:33 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1832:13:1832:22 | vec2_bitor | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1832:26:1832:27 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1832:26:1832:32 | ... \| ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1832:31:1832:32 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1833:13:1833:23 | vec2_bitxor | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1833:27:1833:28 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1833:27:1833:33 | ... ^ ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1833:32:1833:33 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1834:13:1834:20 | vec2_shl | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1834:24:1834:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1834:24:1834:33 | ... << ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1834:30:1834:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1835:13:1835:20 | vec2_shr | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1835:24:1835:25 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1835:24:1835:33 | ... >> ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1835:30:1835:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1838:17:1838:34 | vec2_bitand_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1838:38:1838:39 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1839:9:1839:26 | vec2_bitand_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1839:9:1839:32 | ... &= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1839:31:1839:32 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1841:17:1841:33 | vec2_bitor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1841:37:1841:38 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1842:9:1842:25 | vec2_bitor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1842:9:1842:31 | ... \|= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1842:30:1842:31 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1844:17:1844:34 | vec2_bitxor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1844:38:1844:39 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1845:9:1845:26 | vec2_bitxor_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1845:9:1845:32 | ... ^= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1845:31:1845:32 | v2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1847:17:1847:31 | vec2_shl_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1847:35:1847:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1848:9:1848:23 | vec2_shl_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1848:9:1848:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1848:29:1848:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1850:17:1850:31 | vec2_shr_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1850:35:1850:36 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1851:9:1851:23 | vec2_shr_assign | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1851:9:1851:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | -| main.rs:1851:29:1851:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1854:13:1854:20 | vec2_neg | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1854:24:1854:26 | - ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1854:25:1854:26 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1855:13:1855:20 | vec2_not | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1855:24:1855:26 | ! ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1855:25:1855:26 | v1 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1858:13:1858:24 | default_vec2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1858:28:1858:45 | ...::default(...) | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1859:13:1859:26 | vec2_zero_plus | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1859:30:1859:48 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1859:30:1859:63 | ... + ... | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1859:40:1859:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1859:46:1859:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1859:52:1859:63 | default_vec2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1863:13:1863:24 | default_vec2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1863:28:1863:45 | ...::default(...) | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1864:13:1864:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | -| main.rs:1864:30:1864:48 | Vec2 {...} | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1864:30:1864:64 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1864:40:1864:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1864:46:1864:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1864:53:1864:64 | default_vec2 | | main.rs:1493:5:1498:5 | Vec2 | -| main.rs:1874:18:1874:21 | SelfParam | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1874:24:1874:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1877:25:1879:5 | { ... } | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1878:9:1878:10 | S1 | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1881:41:1883:5 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1881:41:1883:5 | { ... } | dyn(Output) | main.rs:1871:5:1871:14 | S1 | -| main.rs:1882:9:1882:20 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1882:9:1882:20 | { ... } | dyn(Output) | main.rs:1871:5:1871:14 | S1 | -| main.rs:1882:17:1882:18 | S1 | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1885:41:1887:5 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1885:41:1887:5 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:1886:9:1886:16 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1886:9:1886:16 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:1895:13:1895:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1895:13:1895:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | &mut | -| main.rs:1895:13:1895:42 | SelfParam | Ptr.TRefMut | main.rs:1889:5:1889:14 | S2 | -| main.rs:1896:13:1896:15 | _cx | | {EXTERNAL LOCATION} | &mut | -| main.rs:1896:13:1896:15 | _cx | TRefMut | {EXTERNAL LOCATION} | Context | -| main.rs:1897:44:1899:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1897:44:1899:9 | { ... } | T | main.rs:1871:5:1871:14 | S1 | -| main.rs:1898:13:1898:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:1898:13:1898:38 | ...::Ready(...) | T | main.rs:1871:5:1871:14 | S1 | -| main.rs:1898:36:1898:37 | S1 | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1902:41:1904:5 | { ... } | | main.rs:1889:5:1889:14 | S2 | -| main.rs:1903:9:1903:10 | S2 | | main.rs:1889:5:1889:14 | S2 | -| main.rs:1906:22:1914:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1907:9:1907:12 | f1(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1907:9:1907:12 | f1(...) | dyn(Output) | main.rs:1871:5:1871:14 | S1 | -| main.rs:1907:9:1907:18 | await ... | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1907:9:1907:22 | ... .f() | | {EXTERNAL LOCATION} | () | -| main.rs:1908:9:1908:12 | f2(...) | | main.rs:1881:16:1881:39 | impl ... | -| main.rs:1908:9:1908:18 | await ... | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1908:9:1908:22 | ... .f() | | {EXTERNAL LOCATION} | () | -| main.rs:1909:9:1909:12 | f3(...) | | main.rs:1885:16:1885:39 | impl ... | -| main.rs:1909:9:1909:18 | await ... | | {EXTERNAL LOCATION} | () | -| main.rs:1910:9:1910:12 | f4(...) | | main.rs:1902:16:1902:39 | impl ... | -| main.rs:1910:9:1910:18 | await ... | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1910:9:1910:22 | ... .f() | | {EXTERNAL LOCATION} | () | -| main.rs:1911:9:1911:10 | S2 | | main.rs:1889:5:1889:14 | S2 | -| main.rs:1911:9:1911:16 | await S2 | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1911:9:1911:20 | ... .f() | | {EXTERNAL LOCATION} | () | -| main.rs:1912:13:1912:13 | b | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1912:13:1912:13 | b | dyn(Output) | main.rs:1871:5:1871:14 | S1 | -| main.rs:1912:17:1912:28 | { ... } | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1912:17:1912:28 | { ... } | dyn(Output) | main.rs:1871:5:1871:14 | S1 | -| main.rs:1912:25:1912:26 | S1 | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1913:9:1913:9 | b | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:1913:9:1913:9 | b | dyn(Output) | main.rs:1871:5:1871:14 | S1 | -| main.rs:1913:9:1913:15 | await b | | main.rs:1871:5:1871:14 | S1 | -| main.rs:1913:9:1913:19 | ... .f() | | {EXTERNAL LOCATION} | () | -| main.rs:1924:15:1924:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1924:15:1924:19 | SelfParam | TRef | main.rs:1923:5:1925:5 | Self [trait Trait1] | -| main.rs:1924:22:1924:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1928:15:1928:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1928:15:1928:19 | SelfParam | TRef | main.rs:1927:5:1929:5 | Self [trait Trait2] | -| main.rs:1928:22:1928:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1932:15:1932:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1932:15:1932:19 | SelfParam | TRef | main.rs:1918:5:1919:14 | S1 | -| main.rs:1932:22:1932:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1936:15:1936:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1936:15:1936:19 | SelfParam | TRef | main.rs:1918:5:1919:14 | S1 | -| main.rs:1936:22:1936:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1939:37:1941:5 | { ... } | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1940:9:1940:10 | S1 | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1944:18:1944:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1944:18:1944:22 | SelfParam | TRef | main.rs:1943:5:1945:5 | Self [trait MyTrait] | -| main.rs:1948:18:1948:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1948:18:1948:22 | SelfParam | TRef | main.rs:1918:5:1919:14 | S1 | -| main.rs:1948:31:1950:9 | { ... } | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1949:13:1949:14 | S2 | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1954:18:1954:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:1954:18:1954:22 | SelfParam | TRef | main.rs:1921:5:1921:22 | S3 | -| main.rs:1954:18:1954:22 | SelfParam | TRef.T3 | main.rs:1953:10:1953:17 | T | -| main.rs:1954:30:1957:9 | { ... } | | main.rs:1953:10:1953:17 | T | -| main.rs:1955:17:1955:21 | S3(...) | | {EXTERNAL LOCATION} | & | -| main.rs:1955:17:1955:21 | S3(...) | | main.rs:1921:5:1921:22 | S3 | -| main.rs:1955:17:1955:21 | S3(...) | TRef | main.rs:1921:5:1921:22 | S3 | -| main.rs:1955:17:1955:21 | S3(...) | TRef.T3 | main.rs:1953:10:1953:17 | T | -| main.rs:1955:25:1955:28 | self | | {EXTERNAL LOCATION} | & | -| main.rs:1955:25:1955:28 | self | TRef | main.rs:1921:5:1921:22 | S3 | -| main.rs:1955:25:1955:28 | self | TRef.T3 | main.rs:1953:10:1953:17 | T | -| main.rs:1956:13:1956:21 | t.clone() | | main.rs:1953:10:1953:17 | T | -| main.rs:1960:45:1962:5 | { ... } | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1961:9:1961:10 | S1 | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1964:41:1964:41 | t | | main.rs:1964:26:1964:38 | B | -| main.rs:1964:52:1966:5 | { ... } | | main.rs:1964:23:1964:23 | A | -| main.rs:1965:9:1965:9 | t | | main.rs:1964:26:1964:38 | B | -| main.rs:1965:9:1965:17 | t.get_a() | | main.rs:1964:23:1964:23 | A | -| main.rs:1968:34:1968:34 | x | | main.rs:1968:24:1968:31 | T | -| main.rs:1968:59:1970:5 | { ... } | | main.rs:1968:43:1968:57 | impl ... | -| main.rs:1968:59:1970:5 | { ... } | impl(T) | main.rs:1968:24:1968:31 | T | -| main.rs:1969:9:1969:13 | S3(...) | | main.rs:1921:5:1921:22 | S3 | -| main.rs:1969:9:1969:13 | S3(...) | | main.rs:1968:43:1968:57 | impl ... | -| main.rs:1969:9:1969:13 | S3(...) | T3 | main.rs:1968:24:1968:31 | T | -| main.rs:1969:9:1969:13 | S3(...) | impl(T) | main.rs:1968:24:1968:31 | T | -| main.rs:1969:12:1969:12 | x | | main.rs:1968:24:1968:31 | T | -| main.rs:1972:34:1972:34 | x | | main.rs:1972:24:1972:31 | T | -| main.rs:1972:67:1974:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1972:67:1974:5 | { ... } | T | main.rs:1972:50:1972:64 | impl ... | -| main.rs:1972:67:1974:5 | { ... } | T.impl(T) | main.rs:1972:24:1972:31 | T | -| main.rs:1973:9:1973:19 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1973:9:1973:19 | Some(...) | T | main.rs:1921:5:1921:22 | S3 | -| main.rs:1973:9:1973:19 | Some(...) | T | main.rs:1972:50:1972:64 | impl ... | -| main.rs:1973:9:1973:19 | Some(...) | T.T3 | main.rs:1972:24:1972:31 | T | -| main.rs:1973:9:1973:19 | Some(...) | T.impl(T) | main.rs:1972:24:1972:31 | T | -| main.rs:1973:14:1973:18 | S3(...) | | main.rs:1921:5:1921:22 | S3 | -| main.rs:1973:14:1973:18 | S3(...) | T3 | main.rs:1972:24:1972:31 | T | -| main.rs:1973:17:1973:17 | x | | main.rs:1972:24:1972:31 | T | -| main.rs:1976:34:1976:34 | x | | main.rs:1976:24:1976:31 | T | -| main.rs:1976:78:1978:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1976:78:1978:5 | { ... } | T0 | main.rs:1976:44:1976:58 | impl ... | -| main.rs:1976:78:1978:5 | { ... } | T0.impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1976:78:1978:5 | { ... } | T1 | main.rs:1976:61:1976:75 | impl ... | -| main.rs:1976:78:1978:5 | { ... } | T1.impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1977:9:1977:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1977:9:1977:30 | TupleExpr | T0 | main.rs:1921:5:1921:22 | S3 | -| main.rs:1977:9:1977:30 | TupleExpr | T0 | main.rs:1976:44:1976:58 | impl ... | -| main.rs:1977:9:1977:30 | TupleExpr | T0.T3 | main.rs:1976:24:1976:31 | T | -| main.rs:1977:9:1977:30 | TupleExpr | T0.impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1977:9:1977:30 | TupleExpr | T1 | main.rs:1921:5:1921:22 | S3 | -| main.rs:1977:9:1977:30 | TupleExpr | T1 | main.rs:1976:61:1976:75 | impl ... | -| main.rs:1977:9:1977:30 | TupleExpr | T1.T3 | main.rs:1976:24:1976:31 | T | -| main.rs:1977:9:1977:30 | TupleExpr | T1.impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1977:10:1977:22 | S3(...) | | main.rs:1921:5:1921:22 | S3 | -| main.rs:1977:10:1977:22 | S3(...) | | main.rs:1976:44:1976:58 | impl ... | -| main.rs:1977:10:1977:22 | S3(...) | T3 | main.rs:1976:24:1976:31 | T | -| main.rs:1977:10:1977:22 | S3(...) | impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1977:13:1977:13 | x | | main.rs:1976:24:1976:31 | T | -| main.rs:1977:13:1977:21 | x.clone() | | main.rs:1976:24:1976:31 | T | -| main.rs:1977:25:1977:29 | S3(...) | | main.rs:1921:5:1921:22 | S3 | -| main.rs:1977:25:1977:29 | S3(...) | | main.rs:1976:61:1976:75 | impl ... | -| main.rs:1977:25:1977:29 | S3(...) | T3 | main.rs:1976:24:1976:31 | T | -| main.rs:1977:25:1977:29 | S3(...) | impl(T) | main.rs:1976:24:1976:31 | T | -| main.rs:1977:28:1977:28 | x | | main.rs:1976:24:1976:31 | T | -| main.rs:1980:26:1980:26 | t | | main.rs:1980:29:1980:43 | impl ... | -| main.rs:1980:51:1982:5 | { ... } | | main.rs:1980:23:1980:23 | A | -| main.rs:1981:9:1981:9 | t | | main.rs:1980:29:1980:43 | impl ... | -| main.rs:1981:9:1981:17 | t.get_a() | | main.rs:1980:23:1980:23 | A | -| main.rs:1984:16:1998:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:1985:13:1985:13 | x | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1985:17:1985:20 | f1(...) | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1986:9:1986:9 | x | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1986:9:1986:14 | x.f1() | | {EXTERNAL LOCATION} | () | -| main.rs:1987:9:1987:9 | x | | main.rs:1939:16:1939:35 | impl ... + ... | -| main.rs:1987:9:1987:14 | x.f2() | | {EXTERNAL LOCATION} | () | -| main.rs:1988:13:1988:13 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1988:17:1988:32 | get_a_my_trait(...) | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1989:13:1989:13 | b | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1989:17:1989:33 | uses_my_trait1(...) | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1989:32:1989:32 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1990:13:1990:13 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1990:17:1990:32 | get_a_my_trait(...) | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1991:13:1991:13 | c | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1991:17:1991:33 | uses_my_trait2(...) | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1991:32:1991:32 | a | | main.rs:1960:28:1960:43 | impl ... | -| main.rs:1992:13:1992:13 | d | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1992:17:1992:34 | uses_my_trait2(...) | | main.rs:1920:5:1920:14 | S2 | -| main.rs:1992:32:1992:33 | S1 | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1993:13:1993:13 | e | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1993:17:1993:35 | get_a_my_trait2(...) | | main.rs:1968:43:1968:57 | impl ... | -| main.rs:1993:17:1993:35 | get_a_my_trait2(...) | impl(T) | main.rs:1918:5:1919:14 | S1 | -| main.rs:1993:17:1993:43 | ... .get_a() | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1993:33:1993:34 | S1 | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1996:13:1996:13 | f | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1996:17:1996:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1996:17:1996:35 | get_a_my_trait3(...) | T | main.rs:1972:50:1972:64 | impl ... | -| main.rs:1996:17:1996:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:1918:5:1919:14 | S1 | -| main.rs:1996:17:1996:44 | ... .unwrap() | | main.rs:1972:50:1972:64 | impl ... | -| main.rs:1996:17:1996:44 | ... .unwrap() | impl(T) | main.rs:1918:5:1919:14 | S1 | -| main.rs:1996:17:1996:52 | ... .get_a() | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1996:33:1996:34 | S1 | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1997:13:1997:13 | g | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | T0 | main.rs:1976:44:1976:58 | impl ... | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | T0.impl(T) | main.rs:1918:5:1919:14 | S1 | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | T1 | main.rs:1976:61:1976:75 | impl ... | -| main.rs:1997:17:1997:35 | get_a_my_trait4(...) | T1.impl(T) | main.rs:1918:5:1919:14 | S1 | -| main.rs:1997:17:1997:37 | ... .0 | | main.rs:1976:44:1976:58 | impl ... | -| main.rs:1997:17:1997:37 | ... .0 | impl(T) | main.rs:1918:5:1919:14 | S1 | -| main.rs:1997:17:1997:45 | ... .get_a() | | main.rs:1918:5:1919:14 | S1 | -| main.rs:1997:33:1997:34 | S1 | | main.rs:1918:5:1919:14 | S1 | -| main.rs:2008:16:2008:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2008:16:2008:20 | SelfParam | TRef | main.rs:2004:5:2005:13 | S | -| main.rs:2008:31:2010:9 | { ... } | | main.rs:2004:5:2005:13 | S | -| main.rs:2009:13:2009:13 | S | | main.rs:2004:5:2005:13 | S | -| main.rs:2019:26:2021:9 | { ... } | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2019:26:2021:9 | { ... } | T | main.rs:2018:10:2018:10 | T | -| main.rs:2020:13:2020:38 | MyVec {...} | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2020:13:2020:38 | MyVec {...} | T | main.rs:2018:10:2018:10 | T | -| main.rs:2020:27:2020:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2020:27:2020:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2020:27:2020:36 | ...::new(...) | T | main.rs:2018:10:2018:10 | T | -| main.rs:2023:17:2023:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| main.rs:2023:17:2023:25 | SelfParam | TRefMut | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2023:17:2023:25 | SelfParam | TRefMut.T | main.rs:2018:10:2018:10 | T | -| main.rs:2023:28:2023:32 | value | | main.rs:2018:10:2018:10 | T | -| main.rs:2023:38:2025:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2024:13:2024:16 | self | | {EXTERNAL LOCATION} | &mut | -| main.rs:2024:13:2024:16 | self | TRefMut | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2024:13:2024:16 | self | TRefMut.T | main.rs:2018:10:2018:10 | T | -| main.rs:2024:13:2024:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2024:13:2024:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2024:13:2024:21 | self.data | T | main.rs:2018:10:2018:10 | T | -| main.rs:2024:13:2024:33 | ... .push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2024:28:2024:32 | value | | main.rs:2018:10:2018:10 | T | -| main.rs:2032:18:2032:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2032:18:2032:22 | SelfParam | TRef | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2032:18:2032:22 | SelfParam | TRef.T | main.rs:2028:10:2028:10 | T | -| main.rs:2032:25:2032:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2032:56:2034:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2032:56:2034:9 | { ... } | TRef | main.rs:2028:10:2028:10 | T | -| main.rs:2033:13:2033:29 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2033:13:2033:29 | &... | TRef | main.rs:2028:10:2028:10 | T | -| main.rs:2033:14:2033:17 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2033:14:2033:17 | self | TRef | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2033:14:2033:17 | self | TRef.T | main.rs:2028:10:2028:10 | T | -| main.rs:2033:14:2033:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:2033:14:2033:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:2033:14:2033:22 | self.data | T | main.rs:2028:10:2028:10 | T | -| main.rs:2033:14:2033:29 | ...[index] | | main.rs:2028:10:2028:10 | T | -| main.rs:2033:24:2033:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:2037:22:2037:26 | slice | | {EXTERNAL LOCATION} | & | -| main.rs:2037:22:2037:26 | slice | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:2037:22:2037:26 | slice | TRef.TSlice | main.rs:2004:5:2005:13 | S | -| main.rs:2037:35:2039:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2038:13:2038:13 | x | | main.rs:2004:5:2005:13 | S | -| main.rs:2038:17:2038:21 | slice | | {EXTERNAL LOCATION} | & | -| main.rs:2038:17:2038:21 | slice | TRef | {EXTERNAL LOCATION} | [] | -| main.rs:2038:17:2038:21 | slice | TRef.TSlice | main.rs:2004:5:2005:13 | S | -| main.rs:2038:17:2038:24 | slice[0] | | main.rs:2004:5:2005:13 | S | -| main.rs:2038:17:2038:30 | ... .foo() | | main.rs:2004:5:2005:13 | S | -| main.rs:2038:23:2038:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2041:37:2041:37 | a | | main.rs:2041:20:2041:34 | T | -| main.rs:2041:43:2041:43 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2044:5:2046:5 | { ... } | | main.rs:2041:20:2041:34 | T::Output[Index] | -| main.rs:2045:9:2045:9 | a | | main.rs:2041:20:2041:34 | T | -| main.rs:2045:9:2045:12 | a[b] | | main.rs:2041:20:2041:34 | T::Output[Index] | -| main.rs:2045:11:2045:11 | b | | {EXTERNAL LOCATION} | usize | -| main.rs:2048:16:2059:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2049:17:2049:19 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2049:17:2049:19 | vec | T | main.rs:2004:5:2005:13 | S | -| main.rs:2049:23:2049:34 | ...::new(...) | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2049:23:2049:34 | ...::new(...) | T | main.rs:2004:5:2005:13 | S | -| main.rs:2050:9:2050:11 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2050:9:2050:11 | vec | T | main.rs:2004:5:2005:13 | S | -| main.rs:2050:9:2050:19 | vec.push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2050:18:2050:18 | S | | main.rs:2004:5:2005:13 | S | -| main.rs:2051:9:2051:11 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2051:9:2051:11 | vec | T | main.rs:2004:5:2005:13 | S | -| main.rs:2051:9:2051:14 | vec[0] | | main.rs:2004:5:2005:13 | S | -| main.rs:2051:9:2051:20 | ... .foo() | | main.rs:2004:5:2005:13 | S | -| main.rs:2051:13:2051:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2053:13:2053:14 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2053:13:2053:14 | xs | TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2053:21:2053:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2053:26:2053:28 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2053:26:2053:28 | [...] | TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2053:27:2053:27 | S | | main.rs:2004:5:2005:13 | S | -| main.rs:2054:13:2054:13 | x | | main.rs:2004:5:2005:13 | S | -| main.rs:2054:17:2054:18 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2054:17:2054:18 | xs | TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2054:17:2054:21 | xs[0] | | main.rs:2004:5:2005:13 | S | -| main.rs:2054:17:2054:27 | ... .foo() | | main.rs:2004:5:2005:13 | S | -| main.rs:2054:20:2054:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2056:13:2056:13 | y | | main.rs:2004:5:2005:13 | S | -| main.rs:2056:17:2056:35 | param_index(...) | | main.rs:2004:5:2005:13 | S | -| main.rs:2056:29:2056:31 | vec | | main.rs:2013:5:2016:5 | MyVec | -| main.rs:2056:29:2056:31 | vec | T | main.rs:2004:5:2005:13 | S | -| main.rs:2056:34:2056:34 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2058:9:2058:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2058:23:2058:25 | &xs | | {EXTERNAL LOCATION} | & | -| main.rs:2058:23:2058:25 | &xs | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:2058:23:2058:25 | &xs | TRef.TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2058:24:2058:25 | xs | | {EXTERNAL LOCATION} | [;] | -| main.rs:2058:24:2058:25 | xs | TArray | main.rs:2004:5:2005:13 | S | -| main.rs:2063:16:2065:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2064:13:2064:13 | x | | {EXTERNAL LOCATION} | String | -| main.rs:2064:17:2064:46 | MacroExpr | | {EXTERNAL LOCATION} | String | -| main.rs:2064:25:2064:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | -| main.rs:2064:25:2064:35 | "Hello, {}" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2064:25:2064:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2064:25:2064:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2064:25:2064:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:2064:38:2064:45 | "World!" | | {EXTERNAL LOCATION} | & | -| main.rs:2064:38:2064:45 | "World!" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2073:19:2073:22 | SelfParam | | main.rs:2069:5:2074:5 | Self [trait MyAdd] | -| main.rs:2073:25:2073:27 | rhs | | main.rs:2069:17:2069:26 | Rhs | -| main.rs:2080:19:2080:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2080:25:2080:29 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2080:45:2082:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2081:13:2081:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2089:19:2089:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2089:25:2089:29 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2089:25:2089:29 | value | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:2089:46:2091:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2090:13:2090:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2090:14:2090:18 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2090:14:2090:18 | value | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:2098:19:2098:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | -| main.rs:2098:25:2098:29 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2098:46:2104:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2099:13:2103:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2099:13:2103:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2099:16:2099:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2099:22:2101:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2099:22:2101:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2100:17:2100:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2100:17:2100:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2101:20:2103:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2101:20:2103:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2102:17:2102:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2102:17:2102:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2113:19:2113:22 | SelfParam | | main.rs:2107:5:2107:19 | S | -| main.rs:2113:19:2113:22 | SelfParam | T | main.rs:2109:10:2109:17 | T | -| main.rs:2113:25:2113:29 | other | | main.rs:2107:5:2107:19 | S | -| main.rs:2113:25:2113:29 | other | T | main.rs:2109:10:2109:17 | T | -| main.rs:2113:54:2115:9 | { ... } | | main.rs:2107:5:2107:19 | S | -| main.rs:2113:54:2115:9 | { ... } | T | main.rs:2109:10:2109:17 | T::Output[MyAdd] | -| main.rs:2114:13:2114:39 | S(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2114:13:2114:39 | S(...) | T | main.rs:2109:10:2109:17 | T::Output[MyAdd] | -| main.rs:2114:15:2114:22 | (...) | | main.rs:2109:10:2109:17 | T | -| main.rs:2114:15:2114:38 | ... .my_add(...) | | main.rs:2109:10:2109:17 | T::Output[MyAdd] | -| main.rs:2114:16:2114:19 | self | | main.rs:2107:5:2107:19 | S | -| main.rs:2114:16:2114:19 | self | T | main.rs:2109:10:2109:17 | T | -| main.rs:2114:16:2114:21 | self.0 | | main.rs:2109:10:2109:17 | T | -| main.rs:2114:31:2114:35 | other | | main.rs:2107:5:2107:19 | S | -| main.rs:2114:31:2114:35 | other | T | main.rs:2109:10:2109:17 | T | -| main.rs:2114:31:2114:37 | other.0 | | main.rs:2109:10:2109:17 | T | -| main.rs:2122:19:2122:22 | SelfParam | | main.rs:2107:5:2107:19 | S | -| main.rs:2122:19:2122:22 | SelfParam | T | main.rs:2118:10:2118:17 | T | -| main.rs:2122:25:2122:29 | other | | main.rs:2118:10:2118:17 | T | -| main.rs:2122:51:2124:9 | { ... } | | main.rs:2107:5:2107:19 | S | -| main.rs:2122:51:2124:9 | { ... } | T | main.rs:2118:10:2118:17 | T::Output[MyAdd] | -| main.rs:2123:13:2123:37 | S(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2123:13:2123:37 | S(...) | T | main.rs:2118:10:2118:17 | T::Output[MyAdd] | -| main.rs:2123:15:2123:22 | (...) | | main.rs:2118:10:2118:17 | T | -| main.rs:2123:15:2123:36 | ... .my_add(...) | | main.rs:2118:10:2118:17 | T::Output[MyAdd] | -| main.rs:2123:16:2123:19 | self | | main.rs:2107:5:2107:19 | S | -| main.rs:2123:16:2123:19 | self | T | main.rs:2118:10:2118:17 | T | -| main.rs:2123:16:2123:21 | self.0 | | main.rs:2118:10:2118:17 | T | -| main.rs:2123:31:2123:35 | other | | main.rs:2118:10:2118:17 | T | -| main.rs:2134:19:2134:22 | SelfParam | | main.rs:2107:5:2107:19 | S | -| main.rs:2134:19:2134:22 | SelfParam | T | main.rs:2127:14:2127:14 | T | -| main.rs:2134:25:2134:29 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2134:25:2134:29 | other | TRef | main.rs:2127:14:2127:14 | T | -| main.rs:2134:55:2136:9 | { ... } | | main.rs:2107:5:2107:19 | S | -| main.rs:2134:55:2136:9 | { ... } | T | main.rs:2127:14:2127:14 | T::Output[MyAdd] | -| main.rs:2135:13:2135:37 | S(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2135:13:2135:37 | S(...) | T | main.rs:2127:14:2127:14 | T::Output[MyAdd] | -| main.rs:2135:15:2135:22 | (...) | | main.rs:2127:14:2127:14 | T | -| main.rs:2135:15:2135:36 | ... .my_add(...) | | main.rs:2127:14:2127:14 | T::Output[MyAdd] | -| main.rs:2135:16:2135:19 | self | | main.rs:2107:5:2107:19 | S | -| main.rs:2135:16:2135:19 | self | T | main.rs:2127:14:2127:14 | T | -| main.rs:2135:16:2135:21 | self.0 | | main.rs:2127:14:2127:14 | T | -| main.rs:2135:31:2135:35 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2135:31:2135:35 | other | TRef | main.rs:2127:14:2127:14 | T | -| main.rs:2141:20:2141:24 | value | | main.rs:2139:18:2139:18 | T | -| main.rs:2146:20:2146:24 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2146:40:2148:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2147:13:2147:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2153:20:2153:24 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2153:41:2159:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2154:13:2158:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2154:13:2158:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:2154:16:2154:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2154:22:2156:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2154:22:2156:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2155:17:2155:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2155:17:2155:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2156:20:2158:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2156:20:2158:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2157:17:2157:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2157:17:2157:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2164:21:2164:25 | value | | main.rs:2162:19:2162:19 | T | -| main.rs:2164:31:2164:31 | x | | main.rs:2162:5:2165:5 | Self [trait MyFrom2] | -| main.rs:2169:21:2169:25 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2169:33:2169:33 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2169:48:2171:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2170:13:2170:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:2176:21:2176:25 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2176:34:2176:34 | _ | | {EXTERNAL LOCATION} | i64 | -| main.rs:2176:49:2182:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2177:13:2181:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:2177:16:2177:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:2177:22:2179:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2178:17:2178:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2179:20:2181:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2180:17:2180:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2187:15:2187:15 | x | | main.rs:2185:5:2191:5 | Self [trait MySelfTrait] | -| main.rs:2190:15:2190:15 | x | | main.rs:2185:5:2191:5 | Self [trait MySelfTrait] | -| main.rs:2195:15:2195:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2195:31:2197:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2196:13:2196:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2196:13:2196:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2196:17:2196:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2200:15:2200:15 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2200:32:2202:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2201:13:2201:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2201:13:2201:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:2201:17:2201:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2207:15:2207:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2207:31:2209:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2208:13:2208:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2208:13:2208:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2212:15:2212:15 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2212:32:2214:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2213:13:2213:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2217:16:2242:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1680:16:1680:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1680:22:1680:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1680:40:1685:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1681:13:1684:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1682:20:1682:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1682:20:1682:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1682:20:1682:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1682:30:1682:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1683:20:1683:23 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1683:20:1683:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1683:20:1683:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1683:30:1683:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1689:23:1689:31 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:1689:23:1689:31 | SelfParam | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1689:34:1689:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1689:44:1692:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1690:13:1690:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1690:13:1690:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1690:13:1690:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1690:13:1690:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1690:24:1690:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1691:13:1691:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:1691:13:1691:16 | self | TRefMut | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1691:13:1691:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1691:13:1691:26 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1691:24:1691:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1697:16:1697:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1697:30:1702:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1698:13:1701:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1699:20:1699:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1699:21:1699:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1699:21:1699:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1700:20:1700:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1700:21:1700:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1700:21:1700:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1707:16:1707:19 | SelfParam | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1707:30:1712:9 | { ... } | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1708:13:1711:13 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1709:20:1709:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1709:21:1709:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1709:21:1709:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1710:20:1710:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1710:21:1710:24 | self | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1710:21:1710:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1716:15:1716:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1716:15:1716:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1716:22:1716:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1716:22:1716:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1716:44:1718:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:13:1717:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1717:13:1717:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1717:13:1717:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1717:13:1717:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:13:1717:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:23:1717:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1717:23:1717:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1717:23:1717:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1717:34:1717:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1717:34:1717:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1717:34:1717:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1717:34:1717:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1717:44:1717:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1717:44:1717:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1717:44:1717:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1720:15:1720:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1720:15:1720:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1720:22:1720:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1720:22:1720:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1720:44:1722:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:13:1721:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1721:13:1721:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1721:13:1721:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:13:1721:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:13:1721:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:23:1721:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1721:23:1721:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1721:23:1721:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:34:1721:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1721:34:1721:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1721:34:1721:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:34:1721:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:44:1721:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1721:44:1721:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1721:44:1721:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1726:24:1726:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1726:24:1726:28 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1726:31:1726:35 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1726:31:1726:35 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1726:75:1728:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1726:75:1728:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1727:13:1727:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:13:1727:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1727:13:1727:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1727:14:1727:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1727:14:1727:17 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1727:14:1727:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:14:1727:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:23:1727:26 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1727:23:1727:26 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1727:23:1727:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:43:1727:62 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:1727:43:1727:62 | &... | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:44:1727:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:45:1727:49 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1727:45:1727:49 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1727:45:1727:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:45:1727:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1727:55:1727:59 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1727:55:1727:59 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1727:55:1727:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1730:15:1730:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1730:15:1730:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1730:22:1730:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1730:22:1730:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1730:44:1732:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:13:1731:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1731:13:1731:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1731:13:1731:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1731:13:1731:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:13:1731:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:22:1731:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1731:22:1731:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1731:22:1731:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1731:33:1731:36 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1731:33:1731:36 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1731:33:1731:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1731:33:1731:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1731:42:1731:46 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1731:42:1731:46 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1731:42:1731:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1734:15:1734:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1734:15:1734:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1734:22:1734:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1734:22:1734:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1734:44:1736:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:13:1735:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1735:13:1735:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1735:13:1735:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1735:13:1735:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:13:1735:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:23:1735:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1735:23:1735:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1735:23:1735:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1735:34:1735:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1735:34:1735:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1735:34:1735:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1735:34:1735:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1735:44:1735:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1735:44:1735:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1735:44:1735:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1738:15:1738:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1738:15:1738:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1738:22:1738:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1738:22:1738:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1738:44:1740:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:13:1739:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1739:13:1739:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1739:13:1739:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:13:1739:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:13:1739:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:22:1739:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1739:22:1739:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1739:22:1739:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:33:1739:36 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1739:33:1739:36 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1739:33:1739:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1739:33:1739:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1739:42:1739:46 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1739:42:1739:46 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1739:42:1739:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1742:15:1742:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1742:15:1742:19 | SelfParam | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1742:22:1742:26 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1742:22:1742:26 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1742:44:1744:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:13:1743:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1743:13:1743:16 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1743:13:1743:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1743:13:1743:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:13:1743:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:23:1743:27 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1743:23:1743:27 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1743:23:1743:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1743:34:1743:37 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1743:34:1743:37 | self | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1743:34:1743:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1743:34:1743:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1743:44:1743:48 | other | | {EXTERNAL LOCATION} | & | +| main.rs:1743:44:1743:48 | other | TRef | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1743:44:1743:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1747:26:1747:26 | a | | main.rs:1747:18:1747:23 | T | +| main.rs:1747:32:1747:32 | b | | main.rs:1747:18:1747:23 | T | +| main.rs:1747:51:1749:5 | { ... } | | main.rs:1747:18:1747:23 | T::Output[Add] | +| main.rs:1748:9:1748:9 | a | | main.rs:1747:18:1747:23 | T | +| main.rs:1748:9:1748:13 | ... + ... | | main.rs:1747:18:1747:23 | T::Output[Add] | +| main.rs:1748:13:1748:13 | b | | main.rs:1747:18:1747:23 | T | +| main.rs:1751:16:1882:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1755:13:1755:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1755:22:1755:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1755:23:1755:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1755:23:1755:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1755:31:1755:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:13:1756:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1756:22:1756:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1756:23:1756:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1756:23:1756:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1756:31:1756:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1757:13:1757:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1757:22:1757:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1757:23:1757:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1757:23:1757:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1757:30:1757:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1758:13:1758:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1758:22:1758:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1758:23:1758:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1758:23:1758:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1758:31:1758:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1759:13:1759:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1759:22:1759:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1759:23:1759:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1759:23:1759:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1759:30:1759:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1760:13:1760:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1760:22:1760:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1760:23:1760:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1760:23:1760:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1760:32:1760:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:13:1763:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:23:1763:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:23:1763:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1763:31:1763:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:13:1764:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:23:1764:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:23:1764:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1764:31:1764:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:13:1765:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:23:1765:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:23:1765:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1765:31:1765:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:13:1766:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:23:1766:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:23:1766:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1766:31:1766:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:13:1767:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:23:1767:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:23:1767:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1767:31:1767:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:13:1768:25 | i64_param_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:29:1768:49 | param_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:39:1768:42 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1768:45:1768:48 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1771:17:1771:30 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1771:34:1771:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:9:1772:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1772:9:1772:31 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:1772:27:1772:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1774:17:1774:30 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1774:34:1774:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1775:9:1775:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1775:9:1775:31 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1775:27:1775:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1777:17:1777:30 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1777:34:1777:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1778:9:1778:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1778:9:1778:31 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1778:27:1778:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:17:1780:30 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1780:34:1780:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:9:1781:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1781:9:1781:31 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1781:27:1781:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1783:17:1783:30 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1783:34:1783:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:9:1784:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1784:9:1784:31 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1784:27:1784:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:13:1787:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:26:1787:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:26:1787:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1787:34:1787:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1788:13:1788:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1788:25:1788:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1788:25:1788:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1788:33:1788:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:13:1789:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:26:1789:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:26:1789:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1789:34:1789:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:13:1790:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:23:1790:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:23:1790:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1790:32:1790:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:13:1791:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:23:1791:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:23:1791:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1791:32:1791:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1794:17:1794:33 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1794:37:1794:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:9:1795:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1795:9:1795:34 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1795:30:1795:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1797:17:1797:32 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1797:36:1797:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:9:1798:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1798:9:1798:33 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1798:29:1798:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1800:17:1800:33 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1800:37:1800:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:9:1801:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1801:9:1801:34 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1801:30:1801:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1803:17:1803:30 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1803:34:1803:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:9:1804:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1804:9:1804:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1804:28:1804:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:17:1806:30 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1806:34:1806:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:9:1807:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1807:9:1807:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1807:28:1807:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1809:13:1809:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1809:23:1809:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1809:24:1809:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1810:13:1810:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1810:23:1810:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1810:24:1810:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1813:13:1813:14 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1813:18:1813:36 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1813:28:1813:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1813:34:1813:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1814:13:1814:14 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1814:18:1814:36 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1814:28:1814:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1814:34:1814:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1817:13:1817:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1817:23:1817:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1817:23:1817:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1817:29:1817:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1818:13:1818:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1818:23:1818:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1818:23:1818:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1818:29:1818:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1819:13:1819:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1819:23:1819:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1819:23:1819:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1819:28:1819:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1820:13:1820:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1820:23:1820:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1820:23:1820:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1820:29:1820:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1821:13:1821:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1821:23:1821:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1821:23:1821:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1821:28:1821:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1822:13:1822:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1822:23:1822:24 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1822:23:1822:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1822:29:1822:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1825:13:1825:20 | vec2_add | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1825:24:1825:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1825:24:1825:30 | ... + ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1825:29:1825:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1826:13:1826:20 | vec2_sub | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1826:24:1826:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1826:24:1826:30 | ... - ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1826:29:1826:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1827:13:1827:20 | vec2_mul | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1827:24:1827:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1827:24:1827:30 | ... * ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1827:29:1827:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1828:13:1828:20 | vec2_div | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1828:24:1828:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1828:24:1828:30 | ... / ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1828:29:1828:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1829:13:1829:20 | vec2_rem | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1829:24:1829:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1829:24:1829:30 | ... % ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1829:29:1829:30 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1832:17:1832:31 | vec2_add_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1832:35:1832:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1833:9:1833:23 | vec2_add_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1833:9:1833:29 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:1833:28:1833:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1835:17:1835:31 | vec2_sub_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1835:35:1835:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1836:9:1836:23 | vec2_sub_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1836:9:1836:29 | ... -= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1836:28:1836:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1838:17:1838:31 | vec2_mul_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1838:35:1838:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1839:9:1839:23 | vec2_mul_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1839:9:1839:29 | ... *= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1839:28:1839:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1841:17:1841:31 | vec2_div_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1841:35:1841:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1842:9:1842:23 | vec2_div_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1842:9:1842:29 | ... /= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1842:28:1842:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1844:17:1844:31 | vec2_rem_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1844:35:1844:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1845:9:1845:23 | vec2_rem_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1845:9:1845:29 | ... %= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1845:28:1845:29 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1848:13:1848:23 | vec2_bitand | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1848:27:1848:28 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1848:27:1848:33 | ... & ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1848:32:1848:33 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1849:13:1849:22 | vec2_bitor | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1849:26:1849:27 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1849:26:1849:32 | ... \| ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1849:31:1849:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1850:13:1850:23 | vec2_bitxor | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1850:27:1850:28 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1850:27:1850:33 | ... ^ ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1850:32:1850:33 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1851:13:1851:20 | vec2_shl | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1851:24:1851:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1851:24:1851:33 | ... << ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1851:30:1851:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1852:13:1852:20 | vec2_shr | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1852:24:1852:25 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1852:24:1852:33 | ... >> ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1852:30:1852:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1855:17:1855:34 | vec2_bitand_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1855:38:1855:39 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1856:9:1856:26 | vec2_bitand_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1856:9:1856:32 | ... &= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1856:31:1856:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1858:17:1858:33 | vec2_bitor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1858:37:1858:38 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1859:9:1859:25 | vec2_bitor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1859:9:1859:31 | ... \|= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1859:30:1859:31 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1861:17:1861:34 | vec2_bitxor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1861:38:1861:39 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1862:9:1862:26 | vec2_bitxor_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1862:9:1862:32 | ... ^= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1862:31:1862:32 | v2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1864:17:1864:31 | vec2_shl_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1864:35:1864:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1865:9:1865:23 | vec2_shl_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1865:9:1865:32 | ... <<= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1865:29:1865:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1867:17:1867:31 | vec2_shr_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1867:35:1867:36 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1868:9:1868:23 | vec2_shr_assign | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1868:9:1868:32 | ... >>= ... | | {EXTERNAL LOCATION} | () | +| main.rs:1868:29:1868:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1871:13:1871:20 | vec2_neg | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1871:24:1871:26 | - ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1871:25:1871:26 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1872:13:1872:20 | vec2_not | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1872:24:1872:26 | ! ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1872:25:1872:26 | v1 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1875:13:1875:24 | default_vec2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1875:28:1875:45 | ...::default(...) | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1876:13:1876:26 | vec2_zero_plus | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1876:30:1876:48 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1876:30:1876:63 | ... + ... | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1876:40:1876:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1876:46:1876:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1876:52:1876:63 | default_vec2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1880:13:1880:24 | default_vec2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1880:28:1880:45 | ...::default(...) | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1881:13:1881:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:1881:30:1881:48 | Vec2 {...} | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1881:30:1881:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1881:40:1881:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1881:46:1881:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1881:53:1881:64 | default_vec2 | | main.rs:1510:5:1515:5 | Vec2 | +| main.rs:1891:18:1891:21 | SelfParam | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1891:24:1891:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1894:25:1896:5 | { ... } | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1895:9:1895:10 | S1 | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1898:41:1900:5 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1898:41:1900:5 | { ... } | dyn(Output) | main.rs:1888:5:1888:14 | S1 | +| main.rs:1899:9:1899:20 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1899:9:1899:20 | { ... } | dyn(Output) | main.rs:1888:5:1888:14 | S1 | +| main.rs:1899:17:1899:18 | S1 | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1902:41:1904:5 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1902:41:1904:5 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:1903:9:1903:16 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1903:9:1903:16 | { ... } | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:1912:13:1912:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1912:13:1912:42 | SelfParam | Ptr | {EXTERNAL LOCATION} | &mut | +| main.rs:1912:13:1912:42 | SelfParam | Ptr.TRefMut | main.rs:1906:5:1906:14 | S2 | +| main.rs:1913:13:1913:15 | _cx | | {EXTERNAL LOCATION} | &mut | +| main.rs:1913:13:1913:15 | _cx | TRefMut | {EXTERNAL LOCATION} | Context | +| main.rs:1914:44:1916:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1914:44:1916:9 | { ... } | T | main.rs:1888:5:1888:14 | S1 | +| main.rs:1915:13:1915:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1915:13:1915:38 | ...::Ready(...) | T | main.rs:1888:5:1888:14 | S1 | +| main.rs:1915:36:1915:37 | S1 | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1919:41:1921:5 | { ... } | | main.rs:1906:5:1906:14 | S2 | +| main.rs:1920:9:1920:10 | S2 | | main.rs:1906:5:1906:14 | S2 | +| main.rs:1923:22:1931:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1924:9:1924:12 | f1(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1924:9:1924:12 | f1(...) | dyn(Output) | main.rs:1888:5:1888:14 | S1 | +| main.rs:1924:9:1924:18 | await ... | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1924:9:1924:22 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:1925:9:1925:12 | f2(...) | | main.rs:1898:16:1898:39 | impl ... | +| main.rs:1925:9:1925:18 | await ... | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1925:9:1925:22 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:1926:9:1926:12 | f3(...) | | main.rs:1902:16:1902:39 | impl ... | +| main.rs:1926:9:1926:18 | await ... | | {EXTERNAL LOCATION} | () | +| main.rs:1927:9:1927:12 | f4(...) | | main.rs:1919:16:1919:39 | impl ... | +| main.rs:1927:9:1927:18 | await ... | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1927:9:1927:22 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:1928:9:1928:10 | S2 | | main.rs:1906:5:1906:14 | S2 | +| main.rs:1928:9:1928:16 | await S2 | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1928:9:1928:20 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:1929:13:1929:13 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1929:13:1929:13 | b | dyn(Output) | main.rs:1888:5:1888:14 | S1 | +| main.rs:1929:17:1929:28 | { ... } | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1929:17:1929:28 | { ... } | dyn(Output) | main.rs:1888:5:1888:14 | S1 | +| main.rs:1929:25:1929:26 | S1 | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1930:9:1930:9 | b | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:1930:9:1930:9 | b | dyn(Output) | main.rs:1888:5:1888:14 | S1 | +| main.rs:1930:9:1930:15 | await b | | main.rs:1888:5:1888:14 | S1 | +| main.rs:1930:9:1930:19 | ... .f() | | {EXTERNAL LOCATION} | () | +| main.rs:1941:15:1941:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1941:15:1941:19 | SelfParam | TRef | main.rs:1940:5:1942:5 | Self [trait Trait1] | +| main.rs:1941:22:1941:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1945:15:1945:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1945:15:1945:19 | SelfParam | TRef | main.rs:1944:5:1946:5 | Self [trait Trait2] | +| main.rs:1945:22:1945:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1949:15:1949:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1949:15:1949:19 | SelfParam | TRef | main.rs:1935:5:1936:14 | S1 | +| main.rs:1949:22:1949:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1953:15:1953:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1953:15:1953:19 | SelfParam | TRef | main.rs:1935:5:1936:14 | S1 | +| main.rs:1953:22:1953:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:1956:37:1958:5 | { ... } | | main.rs:1935:5:1936:14 | S1 | +| main.rs:1957:9:1957:10 | S1 | | main.rs:1935:5:1936:14 | S1 | +| main.rs:1961:18:1961:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1961:18:1961:22 | SelfParam | TRef | main.rs:1960:5:1962:5 | Self [trait MyTrait] | +| main.rs:1965:18:1965:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1965:18:1965:22 | SelfParam | TRef | main.rs:1935:5:1936:14 | S1 | +| main.rs:1965:31:1967:9 | { ... } | | main.rs:1937:5:1937:14 | S2 | +| main.rs:1966:13:1966:14 | S2 | | main.rs:1937:5:1937:14 | S2 | +| main.rs:1971:18:1971:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:1971:18:1971:22 | SelfParam | TRef | main.rs:1938:5:1938:22 | S3 | +| main.rs:1971:18:1971:22 | SelfParam | TRef.T3 | main.rs:1970:10:1970:17 | T | +| main.rs:1971:30:1974:9 | { ... } | | main.rs:1970:10:1970:17 | T | +| main.rs:1972:17:1972:21 | S3(...) | | {EXTERNAL LOCATION} | & | +| main.rs:1972:17:1972:21 | S3(...) | | main.rs:1938:5:1938:22 | S3 | +| main.rs:1972:17:1972:21 | S3(...) | TRef | main.rs:1938:5:1938:22 | S3 | +| main.rs:1972:17:1972:21 | S3(...) | TRef.T3 | main.rs:1970:10:1970:17 | T | +| main.rs:1972:25:1972:28 | self | | {EXTERNAL LOCATION} | & | +| main.rs:1972:25:1972:28 | self | TRef | main.rs:1938:5:1938:22 | S3 | +| main.rs:1972:25:1972:28 | self | TRef.T3 | main.rs:1970:10:1970:17 | T | +| main.rs:1973:13:1973:21 | t.clone() | | main.rs:1970:10:1970:17 | T | +| main.rs:1977:45:1979:5 | { ... } | | main.rs:1935:5:1936:14 | S1 | +| main.rs:1978:9:1978:10 | S1 | | main.rs:1935:5:1936:14 | S1 | +| main.rs:1981:41:1981:41 | t | | main.rs:1981:26:1981:38 | B | +| main.rs:1981:52:1983:5 | { ... } | | main.rs:1981:23:1981:23 | A | +| main.rs:1982:9:1982:9 | t | | main.rs:1981:26:1981:38 | B | +| main.rs:1982:9:1982:17 | t.get_a() | | main.rs:1981:23:1981:23 | A | +| main.rs:1985:34:1985:34 | x | | main.rs:1985:24:1985:31 | T | +| main.rs:1985:59:1987:5 | { ... } | | main.rs:1985:43:1985:57 | impl ... | +| main.rs:1985:59:1987:5 | { ... } | impl(T) | main.rs:1985:24:1985:31 | T | +| main.rs:1986:9:1986:13 | S3(...) | | main.rs:1938:5:1938:22 | S3 | +| main.rs:1986:9:1986:13 | S3(...) | | main.rs:1985:43:1985:57 | impl ... | +| main.rs:1986:9:1986:13 | S3(...) | T3 | main.rs:1985:24:1985:31 | T | +| main.rs:1986:9:1986:13 | S3(...) | impl(T) | main.rs:1985:24:1985:31 | T | +| main.rs:1986:12:1986:12 | x | | main.rs:1985:24:1985:31 | T | +| main.rs:1989:34:1989:34 | x | | main.rs:1989:24:1989:31 | T | +| main.rs:1989:67:1991:5 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1989:67:1991:5 | { ... } | T | main.rs:1989:50:1989:64 | impl ... | +| main.rs:1989:67:1991:5 | { ... } | T.impl(T) | main.rs:1989:24:1989:31 | T | +| main.rs:1990:9:1990:19 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1990:9:1990:19 | Some(...) | T | main.rs:1938:5:1938:22 | S3 | +| main.rs:1990:9:1990:19 | Some(...) | T | main.rs:1989:50:1989:64 | impl ... | +| main.rs:1990:9:1990:19 | Some(...) | T.T3 | main.rs:1989:24:1989:31 | T | +| main.rs:1990:9:1990:19 | Some(...) | T.impl(T) | main.rs:1989:24:1989:31 | T | +| main.rs:1990:14:1990:18 | S3(...) | | main.rs:1938:5:1938:22 | S3 | +| main.rs:1990:14:1990:18 | S3(...) | T3 | main.rs:1989:24:1989:31 | T | +| main.rs:1990:17:1990:17 | x | | main.rs:1989:24:1989:31 | T | +| main.rs:1993:34:1993:34 | x | | main.rs:1993:24:1993:31 | T | +| main.rs:1993:78:1995:5 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1993:78:1995:5 | { ... } | T0 | main.rs:1993:44:1993:58 | impl ... | +| main.rs:1993:78:1995:5 | { ... } | T0.impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1993:78:1995:5 | { ... } | T1 | main.rs:1993:61:1993:75 | impl ... | +| main.rs:1993:78:1995:5 | { ... } | T1.impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1994:9:1994:30 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:1994:9:1994:30 | TupleExpr | T0 | main.rs:1938:5:1938:22 | S3 | +| main.rs:1994:9:1994:30 | TupleExpr | T0 | main.rs:1993:44:1993:58 | impl ... | +| main.rs:1994:9:1994:30 | TupleExpr | T0.T3 | main.rs:1993:24:1993:31 | T | +| main.rs:1994:9:1994:30 | TupleExpr | T0.impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1994:9:1994:30 | TupleExpr | T1 | main.rs:1938:5:1938:22 | S3 | +| main.rs:1994:9:1994:30 | TupleExpr | T1 | main.rs:1993:61:1993:75 | impl ... | +| main.rs:1994:9:1994:30 | TupleExpr | T1.T3 | main.rs:1993:24:1993:31 | T | +| main.rs:1994:9:1994:30 | TupleExpr | T1.impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1994:10:1994:22 | S3(...) | | main.rs:1938:5:1938:22 | S3 | +| main.rs:1994:10:1994:22 | S3(...) | | main.rs:1993:44:1993:58 | impl ... | +| main.rs:1994:10:1994:22 | S3(...) | T3 | main.rs:1993:24:1993:31 | T | +| main.rs:1994:10:1994:22 | S3(...) | impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1994:13:1994:13 | x | | main.rs:1993:24:1993:31 | T | +| main.rs:1994:13:1994:21 | x.clone() | | main.rs:1993:24:1993:31 | T | +| main.rs:1994:25:1994:29 | S3(...) | | main.rs:1938:5:1938:22 | S3 | +| main.rs:1994:25:1994:29 | S3(...) | | main.rs:1993:61:1993:75 | impl ... | +| main.rs:1994:25:1994:29 | S3(...) | T3 | main.rs:1993:24:1993:31 | T | +| main.rs:1994:25:1994:29 | S3(...) | impl(T) | main.rs:1993:24:1993:31 | T | +| main.rs:1994:28:1994:28 | x | | main.rs:1993:24:1993:31 | T | +| main.rs:1997:26:1997:26 | t | | main.rs:1997:29:1997:43 | impl ... | +| main.rs:1997:51:1999:5 | { ... } | | main.rs:1997:23:1997:23 | A | +| main.rs:1998:9:1998:9 | t | | main.rs:1997:29:1997:43 | impl ... | +| main.rs:1998:9:1998:17 | t.get_a() | | main.rs:1997:23:1997:23 | A | +| main.rs:2001:16:2015:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2002:13:2002:13 | x | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2002:17:2002:20 | f1(...) | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2003:9:2003:9 | x | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2003:9:2003:14 | x.f1() | | {EXTERNAL LOCATION} | () | +| main.rs:2004:9:2004:9 | x | | main.rs:1956:16:1956:35 | impl ... + ... | +| main.rs:2004:9:2004:14 | x.f2() | | {EXTERNAL LOCATION} | () | +| main.rs:2005:13:2005:13 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2005:17:2005:32 | get_a_my_trait(...) | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2006:13:2006:13 | b | | main.rs:1937:5:1937:14 | S2 | +| main.rs:2006:17:2006:33 | uses_my_trait1(...) | | main.rs:1937:5:1937:14 | S2 | +| main.rs:2006:32:2006:32 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2007:13:2007:13 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2007:17:2007:32 | get_a_my_trait(...) | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2008:13:2008:13 | c | | main.rs:1937:5:1937:14 | S2 | +| main.rs:2008:17:2008:33 | uses_my_trait2(...) | | main.rs:1937:5:1937:14 | S2 | +| main.rs:2008:32:2008:32 | a | | main.rs:1977:28:1977:43 | impl ... | +| main.rs:2009:13:2009:13 | d | | main.rs:1937:5:1937:14 | S2 | +| main.rs:2009:17:2009:34 | uses_my_trait2(...) | | main.rs:1937:5:1937:14 | S2 | +| main.rs:2009:32:2009:33 | S1 | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2010:13:2010:13 | e | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2010:17:2010:35 | get_a_my_trait2(...) | | main.rs:1985:43:1985:57 | impl ... | +| main.rs:2010:17:2010:35 | get_a_my_trait2(...) | impl(T) | main.rs:1935:5:1936:14 | S1 | +| main.rs:2010:17:2010:43 | ... .get_a() | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2010:33:2010:34 | S1 | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2013:13:2013:13 | f | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2013:17:2013:35 | get_a_my_trait3(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2013:17:2013:35 | get_a_my_trait3(...) | T | main.rs:1989:50:1989:64 | impl ... | +| main.rs:2013:17:2013:35 | get_a_my_trait3(...) | T.impl(T) | main.rs:1935:5:1936:14 | S1 | +| main.rs:2013:17:2013:44 | ... .unwrap() | | main.rs:1989:50:1989:64 | impl ... | +| main.rs:2013:17:2013:44 | ... .unwrap() | impl(T) | main.rs:1935:5:1936:14 | S1 | +| main.rs:2013:17:2013:52 | ... .get_a() | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2013:33:2013:34 | S1 | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2014:13:2014:13 | g | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T0 | main.rs:1993:44:1993:58 | impl ... | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T0.impl(T) | main.rs:1935:5:1936:14 | S1 | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T1 | main.rs:1993:61:1993:75 | impl ... | +| main.rs:2014:17:2014:35 | get_a_my_trait4(...) | T1.impl(T) | main.rs:1935:5:1936:14 | S1 | +| main.rs:2014:17:2014:37 | ... .0 | | main.rs:1993:44:1993:58 | impl ... | +| main.rs:2014:17:2014:37 | ... .0 | impl(T) | main.rs:1935:5:1936:14 | S1 | +| main.rs:2014:17:2014:45 | ... .get_a() | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2014:33:2014:34 | S1 | | main.rs:1935:5:1936:14 | S1 | +| main.rs:2025:16:2025:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2025:16:2025:20 | SelfParam | TRef | main.rs:2021:5:2022:13 | S | +| main.rs:2025:31:2027:9 | { ... } | | main.rs:2021:5:2022:13 | S | +| main.rs:2026:13:2026:13 | S | | main.rs:2021:5:2022:13 | S | +| main.rs:2036:26:2038:9 | { ... } | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2036:26:2038:9 | { ... } | T | main.rs:2035:10:2035:10 | T | +| main.rs:2037:13:2037:38 | MyVec {...} | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2037:13:2037:38 | MyVec {...} | T | main.rs:2035:10:2035:10 | T | +| main.rs:2037:27:2037:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2037:27:2037:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2037:27:2037:36 | ...::new(...) | T | main.rs:2035:10:2035:10 | T | +| main.rs:2040:17:2040:25 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| main.rs:2040:17:2040:25 | SelfParam | TRefMut | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2040:17:2040:25 | SelfParam | TRefMut.T | main.rs:2035:10:2035:10 | T | +| main.rs:2040:28:2040:32 | value | | main.rs:2035:10:2035:10 | T | +| main.rs:2040:38:2042:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2041:13:2041:16 | self | | {EXTERNAL LOCATION} | &mut | +| main.rs:2041:13:2041:16 | self | TRefMut | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2041:13:2041:16 | self | TRefMut.T | main.rs:2035:10:2035:10 | T | +| main.rs:2041:13:2041:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2041:13:2041:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2041:13:2041:21 | self.data | T | main.rs:2035:10:2035:10 | T | +| main.rs:2041:13:2041:33 | ... .push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2041:28:2041:32 | value | | main.rs:2035:10:2035:10 | T | +| main.rs:2049:18:2049:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2049:18:2049:22 | SelfParam | TRef | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2049:18:2049:22 | SelfParam | TRef.T | main.rs:2045:10:2045:10 | T | +| main.rs:2049:25:2049:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2049:56:2051:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2049:56:2051:9 | { ... } | TRef | main.rs:2045:10:2045:10 | T | +| main.rs:2050:13:2050:29 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2050:13:2050:29 | &... | TRef | main.rs:2045:10:2045:10 | T | +| main.rs:2050:14:2050:17 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2050:14:2050:17 | self | TRef | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2050:14:2050:17 | self | TRef.T | main.rs:2045:10:2045:10 | T | +| main.rs:2050:14:2050:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:2050:14:2050:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:2050:14:2050:22 | self.data | T | main.rs:2045:10:2045:10 | T | +| main.rs:2050:14:2050:29 | ...[index] | | main.rs:2045:10:2045:10 | T | +| main.rs:2050:24:2050:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:2054:22:2054:26 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2054:22:2054:26 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2054:22:2054:26 | slice | TRef.TSlice | main.rs:2021:5:2022:13 | S | +| main.rs:2054:35:2056:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2055:13:2055:13 | x | | main.rs:2021:5:2022:13 | S | +| main.rs:2055:17:2055:21 | slice | | {EXTERNAL LOCATION} | & | +| main.rs:2055:17:2055:21 | slice | TRef | {EXTERNAL LOCATION} | [] | +| main.rs:2055:17:2055:21 | slice | TRef.TSlice | main.rs:2021:5:2022:13 | S | +| main.rs:2055:17:2055:24 | slice[0] | | main.rs:2021:5:2022:13 | S | +| main.rs:2055:17:2055:30 | ... .foo() | | main.rs:2021:5:2022:13 | S | +| main.rs:2055:23:2055:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2058:37:2058:37 | a | | main.rs:2058:20:2058:34 | T | +| main.rs:2058:43:2058:43 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2061:5:2063:5 | { ... } | | main.rs:2058:20:2058:34 | T::Output[Index] | +| main.rs:2062:9:2062:9 | a | | main.rs:2058:20:2058:34 | T | +| main.rs:2062:9:2062:12 | a[b] | | main.rs:2058:20:2058:34 | T::Output[Index] | +| main.rs:2062:11:2062:11 | b | | {EXTERNAL LOCATION} | usize | +| main.rs:2065:16:2076:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2066:17:2066:19 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2066:17:2066:19 | vec | T | main.rs:2021:5:2022:13 | S | +| main.rs:2066:23:2066:34 | ...::new(...) | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2066:23:2066:34 | ...::new(...) | T | main.rs:2021:5:2022:13 | S | +| main.rs:2067:9:2067:11 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2067:9:2067:11 | vec | T | main.rs:2021:5:2022:13 | S | +| main.rs:2067:9:2067:19 | vec.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2067:18:2067:18 | S | | main.rs:2021:5:2022:13 | S | +| main.rs:2068:9:2068:11 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2068:9:2068:11 | vec | T | main.rs:2021:5:2022:13 | S | +| main.rs:2068:9:2068:14 | vec[0] | | main.rs:2021:5:2022:13 | S | +| main.rs:2068:9:2068:20 | ... .foo() | | main.rs:2021:5:2022:13 | S | +| main.rs:2068:13:2068:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2070:13:2070:14 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2070:13:2070:14 | xs | TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2070:21:2070:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2070:26:2070:28 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2070:26:2070:28 | [...] | TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2070:27:2070:27 | S | | main.rs:2021:5:2022:13 | S | +| main.rs:2071:13:2071:13 | x | | main.rs:2021:5:2022:13 | S | +| main.rs:2071:17:2071:18 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2071:17:2071:18 | xs | TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2071:17:2071:21 | xs[0] | | main.rs:2021:5:2022:13 | S | +| main.rs:2071:17:2071:27 | ... .foo() | | main.rs:2021:5:2022:13 | S | +| main.rs:2071:20:2071:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2073:13:2073:13 | y | | main.rs:2021:5:2022:13 | S | +| main.rs:2073:17:2073:35 | param_index(...) | | main.rs:2021:5:2022:13 | S | +| main.rs:2073:29:2073:31 | vec | | main.rs:2030:5:2033:5 | MyVec | +| main.rs:2073:29:2073:31 | vec | T | main.rs:2021:5:2022:13 | S | +| main.rs:2073:34:2073:34 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2075:9:2075:26 | analyze_slice(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2075:23:2075:25 | &xs | | {EXTERNAL LOCATION} | & | +| main.rs:2075:23:2075:25 | &xs | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2075:23:2075:25 | &xs | TRef.TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2075:24:2075:25 | xs | | {EXTERNAL LOCATION} | [;] | +| main.rs:2075:24:2075:25 | xs | TArray | main.rs:2021:5:2022:13 | S | +| main.rs:2080:16:2082:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2081:13:2081:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:2081:17:2081:46 | MacroExpr | | {EXTERNAL LOCATION} | String | +| main.rs:2081:25:2081:35 | "Hello, {}" | | {EXTERNAL LOCATION} | & | +| main.rs:2081:25:2081:35 | "Hello, {}" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2081:25:2081:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2081:25:2081:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2081:25:2081:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:2081:38:2081:45 | "World!" | | {EXTERNAL LOCATION} | & | +| main.rs:2081:38:2081:45 | "World!" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2090:19:2090:22 | SelfParam | | main.rs:2086:5:2091:5 | Self [trait MyAdd] | +| main.rs:2090:25:2090:27 | rhs | | main.rs:2086:17:2086:26 | Rhs | +| main.rs:2097:19:2097:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:25:2097:29 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2097:45:2099:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2098:13:2098:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2106:19:2106:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2106:25:2106:29 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2106:25:2106:29 | value | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2106:46:2108:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:13:2107:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2107:14:2107:18 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2107:14:2107:18 | value | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2115:19:2115:22 | SelfParam | | {EXTERNAL LOCATION} | i64 | +| main.rs:2115:25:2115:29 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2115:46:2121:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2116:13:2120:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2116:13:2120:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2116:16:2116:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2116:22:2118:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2116:22:2118:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2117:17:2117:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2117:17:2117:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2118:20:2120:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2118:20:2120:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2119:17:2119:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2119:17:2119:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2130:19:2130:22 | SelfParam | | main.rs:2124:5:2124:19 | S | +| main.rs:2130:19:2130:22 | SelfParam | T | main.rs:2126:10:2126:17 | T | +| main.rs:2130:25:2130:29 | other | | main.rs:2124:5:2124:19 | S | +| main.rs:2130:25:2130:29 | other | T | main.rs:2126:10:2126:17 | T | +| main.rs:2130:54:2132:9 | { ... } | | main.rs:2124:5:2124:19 | S | +| main.rs:2130:54:2132:9 | { ... } | T | main.rs:2126:10:2126:17 | T::Output[MyAdd] | +| main.rs:2131:13:2131:39 | S(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2131:13:2131:39 | S(...) | T | main.rs:2126:10:2126:17 | T::Output[MyAdd] | +| main.rs:2131:15:2131:22 | (...) | | main.rs:2126:10:2126:17 | T | +| main.rs:2131:15:2131:38 | ... .my_add(...) | | main.rs:2126:10:2126:17 | T::Output[MyAdd] | +| main.rs:2131:16:2131:19 | self | | main.rs:2124:5:2124:19 | S | +| main.rs:2131:16:2131:19 | self | T | main.rs:2126:10:2126:17 | T | +| main.rs:2131:16:2131:21 | self.0 | | main.rs:2126:10:2126:17 | T | +| main.rs:2131:31:2131:35 | other | | main.rs:2124:5:2124:19 | S | +| main.rs:2131:31:2131:35 | other | T | main.rs:2126:10:2126:17 | T | +| main.rs:2131:31:2131:37 | other.0 | | main.rs:2126:10:2126:17 | T | +| main.rs:2139:19:2139:22 | SelfParam | | main.rs:2124:5:2124:19 | S | +| main.rs:2139:19:2139:22 | SelfParam | T | main.rs:2135:10:2135:17 | T | +| main.rs:2139:25:2139:29 | other | | main.rs:2135:10:2135:17 | T | +| main.rs:2139:51:2141:9 | { ... } | | main.rs:2124:5:2124:19 | S | +| main.rs:2139:51:2141:9 | { ... } | T | main.rs:2135:10:2135:17 | T::Output[MyAdd] | +| main.rs:2140:13:2140:37 | S(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2140:13:2140:37 | S(...) | T | main.rs:2135:10:2135:17 | T::Output[MyAdd] | +| main.rs:2140:15:2140:22 | (...) | | main.rs:2135:10:2135:17 | T | +| main.rs:2140:15:2140:36 | ... .my_add(...) | | main.rs:2135:10:2135:17 | T::Output[MyAdd] | +| main.rs:2140:16:2140:19 | self | | main.rs:2124:5:2124:19 | S | +| main.rs:2140:16:2140:19 | self | T | main.rs:2135:10:2135:17 | T | +| main.rs:2140:16:2140:21 | self.0 | | main.rs:2135:10:2135:17 | T | +| main.rs:2140:31:2140:35 | other | | main.rs:2135:10:2135:17 | T | +| main.rs:2151:19:2151:22 | SelfParam | | main.rs:2124:5:2124:19 | S | +| main.rs:2151:19:2151:22 | SelfParam | T | main.rs:2144:14:2144:14 | T | +| main.rs:2151:25:2151:29 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2151:25:2151:29 | other | TRef | main.rs:2144:14:2144:14 | T | +| main.rs:2151:55:2153:9 | { ... } | | main.rs:2124:5:2124:19 | S | +| main.rs:2151:55:2153:9 | { ... } | T | main.rs:2144:14:2144:14 | T::Output[MyAdd] | +| main.rs:2152:13:2152:37 | S(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2152:13:2152:37 | S(...) | T | main.rs:2144:14:2144:14 | T::Output[MyAdd] | +| main.rs:2152:15:2152:22 | (...) | | main.rs:2144:14:2144:14 | T | +| main.rs:2152:15:2152:36 | ... .my_add(...) | | main.rs:2144:14:2144:14 | T::Output[MyAdd] | +| main.rs:2152:16:2152:19 | self | | main.rs:2124:5:2124:19 | S | +| main.rs:2152:16:2152:19 | self | T | main.rs:2144:14:2144:14 | T | +| main.rs:2152:16:2152:21 | self.0 | | main.rs:2144:14:2144:14 | T | +| main.rs:2152:31:2152:35 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2152:31:2152:35 | other | TRef | main.rs:2144:14:2144:14 | T | +| main.rs:2158:20:2158:24 | value | | main.rs:2156:18:2156:18 | T | +| main.rs:2163:20:2163:24 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2163:40:2165:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2164:13:2164:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2170:20:2170:24 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2170:41:2176:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2171:13:2175:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2171:13:2175:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:2171:16:2171:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2171:22:2173:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2171:22:2173:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2172:17:2172:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2172:17:2172:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2173:20:2175:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2173:20:2175:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2174:17:2174:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2174:17:2174:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2181:21:2181:25 | value | | main.rs:2179:19:2179:19 | T | +| main.rs:2181:31:2181:31 | x | | main.rs:2179:5:2182:5 | Self [trait MyFrom2] | +| main.rs:2186:21:2186:25 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2186:33:2186:33 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2186:48:2188:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2187:13:2187:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:2193:21:2193:25 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2193:34:2193:34 | _ | | {EXTERNAL LOCATION} | i64 | +| main.rs:2193:49:2199:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2194:13:2198:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:2194:16:2194:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:2194:22:2196:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2195:17:2195:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2196:20:2198:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2197:17:2197:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2204:15:2204:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | +| main.rs:2207:15:2207:15 | x | | main.rs:2202:5:2208:5 | Self [trait MySelfTrait] | +| main.rs:2212:15:2212:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2212:31:2214:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2213:13:2213:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2213:13:2213:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2213:17:2213:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2217:15:2217:15 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2217:32:2219:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:2218:13:2218:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2218:22:2218:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2218:22:2218:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2219:9:2219:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2219:9:2219:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2219:18:2219:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2220:9:2220:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2220:9:2220:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2220:18:2220:22 | &5i64 | | {EXTERNAL LOCATION} | & | -| main.rs:2220:18:2220:22 | &5i64 | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:2220:19:2220:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2221:9:2221:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2221:9:2221:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2221:18:2221:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2223:9:2223:15 | S(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2223:9:2223:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2223:9:2223:31 | ... .my_add(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2223:9:2223:31 | ... .my_add(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2223:9:2223:31 | ... .my_add(...) | T | main.rs:2107:5:2107:19 | S | -| main.rs:2223:9:2223:31 | ... .my_add(...) | T.T | main.rs:2109:10:2109:17 | T::Output[MyAdd] | -| main.rs:2223:9:2223:31 | ... .my_add(...) | T.T | main.rs:2118:10:2118:17 | T::Output[MyAdd] | -| main.rs:2223:9:2223:31 | ... .my_add(...) | T.T | main.rs:2127:14:2127:14 | T::Output[MyAdd] | -| main.rs:2223:11:2223:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2223:24:2223:30 | S(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2223:24:2223:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2223:26:2223:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2224:9:2224:15 | S(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2224:9:2224:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2224:9:2224:28 | ... .my_add(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2224:9:2224:28 | ... .my_add(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2224:11:2224:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2224:24:2224:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2225:9:2225:15 | S(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2225:9:2225:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2225:9:2225:29 | ... .my_add(...) | | main.rs:2107:5:2107:19 | S | -| main.rs:2225:9:2225:29 | ... .my_add(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2225:11:2225:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2225:24:2225:28 | &3i64 | | {EXTERNAL LOCATION} | & | -| main.rs:2225:24:2225:28 | &3i64 | TRef | {EXTERNAL LOCATION} | i64 | -| main.rs:2225:25:2225:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:13:2227:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:17:2227:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2227:30:2227:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2228:13:2228:13 | y | | {EXTERNAL LOCATION} | i64 | -| main.rs:2228:17:2228:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2228:30:2228:33 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2229:13:2229:13 | z | | {EXTERNAL LOCATION} | i64 | -| main.rs:2229:22:2229:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2229:38:2229:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2230:9:2230:34 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2230:23:2230:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2230:30:2230:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2231:9:2231:33 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2231:23:2231:26 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2231:29:2231:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2232:9:2232:38 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2232:27:2232:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2232:34:2232:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2234:9:2234:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2234:17:2234:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2235:9:2235:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2235:17:2235:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2236:9:2236:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2236:18:2236:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2237:9:2237:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2237:18:2237:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2238:9:2238:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2238:25:2238:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2239:9:2239:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2239:25:2239:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2240:9:2240:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2240:25:2240:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2241:9:2241:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2241:25:2241:28 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2249:26:2251:9 | { ... } | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2250:13:2250:25 | MyCallable {...} | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2253:17:2253:21 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2253:17:2253:21 | SelfParam | TRef | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2253:31:2255:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2254:13:2254:13 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2254:13:2254:13 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2258:16:2365:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2261:9:2261:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2261:13:2261:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2261:18:2261:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2261:18:2261:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2261:19:2261:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2261:22:2261:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2261:25:2261:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2261:28:2261:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2262:9:2262:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2262:13:2262:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:18:2262:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2262:18:2262:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:18:2262:41 | ... .map(...) | | {EXTERNAL LOCATION} | [;] | -| main.rs:2262:18:2262:41 | ... .map(...) | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:19:2262:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:22:2262:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:25:2262:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:32:2262:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | -| main.rs:2262:32:2262:40 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| main.rs:2262:32:2262:40 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:32:2262:40 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:33:2262:33 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:36:2262:36 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:36:2262:40 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:40:2262:40 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2262:43:2262:44 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2263:9:2263:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2263:13:2263:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2263:18:2263:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2263:18:2263:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2263:18:2263:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | -| main.rs:2263:18:2263:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2263:19:2263:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2263:22:2263:22 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2263:25:2263:25 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2263:40:2263:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2265:13:2265:17 | vals1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2265:13:2265:17 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2265:13:2265:17 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | -| main.rs:2265:21:2265:31 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2265:21:2265:31 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2265:21:2265:31 | [...] | TArray | {EXTERNAL LOCATION} | u8 | -| main.rs:2265:22:2265:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2265:27:2265:27 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2265:27:2265:27 | 2 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2265:30:2265:30 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2265:30:2265:30 | 3 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2266:9:2266:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2266:13:2266:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2266:13:2266:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2266:18:2266:22 | vals1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2266:18:2266:22 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2266:18:2266:22 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | -| main.rs:2266:24:2266:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2268:13:2268:17 | vals2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2268:13:2268:17 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | -| main.rs:2268:21:2268:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2268:21:2268:29 | [1u16; 3] | TArray | {EXTERNAL LOCATION} | u16 | -| main.rs:2268:22:2268:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2268:28:2268:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2269:9:2269:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2269:13:2269:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2269:18:2269:22 | vals2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2269:18:2269:22 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | -| main.rs:2269:24:2269:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2271:13:2271:17 | vals3 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2271:13:2271:17 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | -| main.rs:2271:26:2271:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2271:31:2271:39 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2271:31:2271:39 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2271:31:2271:39 | [...] | TArray | {EXTERNAL LOCATION} | u32 | -| main.rs:2271:32:2271:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2271:32:2271:32 | 1 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2271:35:2271:35 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2271:35:2271:35 | 2 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2271:38:2271:38 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2271:38:2271:38 | 3 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2272:9:2272:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2272:13:2272:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2272:18:2272:22 | vals3 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2272:18:2272:22 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | -| main.rs:2272:24:2272:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2274:13:2274:17 | vals4 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2274:13:2274:17 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | -| main.rs:2274:26:2274:26 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2274:31:2274:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2274:31:2274:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2274:31:2274:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | u64 | -| main.rs:2274:32:2274:32 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2274:32:2274:32 | 1 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2274:35:2274:35 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2275:9:2275:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2275:13:2275:13 | u | | {EXTERNAL LOCATION} | u64 | -| main.rs:2275:18:2275:22 | vals4 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2275:18:2275:22 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | -| main.rs:2275:24:2275:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2277:17:2277:24 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2277:17:2277:24 | strings1 | TArray | {EXTERNAL LOCATION} | & | -| main.rs:2277:17:2277:24 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2277:28:2277:48 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2277:28:2277:48 | [...] | TArray | {EXTERNAL LOCATION} | & | -| main.rs:2277:28:2277:48 | [...] | TArray.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2277:29:2277:33 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2277:29:2277:33 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2277:36:2277:40 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2277:36:2277:40 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2277:43:2277:47 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2277:43:2277:47 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2218:13:2218:17 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:2218:17:2218:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2224:15:2224:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2224:31:2226:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2225:13:2225:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2225:13:2225:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2229:15:2229:15 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2229:32:2231:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2230:13:2230:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:2234:16:2259:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2235:13:2235:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2235:22:2235:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2235:22:2235:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2236:9:2236:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2236:9:2236:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2236:18:2236:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2237:9:2237:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2237:9:2237:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2237:18:2237:22 | &5i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2237:18:2237:22 | &5i64 | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2237:19:2237:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2238:9:2238:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2238:9:2238:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2238:18:2238:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2240:9:2240:15 | S(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2240:9:2240:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2240:9:2240:31 | ... .my_add(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2240:9:2240:31 | ... .my_add(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2240:9:2240:31 | ... .my_add(...) | T | main.rs:2124:5:2124:19 | S | +| main.rs:2240:9:2240:31 | ... .my_add(...) | T.T | main.rs:2126:10:2126:17 | T::Output[MyAdd] | +| main.rs:2240:9:2240:31 | ... .my_add(...) | T.T | main.rs:2135:10:2135:17 | T::Output[MyAdd] | +| main.rs:2240:9:2240:31 | ... .my_add(...) | T.T | main.rs:2144:14:2144:14 | T::Output[MyAdd] | +| main.rs:2240:11:2240:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2240:24:2240:30 | S(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2240:24:2240:30 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2240:26:2240:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2241:9:2241:15 | S(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2241:9:2241:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2241:9:2241:28 | ... .my_add(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2241:9:2241:28 | ... .my_add(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2241:11:2241:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2241:24:2241:27 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:9:2242:15 | S(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2242:9:2242:15 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:9:2242:29 | ... .my_add(...) | | main.rs:2124:5:2124:19 | S | +| main.rs:2242:9:2242:29 | ... .my_add(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:11:2242:14 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:24:2242:28 | &3i64 | | {EXTERNAL LOCATION} | & | +| main.rs:2242:24:2242:28 | &3i64 | TRef | {EXTERNAL LOCATION} | i64 | +| main.rs:2242:25:2242:28 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2244:13:2244:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:2244:17:2244:35 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2244:30:2244:34 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2245:13:2245:13 | y | | {EXTERNAL LOCATION} | i64 | +| main.rs:2245:17:2245:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2245:30:2245:33 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2246:13:2246:13 | z | | {EXTERNAL LOCATION} | i64 | +| main.rs:2246:22:2246:43 | ...::my_from(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2246:38:2246:42 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2247:9:2247:34 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2247:23:2247:27 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2247:30:2247:33 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2248:9:2248:33 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2248:23:2248:26 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2248:29:2248:32 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2249:9:2249:38 | ...::my_from2(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2249:27:2249:31 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2249:34:2249:37 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2251:9:2251:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2251:17:2251:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2252:9:2252:22 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2252:17:2252:21 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2253:9:2253:22 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2253:18:2253:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2254:9:2254:22 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2254:18:2254:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2255:9:2255:30 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2255:25:2255:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2256:9:2256:30 | ...::f2(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2256:25:2256:29 | 73i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2257:9:2257:29 | ...::f1(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2257:25:2257:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2258:9:2258:29 | ...::f2(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2258:25:2258:28 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2266:26:2268:9 | { ... } | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2267:13:2267:25 | MyCallable {...} | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2270:17:2270:21 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2270:17:2270:21 | SelfParam | TRef | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2270:31:2272:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2271:13:2271:13 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2271:13:2271:13 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2275:16:2382:5 | { ... } | | {EXTERNAL LOCATION} | () | | main.rs:2278:9:2278:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2278:13:2278:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:2278:13:2278:13 | s | TRef | {EXTERNAL LOCATION} | & | -| main.rs:2278:13:2278:13 | s | TRef.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2278:18:2278:26 | &strings1 | | {EXTERNAL LOCATION} | & | -| main.rs:2278:18:2278:26 | &strings1 | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:2278:18:2278:26 | &strings1 | TRef.TArray | {EXTERNAL LOCATION} | & | -| main.rs:2278:18:2278:26 | &strings1 | TRef.TArray.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2278:19:2278:26 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2278:19:2278:26 | strings1 | TArray | {EXTERNAL LOCATION} | & | -| main.rs:2278:19:2278:26 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2278:13:2278:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2278:18:2278:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2278:18:2278:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2278:19:2278:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2278:22:2278:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2278:25:2278:25 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:2278:28:2278:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2279:9:2279:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2279:13:2279:13 | s | | {EXTERNAL LOCATION} | I::Item[Iterator] | -| main.rs:2279:13:2279:13 | s | | {EXTERNAL LOCATION} | &mut | -| main.rs:2279:13:2279:13 | s | TRefMut | {EXTERNAL LOCATION} | & | -| main.rs:2279:13:2279:13 | s | TRefMut.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2279:18:2279:30 | &mut strings1 | | {EXTERNAL LOCATION} | &mut | -| main.rs:2279:18:2279:30 | &mut strings1 | TRefMut | {EXTERNAL LOCATION} | [;] | -| main.rs:2279:18:2279:30 | &mut strings1 | TRefMut.TArray | {EXTERNAL LOCATION} | & | -| main.rs:2279:18:2279:30 | &mut strings1 | TRefMut.TArray.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2279:23:2279:30 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2279:23:2279:30 | strings1 | TArray | {EXTERNAL LOCATION} | & | -| main.rs:2279:23:2279:30 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2279:32:2279:33 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2280:9:2280:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2280:13:2280:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:2280:13:2280:13 | s | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2280:18:2280:25 | strings1 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2280:18:2280:25 | strings1 | TArray | {EXTERNAL LOCATION} | & | -| main.rs:2280:18:2280:25 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2280:27:2280:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2282:13:2282:20 | strings2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2282:13:2282:20 | strings2 | TArray | {EXTERNAL LOCATION} | String | -| main.rs:2283:9:2287:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2283:9:2287:9 | [...] | TArray | {EXTERNAL LOCATION} | String | -| main.rs:2284:13:2284:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2284:26:2284:30 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2284:26:2284:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2285:13:2285:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2285:26:2285:30 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2285:26:2285:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2286:13:2286:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2286:26:2286:30 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2286:26:2286:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2288:9:2288:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2288:13:2288:13 | s | | {EXTERNAL LOCATION} | String | -| main.rs:2288:18:2288:25 | strings2 | | {EXTERNAL LOCATION} | [;] | -| main.rs:2288:18:2288:25 | strings2 | TArray | {EXTERNAL LOCATION} | String | -| main.rs:2288:27:2288:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2290:13:2290:20 | strings3 | | {EXTERNAL LOCATION} | & | -| main.rs:2290:13:2290:20 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:2290:13:2290:20 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | -| main.rs:2291:9:2295:9 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2291:9:2295:9 | &... | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:2291:9:2295:9 | &... | TRef.TArray | {EXTERNAL LOCATION} | String | -| main.rs:2291:10:2295:9 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2291:10:2295:9 | [...] | TArray | {EXTERNAL LOCATION} | String | -| main.rs:2292:13:2292:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2292:26:2292:30 | "foo" | | {EXTERNAL LOCATION} | & | -| main.rs:2292:26:2292:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2293:13:2293:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2293:26:2293:30 | "bar" | | {EXTERNAL LOCATION} | & | -| main.rs:2293:26:2293:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2294:13:2294:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2294:26:2294:30 | "baz" | | {EXTERNAL LOCATION} | & | -| main.rs:2294:26:2294:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2296:9:2296:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2296:13:2296:13 | s | | {EXTERNAL LOCATION} | & | -| main.rs:2296:13:2296:13 | s | TRef | {EXTERNAL LOCATION} | String | -| main.rs:2296:18:2296:25 | strings3 | | {EXTERNAL LOCATION} | & | -| main.rs:2296:18:2296:25 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | -| main.rs:2296:18:2296:25 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | -| main.rs:2296:27:2296:28 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2298:13:2298:21 | callables | | {EXTERNAL LOCATION} | [;] | -| main.rs:2298:13:2298:21 | callables | TArray | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2298:25:2298:81 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2298:25:2298:81 | [...] | TArray | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2298:26:2298:42 | ...::new(...) | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2298:45:2298:61 | ...::new(...) | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2298:64:2298:80 | ...::new(...) | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2299:9:2303:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2299:13:2299:13 | c | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2300:12:2300:20 | callables | | {EXTERNAL LOCATION} | [;] | -| main.rs:2300:12:2300:20 | callables | TArray | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2301:9:2303:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2302:17:2302:22 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2302:26:2302:26 | c | | main.rs:2246:5:2246:24 | MyCallable | -| main.rs:2302:26:2302:33 | c.call() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2307:9:2307:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2307:13:2307:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2307:18:2307:18 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2307:18:2307:22 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2307:18:2307:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2307:21:2307:22 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2307:24:2307:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2308:9:2308:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2308:13:2308:13 | u | | {EXTERNAL LOCATION} | Range | -| main.rs:2308:13:2308:13 | u | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2308:13:2308:13 | u | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2308:18:2308:26 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2308:18:2308:26 | [...] | TArray | {EXTERNAL LOCATION} | Range | -| main.rs:2308:18:2308:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2308:18:2308:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2308:19:2308:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2308:19:2308:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2308:19:2308:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2308:19:2308:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | -| main.rs:2308:24:2308:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2308:24:2308:25 | 10 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2308:28:2308:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2309:13:2309:17 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2309:13:2309:17 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2309:21:2309:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2309:21:2309:25 | 0..10 | | {EXTERNAL LOCATION} | Range | -| main.rs:2309:21:2309:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2309:24:2309:25 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2310:9:2310:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2310:13:2310:13 | i | | {EXTERNAL LOCATION} | i32 | -| main.rs:2310:18:2310:22 | range | | {EXTERNAL LOCATION} | Range | -| main.rs:2310:18:2310:22 | range | Idx | {EXTERNAL LOCATION} | i32 | -| main.rs:2310:24:2310:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2311:13:2311:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2311:26:2311:27 | .. | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2312:9:2312:51 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2312:18:2312:48 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2312:19:2312:36 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2312:19:2312:36 | [...] | TArray | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:20:2312:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:26:2312:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:32:2312:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2312:38:2312:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | -| main.rs:2312:50:2312:51 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2314:13:2314:18 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2314:13:2314:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2315:9:2318:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | -| main.rs:2315:9:2318:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2316:20:2316:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2317:18:2317:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2319:9:2319:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2319:13:2319:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2319:18:2319:23 | range1 | | {EXTERNAL LOCATION} | Range | -| main.rs:2319:18:2319:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | -| main.rs:2319:25:2319:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2323:13:2323:17 | vals3 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2323:13:2323:17 | vals3 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2323:21:2323:33 | MacroExpr | | {EXTERNAL LOCATION} | Vec | -| main.rs:2323:21:2323:33 | MacroExpr | A | {EXTERNAL LOCATION} | Global | -| main.rs:2323:26:2323:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2323:29:2323:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2323:32:2323:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:9:2279:44 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2279:13:2279:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:18:2279:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2279:18:2279:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:18:2279:41 | ... .map(...) | | {EXTERNAL LOCATION} | [;] | +| main.rs:2279:18:2279:41 | ... .map(...) | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:19:2279:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:22:2279:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:25:2279:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:32:2279:40 | \|...\| ... | | {EXTERNAL LOCATION} | dyn Fn | +| main.rs:2279:32:2279:40 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| main.rs:2279:32:2279:40 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:32:2279:40 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:33:2279:33 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:36:2279:36 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:36:2279:40 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:40:2279:40 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2279:43:2279:44 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2280:9:2280:41 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2280:13:2280:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2280:18:2280:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2280:18:2280:26 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2280:18:2280:38 | ... .into_iter() | | {EXTERNAL LOCATION} | IntoIter | +| main.rs:2280:18:2280:38 | ... .into_iter() | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2280:19:2280:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2280:22:2280:22 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2280:25:2280:25 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2280:40:2280:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2282:13:2282:17 | vals1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2282:13:2282:17 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2282:13:2282:17 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | +| main.rs:2282:21:2282:31 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2282:21:2282:31 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2282:21:2282:31 | [...] | TArray | {EXTERNAL LOCATION} | u8 | +| main.rs:2282:22:2282:24 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2282:27:2282:27 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2282:27:2282:27 | 2 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2282:30:2282:30 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2282:30:2282:30 | 3 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2283:9:2283:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2283:13:2283:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2283:13:2283:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2283:18:2283:22 | vals1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2283:18:2283:22 | vals1 | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2283:18:2283:22 | vals1 | TArray | {EXTERNAL LOCATION} | u8 | +| main.rs:2283:24:2283:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2285:13:2285:17 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2285:13:2285:17 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2285:21:2285:29 | [1u16; 3] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2285:21:2285:29 | [1u16; 3] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2285:22:2285:25 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2285:28:2285:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2286:9:2286:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2286:13:2286:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2286:18:2286:22 | vals2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2286:18:2286:22 | vals2 | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2286:24:2286:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2288:13:2288:17 | vals3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2288:13:2288:17 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2288:26:2288:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2288:31:2288:39 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2288:31:2288:39 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2288:31:2288:39 | [...] | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2288:32:2288:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2288:32:2288:32 | 1 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2288:35:2288:35 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2288:35:2288:35 | 2 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2288:38:2288:38 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2288:38:2288:38 | 3 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2289:9:2289:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2289:13:2289:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2289:18:2289:22 | vals3 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2289:18:2289:22 | vals3 | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2289:24:2289:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2291:13:2291:17 | vals4 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2291:13:2291:17 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2291:26:2291:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2291:31:2291:36 | [1; 3] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2291:31:2291:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2291:31:2291:36 | [1; 3] | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2291:32:2291:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2291:32:2291:32 | 1 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2291:35:2291:35 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2292:9:2292:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2292:13:2292:13 | u | | {EXTERNAL LOCATION} | u64 | +| main.rs:2292:18:2292:22 | vals4 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2292:18:2292:22 | vals4 | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2292:24:2292:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2294:17:2294:24 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2294:17:2294:24 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2294:17:2294:24 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2294:28:2294:48 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2294:28:2294:48 | [...] | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2294:28:2294:48 | [...] | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2294:29:2294:33 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2294:29:2294:33 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2294:36:2294:40 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2294:36:2294:40 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2294:43:2294:47 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2294:43:2294:47 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2295:9:2295:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2295:13:2295:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2295:13:2295:13 | s | TRef | {EXTERNAL LOCATION} | & | +| main.rs:2295:13:2295:13 | s | TRef.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2295:18:2295:26 | &strings1 | | {EXTERNAL LOCATION} | & | +| main.rs:2295:18:2295:26 | &strings1 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2295:18:2295:26 | &strings1 | TRef.TArray | {EXTERNAL LOCATION} | & | +| main.rs:2295:18:2295:26 | &strings1 | TRef.TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2295:19:2295:26 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2295:19:2295:26 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2295:19:2295:26 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2295:28:2295:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2296:9:2296:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2296:13:2296:13 | s | | {EXTERNAL LOCATION} | I::Item[Iterator] | +| main.rs:2296:13:2296:13 | s | | {EXTERNAL LOCATION} | &mut | +| main.rs:2296:13:2296:13 | s | TRefMut | {EXTERNAL LOCATION} | & | +| main.rs:2296:13:2296:13 | s | TRefMut.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2296:18:2296:30 | &mut strings1 | | {EXTERNAL LOCATION} | &mut | +| main.rs:2296:18:2296:30 | &mut strings1 | TRefMut | {EXTERNAL LOCATION} | [;] | +| main.rs:2296:18:2296:30 | &mut strings1 | TRefMut.TArray | {EXTERNAL LOCATION} | & | +| main.rs:2296:18:2296:30 | &mut strings1 | TRefMut.TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2296:23:2296:30 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2296:23:2296:30 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2296:23:2296:30 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2296:32:2296:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2297:9:2297:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2297:13:2297:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2297:13:2297:13 | s | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2297:18:2297:25 | strings1 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2297:18:2297:25 | strings1 | TArray | {EXTERNAL LOCATION} | & | +| main.rs:2297:18:2297:25 | strings1 | TArray.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2297:27:2297:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2299:13:2299:20 | strings2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2299:13:2299:20 | strings2 | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2300:9:2304:9 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2300:9:2304:9 | [...] | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2301:13:2301:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2301:26:2301:30 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2301:26:2301:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2302:13:2302:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2302:26:2302:30 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2302:26:2302:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2303:13:2303:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2303:26:2303:30 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2303:26:2303:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2305:9:2305:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2305:13:2305:13 | s | | {EXTERNAL LOCATION} | String | +| main.rs:2305:18:2305:25 | strings2 | | {EXTERNAL LOCATION} | [;] | +| main.rs:2305:18:2305:25 | strings2 | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2305:27:2305:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2307:13:2307:20 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2307:13:2307:20 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2307:13:2307:20 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | +| main.rs:2308:9:2312:9 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2308:9:2312:9 | &... | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2308:9:2312:9 | &... | TRef.TArray | {EXTERNAL LOCATION} | String | +| main.rs:2308:10:2312:9 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2308:10:2312:9 | [...] | TArray | {EXTERNAL LOCATION} | String | +| main.rs:2309:13:2309:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2309:26:2309:30 | "foo" | | {EXTERNAL LOCATION} | & | +| main.rs:2309:26:2309:30 | "foo" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2310:13:2310:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2310:26:2310:30 | "bar" | | {EXTERNAL LOCATION} | & | +| main.rs:2310:26:2310:30 | "bar" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2311:13:2311:31 | ...::from(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2311:26:2311:30 | "baz" | | {EXTERNAL LOCATION} | & | +| main.rs:2311:26:2311:30 | "baz" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2313:9:2313:28 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2313:13:2313:13 | s | | {EXTERNAL LOCATION} | & | +| main.rs:2313:13:2313:13 | s | TRef | {EXTERNAL LOCATION} | String | +| main.rs:2313:18:2313:25 | strings3 | | {EXTERNAL LOCATION} | & | +| main.rs:2313:18:2313:25 | strings3 | TRef | {EXTERNAL LOCATION} | [;] | +| main.rs:2313:18:2313:25 | strings3 | TRef.TArray | {EXTERNAL LOCATION} | String | +| main.rs:2313:27:2313:28 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2315:13:2315:21 | callables | | {EXTERNAL LOCATION} | [;] | +| main.rs:2315:13:2315:21 | callables | TArray | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2315:25:2315:81 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2315:25:2315:81 | [...] | TArray | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2315:26:2315:42 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2315:45:2315:61 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2315:64:2315:80 | ...::new(...) | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2316:9:2320:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2316:13:2316:13 | c | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2317:12:2317:20 | callables | | {EXTERNAL LOCATION} | [;] | +| main.rs:2317:12:2317:20 | callables | TArray | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2318:9:2320:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2319:17:2319:22 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2319:26:2319:26 | c | | main.rs:2263:5:2263:24 | MyCallable | +| main.rs:2319:26:2319:33 | c.call() | | {EXTERNAL LOCATION} | i64 | | main.rs:2324:9:2324:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2324:18:2324:22 | vals3 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2324:18:2324:22 | vals3 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2324:13:2324:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2324:18:2324:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2324:18:2324:22 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2324:18:2324:22 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2324:21:2324:22 | 10 | | {EXTERNAL LOCATION} | i32 | | main.rs:2324:24:2324:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2326:13:2326:18 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2326:13:2326:18 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2326:13:2326:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2326:32:2326:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2326:32:2326:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2326:32:2326:43 | [...] | TArray | {EXTERNAL LOCATION} | u16 | -| main.rs:2326:32:2326:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2326:32:2326:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2326:32:2326:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2326:33:2326:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2326:39:2326:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2326:42:2326:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2327:9:2327:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2327:13:2327:13 | u | | {EXTERNAL LOCATION} | u16 | -| main.rs:2327:18:2327:23 | vals4a | | {EXTERNAL LOCATION} | Vec | -| main.rs:2327:18:2327:23 | vals4a | A | {EXTERNAL LOCATION} | Global | -| main.rs:2327:18:2327:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | -| main.rs:2327:25:2327:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2329:22:2329:33 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2329:22:2329:33 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2329:22:2329:33 | [...] | TArray | {EXTERNAL LOCATION} | u16 | -| main.rs:2329:23:2329:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | -| main.rs:2329:29:2329:29 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2329:32:2329:32 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2330:9:2330:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2330:25:2330:26 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2332:13:2332:17 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2332:13:2332:17 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2332:13:2332:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2332:13:2332:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2332:21:2332:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2332:21:2332:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2332:21:2332:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2332:21:2332:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2332:31:2332:42 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2332:31:2332:42 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2332:31:2332:42 | [...] | TArray | {EXTERNAL LOCATION} | u32 | -| main.rs:2332:32:2332:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:2332:38:2332:38 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2332:41:2332:41 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2333:9:2333:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2333:13:2333:13 | u | | {EXTERNAL LOCATION} | i32 | -| main.rs:2333:13:2333:13 | u | | {EXTERNAL LOCATION} | u32 | -| main.rs:2333:18:2333:22 | vals5 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2333:18:2333:22 | vals5 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2333:18:2333:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2333:18:2333:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | -| main.rs:2333:24:2333:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2335:13:2335:17 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2335:13:2335:17 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2335:13:2335:17 | vals6 | T | {EXTERNAL LOCATION} | & | -| main.rs:2335:13:2335:17 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | -| main.rs:2335:32:2335:43 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2335:32:2335:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:32:2335:43 | [...] | TArray | {EXTERNAL LOCATION} | u64 | -| main.rs:2335:32:2335:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | -| main.rs:2335:32:2335:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | -| main.rs:2335:32:2335:60 | ... .collect() | T | {EXTERNAL LOCATION} | & | -| main.rs:2335:32:2335:60 | ... .collect() | T.TRef | {EXTERNAL LOCATION} | u64 | -| main.rs:2335:33:2335:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | -| main.rs:2335:39:2335:39 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2335:42:2335:42 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2336:9:2336:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2336:13:2336:13 | u | | {EXTERNAL LOCATION} | & | -| main.rs:2336:13:2336:13 | u | TRef | {EXTERNAL LOCATION} | u64 | -| main.rs:2336:18:2336:22 | vals6 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2336:18:2336:22 | vals6 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2336:18:2336:22 | vals6 | T | {EXTERNAL LOCATION} | & | -| main.rs:2336:18:2336:22 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | -| main.rs:2336:24:2336:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2338:17:2338:21 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2338:17:2338:21 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2338:17:2338:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2338:25:2338:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2338:25:2338:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2338:25:2338:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2339:9:2339:13 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2339:9:2339:13 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2339:9:2339:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2339:9:2339:23 | vals7.push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2339:20:2339:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | -| main.rs:2340:9:2340:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2340:13:2340:13 | u | | {EXTERNAL LOCATION} | u8 | -| main.rs:2340:18:2340:22 | vals7 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2340:18:2340:22 | vals7 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2340:18:2340:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | -| main.rs:2340:24:2340:25 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2342:13:2342:19 | matrix1 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2342:13:2342:19 | matrix1 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2342:23:2342:50 | MacroExpr | | {EXTERNAL LOCATION} | Vec | -| main.rs:2342:23:2342:50 | MacroExpr | A | {EXTERNAL LOCATION} | Global | -| main.rs:2342:28:2342:37 | (...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2342:28:2342:37 | (...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2342:28:2342:37 | MacroExpr | | {EXTERNAL LOCATION} | Vec | -| main.rs:2342:28:2342:37 | MacroExpr | A | {EXTERNAL LOCATION} | Global | -| main.rs:2342:33:2342:33 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2342:36:2342:36 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2342:40:2342:49 | (...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2342:40:2342:49 | (...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2342:40:2342:49 | MacroExpr | | {EXTERNAL LOCATION} | Vec | -| main.rs:2342:40:2342:49 | MacroExpr | A | {EXTERNAL LOCATION} | Global | -| main.rs:2342:45:2342:45 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2342:48:2342:48 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:13:2344:13 | _ | | {EXTERNAL LOCATION} | () | -| main.rs:2344:17:2347:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2344:28:2344:34 | matrix1 | | {EXTERNAL LOCATION} | Vec | -| main.rs:2344:28:2344:34 | matrix1 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2344:36:2347:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2345:13:2346:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2345:29:2346:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2349:17:2349:20 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2349:17:2349:20 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2349:17:2349:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2349:17:2349:20 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2349:17:2349:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2349:17:2349:20 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2349:17:2349:20 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2349:24:2349:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2349:24:2349:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2349:24:2349:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2349:24:2349:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | -| main.rs:2349:24:2349:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2349:24:2349:55 | ...::new(...) | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2349:24:2349:55 | ...::new(...) | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2350:9:2350:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2350:9:2350:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2350:9:2350:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2350:9:2350:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2350:9:2350:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2350:9:2350:12 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2350:9:2350:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2350:9:2350:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2350:9:2350:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2350:9:2350:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2350:9:2350:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | -| main.rs:2350:9:2350:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2350:21:2350:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2350:24:2350:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2350:24:2350:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2350:24:2350:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:2350:24:2350:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2350:33:2350:37 | "one" | | {EXTERNAL LOCATION} | & | -| main.rs:2350:33:2350:37 | "one" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2351:9:2351:12 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2351:9:2351:12 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2351:9:2351:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2351:9:2351:12 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2351:9:2351:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2351:9:2351:12 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2351:9:2351:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2351:9:2351:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2351:9:2351:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2351:9:2351:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2351:9:2351:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | -| main.rs:2351:9:2351:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2351:21:2351:21 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2351:24:2351:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2351:24:2351:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2351:24:2351:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | -| main.rs:2351:24:2351:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2351:33:2351:37 | "two" | | {EXTERNAL LOCATION} | & | -| main.rs:2351:33:2351:37 | "two" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2352:9:2352:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2352:13:2352:15 | key | | {EXTERNAL LOCATION} | & | -| main.rs:2352:13:2352:15 | key | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2352:20:2352:23 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2352:20:2352:23 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2352:20:2352:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2352:20:2352:23 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2352:20:2352:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2352:20:2352:23 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2352:20:2352:23 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2352:20:2352:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | -| main.rs:2352:20:2352:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2352:20:2352:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2352:20:2352:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2352:20:2352:30 | map1.keys() | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2352:20:2352:30 | map1.keys() | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2352:32:2352:33 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2353:9:2353:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2353:13:2353:17 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2353:13:2353:17 | value | TRef | {EXTERNAL LOCATION} | Box | -| main.rs:2353:13:2353:17 | value | TRef.A | {EXTERNAL LOCATION} | Global | -| main.rs:2353:13:2353:17 | value | TRef.T | {EXTERNAL LOCATION} | & | -| main.rs:2353:13:2353:17 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2353:22:2353:25 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2353:22:2353:25 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2353:22:2353:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2353:22:2353:25 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2353:22:2353:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2353:22:2353:25 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2353:22:2353:25 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2353:22:2353:34 | map1.values() | | {EXTERNAL LOCATION} | Values | -| main.rs:2353:22:2353:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2353:22:2353:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2353:22:2353:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2353:22:2353:34 | map1.values() | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2353:22:2353:34 | map1.values() | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2353:36:2353:37 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2354:9:2354:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2354:13:2354:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2354:13:2354:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | -| main.rs:2354:13:2354:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2354:13:2354:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | -| main.rs:2354:13:2354:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | -| main.rs:2354:13:2354:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | -| main.rs:2354:13:2354:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | -| main.rs:2354:13:2354:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2354:14:2354:16 | key | | {EXTERNAL LOCATION} | & | -| main.rs:2354:14:2354:16 | key | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2354:19:2354:23 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2354:19:2354:23 | value | TRef | {EXTERNAL LOCATION} | Box | -| main.rs:2354:19:2354:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | -| main.rs:2354:19:2354:23 | value | TRef.T | {EXTERNAL LOCATION} | & | -| main.rs:2354:19:2354:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2354:29:2354:32 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2354:29:2354:32 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2354:29:2354:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2354:29:2354:32 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2354:29:2354:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2354:29:2354:32 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2354:29:2354:32 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2354:29:2354:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | -| main.rs:2354:29:2354:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2354:29:2354:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | -| main.rs:2354:29:2354:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2354:29:2354:39 | map1.iter() | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2354:29:2354:39 | map1.iter() | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2354:41:2354:42 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2355:9:2355:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2355:13:2355:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2355:13:2355:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | -| main.rs:2355:13:2355:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2355:13:2355:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | -| main.rs:2355:13:2355:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | -| main.rs:2355:13:2355:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | -| main.rs:2355:13:2355:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | -| main.rs:2355:13:2355:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2355:14:2355:16 | key | | {EXTERNAL LOCATION} | & | -| main.rs:2355:14:2355:16 | key | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2355:19:2355:23 | value | | {EXTERNAL LOCATION} | & | -| main.rs:2355:19:2355:23 | value | TRef | {EXTERNAL LOCATION} | Box | -| main.rs:2355:19:2355:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | -| main.rs:2355:19:2355:23 | value | TRef.T | {EXTERNAL LOCATION} | & | -| main.rs:2355:19:2355:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2355:29:2355:33 | &map1 | | {EXTERNAL LOCATION} | & | -| main.rs:2355:29:2355:33 | &map1 | TRef | {EXTERNAL LOCATION} | HashMap | -| main.rs:2355:29:2355:33 | &map1 | TRef.K | {EXTERNAL LOCATION} | i32 | -| main.rs:2355:29:2355:33 | &map1 | TRef.S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2355:29:2355:33 | &map1 | TRef.V | {EXTERNAL LOCATION} | Box | -| main.rs:2355:29:2355:33 | &map1 | TRef.V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2355:29:2355:33 | &map1 | TRef.V.T | {EXTERNAL LOCATION} | & | -| main.rs:2355:29:2355:33 | &map1 | TRef.V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2355:30:2355:33 | map1 | | {EXTERNAL LOCATION} | HashMap | -| main.rs:2355:30:2355:33 | map1 | K | {EXTERNAL LOCATION} | i32 | -| main.rs:2355:30:2355:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | -| main.rs:2355:30:2355:33 | map1 | V | {EXTERNAL LOCATION} | Box | -| main.rs:2355:30:2355:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | -| main.rs:2355:30:2355:33 | map1 | V.T | {EXTERNAL LOCATION} | & | -| main.rs:2355:30:2355:33 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | -| main.rs:2355:35:2355:36 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2359:17:2359:17 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2359:26:2359:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2359:26:2359:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2325:9:2325:29 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2325:13:2325:13 | u | | {EXTERNAL LOCATION} | Range | +| main.rs:2325:13:2325:13 | u | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2325:13:2325:13 | u | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2325:18:2325:26 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2325:18:2325:26 | [...] | TArray | {EXTERNAL LOCATION} | Range | +| main.rs:2325:18:2325:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2325:18:2325:26 | [...] | TArray.Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2325:19:2325:21 | 0u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2325:19:2325:25 | 0u8..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2325:19:2325:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2325:19:2325:25 | 0u8..10 | Idx | {EXTERNAL LOCATION} | u8 | +| main.rs:2325:24:2325:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2325:24:2325:25 | 10 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2325:28:2325:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2326:13:2326:17 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2326:13:2326:17 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2326:21:2326:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2326:21:2326:25 | 0..10 | | {EXTERNAL LOCATION} | Range | +| main.rs:2326:21:2326:25 | 0..10 | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2326:24:2326:25 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2327:9:2327:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2327:13:2327:13 | i | | {EXTERNAL LOCATION} | i32 | +| main.rs:2327:18:2327:22 | range | | {EXTERNAL LOCATION} | Range | +| main.rs:2327:18:2327:22 | range | Idx | {EXTERNAL LOCATION} | i32 | +| main.rs:2327:24:2327:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2328:13:2328:22 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2328:26:2328:27 | .. | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2329:9:2329:51 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2329:18:2329:48 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2329:19:2329:36 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2329:19:2329:36 | [...] | TArray | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:20:2329:23 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:26:2329:29 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:32:2329:35 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2329:38:2329:47 | range_full | | {EXTERNAL LOCATION} | RangeFull | +| main.rs:2329:50:2329:51 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2331:13:2331:18 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2331:13:2331:18 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2332:9:2335:9 | ...::Range {...} | | {EXTERNAL LOCATION} | Range | +| main.rs:2332:9:2335:9 | ...::Range {...} | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2333:20:2333:23 | 0u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2334:18:2334:22 | 10u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2336:9:2336:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2336:13:2336:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2336:18:2336:23 | range1 | | {EXTERNAL LOCATION} | Range | +| main.rs:2336:18:2336:23 | range1 | Idx | {EXTERNAL LOCATION} | u16 | +| main.rs:2336:25:2336:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2340:13:2340:17 | vals3 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2340:13:2340:17 | vals3 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2340:21:2340:33 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2340:21:2340:33 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2340:26:2340:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2340:29:2340:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2340:32:2340:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2341:9:2341:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2341:18:2341:22 | vals3 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2341:18:2341:22 | vals3 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2341:24:2341:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2343:13:2343:18 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2343:13:2343:18 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2343:13:2343:18 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:32:2343:43 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2343:32:2343:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2343:32:2343:43 | [...] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:32:2343:52 | ... .to_vec() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2343:32:2343:52 | ... .to_vec() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2343:32:2343:52 | ... .to_vec() | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:33:2343:36 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2343:39:2343:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2343:42:2343:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2344:9:2344:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2344:13:2344:13 | u | | {EXTERNAL LOCATION} | u16 | +| main.rs:2344:18:2344:23 | vals4a | | {EXTERNAL LOCATION} | Vec | +| main.rs:2344:18:2344:23 | vals4a | A | {EXTERNAL LOCATION} | Global | +| main.rs:2344:18:2344:23 | vals4a | T | {EXTERNAL LOCATION} | u16 | +| main.rs:2344:25:2344:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2346:22:2346:33 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2346:22:2346:33 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2346:22:2346:33 | [...] | TArray | {EXTERNAL LOCATION} | u16 | +| main.rs:2346:23:2346:26 | 1u16 | | {EXTERNAL LOCATION} | u16 | +| main.rs:2346:29:2346:29 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2346:32:2346:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2347:9:2347:26 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2347:25:2347:26 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2349:13:2349:17 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2349:13:2349:17 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2349:13:2349:17 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2349:13:2349:17 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2349:21:2349:43 | ...::from(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2349:21:2349:43 | ...::from(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2349:21:2349:43 | ...::from(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2349:21:2349:43 | ...::from(...) | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2349:31:2349:42 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2349:31:2349:42 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2349:31:2349:42 | [...] | TArray | {EXTERNAL LOCATION} | u32 | +| main.rs:2349:32:2349:35 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:2349:38:2349:38 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2349:41:2349:41 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2350:9:2350:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2350:13:2350:13 | u | | {EXTERNAL LOCATION} | i32 | +| main.rs:2350:13:2350:13 | u | | {EXTERNAL LOCATION} | u32 | +| main.rs:2350:18:2350:22 | vals5 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2350:18:2350:22 | vals5 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2350:18:2350:22 | vals5 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2350:18:2350:22 | vals5 | T | {EXTERNAL LOCATION} | u32 | +| main.rs:2350:24:2350:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2352:13:2352:17 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2352:13:2352:17 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2352:13:2352:17 | vals6 | T | {EXTERNAL LOCATION} | & | +| main.rs:2352:13:2352:17 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2352:32:2352:43 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2352:32:2352:43 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2352:32:2352:43 | [...] | TArray | {EXTERNAL LOCATION} | u64 | +| main.rs:2352:32:2352:60 | ... .collect() | | {EXTERNAL LOCATION} | Vec | +| main.rs:2352:32:2352:60 | ... .collect() | A | {EXTERNAL LOCATION} | Global | +| main.rs:2352:32:2352:60 | ... .collect() | T | {EXTERNAL LOCATION} | & | +| main.rs:2352:32:2352:60 | ... .collect() | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2352:33:2352:36 | 1u64 | | {EXTERNAL LOCATION} | u64 | +| main.rs:2352:39:2352:39 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2352:42:2352:42 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2353:9:2353:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2353:13:2353:13 | u | | {EXTERNAL LOCATION} | & | +| main.rs:2353:13:2353:13 | u | TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2353:18:2353:22 | vals6 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2353:18:2353:22 | vals6 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2353:18:2353:22 | vals6 | T | {EXTERNAL LOCATION} | & | +| main.rs:2353:18:2353:22 | vals6 | T.TRef | {EXTERNAL LOCATION} | u64 | +| main.rs:2353:24:2353:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2355:17:2355:21 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2355:17:2355:21 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2355:17:2355:21 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2355:25:2355:34 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2355:25:2355:34 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2355:25:2355:34 | ...::new(...) | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2356:9:2356:13 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2356:9:2356:13 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2356:9:2356:13 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2356:9:2356:23 | vals7.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2356:20:2356:22 | 1u8 | | {EXTERNAL LOCATION} | u8 | +| main.rs:2357:9:2357:25 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2357:13:2357:13 | u | | {EXTERNAL LOCATION} | u8 | +| main.rs:2357:18:2357:22 | vals7 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2357:18:2357:22 | vals7 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2357:18:2357:22 | vals7 | T | {EXTERNAL LOCATION} | u8 | +| main.rs:2357:24:2357:25 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2359:13:2359:19 | matrix1 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:13:2359:19 | matrix1 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:23:2359:50 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:23:2359:50 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:28:2359:37 | (...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:28:2359:37 | (...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:28:2359:37 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:28:2359:37 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:33:2359:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2359:36:2359:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2359:40:2359:49 | (...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:40:2359:49 | (...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:40:2359:49 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| main.rs:2359:40:2359:49 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| main.rs:2359:45:2359:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2359:48:2359:48 | 4 | | {EXTERNAL LOCATION} | i32 | | main.rs:2361:13:2361:13 | _ | | {EXTERNAL LOCATION} | () | -| main.rs:2361:17:2364:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2361:23:2361:23 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2361:23:2361:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2361:27:2361:28 | 10 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2362:9:2364:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2363:13:2363:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2363:13:2363:18 | ... += ... | | {EXTERNAL LOCATION} | () | -| main.rs:2363:18:2363:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2375:40:2377:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2375:40:2377:9 | { ... } | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2375:40:2377:9 | { ... } | T.T | main.rs:2374:10:2374:19 | T | -| main.rs:2376:13:2376:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2376:13:2376:16 | None | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2376:13:2376:16 | None | T.T | main.rs:2374:10:2374:19 | T | -| main.rs:2379:30:2381:9 | { ... } | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2379:30:2381:9 | { ... } | T | main.rs:2374:10:2374:19 | T | -| main.rs:2380:13:2380:28 | S1(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2380:13:2380:28 | S1(...) | T | main.rs:2374:10:2374:19 | T | -| main.rs:2380:16:2380:27 | ...::default(...) | | main.rs:2374:10:2374:19 | T | -| main.rs:2383:19:2383:22 | SelfParam | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2383:19:2383:22 | SelfParam | T | main.rs:2374:10:2374:19 | T | -| main.rs:2383:33:2385:9 | { ... } | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2383:33:2385:9 | { ... } | T | main.rs:2374:10:2374:19 | T | -| main.rs:2384:13:2384:16 | self | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2384:13:2384:16 | self | T | main.rs:2374:10:2374:19 | T | -| main.rs:2396:15:2396:15 | x | | main.rs:2396:12:2396:12 | T | -| main.rs:2396:26:2398:5 | { ... } | | main.rs:2396:12:2396:12 | T | -| main.rs:2397:9:2397:9 | x | | main.rs:2396:12:2396:12 | T | -| main.rs:2400:16:2422:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2401:13:2401:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2401:13:2401:14 | x1 | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2401:13:2401:14 | x1 | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2401:34:2401:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2401:34:2401:48 | ...::assoc_fun(...) | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2401:34:2401:48 | ...::assoc_fun(...) | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2402:13:2402:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2402:13:2402:14 | x2 | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2402:13:2402:14 | x2 | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2402:18:2402:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2402:18:2402:38 | ...::assoc_fun(...) | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2402:18:2402:38 | ...::assoc_fun(...) | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2403:13:2403:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2403:13:2403:14 | x3 | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2403:13:2403:14 | x3 | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2403:18:2403:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2403:18:2403:32 | ...::assoc_fun(...) | T | main.rs:2369:5:2369:20 | S1 | -| main.rs:2403:18:2403:32 | ...::assoc_fun(...) | T.T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2404:13:2404:14 | x4 | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2404:13:2404:14 | x4 | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2404:18:2404:48 | ...::method(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2404:18:2404:48 | ...::method(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2404:35:2404:47 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2404:35:2404:47 | ...::default(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2405:13:2405:14 | x5 | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2405:13:2405:14 | x5 | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2405:18:2405:42 | ...::method(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2405:18:2405:42 | ...::method(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2405:29:2405:41 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2405:29:2405:41 | ...::default(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2406:13:2406:14 | x6 | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2406:13:2406:14 | x6 | T4 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2406:18:2406:45 | S4::<...>(...) | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2406:18:2406:45 | S4::<...>(...) | T4 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2406:27:2406:44 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2407:13:2407:14 | x7 | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2407:13:2407:14 | x7 | T4 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2407:18:2407:23 | S4(...) | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2407:18:2407:23 | S4(...) | T4 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2407:21:2407:22 | S2 | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2408:13:2408:14 | x8 | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2408:13:2408:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2408:18:2408:22 | S4(...) | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2408:18:2408:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2408:21:2408:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2409:13:2409:14 | x9 | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2409:13:2409:14 | x9 | T4 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2409:18:2409:34 | S4(...) | | main.rs:2390:5:2390:27 | S4 | -| main.rs:2409:18:2409:34 | S4(...) | T4 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2409:21:2409:33 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2410:13:2410:15 | x10 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2410:13:2410:15 | x10 | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2410:19:2413:9 | S5::<...> {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2410:19:2413:9 | S5::<...> {...} | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2412:20:2412:37 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2414:13:2414:15 | x11 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2414:13:2414:15 | x11 | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2414:19:2414:34 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2414:19:2414:34 | S5 {...} | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2414:31:2414:32 | S2 | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2415:13:2415:15 | x12 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2415:13:2415:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:19:2415:33 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2415:19:2415:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:31:2415:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:13:2416:15 | x13 | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2416:13:2416:15 | x13 | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2416:19:2419:9 | S5 {...} | | main.rs:2392:5:2394:5 | S5 | -| main.rs:2416:19:2419:9 | S5 {...} | T5 | main.rs:2371:5:2372:14 | S2 | -| main.rs:2418:20:2418:32 | ...::default(...) | | main.rs:2371:5:2372:14 | S2 | -| main.rs:2420:13:2420:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2420:19:2420:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2420:30:2420:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2421:13:2421:15 | x15 | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2421:13:2421:15 | x15 | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2421:19:2421:37 | ...::default(...) | | main.rs:2369:5:2369:20 | S1 | -| main.rs:2421:19:2421:37 | ...::default(...) | T | main.rs:2371:5:2372:14 | S2 | -| main.rs:2430:35:2432:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2430:35:2432:9 | { ... } | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2430:35:2432:9 | { ... } | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2431:13:2431:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2431:13:2431:26 | TupleExpr | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2431:13:2431:26 | TupleExpr | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2431:14:2431:18 | S1 {...} | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2431:21:2431:25 | S1 {...} | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2433:16:2433:19 | SelfParam | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2433:22:2433:23 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2436:16:2470:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2437:13:2437:13 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2437:13:2437:13 | a | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2437:13:2437:13 | a | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2437:17:2437:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2437:17:2437:30 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2437:17:2437:30 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:17:2438:17 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2438:17:2438:17 | b | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:17:2438:17 | b | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:21:2438:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2438:21:2438:34 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2438:21:2438:34 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:13:2439:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2439:13:2439:18 | TuplePat | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:13:2439:18 | TuplePat | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:14:2439:14 | c | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:17:2439:17 | d | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:22:2439:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2439:22:2439:35 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2439:22:2439:35 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:13:2440:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2440:13:2440:22 | TuplePat | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:13:2440:22 | TuplePat | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:18:2440:18 | e | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:21:2440:21 | f | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:26:2440:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2440:26:2440:39 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2440:26:2440:39 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:13:2441:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2441:13:2441:26 | TuplePat | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:13:2441:26 | TuplePat | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:18:2441:18 | g | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:25:2441:25 | h | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:30:2441:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2441:30:2441:43 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2441:30:2441:43 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2443:9:2443:9 | a | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2443:9:2443:9 | a | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2443:9:2443:9 | a | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2443:9:2443:11 | a.0 | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2443:9:2443:17 | ... .foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2444:9:2444:9 | b | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2444:9:2444:9 | b | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2444:9:2444:9 | b | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2444:9:2444:11 | b.1 | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2444:9:2444:17 | ... .foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2445:9:2445:9 | c | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2445:9:2445:15 | c.foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2446:9:2446:9 | d | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2446:9:2446:15 | d.foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2447:9:2447:9 | e | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2447:9:2447:15 | e.foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2448:9:2448:9 | f | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2448:9:2448:15 | f.foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2449:9:2449:9 | g | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2449:9:2449:15 | g.foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2450:9:2450:9 | h | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2450:9:2450:15 | h.foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2455:13:2455:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2455:17:2455:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2456:13:2456:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2456:17:2456:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2457:13:2457:16 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2457:13:2457:16 | pair | T0 | {EXTERNAL LOCATION} | i64 | -| main.rs:2457:13:2457:16 | pair | T1 | {EXTERNAL LOCATION} | bool | -| main.rs:2457:20:2457:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2457:20:2457:25 | TupleExpr | T0 | {EXTERNAL LOCATION} | i64 | -| main.rs:2457:20:2457:25 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | -| main.rs:2457:21:2457:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2457:24:2457:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2458:13:2458:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:22:2458:25 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2458:22:2458:25 | pair | T0 | {EXTERNAL LOCATION} | i64 | -| main.rs:2458:22:2458:25 | pair | T1 | {EXTERNAL LOCATION} | bool | -| main.rs:2458:22:2458:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:13:2459:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2459:23:2459:26 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2459:23:2459:26 | pair | T0 | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:23:2459:26 | pair | T1 | {EXTERNAL LOCATION} | bool | -| main.rs:2459:23:2459:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2461:13:2461:16 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2461:13:2461:16 | pair | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:13:2461:16 | pair | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:20:2461:25 | [...] | | {EXTERNAL LOCATION} | [;] | -| main.rs:2461:20:2461:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:20:2461:32 | ... .into() | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2461:20:2461:32 | ... .into() | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:20:2461:32 | ... .into() | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:21:2461:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2461:24:2461:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:9:2465:9 | match pair { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2462:15:2462:18 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2462:15:2462:18 | pair | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:15:2462:18 | pair | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:13:2463:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2463:13:2463:18 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:13:2463:18 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:14:2463:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:17:2463:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2463:23:2463:42 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:2463:30:2463:41 | "unexpected" | | {EXTERNAL LOCATION} | & | -| main.rs:2463:30:2463:41 | "unexpected" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2463:30:2463:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2463:30:2463:41 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2464:13:2464:13 | _ | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2464:13:2464:13 | _ | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:2464:13:2464:13 | _ | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2464:18:2464:35 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:2464:25:2464:34 | "expected" | | {EXTERNAL LOCATION} | & | -| main.rs:2464:25:2464:34 | "expected" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2464:25:2464:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2464:25:2464:34 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2466:13:2466:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2466:17:2466:20 | pair | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2466:17:2466:20 | pair | T0 | {EXTERNAL LOCATION} | i32 | -| main.rs:2466:17:2466:20 | pair | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2466:17:2466:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2468:13:2468:13 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2468:13:2468:13 | y | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2468:13:2468:13 | y | TRef.T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2468:13:2468:13 | y | TRef.T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2468:17:2468:31 | &... | | {EXTERNAL LOCATION} | & | -| main.rs:2468:17:2468:31 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2468:17:2468:31 | &... | TRef.T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2468:17:2468:31 | &... | TRef.T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2468:18:2468:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2468:18:2468:31 | ...::get_pair(...) | T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2468:18:2468:31 | ...::get_pair(...) | T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2469:9:2469:9 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2469:9:2469:9 | y | TRef | {EXTERNAL LOCATION} | (T_2) | -| main.rs:2469:9:2469:9 | y | TRef.T0 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2469:9:2469:9 | y | TRef.T1 | main.rs:2426:5:2427:16 | S1 | -| main.rs:2469:9:2469:11 | y.0 | | main.rs:2426:5:2427:16 | S1 | -| main.rs:2469:9:2469:17 | ... .foo() | | {EXTERNAL LOCATION} | () | -| main.rs:2475:27:2497:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2476:13:2476:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2476:13:2476:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2476:13:2476:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2476:27:2476:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2476:27:2476:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2476:27:2476:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2476:36:2476:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:9:2487:9 | match boxed_value { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2479:15:2479:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2479:15:2479:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2479:15:2479:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2480:13:2480:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2480:13:2480:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2480:13:2480:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2480:17:2480:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2480:24:2482:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2481:17:2481:37 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:2481:26:2481:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2481:26:2481:36 | "Boxed 100\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2481:26:2481:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2481:26:2481:36 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2481:26:2481:36 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2483:13:2483:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2483:13:2483:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2483:13:2483:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2483:22:2486:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2485:17:2485:52 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:2485:26:2485:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2485:26:2485:42 | "Boxed value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2485:26:2485:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2485:26:2485:51 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2485:26:2485:51 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2490:13:2490:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2490:13:2490:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:13:2490:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2490:13:2490:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:13:2490:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2490:26:2490:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2490:26:2490:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:26:2490:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2490:26:2490:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:26:2490:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2490:35:2490:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2490:35:2490:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2490:35:2490:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2490:44:2490:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2491:9:2496:9 | match nested_box { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2491:15:2491:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2491:15:2491:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2491:15:2491:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2491:15:2491:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2491:15:2491:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2492:13:2492:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2492:13:2492:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2492:13:2492:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2492:13:2492:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2492:13:2492:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2492:26:2495:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2494:17:2494:60 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:2494:26:2494:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2494:26:2494:43 | "Nested boxed: {}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2494:26:2494:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2494:26:2494:59 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2494:26:2494:59 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2506:36:2508:9 | { ... } | | main.rs:2503:5:2503:22 | Path | -| main.rs:2507:13:2507:19 | Path {...} | | main.rs:2503:5:2503:22 | Path | -| main.rs:2510:29:2510:33 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2510:29:2510:33 | SelfParam | TRef | main.rs:2503:5:2503:22 | Path | -| main.rs:2510:59:2512:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:2510:59:2512:9 | { ... } | E | {EXTERNAL LOCATION} | () | -| main.rs:2510:59:2512:9 | { ... } | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2511:13:2511:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2511:13:2511:30 | Ok(...) | E | {EXTERNAL LOCATION} | () | -| main.rs:2511:13:2511:30 | Ok(...) | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2511:16:2511:29 | ...::new(...) | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2518:39:2520:9 | { ... } | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2519:13:2519:22 | PathBuf {...} | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2528:18:2528:22 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2528:18:2528:22 | SelfParam | TRef | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2528:34:2532:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2528:34:2532:9 | { ... } | TRef | main.rs:2503:5:2503:22 | Path | -| main.rs:2530:33:2530:43 | ...::new(...) | | main.rs:2503:5:2503:22 | Path | -| main.rs:2531:13:2531:17 | &path | | {EXTERNAL LOCATION} | & | -| main.rs:2531:13:2531:17 | &path | TRef | main.rs:2503:5:2503:22 | Path | -| main.rs:2531:14:2531:17 | path | | main.rs:2503:5:2503:22 | Path | -| main.rs:2535:16:2543:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2536:13:2536:17 | path1 | | main.rs:2503:5:2503:22 | Path | -| main.rs:2536:21:2536:31 | ...::new(...) | | main.rs:2503:5:2503:22 | Path | -| main.rs:2537:13:2537:17 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2537:13:2537:17 | path2 | E | {EXTERNAL LOCATION} | () | -| main.rs:2537:13:2537:17 | path2 | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2537:21:2537:25 | path1 | | main.rs:2503:5:2503:22 | Path | -| main.rs:2537:21:2537:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2537:21:2537:40 | path1.canonicalize() | E | {EXTERNAL LOCATION} | () | -| main.rs:2537:21:2537:40 | path1.canonicalize() | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2538:13:2538:17 | path3 | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2538:21:2538:25 | path2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2538:21:2538:25 | path2 | E | {EXTERNAL LOCATION} | () | -| main.rs:2538:21:2538:25 | path2 | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2538:21:2538:34 | path2.unwrap() | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2540:13:2540:20 | pathbuf1 | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2540:24:2540:37 | ...::new(...) | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2541:13:2541:20 | pathbuf2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2541:13:2541:20 | pathbuf2 | E | {EXTERNAL LOCATION} | () | -| main.rs:2541:13:2541:20 | pathbuf2 | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2541:24:2541:31 | pathbuf1 | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2541:24:2541:46 | pathbuf1.canonicalize() | | {EXTERNAL LOCATION} | Result | -| main.rs:2541:24:2541:46 | pathbuf1.canonicalize() | E | {EXTERNAL LOCATION} | () | -| main.rs:2541:24:2541:46 | pathbuf1.canonicalize() | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2542:13:2542:20 | pathbuf3 | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2542:24:2542:31 | pathbuf2 | | {EXTERNAL LOCATION} | Result | -| main.rs:2542:24:2542:31 | pathbuf2 | E | {EXTERNAL LOCATION} | () | -| main.rs:2542:24:2542:31 | pathbuf2 | T | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2542:24:2542:40 | pathbuf2.unwrap() | | main.rs:2515:5:2515:25 | PathBuf | -| main.rs:2548:14:2548:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2548:14:2548:18 | SelfParam | TRef | main.rs:2547:5:2549:5 | Self [trait MyTrait] | -| main.rs:2555:14:2555:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2555:14:2555:18 | SelfParam | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2555:14:2555:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2555:28:2557:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2556:13:2556:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2556:13:2556:16 | self | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2556:13:2556:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2556:13:2556:18 | self.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:14:2561:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2561:14:2561:18 | SelfParam | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2561:14:2561:18 | SelfParam | TRef.T | main.rs:2551:5:2552:19 | S | -| main.rs:2561:14:2561:18 | SelfParam | TRef.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2561:28:2563:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:13:2562:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2562:13:2562:16 | self | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2562:13:2562:16 | self | TRef.T | main.rs:2551:5:2552:19 | S | -| main.rs:2562:13:2562:16 | self | TRef.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:13:2562:18 | self.0 | | main.rs:2551:5:2552:19 | S | -| main.rs:2562:13:2562:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2562:13:2562:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2567:15:2567:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2567:15:2567:19 | SelfParam | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2567:15:2567:19 | SelfParam | TRef.T | main.rs:2566:10:2566:16 | T | -| main.rs:2567:33:2569:9 | { ... } | | main.rs:2551:5:2552:19 | S | -| main.rs:2567:33:2569:9 | { ... } | T | main.rs:2551:5:2552:19 | S | -| main.rs:2567:33:2569:9 | { ... } | T.T | main.rs:2566:10:2566:16 | T | -| main.rs:2568:13:2568:24 | S(...) | | main.rs:2551:5:2552:19 | S | -| main.rs:2568:13:2568:24 | S(...) | T | main.rs:2551:5:2552:19 | S | -| main.rs:2568:13:2568:24 | S(...) | T.T | main.rs:2566:10:2566:16 | T | -| main.rs:2568:15:2568:23 | S(...) | | main.rs:2551:5:2552:19 | S | -| main.rs:2568:15:2568:23 | S(...) | T | main.rs:2566:10:2566:16 | T | -| main.rs:2568:17:2568:20 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2568:17:2568:20 | self | TRef | main.rs:2551:5:2552:19 | S | -| main.rs:2568:17:2568:20 | self | TRef.T | main.rs:2566:10:2566:16 | T | -| main.rs:2568:17:2568:22 | self.0 | | main.rs:2566:10:2566:16 | T | -| main.rs:2572:14:2572:14 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2572:48:2589:5 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2572:48:2589:5 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2572:48:2589:5 | { ... } | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2572:48:2589:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:13:2573:13 | x | | main.rs:2551:5:2552:19 | S | -| main.rs:2573:13:2573:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:17:2578:9 | if b {...} else {...} | | main.rs:2551:5:2552:19 | S | -| main.rs:2573:17:2578:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2573:20:2573:20 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2573:22:2576:9 | { ... } | | main.rs:2551:5:2552:19 | S | -| main.rs:2573:22:2576:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2574:17:2574:17 | y | | main.rs:2551:5:2552:19 | S | -| main.rs:2574:17:2574:17 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2574:21:2574:38 | ...::default(...) | | main.rs:2551:5:2552:19 | S | -| main.rs:2574:21:2574:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2575:13:2575:13 | y | | main.rs:2551:5:2552:19 | S | -| main.rs:2575:13:2575:13 | y | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2576:16:2578:9 | { ... } | | main.rs:2551:5:2552:19 | S | -| main.rs:2576:16:2578:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:13:2577:16 | S(...) | | main.rs:2551:5:2552:19 | S | -| main.rs:2577:13:2577:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2577:15:2577:15 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:13:2582:13 | x | | main.rs:2551:5:2552:19 | S | -| main.rs:2582:13:2582:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:17:2582:20 | S(...) | | main.rs:2551:5:2552:19 | S | -| main.rs:2582:17:2582:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2582:19:2582:19 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2583:9:2588:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | -| main.rs:2583:9:2588:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | -| main.rs:2583:9:2588:9 | if b {...} else {...} | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2583:9:2588:9 | if b {...} else {...} | T | main.rs:2551:5:2552:19 | S | -| main.rs:2583:9:2588:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2583:9:2588:9 | if b {...} else {...} | T.T | main.rs:2551:5:2552:19 | S | -| main.rs:2583:9:2588:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2583:9:2588:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2583:12:2583:12 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2583:14:2586:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2583:14:2586:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2583:14:2586:9 | { ... } | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2583:14:2586:9 | { ... } | T | main.rs:2551:5:2552:19 | S | -| main.rs:2583:14:2586:9 | { ... } | T.T | main.rs:2551:5:2552:19 | S | -| main.rs:2583:14:2586:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2583:14:2586:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:17:2584:17 | x | | main.rs:2551:5:2552:19 | S | -| main.rs:2584:17:2584:17 | x | T | main.rs:2551:5:2552:19 | S | -| main.rs:2584:17:2584:17 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:21:2584:21 | x | | main.rs:2551:5:2552:19 | S | -| main.rs:2584:21:2584:21 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2584:21:2584:26 | x.m2() | | main.rs:2551:5:2552:19 | S | -| main.rs:2584:21:2584:26 | x.m2() | T | main.rs:2551:5:2552:19 | S | -| main.rs:2584:21:2584:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2585:13:2585:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2585:13:2585:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2585:13:2585:23 | ...::new(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2585:13:2585:23 | ...::new(...) | T | main.rs:2551:5:2552:19 | S | -| main.rs:2585:13:2585:23 | ...::new(...) | T.T | main.rs:2551:5:2552:19 | S | -| main.rs:2585:13:2585:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2585:13:2585:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2585:22:2585:22 | x | | main.rs:2551:5:2552:19 | S | -| main.rs:2585:22:2585:22 | x | T | main.rs:2551:5:2552:19 | S | -| main.rs:2585:22:2585:22 | x | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2586:16:2588:9 | { ... } | | {EXTERNAL LOCATION} | Box | -| main.rs:2586:16:2588:9 | { ... } | A | {EXTERNAL LOCATION} | Global | -| main.rs:2586:16:2588:9 | { ... } | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2586:16:2588:9 | { ... } | T | main.rs:2551:5:2552:19 | S | -| main.rs:2586:16:2588:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2586:16:2588:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2587:13:2587:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2587:13:2587:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2587:13:2587:23 | ...::new(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2587:13:2587:23 | ...::new(...) | T | main.rs:2551:5:2552:19 | S | -| main.rs:2587:13:2587:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2587:13:2587:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2587:22:2587:22 | x | | main.rs:2551:5:2552:19 | S | -| main.rs:2587:22:2587:22 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2593:22:2597:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2594:18:2594:18 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2594:33:2596:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:13:2595:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:13:2595:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:2595:17:2595:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2602:11:2602:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2602:30:2610:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2604:13:2604:13 | a | | {EXTERNAL LOCATION} | () | -| main.rs:2604:17:2608:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2605:13:2607:13 | if cond {...} | | {EXTERNAL LOCATION} | () | -| main.rs:2605:16:2605:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2605:21:2607:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2606:24:2606:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2609:9:2609:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2613:20:2620:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2616:26:2616:27 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2618:9:2618:30 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:2618:18:2618:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2618:18:2618:26 | "b: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2618:18:2618:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2618:18:2618:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2618:18:2618:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2619:9:2619:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2622:20:2624:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2623:16:2623:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2627:11:2627:14 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2627:30:2635:5 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2628:13:2628:13 | a | | {EXTERNAL LOCATION} | () | -| main.rs:2628:17:2632:9 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2629:13:2631:13 | if cond {...} | | {EXTERNAL LOCATION} | () | -| main.rs:2629:16:2629:19 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:2629:21:2631:13 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2630:24:2630:25 | 12 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2633:9:2633:30 | MacroExpr | | {EXTERNAL LOCATION} | () | -| main.rs:2633:18:2633:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | -| main.rs:2633:18:2633:26 | "a: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| main.rs:2633:18:2633:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2633:18:2633:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2633:18:2633:29 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2633:29:2633:29 | a | | {EXTERNAL LOCATION} | () | -| main.rs:2634:9:2634:9 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2643:14:2643:17 | SelfParam | | main.rs:2639:5:2640:13 | S | -| main.rs:2643:20:2643:21 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2646:41:2648:5 | { ... } | | main.rs:2646:22:2646:31 | T | -| main.rs:2647:9:2647:26 | ...::default(...) | | main.rs:2646:22:2646:31 | T | -| main.rs:2650:16:2703:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2651:13:2651:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2651:13:2651:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2651:17:2651:20 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2651:17:2651:20 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2652:13:2652:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2652:13:2652:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2652:30:2652:30 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2652:30:2652:30 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2653:13:2653:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2653:13:2653:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2653:17:2653:35 | ...::None | | {EXTERNAL LOCATION} | Option | -| main.rs:2653:17:2653:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2654:13:2654:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2654:13:2654:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2654:17:2654:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | -| main.rs:2654:17:2654:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2656:26:2656:28 | opt | | {EXTERNAL LOCATION} | Option | -| main.rs:2656:26:2656:28 | opt | T | main.rs:2656:23:2656:23 | T | -| main.rs:2656:42:2656:42 | x | | main.rs:2656:23:2656:23 | T | -| main.rs:2656:48:2656:49 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2658:13:2658:13 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2658:13:2658:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2658:17:2658:20 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2658:17:2658:20 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:9:2659:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2659:20:2659:20 | x | | {EXTERNAL LOCATION} | Option | -| main.rs:2659:20:2659:20 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2659:23:2659:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2666:13:2666:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2666:13:2666:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2666:13:2666:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2666:17:2666:39 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2666:17:2666:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2666:17:2666:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2666:37:2666:37 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2667:13:2667:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2667:13:2667:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2667:13:2667:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2667:40:2667:40 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2667:40:2667:40 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2667:40:2667:40 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2668:13:2668:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2668:13:2668:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2668:13:2668:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2668:17:2668:52 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2668:17:2668:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2668:17:2668:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2668:50:2668:50 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2670:13:2670:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2670:13:2670:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2670:13:2670:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2670:17:2672:9 | ...::B::<...> {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2671:20:2671:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2674:29:2674:29 | e | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2674:29:2674:29 | e | T1 | main.rs:2674:26:2674:26 | T | -| main.rs:2674:29:2674:29 | e | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2674:53:2674:53 | x | | main.rs:2674:26:2674:26 | T | -| main.rs:2674:59:2674:60 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2677:13:2677:13 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2677:13:2677:13 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:13:2677:13 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2677:17:2679:9 | ...::B {...} | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2677:17:2679:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2677:17:2679:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2678:20:2678:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | -| main.rs:2680:9:2680:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2680:23:2680:23 | x | | main.rs:2661:9:2664:9 | MyEither | -| main.rs:2680:23:2680:23 | x | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2680:23:2680:23 | x | T2 | {EXTERNAL LOCATION} | String | -| main.rs:2680:26:2680:26 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2682:13:2682:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2682:13:2682:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2682:13:2682:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2682:17:2682:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2682:17:2682:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2682:17:2682:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2682:28:2682:28 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2683:13:2683:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2683:13:2683:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2683:13:2683:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2683:38:2683:38 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2683:38:2683:38 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2683:38:2683:38 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2684:13:2684:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2684:13:2684:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2684:13:2684:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2684:17:2684:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2684:17:2684:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2684:17:2684:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2684:43:2684:43 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2685:13:2685:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2685:13:2685:13 | x | E | {EXTERNAL LOCATION} | String | -| main.rs:2685:13:2685:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | -| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2685:43:2685:43 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2687:29:2687:31 | res | | {EXTERNAL LOCATION} | Result | -| main.rs:2687:29:2687:31 | res | E | main.rs:2687:26:2687:26 | E | -| main.rs:2687:29:2687:31 | res | T | main.rs:2687:23:2687:23 | T | -| main.rs:2687:48:2687:48 | x | | main.rs:2687:26:2687:26 | E | -| main.rs:2687:54:2687:55 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2689:13:2689:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2689:13:2689:13 | x | E | {EXTERNAL LOCATION} | bool | -| main.rs:2689:13:2689:13 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:17:2689:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:2689:17:2689:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | -| main.rs:2689:17:2689:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2689:28:2689:28 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2690:9:2690:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2690:20:2690:20 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:2690:20:2690:20 | x | E | {EXTERNAL LOCATION} | bool | -| main.rs:2690:20:2690:20 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2690:23:2690:27 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2692:17:2692:17 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2692:17:2692:17 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2692:17:2692:17 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2692:21:2692:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2692:21:2692:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2692:21:2692:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2693:9:2693:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2693:9:2693:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2693:9:2693:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2693:9:2693:17 | x.push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2693:16:2693:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2695:13:2695:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:2695:17:2695:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:9:2696:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2696:9:2696:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2696:9:2696:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2696:9:2696:17 | x.push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2696:16:2696:16 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:2698:13:2698:13 | s | | main.rs:2639:5:2640:13 | S | -| main.rs:2698:17:2698:34 | ...::default(...) | | main.rs:2639:5:2640:13 | S | -| main.rs:2699:9:2699:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2699:14:2699:14 | s | | main.rs:2639:5:2640:13 | S | -| main.rs:2701:13:2701:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:2701:17:2701:31 | free_function(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2702:9:2702:9 | x | | {EXTERNAL LOCATION} | Vec | -| main.rs:2702:9:2702:9 | x | A | {EXTERNAL LOCATION} | Global | -| main.rs:2702:9:2702:9 | x | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2702:9:2702:17 | x.push(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2702:16:2702:16 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:2709:14:2709:17 | SelfParam | | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2712:14:2712:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2712:14:2712:18 | SelfParam | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2712:21:2712:25 | other | | {EXTERNAL LOCATION} | & | -| main.rs:2712:21:2712:25 | other | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2712:44:2714:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2712:44:2714:9 | { ... } | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2713:13:2713:16 | self | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2713:13:2713:20 | self.f() | | {EXTERNAL LOCATION} | & | -| main.rs:2713:13:2713:20 | self.f() | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] | -| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | -| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | i32 | -| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | usize | -| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | usize | -| main.rs:2733:14:2733:17 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2733:14:2733:17 | SelfParam | TRef | main.rs:2731:10:2731:10 | T | -| main.rs:2733:28:2735:9 | { ... } | | {EXTERNAL LOCATION} | & | -| main.rs:2733:28:2735:9 | { ... } | TRef | main.rs:2731:10:2731:10 | T | -| main.rs:2734:13:2734:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2734:13:2734:16 | self | TRef | main.rs:2731:10:2731:10 | T | -| main.rs:2738:25:2742:5 | { ... } | | {EXTERNAL LOCATION} | usize | -| main.rs:2739:17:2739:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:17:2739:17 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2739:21:2739:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2739:21:2739:21 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2740:9:2740:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:9:2740:9 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2740:9:2740:17 | ... = ... | | {EXTERNAL LOCATION} | () | -| main.rs:2740:13:2740:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:13 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2740:13:2740:17 | x.f() | | {EXTERNAL LOCATION} | i32 | -| main.rs:2740:13:2740:17 | x.f() | | {EXTERNAL LOCATION} | usize | -| main.rs:2741:9:2741:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2741:9:2741:9 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2744:12:2752:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2745:13:2745:13 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2745:24:2745:24 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2745:24:2745:24 | 0 | | {EXTERNAL LOCATION} | usize | -| main.rs:2746:13:2746:13 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2746:13:2746:13 | y | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2746:17:2746:18 | &1 | | {EXTERNAL LOCATION} | & | -| main.rs:2746:17:2746:18 | &1 | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2746:18:2746:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2747:13:2747:13 | z | | {EXTERNAL LOCATION} | & | -| main.rs:2747:13:2747:13 | z | TRef | {EXTERNAL LOCATION} | usize | -| main.rs:2747:17:2747:17 | x | | {EXTERNAL LOCATION} | usize | -| main.rs:2747:17:2747:22 | x.g(...) | | {EXTERNAL LOCATION} | & | -| main.rs:2747:17:2747:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize | -| main.rs:2747:21:2747:21 | y | | {EXTERNAL LOCATION} | & | -| main.rs:2747:21:2747:21 | y | TRef | {EXTERNAL LOCATION} | i32 | -| main.rs:2749:13:2749:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2749:17:2749:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2750:13:2750:13 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2750:24:2750:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2750:24:2750:24 | 1 | | {EXTERNAL LOCATION} | usize | -| main.rs:2751:13:2751:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:2751:17:2751:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2751:17:2751:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2751:23:2751:23 | y | | {EXTERNAL LOCATION} | usize | -| main.rs:2766:22:2766:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2766:22:2766:26 | SelfParam | TRef | main.rs:2765:5:2767:5 | Self [trait Container] | -| main.rs:2769:34:2769:34 | c | | {EXTERNAL LOCATION} | & | -| main.rs:2769:34:2769:34 | c | TRef | main.rs:2769:15:2769:31 | T | -| main.rs:2769:49:2771:5 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:2770:9:2770:9 | c | | {EXTERNAL LOCATION} | & | -| main.rs:2770:9:2770:9 | c | TRef | main.rs:2769:15:2769:31 | T | -| main.rs:2770:9:2770:21 | c.get_input() | | {EXTERNAL LOCATION} | i64 | -| main.rs:2770:9:2770:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:2770:26:2770:27 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2774:22:2774:26 | SelfParam | | {EXTERNAL LOCATION} | & | -| main.rs:2774:22:2774:26 | SelfParam | TRef | main.rs:2763:5:2763:21 | Gen | -| main.rs:2774:22:2774:26 | SelfParam | TRef.T | main.rs:2773:10:2773:17 | GT | -| main.rs:2774:35:2776:9 | { ... } | | main.rs:2773:10:2773:17 | GT | -| main.rs:2775:13:2775:16 | self | | {EXTERNAL LOCATION} | & | -| main.rs:2775:13:2775:16 | self | TRef | main.rs:2763:5:2763:21 | Gen | -| main.rs:2775:13:2775:16 | self | TRef.T | main.rs:2773:10:2773:17 | GT | -| main.rs:2775:13:2775:18 | self.0 | | main.rs:2773:10:2773:17 | GT | -| main.rs:2779:15:2783:5 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2780:13:2780:13 | v | | {EXTERNAL LOCATION} | i64 | -| main.rs:2780:17:2780:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2781:13:2781:13 | g | | main.rs:2763:5:2763:21 | Gen | -| main.rs:2781:13:2781:13 | g | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2781:17:2781:22 | Gen(...) | | main.rs:2763:5:2763:21 | Gen | -| main.rs:2781:17:2781:22 | Gen(...) | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2781:21:2781:21 | v | | {EXTERNAL LOCATION} | i64 | -| main.rs:2782:13:2782:13 | _ | | {EXTERNAL LOCATION} | bool | -| main.rs:2782:17:2782:26 | my_get(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2782:24:2782:25 | &g | | {EXTERNAL LOCATION} | & | -| main.rs:2782:24:2782:25 | &g | TRef | main.rs:2763:5:2763:21 | Gen | -| main.rs:2782:24:2782:25 | &g | TRef.T | {EXTERNAL LOCATION} | i64 | -| main.rs:2782:25:2782:25 | g | | main.rs:2763:5:2763:21 | Gen | -| main.rs:2782:25:2782:25 | g | T | {EXTERNAL LOCATION} | i64 | -| main.rs:2786:11:2821:1 | { ... } | | {EXTERNAL LOCATION} | () | -| main.rs:2787:5:2787:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2788:5:2788:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2789:5:2789:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2789:20:2789:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2789:41:2789:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2790:5:2790:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2791:5:2791:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2792:5:2792:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2793:5:2793:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2794:5:2794:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2795:5:2795:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2796:5:2796:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2797:5:2797:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2798:5:2798:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2799:5:2799:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2800:5:2800:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2801:5:2801:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2802:5:2802:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2803:5:2803:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2804:5:2804:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2805:5:2805:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | -| main.rs:2805:5:2805:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | -| main.rs:2806:5:2806:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2807:5:2807:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2808:5:2808:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2809:5:2809:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2810:5:2810:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2811:5:2811:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2812:5:2812:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2813:5:2813:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2814:5:2814:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2815:5:2815:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2816:5:2816:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2817:5:2817:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2818:5:2818:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| main.rs:2819:5:2819:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2819:5:2819:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2819:5:2819:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait | -| main.rs:2819:5:2819:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | -| main.rs:2819:16:2819:19 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:2820:5:2820:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2361:17:2364:9 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2361:28:2361:34 | matrix1 | | {EXTERNAL LOCATION} | Vec | +| main.rs:2361:28:2361:34 | matrix1 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2361:36:2364:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2362:13:2363:13 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2362:29:2363:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2366:17:2366:20 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2366:17:2366:20 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2366:17:2366:20 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2366:17:2366:20 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2366:17:2366:20 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2366:17:2366:20 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2366:17:2366:20 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2366:24:2366:55 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2366:24:2366:55 | ...::new(...) | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2366:24:2366:55 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2366:24:2366:55 | ...::new(...) | V | {EXTERNAL LOCATION} | Box | +| main.rs:2366:24:2366:55 | ...::new(...) | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2366:24:2366:55 | ...::new(...) | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2366:24:2366:55 | ...::new(...) | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2367:9:2367:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2367:9:2367:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2367:9:2367:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2367:9:2367:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2367:9:2367:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2367:9:2367:12 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2367:9:2367:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2367:9:2367:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2367:9:2367:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2367:9:2367:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2367:9:2367:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | +| main.rs:2367:9:2367:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2367:21:2367:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2367:24:2367:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2367:24:2367:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2367:24:2367:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:2367:24:2367:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2367:33:2367:37 | "one" | | {EXTERNAL LOCATION} | & | +| main.rs:2367:33:2367:37 | "one" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2368:9:2368:12 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2368:9:2368:12 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2368:9:2368:12 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2368:9:2368:12 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2368:9:2368:12 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2368:9:2368:12 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2368:9:2368:12 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2368:9:2368:39 | map1.insert(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2368:9:2368:39 | map1.insert(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2368:9:2368:39 | map1.insert(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2368:9:2368:39 | map1.insert(...) | T.T | {EXTERNAL LOCATION} | & | +| main.rs:2368:9:2368:39 | map1.insert(...) | T.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2368:21:2368:21 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2368:24:2368:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2368:24:2368:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2368:24:2368:38 | ...::new(...) | T | {EXTERNAL LOCATION} | & | +| main.rs:2368:24:2368:38 | ...::new(...) | T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2368:33:2368:37 | "two" | | {EXTERNAL LOCATION} | & | +| main.rs:2368:33:2368:37 | "two" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2369:9:2369:33 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2369:13:2369:15 | key | | {EXTERNAL LOCATION} | & | +| main.rs:2369:13:2369:15 | key | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2369:20:2369:23 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2369:20:2369:23 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2369:20:2369:23 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2369:20:2369:23 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2369:20:2369:23 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2369:20:2369:23 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2369:20:2369:23 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2369:20:2369:30 | map1.keys() | | {EXTERNAL LOCATION} | Keys | +| main.rs:2369:20:2369:30 | map1.keys() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2369:20:2369:30 | map1.keys() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2369:20:2369:30 | map1.keys() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2369:20:2369:30 | map1.keys() | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2369:20:2369:30 | map1.keys() | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2369:32:2369:33 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2370:9:2370:37 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2370:13:2370:17 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2370:13:2370:17 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2370:13:2370:17 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2370:13:2370:17 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2370:13:2370:17 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2370:22:2370:25 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2370:22:2370:25 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2370:22:2370:25 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2370:22:2370:25 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2370:22:2370:25 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2370:22:2370:25 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2370:22:2370:25 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2370:22:2370:34 | map1.values() | | {EXTERNAL LOCATION} | Values | +| main.rs:2370:22:2370:34 | map1.values() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2370:22:2370:34 | map1.values() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2370:22:2370:34 | map1.values() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2370:22:2370:34 | map1.values() | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2370:22:2370:34 | map1.values() | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2370:36:2370:37 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2371:9:2371:42 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2371:13:2371:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2371:13:2371:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | +| main.rs:2371:13:2371:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:13:2371:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | +| main.rs:2371:13:2371:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2371:13:2371:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:13:2371:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2371:13:2371:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2371:14:2371:16 | key | | {EXTERNAL LOCATION} | & | +| main.rs:2371:14:2371:16 | key | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:19:2371:23 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2371:19:2371:23 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2371:19:2371:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:19:2371:23 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2371:19:2371:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2371:29:2371:32 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2371:29:2371:32 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:29:2371:32 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2371:29:2371:32 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2371:29:2371:32 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:29:2371:32 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2371:29:2371:32 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2371:29:2371:39 | map1.iter() | | {EXTERNAL LOCATION} | Iter | +| main.rs:2371:29:2371:39 | map1.iter() | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:29:2371:39 | map1.iter() | V | {EXTERNAL LOCATION} | Box | +| main.rs:2371:29:2371:39 | map1.iter() | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:29:2371:39 | map1.iter() | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2371:29:2371:39 | map1.iter() | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2371:41:2371:42 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2372:9:2372:36 | for ... in ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2372:13:2372:24 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2372:13:2372:24 | TuplePat | T0 | {EXTERNAL LOCATION} | & | +| main.rs:2372:13:2372:24 | TuplePat | T0.TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2372:13:2372:24 | TuplePat | T1 | {EXTERNAL LOCATION} | & | +| main.rs:2372:13:2372:24 | TuplePat | T1.TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2372:13:2372:24 | TuplePat | T1.TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2372:13:2372:24 | TuplePat | T1.TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2372:13:2372:24 | TuplePat | T1.TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2372:14:2372:16 | key | | {EXTERNAL LOCATION} | & | +| main.rs:2372:14:2372:16 | key | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2372:19:2372:23 | value | | {EXTERNAL LOCATION} | & | +| main.rs:2372:19:2372:23 | value | TRef | {EXTERNAL LOCATION} | Box | +| main.rs:2372:19:2372:23 | value | TRef.A | {EXTERNAL LOCATION} | Global | +| main.rs:2372:19:2372:23 | value | TRef.T | {EXTERNAL LOCATION} | & | +| main.rs:2372:19:2372:23 | value | TRef.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2372:29:2372:33 | &map1 | | {EXTERNAL LOCATION} | & | +| main.rs:2372:29:2372:33 | &map1 | TRef | {EXTERNAL LOCATION} | HashMap | +| main.rs:2372:29:2372:33 | &map1 | TRef.K | {EXTERNAL LOCATION} | i32 | +| main.rs:2372:29:2372:33 | &map1 | TRef.S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2372:29:2372:33 | &map1 | TRef.V | {EXTERNAL LOCATION} | Box | +| main.rs:2372:29:2372:33 | &map1 | TRef.V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2372:29:2372:33 | &map1 | TRef.V.T | {EXTERNAL LOCATION} | & | +| main.rs:2372:29:2372:33 | &map1 | TRef.V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2372:30:2372:33 | map1 | | {EXTERNAL LOCATION} | HashMap | +| main.rs:2372:30:2372:33 | map1 | K | {EXTERNAL LOCATION} | i32 | +| main.rs:2372:30:2372:33 | map1 | S | {EXTERNAL LOCATION} | RandomState | +| main.rs:2372:30:2372:33 | map1 | V | {EXTERNAL LOCATION} | Box | +| main.rs:2372:30:2372:33 | map1 | V.A | {EXTERNAL LOCATION} | Global | +| main.rs:2372:30:2372:33 | map1 | V.T | {EXTERNAL LOCATION} | & | +| main.rs:2372:30:2372:33 | map1 | V.T.TRef | {EXTERNAL LOCATION} | str | +| main.rs:2372:35:2372:36 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2376:17:2376:17 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2376:26:2376:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2376:26:2376:26 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2378:13:2378:13 | _ | | {EXTERNAL LOCATION} | () | +| main.rs:2378:17:2381:9 | while ... { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2378:23:2378:23 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2378:23:2378:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2378:27:2378:28 | 10 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2379:9:2381:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2380:13:2380:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2380:13:2380:18 | ... += ... | | {EXTERNAL LOCATION} | () | +| main.rs:2380:18:2380:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2392:40:2394:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2392:40:2394:9 | { ... } | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2392:40:2394:9 | { ... } | T.T | main.rs:2391:10:2391:19 | T | +| main.rs:2393:13:2393:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2393:13:2393:16 | None | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2393:13:2393:16 | None | T.T | main.rs:2391:10:2391:19 | T | +| main.rs:2396:30:2398:9 | { ... } | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2396:30:2398:9 | { ... } | T | main.rs:2391:10:2391:19 | T | +| main.rs:2397:13:2397:28 | S1(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2397:13:2397:28 | S1(...) | T | main.rs:2391:10:2391:19 | T | +| main.rs:2397:16:2397:27 | ...::default(...) | | main.rs:2391:10:2391:19 | T | +| main.rs:2400:19:2400:22 | SelfParam | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2400:19:2400:22 | SelfParam | T | main.rs:2391:10:2391:19 | T | +| main.rs:2400:33:2402:9 | { ... } | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2400:33:2402:9 | { ... } | T | main.rs:2391:10:2391:19 | T | +| main.rs:2401:13:2401:16 | self | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2401:13:2401:16 | self | T | main.rs:2391:10:2391:19 | T | +| main.rs:2413:15:2413:15 | x | | main.rs:2413:12:2413:12 | T | +| main.rs:2413:26:2415:5 | { ... } | | main.rs:2413:12:2413:12 | T | +| main.rs:2414:9:2414:9 | x | | main.rs:2413:12:2413:12 | T | +| main.rs:2417:16:2439:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2418:13:2418:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2418:13:2418:14 | x1 | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2418:13:2418:14 | x1 | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2418:34:2418:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2418:34:2418:48 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2418:34:2418:48 | ...::assoc_fun(...) | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2419:13:2419:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2419:13:2419:14 | x2 | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2419:13:2419:14 | x2 | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2419:18:2419:38 | ...::assoc_fun(...) | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2420:13:2420:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2420:13:2420:14 | x3 | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2420:13:2420:14 | x3 | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | T | main.rs:2386:5:2386:20 | S1 | +| main.rs:2420:18:2420:32 | ...::assoc_fun(...) | T.T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2421:13:2421:14 | x4 | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2421:13:2421:14 | x4 | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2421:18:2421:48 | ...::method(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2421:18:2421:48 | ...::method(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2421:35:2421:47 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2421:35:2421:47 | ...::default(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2422:13:2422:14 | x5 | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2422:13:2422:14 | x5 | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2422:18:2422:42 | ...::method(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2422:18:2422:42 | ...::method(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2422:29:2422:41 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2422:29:2422:41 | ...::default(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2423:13:2423:14 | x6 | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2423:13:2423:14 | x6 | T4 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2423:18:2423:45 | S4::<...>(...) | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2423:18:2423:45 | S4::<...>(...) | T4 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2423:27:2423:44 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2424:13:2424:14 | x7 | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2424:13:2424:14 | x7 | T4 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2424:18:2424:23 | S4(...) | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2424:18:2424:23 | S4(...) | T4 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2424:21:2424:22 | S2 | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2425:13:2425:14 | x8 | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2425:13:2425:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2425:18:2425:22 | S4(...) | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2425:18:2425:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2425:21:2425:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2426:13:2426:14 | x9 | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2426:13:2426:14 | x9 | T4 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2426:18:2426:34 | S4(...) | | main.rs:2407:5:2407:27 | S4 | +| main.rs:2426:18:2426:34 | S4(...) | T4 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2426:21:2426:33 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2427:13:2427:15 | x10 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2427:13:2427:15 | x10 | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2427:19:2430:9 | S5::<...> {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2427:19:2430:9 | S5::<...> {...} | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2429:20:2429:37 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2431:13:2431:15 | x11 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2431:13:2431:15 | x11 | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2431:19:2431:34 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2431:19:2431:34 | S5 {...} | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2431:31:2431:32 | S2 | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2432:13:2432:15 | x12 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2432:13:2432:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2432:19:2432:33 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2432:19:2432:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2432:31:2432:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2433:13:2433:15 | x13 | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2433:13:2433:15 | x13 | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2433:19:2436:9 | S5 {...} | | main.rs:2409:5:2411:5 | S5 | +| main.rs:2433:19:2436:9 | S5 {...} | T5 | main.rs:2388:5:2389:14 | S2 | +| main.rs:2435:20:2435:32 | ...::default(...) | | main.rs:2388:5:2389:14 | S2 | +| main.rs:2437:13:2437:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2437:19:2437:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2437:30:2437:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2438:13:2438:15 | x15 | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2438:13:2438:15 | x15 | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2438:19:2438:37 | ...::default(...) | | main.rs:2386:5:2386:20 | S1 | +| main.rs:2438:19:2438:37 | ...::default(...) | T | main.rs:2388:5:2389:14 | S2 | +| main.rs:2447:35:2449:9 | { ... } | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2447:35:2449:9 | { ... } | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2447:35:2449:9 | { ... } | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2448:13:2448:26 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2448:13:2448:26 | TupleExpr | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2448:13:2448:26 | TupleExpr | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2448:14:2448:18 | S1 {...} | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2448:21:2448:25 | S1 {...} | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2450:16:2450:19 | SelfParam | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2450:22:2450:23 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2453:16:2487:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2454:13:2454:13 | a | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2454:13:2454:13 | a | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2454:13:2454:13 | a | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2454:17:2454:30 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2454:17:2454:30 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2454:17:2454:30 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:17:2455:17 | b | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2455:17:2455:17 | b | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:17:2455:17 | b | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:21:2455:34 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2455:21:2455:34 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2455:21:2455:34 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:13:2456:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2456:13:2456:18 | TuplePat | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:13:2456:18 | TuplePat | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:14:2456:14 | c | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:17:2456:17 | d | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:22:2456:35 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2456:22:2456:35 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2456:22:2456:35 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:13:2457:22 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2457:13:2457:22 | TuplePat | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:13:2457:22 | TuplePat | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:18:2457:18 | e | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:21:2457:21 | f | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:26:2457:39 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2457:26:2457:39 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2457:26:2457:39 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:13:2458:26 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2458:13:2458:26 | TuplePat | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:13:2458:26 | TuplePat | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:18:2458:18 | g | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:25:2458:25 | h | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:30:2458:43 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2458:30:2458:43 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2458:30:2458:43 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2460:9:2460:9 | a | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2460:9:2460:9 | a | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2460:9:2460:9 | a | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2460:9:2460:11 | a.0 | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2460:9:2460:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2461:9:2461:9 | b | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2461:9:2461:9 | b | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2461:9:2461:9 | b | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2461:9:2461:11 | b.1 | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2461:9:2461:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2462:9:2462:9 | c | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2462:9:2462:15 | c.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2463:9:2463:9 | d | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2463:9:2463:15 | d.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2464:9:2464:9 | e | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2464:9:2464:15 | e.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2465:9:2465:9 | f | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2465:9:2465:15 | f.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2466:9:2466:9 | g | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2466:9:2466:15 | g.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2467:9:2467:9 | h | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2467:9:2467:15 | h.foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2472:13:2472:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2472:17:2472:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2473:13:2473:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2473:17:2473:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2474:13:2474:16 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2474:13:2474:16 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2474:13:2474:16 | pair | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2474:20:2474:25 | TupleExpr | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2474:20:2474:25 | TupleExpr | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2474:20:2474:25 | TupleExpr | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2474:21:2474:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2474:24:2474:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2475:13:2475:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2475:22:2475:25 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2475:22:2475:25 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2475:22:2475:25 | pair | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2475:22:2475:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2476:13:2476:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2476:23:2476:26 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2476:23:2476:26 | pair | T0 | {EXTERNAL LOCATION} | i64 | +| main.rs:2476:23:2476:26 | pair | T1 | {EXTERNAL LOCATION} | bool | +| main.rs:2476:23:2476:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2478:13:2478:16 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2478:13:2478:16 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2478:13:2478:16 | pair | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2478:20:2478:25 | [...] | | {EXTERNAL LOCATION} | [;] | +| main.rs:2478:20:2478:25 | [...] | TArray | {EXTERNAL LOCATION} | i32 | +| main.rs:2478:20:2478:32 | ... .into() | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2478:20:2478:32 | ... .into() | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2478:20:2478:32 | ... .into() | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2478:21:2478:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2478:24:2478:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2479:9:2482:9 | match pair { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2479:15:2479:18 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2479:15:2479:18 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2479:15:2479:18 | pair | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2480:13:2480:18 | TuplePat | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2480:13:2480:18 | TuplePat | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2480:13:2480:18 | TuplePat | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2480:14:2480:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2480:17:2480:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2480:23:2480:42 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2480:30:2480:41 | "unexpected" | | {EXTERNAL LOCATION} | & | +| main.rs:2480:30:2480:41 | "unexpected" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2480:30:2480:41 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2480:30:2480:41 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2481:13:2481:13 | _ | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2481:13:2481:13 | _ | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2481:13:2481:13 | _ | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2481:18:2481:35 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2481:25:2481:34 | "expected" | | {EXTERNAL LOCATION} | & | +| main.rs:2481:25:2481:34 | "expected" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2481:25:2481:34 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2481:25:2481:34 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2483:13:2483:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2483:17:2483:20 | pair | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2483:17:2483:20 | pair | T0 | {EXTERNAL LOCATION} | i32 | +| main.rs:2483:17:2483:20 | pair | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2483:17:2483:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2485:13:2485:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2485:13:2485:13 | y | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2485:13:2485:13 | y | TRef.T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2485:13:2485:13 | y | TRef.T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2485:17:2485:31 | &... | | {EXTERNAL LOCATION} | & | +| main.rs:2485:17:2485:31 | &... | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2485:17:2485:31 | &... | TRef.T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2485:17:2485:31 | &... | TRef.T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2485:18:2485:31 | ...::get_pair(...) | | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2485:18:2485:31 | ...::get_pair(...) | T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2485:18:2485:31 | ...::get_pair(...) | T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2486:9:2486:9 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2486:9:2486:9 | y | TRef | {EXTERNAL LOCATION} | (T_2) | +| main.rs:2486:9:2486:9 | y | TRef.T0 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2486:9:2486:9 | y | TRef.T1 | main.rs:2443:5:2444:16 | S1 | +| main.rs:2486:9:2486:11 | y.0 | | main.rs:2443:5:2444:16 | S1 | +| main.rs:2486:9:2486:17 | ... .foo() | | {EXTERNAL LOCATION} | () | +| main.rs:2492:27:2514:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2493:13:2493:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2493:13:2493:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2493:13:2493:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2493:27:2493:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2493:27:2493:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2493:27:2493:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2493:36:2493:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2496:9:2504:9 | match boxed_value { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2496:15:2496:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2496:15:2496:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2496:15:2496:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:13:2497:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2497:13:2497:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2497:13:2497:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:17:2497:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2497:24:2499:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2498:17:2498:37 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2498:26:2498:36 | "Boxed 100\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2498:26:2498:36 | "Boxed 100\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2498:26:2498:36 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2498:26:2498:36 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2498:26:2498:36 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2500:13:2500:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2500:13:2500:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2500:13:2500:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2500:22:2503:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2502:17:2502:52 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2502:26:2502:42 | "Boxed value: {}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2502:26:2502:42 | "Boxed value: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2502:26:2502:51 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2502:26:2502:51 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2502:26:2502:51 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2507:13:2507:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2507:13:2507:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:13:2507:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2507:13:2507:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:13:2507:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:26:2507:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2507:26:2507:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:26:2507:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2507:26:2507:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:26:2507:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:35:2507:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2507:35:2507:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2507:35:2507:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2507:44:2507:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2508:9:2513:9 | match nested_box { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2508:15:2508:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2508:15:2508:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2508:15:2508:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2508:15:2508:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2508:15:2508:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:13:2509:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2509:13:2509:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2509:13:2509:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2509:13:2509:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2509:13:2509:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2509:26:2512:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2511:17:2511:60 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2511:26:2511:43 | "Nested boxed: {}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2511:26:2511:43 | "Nested boxed: {}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2511:26:2511:59 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2511:26:2511:59 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2511:26:2511:59 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2523:36:2525:9 | { ... } | | main.rs:2520:5:2520:22 | Path | +| main.rs:2524:13:2524:19 | Path {...} | | main.rs:2520:5:2520:22 | Path | +| main.rs:2527:29:2527:33 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2527:29:2527:33 | SelfParam | TRef | main.rs:2520:5:2520:22 | Path | +| main.rs:2527:59:2529:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:2527:59:2529:9 | { ... } | E | {EXTERNAL LOCATION} | () | +| main.rs:2527:59:2529:9 | { ... } | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2528:13:2528:30 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2528:13:2528:30 | Ok(...) | E | {EXTERNAL LOCATION} | () | +| main.rs:2528:13:2528:30 | Ok(...) | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2528:16:2528:29 | ...::new(...) | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2535:39:2537:9 | { ... } | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2536:13:2536:22 | PathBuf {...} | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2545:18:2545:22 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2545:18:2545:22 | SelfParam | TRef | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2545:34:2549:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2545:34:2549:9 | { ... } | TRef | main.rs:2520:5:2520:22 | Path | +| main.rs:2547:33:2547:43 | ...::new(...) | | main.rs:2520:5:2520:22 | Path | +| main.rs:2548:13:2548:17 | &path | | {EXTERNAL LOCATION} | & | +| main.rs:2548:13:2548:17 | &path | TRef | main.rs:2520:5:2520:22 | Path | +| main.rs:2548:14:2548:17 | path | | main.rs:2520:5:2520:22 | Path | +| main.rs:2552:16:2560:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2553:13:2553:17 | path1 | | main.rs:2520:5:2520:22 | Path | +| main.rs:2553:21:2553:31 | ...::new(...) | | main.rs:2520:5:2520:22 | Path | +| main.rs:2554:13:2554:17 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2554:13:2554:17 | path2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2554:13:2554:17 | path2 | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2554:21:2554:25 | path1 | | main.rs:2520:5:2520:22 | Path | +| main.rs:2554:21:2554:40 | path1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2554:21:2554:40 | path1.canonicalize() | E | {EXTERNAL LOCATION} | () | +| main.rs:2554:21:2554:40 | path1.canonicalize() | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2555:13:2555:17 | path3 | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2555:21:2555:25 | path2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2555:21:2555:25 | path2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2555:21:2555:25 | path2 | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2555:21:2555:34 | path2.unwrap() | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2557:13:2557:20 | pathbuf1 | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2557:24:2557:37 | ...::new(...) | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2558:13:2558:20 | pathbuf2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2558:13:2558:20 | pathbuf2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2558:13:2558:20 | pathbuf2 | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2558:24:2558:31 | pathbuf1 | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2558:24:2558:46 | pathbuf1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2558:24:2558:46 | pathbuf1.canonicalize() | E | {EXTERNAL LOCATION} | () | +| main.rs:2558:24:2558:46 | pathbuf1.canonicalize() | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2559:13:2559:20 | pathbuf3 | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2559:24:2559:31 | pathbuf2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2559:24:2559:31 | pathbuf2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2559:24:2559:31 | pathbuf2 | T | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2559:24:2559:40 | pathbuf2.unwrap() | | main.rs:2532:5:2532:25 | PathBuf | +| main.rs:2565:14:2565:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2565:14:2565:18 | SelfParam | TRef | main.rs:2564:5:2566:5 | Self [trait MyTrait] | +| main.rs:2572:14:2572:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2572:14:2572:18 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2572:14:2572:18 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2572:28:2574:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:13:2573:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2573:13:2573:16 | self | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2573:13:2573:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2573:13:2573:18 | self.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2578:14:2578:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2578:14:2578:18 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2578:14:2578:18 | SelfParam | TRef.T | main.rs:2568:5:2569:19 | S | +| main.rs:2578:14:2578:18 | SelfParam | TRef.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2578:28:2580:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2579:13:2579:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2579:13:2579:16 | self | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2579:13:2579:16 | self | TRef.T | main.rs:2568:5:2569:19 | S | +| main.rs:2579:13:2579:16 | self | TRef.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2579:13:2579:18 | self.0 | | main.rs:2568:5:2569:19 | S | +| main.rs:2579:13:2579:18 | self.0 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2579:13:2579:21 | ... .0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2584:15:2584:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2584:15:2584:19 | SelfParam | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2584:15:2584:19 | SelfParam | TRef.T | main.rs:2583:10:2583:16 | T | +| main.rs:2584:33:2586:9 | { ... } | | main.rs:2568:5:2569:19 | S | +| main.rs:2584:33:2586:9 | { ... } | T | main.rs:2568:5:2569:19 | S | +| main.rs:2584:33:2586:9 | { ... } | T.T | main.rs:2583:10:2583:16 | T | +| main.rs:2585:13:2585:24 | S(...) | | main.rs:2568:5:2569:19 | S | +| main.rs:2585:13:2585:24 | S(...) | T | main.rs:2568:5:2569:19 | S | +| main.rs:2585:13:2585:24 | S(...) | T.T | main.rs:2583:10:2583:16 | T | +| main.rs:2585:15:2585:23 | S(...) | | main.rs:2568:5:2569:19 | S | +| main.rs:2585:15:2585:23 | S(...) | T | main.rs:2583:10:2583:16 | T | +| main.rs:2585:17:2585:20 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2585:17:2585:20 | self | TRef | main.rs:2568:5:2569:19 | S | +| main.rs:2585:17:2585:20 | self | TRef.T | main.rs:2583:10:2583:16 | T | +| main.rs:2585:17:2585:22 | self.0 | | main.rs:2583:10:2583:16 | T | +| main.rs:2589:14:2589:14 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2589:48:2606:5 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2589:48:2606:5 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2589:48:2606:5 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2589:48:2606:5 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:13:2590:13 | x | | main.rs:2568:5:2569:19 | S | +| main.rs:2590:13:2590:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:17:2595:9 | if b {...} else {...} | | main.rs:2568:5:2569:19 | S | +| main.rs:2590:17:2595:9 | if b {...} else {...} | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2590:20:2590:20 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2590:22:2593:9 | { ... } | | main.rs:2568:5:2569:19 | S | +| main.rs:2590:22:2593:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2591:17:2591:17 | y | | main.rs:2568:5:2569:19 | S | +| main.rs:2591:17:2591:17 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2591:21:2591:38 | ...::default(...) | | main.rs:2568:5:2569:19 | S | +| main.rs:2591:21:2591:38 | ...::default(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2592:13:2592:13 | y | | main.rs:2568:5:2569:19 | S | +| main.rs:2592:13:2592:13 | y | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2593:16:2595:9 | { ... } | | main.rs:2568:5:2569:19 | S | +| main.rs:2593:16:2595:9 | { ... } | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2594:13:2594:16 | S(...) | | main.rs:2568:5:2569:19 | S | +| main.rs:2594:13:2594:16 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2594:15:2594:15 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2599:13:2599:13 | x | | main.rs:2568:5:2569:19 | S | +| main.rs:2599:13:2599:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2599:17:2599:20 | S(...) | | main.rs:2568:5:2569:19 | S | +| main.rs:2599:17:2599:20 | S(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2599:19:2599:19 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2600:9:2605:9 | if b {...} else {...} | | {EXTERNAL LOCATION} | Box | +| main.rs:2600:9:2605:9 | if b {...} else {...} | A | {EXTERNAL LOCATION} | Global | +| main.rs:2600:9:2605:9 | if b {...} else {...} | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2600:9:2605:9 | if b {...} else {...} | T | main.rs:2568:5:2569:19 | S | +| main.rs:2600:9:2605:9 | if b {...} else {...} | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2600:9:2605:9 | if b {...} else {...} | T.T | main.rs:2568:5:2569:19 | S | +| main.rs:2600:9:2605:9 | if b {...} else {...} | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2600:9:2605:9 | if b {...} else {...} | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2600:12:2600:12 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2600:14:2603:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2600:14:2603:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2600:14:2603:9 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2600:14:2603:9 | { ... } | T | main.rs:2568:5:2569:19 | S | +| main.rs:2600:14:2603:9 | { ... } | T.T | main.rs:2568:5:2569:19 | S | +| main.rs:2600:14:2603:9 | { ... } | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2600:14:2603:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:17:2601:17 | x | | main.rs:2568:5:2569:19 | S | +| main.rs:2601:17:2601:17 | x | T | main.rs:2568:5:2569:19 | S | +| main.rs:2601:17:2601:17 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:21:2601:21 | x | | main.rs:2568:5:2569:19 | S | +| main.rs:2601:21:2601:21 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2601:21:2601:26 | x.m2() | | main.rs:2568:5:2569:19 | S | +| main.rs:2601:21:2601:26 | x.m2() | T | main.rs:2568:5:2569:19 | S | +| main.rs:2601:21:2601:26 | x.m2() | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2602:13:2602:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2602:13:2602:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2602:13:2602:23 | ...::new(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2602:13:2602:23 | ...::new(...) | T | main.rs:2568:5:2569:19 | S | +| main.rs:2602:13:2602:23 | ...::new(...) | T.T | main.rs:2568:5:2569:19 | S | +| main.rs:2602:13:2602:23 | ...::new(...) | T.T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2602:13:2602:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2602:22:2602:22 | x | | main.rs:2568:5:2569:19 | S | +| main.rs:2602:22:2602:22 | x | T | main.rs:2568:5:2569:19 | S | +| main.rs:2602:22:2602:22 | x | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2603:16:2605:9 | { ... } | | {EXTERNAL LOCATION} | Box | +| main.rs:2603:16:2605:9 | { ... } | A | {EXTERNAL LOCATION} | Global | +| main.rs:2603:16:2605:9 | { ... } | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2603:16:2605:9 | { ... } | T | main.rs:2568:5:2569:19 | S | +| main.rs:2603:16:2605:9 | { ... } | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2603:16:2605:9 | { ... } | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2604:13:2604:23 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2604:13:2604:23 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2604:13:2604:23 | ...::new(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2604:13:2604:23 | ...::new(...) | T | main.rs:2568:5:2569:19 | S | +| main.rs:2604:13:2604:23 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2604:13:2604:23 | ...::new(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2604:22:2604:22 | x | | main.rs:2568:5:2569:19 | S | +| main.rs:2604:22:2604:22 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2610:22:2614:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2611:18:2611:18 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2611:33:2613:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:13:2612:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:13:2612:17 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:2612:17:2612:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2619:11:2619:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2619:30:2627:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2621:13:2621:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2621:17:2625:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2622:13:2624:13 | if cond {...} | | {EXTERNAL LOCATION} | () | +| main.rs:2622:16:2622:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2622:21:2624:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2623:24:2623:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2626:9:2626:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2630:20:2637:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2633:26:2633:27 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2635:9:2635:30 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2635:18:2635:26 | "b: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2635:18:2635:26 | "b: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2635:18:2635:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2635:18:2635:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2635:18:2635:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2636:9:2636:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2639:20:2641:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2640:16:2640:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2644:11:2644:14 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2644:30:2652:5 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2645:13:2645:13 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2645:17:2649:9 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2646:13:2648:13 | if cond {...} | | {EXTERNAL LOCATION} | () | +| main.rs:2646:16:2646:19 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:2646:21:2648:13 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2647:24:2647:25 | 12 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2650:9:2650:30 | MacroExpr | | {EXTERNAL LOCATION} | () | +| main.rs:2650:18:2650:26 | "a: {:?}\\n" | | {EXTERNAL LOCATION} | & | +| main.rs:2650:18:2650:26 | "a: {:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| main.rs:2650:18:2650:29 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2650:18:2650:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2650:18:2650:29 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2650:29:2650:29 | a | | {EXTERNAL LOCATION} | () | +| main.rs:2651:9:2651:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2660:14:2660:17 | SelfParam | | main.rs:2656:5:2657:13 | S | +| main.rs:2660:20:2660:21 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2663:41:2665:5 | { ... } | | main.rs:2663:22:2663:31 | T | +| main.rs:2664:9:2664:26 | ...::default(...) | | main.rs:2663:22:2663:31 | T | +| main.rs:2667:16:2720:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2668:13:2668:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2668:13:2668:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2668:17:2668:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2668:17:2668:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2669:13:2669:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2669:13:2669:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2669:30:2669:30 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2669:30:2669:30 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2670:13:2670:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2670:13:2670:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2670:17:2670:35 | ...::None | | {EXTERNAL LOCATION} | Option | +| main.rs:2670:17:2670:35 | ...::None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2671:13:2671:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2671:13:2671:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2671:17:2671:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option | +| main.rs:2671:17:2671:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2673:26:2673:28 | opt | | {EXTERNAL LOCATION} | Option | +| main.rs:2673:26:2673:28 | opt | T | main.rs:2673:23:2673:23 | T | +| main.rs:2673:42:2673:42 | x | | main.rs:2673:23:2673:23 | T | +| main.rs:2673:48:2673:49 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2675:13:2675:13 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2675:13:2675:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2675:17:2675:20 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2675:17:2675:20 | None | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:9:2676:24 | pin_option(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2676:20:2676:20 | x | | {EXTERNAL LOCATION} | Option | +| main.rs:2676:20:2676:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2676:23:2676:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:13:2683:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2683:13:2683:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:13:2683:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2683:17:2683:39 | ...::A {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2683:17:2683:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2683:17:2683:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2683:37:2683:37 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:13:2684:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2684:13:2684:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:13:2684:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2684:40:2684:40 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2684:40:2684:40 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2684:40:2684:40 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2685:13:2685:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2685:13:2685:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:13:2685:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2685:17:2685:52 | ...::A {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2685:17:2685:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2685:17:2685:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2685:50:2685:50 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:13:2687:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2687:13:2687:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:13:2687:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2687:17:2689:9 | ...::B::<...> {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2687:17:2689:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2687:17:2689:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2688:20:2688:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2691:29:2691:29 | e | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2691:29:2691:29 | e | T1 | main.rs:2691:26:2691:26 | T | +| main.rs:2691:29:2691:29 | e | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2691:53:2691:53 | x | | main.rs:2691:26:2691:26 | T | +| main.rs:2691:59:2691:60 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2694:13:2694:13 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2694:13:2694:13 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2694:13:2694:13 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2694:17:2696:9 | ...::B {...} | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2694:17:2696:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2694:17:2696:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2695:20:2695:32 | ...::new(...) | | {EXTERNAL LOCATION} | String | +| main.rs:2697:9:2697:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2697:23:2697:23 | x | | main.rs:2678:9:2681:9 | MyEither | +| main.rs:2697:23:2697:23 | x | T1 | {EXTERNAL LOCATION} | i32 | +| main.rs:2697:23:2697:23 | x | T2 | {EXTERNAL LOCATION} | String | +| main.rs:2697:26:2697:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:13:2699:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2699:13:2699:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2699:13:2699:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:17:2699:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2699:17:2699:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2699:17:2699:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2699:28:2699:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2700:13:2700:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2700:13:2700:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2700:13:2700:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2700:38:2700:38 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2700:38:2700:38 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2700:38:2700:38 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:13:2701:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2701:13:2701:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2701:13:2701:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:17:2701:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2701:17:2701:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2701:17:2701:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2701:43:2701:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:13:2702:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2702:13:2702:13 | x | E | {EXTERNAL LOCATION} | String | +| main.rs:2702:13:2702:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:17:2702:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2702:17:2702:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String | +| main.rs:2702:17:2702:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2702:43:2702:43 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2704:29:2704:31 | res | | {EXTERNAL LOCATION} | Result | +| main.rs:2704:29:2704:31 | res | E | main.rs:2704:26:2704:26 | E | +| main.rs:2704:29:2704:31 | res | T | main.rs:2704:23:2704:23 | T | +| main.rs:2704:48:2704:48 | x | | main.rs:2704:26:2704:26 | E | +| main.rs:2704:54:2704:55 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2706:13:2706:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2706:13:2706:13 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:2706:13:2706:13 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2706:17:2706:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:2706:17:2706:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool | +| main.rs:2706:17:2706:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2706:28:2706:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2707:9:2707:28 | pin_result(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2707:20:2707:20 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:2707:20:2707:20 | x | E | {EXTERNAL LOCATION} | bool | +| main.rs:2707:20:2707:20 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2707:23:2707:27 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:2709:17:2709:17 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2709:17:2709:17 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2709:17:2709:17 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2709:21:2709:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2709:21:2709:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2709:21:2709:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2710:9:2710:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2710:9:2710:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2710:9:2710:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2710:9:2710:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2710:16:2710:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2712:13:2712:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:2712:17:2712:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2713:9:2713:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2713:9:2713:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2713:9:2713:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2713:9:2713:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2713:16:2713:16 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:2715:13:2715:13 | s | | main.rs:2656:5:2657:13 | S | +| main.rs:2715:17:2715:34 | ...::default(...) | | main.rs:2656:5:2657:13 | S | +| main.rs:2716:9:2716:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2716:14:2716:14 | s | | main.rs:2656:5:2657:13 | S | +| main.rs:2718:13:2718:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:2718:17:2718:31 | free_function(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2719:9:2719:9 | x | | {EXTERNAL LOCATION} | Vec | +| main.rs:2719:9:2719:9 | x | A | {EXTERNAL LOCATION} | Global | +| main.rs:2719:9:2719:9 | x | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2719:9:2719:17 | x.push(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2719:16:2719:16 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:2726:14:2726:17 | SelfParam | | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2729:14:2729:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2729:14:2729:18 | SelfParam | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2729:21:2729:25 | other | | {EXTERNAL LOCATION} | & | +| main.rs:2729:21:2729:25 | other | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2729:44:2731:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2729:44:2731:9 | { ... } | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2730:13:2730:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2730:13:2730:16 | self | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2730:13:2730:20 | self.f() | | {EXTERNAL LOCATION} | & | +| main.rs:2730:13:2730:20 | self.f() | TRef | main.rs:2724:5:2732:5 | Self [trait MyTrait] | +| main.rs:2736:14:2736:17 | SelfParam | | {EXTERNAL LOCATION} | i32 | +| main.rs:2736:28:2738:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2737:13:2737:16 | self | | {EXTERNAL LOCATION} | i32 | +| main.rs:2743:14:2743:17 | SelfParam | | {EXTERNAL LOCATION} | usize | +| main.rs:2743:28:2745:9 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2744:13:2744:16 | self | | {EXTERNAL LOCATION} | usize | +| main.rs:2750:14:2750:17 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2750:14:2750:17 | SelfParam | TRef | main.rs:2748:10:2748:10 | T | +| main.rs:2750:28:2752:9 | { ... } | | {EXTERNAL LOCATION} | & | +| main.rs:2750:28:2752:9 | { ... } | TRef | main.rs:2748:10:2748:10 | T | +| main.rs:2751:13:2751:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2751:13:2751:16 | self | TRef | main.rs:2748:10:2748:10 | T | +| main.rs:2755:25:2759:5 | { ... } | | {EXTERNAL LOCATION} | usize | +| main.rs:2756:17:2756:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2756:17:2756:17 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2756:21:2756:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2756:21:2756:21 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2757:9:2757:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2757:9:2757:9 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2757:9:2757:17 | ... = ... | | {EXTERNAL LOCATION} | () | +| main.rs:2757:13:2757:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2757:13:2757:13 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2757:13:2757:17 | x.f() | | {EXTERNAL LOCATION} | i32 | +| main.rs:2757:13:2757:17 | x.f() | | {EXTERNAL LOCATION} | usize | +| main.rs:2758:9:2758:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2758:9:2758:9 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2761:12:2769:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2762:13:2762:13 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2762:24:2762:24 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2762:24:2762:24 | 0 | | {EXTERNAL LOCATION} | usize | +| main.rs:2763:13:2763:13 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2763:13:2763:13 | y | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2763:17:2763:18 | &1 | | {EXTERNAL LOCATION} | & | +| main.rs:2763:17:2763:18 | &1 | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2763:18:2763:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2764:13:2764:13 | z | | {EXTERNAL LOCATION} | & | +| main.rs:2764:13:2764:13 | z | TRef | {EXTERNAL LOCATION} | usize | +| main.rs:2764:17:2764:17 | x | | {EXTERNAL LOCATION} | usize | +| main.rs:2764:17:2764:22 | x.g(...) | | {EXTERNAL LOCATION} | & | +| main.rs:2764:17:2764:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize | +| main.rs:2764:21:2764:21 | y | | {EXTERNAL LOCATION} | & | +| main.rs:2764:21:2764:21 | y | TRef | {EXTERNAL LOCATION} | i32 | +| main.rs:2766:13:2766:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2766:17:2766:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2767:13:2767:13 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2767:24:2767:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2767:24:2767:24 | 1 | | {EXTERNAL LOCATION} | usize | +| main.rs:2768:13:2768:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:2768:17:2768:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2768:17:2768:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2768:23:2768:23 | y | | {EXTERNAL LOCATION} | usize | +| main.rs:2783:22:2783:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2783:22:2783:26 | SelfParam | TRef | main.rs:2782:5:2784:5 | Self [trait Container] | +| main.rs:2786:34:2786:34 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2786:34:2786:34 | c | TRef | main.rs:2786:15:2786:31 | T | +| main.rs:2786:49:2788:5 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:2787:9:2787:9 | c | | {EXTERNAL LOCATION} | & | +| main.rs:2787:9:2787:9 | c | TRef | main.rs:2786:15:2786:31 | T | +| main.rs:2787:9:2787:21 | c.get_input() | | {EXTERNAL LOCATION} | i64 | +| main.rs:2787:9:2787:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:2787:26:2787:27 | 42 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2791:22:2791:26 | SelfParam | | {EXTERNAL LOCATION} | & | +| main.rs:2791:22:2791:26 | SelfParam | TRef | main.rs:2780:5:2780:21 | Gen | +| main.rs:2791:22:2791:26 | SelfParam | TRef.T | main.rs:2790:10:2790:17 | GT | +| main.rs:2791:35:2793:9 | { ... } | | main.rs:2790:10:2790:17 | GT | +| main.rs:2792:13:2792:16 | self | | {EXTERNAL LOCATION} | & | +| main.rs:2792:13:2792:16 | self | TRef | main.rs:2780:5:2780:21 | Gen | +| main.rs:2792:13:2792:16 | self | TRef.T | main.rs:2790:10:2790:17 | GT | +| main.rs:2792:13:2792:18 | self.0 | | main.rs:2790:10:2790:17 | GT | +| main.rs:2796:15:2800:5 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2797:13:2797:13 | v | | {EXTERNAL LOCATION} | i64 | +| main.rs:2797:17:2797:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2798:13:2798:13 | g | | main.rs:2780:5:2780:21 | Gen | +| main.rs:2798:13:2798:13 | g | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2798:17:2798:22 | Gen(...) | | main.rs:2780:5:2780:21 | Gen | +| main.rs:2798:17:2798:22 | Gen(...) | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2798:21:2798:21 | v | | {EXTERNAL LOCATION} | i64 | +| main.rs:2799:13:2799:13 | _ | | {EXTERNAL LOCATION} | bool | +| main.rs:2799:17:2799:26 | my_get(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2799:24:2799:25 | &g | | {EXTERNAL LOCATION} | & | +| main.rs:2799:24:2799:25 | &g | TRef | main.rs:2780:5:2780:21 | Gen | +| main.rs:2799:24:2799:25 | &g | TRef.T | {EXTERNAL LOCATION} | i64 | +| main.rs:2799:25:2799:25 | g | | main.rs:2780:5:2780:21 | Gen | +| main.rs:2799:25:2799:25 | g | T | {EXTERNAL LOCATION} | i64 | +| main.rs:2803:11:2838:1 | { ... } | | {EXTERNAL LOCATION} | () | +| main.rs:2804:5:2804:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2805:5:2805:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2806:5:2806:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2806:20:2806:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2806:41:2806:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2807:5:2807:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2808:5:2808:41 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2809:5:2809:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2810:5:2810:30 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2811:5:2811:21 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2812:5:2812:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2813:5:2813:32 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2814:5:2814:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2815:5:2815:36 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2816:5:2816:35 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2817:5:2817:29 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2818:5:2818:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2819:5:2819:24 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2820:5:2820:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2821:5:2821:18 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2822:5:2822:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future | +| main.rs:2822:5:2822:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () | +| main.rs:2823:5:2823:19 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2824:5:2824:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2825:5:2825:14 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2826:5:2826:27 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2827:5:2827:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2828:5:2828:43 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2829:5:2829:15 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2830:5:2830:17 | ...::f(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2831:5:2831:28 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2832:5:2832:23 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2833:5:2833:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2834:5:2834:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2835:5:2835:20 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| main.rs:2836:5:2836:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2836:5:2836:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2836:5:2836:20 | ...::f(...) | T | main.rs:2564:5:2566:5 | dyn MyTrait | +| main.rs:2836:5:2836:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 | +| main.rs:2836:16:2836:19 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:2837:5:2837:23 | ...::f(...) | | {EXTERNAL LOCATION} | () | | overloading.rs:4:19:4:23 | SelfParam | | {EXTERNAL LOCATION} | & | | overloading.rs:4:19:4:23 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] | | overloading.rs:4:34:6:9 | { ... } | | {EXTERNAL LOCATION} | bool | diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index ce980724778..b0828c3384b 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -54,6 +54,24 @@ signature module InputSig Lang> { none() } + /** + * A base class of calls that are candidates for flow summary modeling. + */ + class FlowSummaryCallBase { + string toString(); + } + + /** Gets a call that targets summarized callable `sc`. */ + default FlowSummaryCallBase getASourceCall(SummarizedCallableBase sc) { none() } + + /** Gets the callable corresponding to summarized callable `c`. */ + default Lang::DataFlowCallable getSummarizedCallableAsDataFlowCallable(SummarizedCallableBase c) { + none() + } + + /** Gets the enclosing callable of `call`. */ + default Lang::DataFlowCallable getSourceCallEnclosingCallable(FlowSummaryCallBase call) { none() } + /** Gets the parameter position representing a callback itself, if any. */ default Lang::ArgumentPosition callbackSelfParameterPosition() { none() } @@ -74,6 +92,9 @@ signature module InputSig Lang> { result = getStandardReturnValueKind() } + /** Gets the parameter position corresponding to a flow-summary return kind `rk`, if any. */ + default Lang::ParameterPosition getFlowSummaryParameterPosition(Lang::ReturnKind rk) { none() } + /** Gets the textual representation of parameter position `pos` used in MaD. */ string encodeParameterPosition(Lang::ParameterPosition pos); @@ -660,6 +681,10 @@ module Make< s.length() = 1 and s.head() instanceof TArgumentSummaryComponent or + // ReturnValue.* + s.length() = 1 and + s.head() instanceof TReturnSummaryComponent + or // Argument[n].ReturnValue.* s.length() = 2 and s.head() instanceof TReturnSummaryComponent and @@ -1137,6 +1162,13 @@ module Make< outputState(c, s) and s = SummaryComponentStack::argument(_) } + private predicate relevantFlowSummaryPosition(SummarizedCallable c, ReturnKind rk) { + exists(SummaryComponentStack input | + summary(c, input, _, _, _) and + input = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) + ) + } + pragma[nomagic] private predicate sourceOutputStateEntry( SourceElement source, SummaryComponentStack s, string kind, string model @@ -1272,6 +1304,12 @@ module Make< TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { summaryParameterNodeRange(c, pos) } or + TSummaryReturnArgumentNode(FlowSummaryCallBase call, ReturnKind rk) { + exists(SummarizedCallable sc | + call = getASourceCall(sc) and + relevantFlowSummaryPosition(sc, rk) + ) + } or TSourceOutputNode(SourceElement source, SummaryNodeState state, string kind, string model) { state.isSourceOutputState(source, _, kind, model) } or @@ -1321,6 +1359,40 @@ module Make< override SinkElement getSinkElement() { none() } } + private class SummaryReturnArgumentNode extends SummaryNode, TSummaryReturnArgumentNode { + private FlowSummaryCallBase call; + private ReturnKind rk; + + SummaryReturnArgumentNode() { this = TSummaryReturnArgumentNode(call, rk) } + + override string toString() { result = "[summary] value written to " + rk + " at " + call } + + override SummarizedCallable getSummarizedCallable() { none() } + + override SourceElement getSourceElement() { none() } + + override SinkElement getSinkElement() { none() } + } + + /** + * Gets the summary node that represents the argument node used to transfer + * flow into the caller when a value is written to the value returned by + * `call` with kind `rk`. + */ + SummaryNode summaryArgumentNode(FlowSummaryCallBase call, ReturnKind rk) { + result = TSummaryReturnArgumentNode(call, rk) + } + + /** Gets the enclosing callable for summary node `sn`. */ + DataFlowCallable getEnclosingCallable(SummaryNode sn) { + result = getSummarizedCallableAsDataFlowCallable(sn.getSummarizedCallable()) + or + exists(FlowSummaryCallBase call | + sn = TSummaryReturnArgumentNode(call, _) and + result = getSourceCallEnclosingCallable(call) + ) + } + class SourceOutputNode extends SummaryNode, TSourceOutputNode { private SourceElement source_; private SummaryNodeState state_; @@ -1427,6 +1499,12 @@ module Make< SummarizedCallable c, SummaryNodeState state, ParameterPosition pos ) { state.isInputState(c, SummaryComponentStack::argument(pos)) + or + exists(ReturnKind rk | + relevantFlowSummaryPosition(c, rk) and + state.isInputState(c, SummaryComponentStack::return(rk)) and + pos = getFlowSummaryParameterPosition(rk) + ) } /** @@ -1560,6 +1638,9 @@ module Make< ) } + /** Holds if return kind `rk` is a relevant return kind for flow summary modeling. */ + predicate relevantFlowSummaryPosition(ReturnKind rk) { relevantFlowSummaryPosition(_, rk) } + /** * Holds if flow is allowed to pass from the parameter at position `pos` of `c`, * to a return node, and back out to the parameter. @@ -1736,9 +1817,15 @@ module Make< } signature module StepsInputSig { + /** Gets the summary node represented by data-flow node `n`, if any. */ + SummaryNode getSummaryNode(Node n); + /** Gets a call that targets summarized callable `sc`. */ DataFlowCall getACall(SummarizedCallable sc); + /** Gets the out node of kind `rk` for `call`, if any. */ + default Node getSourceOutNode(FlowSummaryCallBase call, ReturnKind rk) { none() } + /** Gets the enclosing callable of `source`. */ DataFlowCallable getSourceNodeEnclosingCallable(SourceBase source); @@ -1765,7 +1852,7 @@ module Make< * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryLocalStep( + private predicate summaryLocalStepImpl( SummaryNode pred, SummaryNode succ, boolean preservesValue, string model ) { exists( @@ -1811,9 +1898,24 @@ module Make< ) } + /** Holds if there is a local step between data-flow nodes synthesized from a flow summary. */ + predicate summaryLocalStep(Node pred, SummaryNode succ, boolean preservesValue, string model) { + exists(SummaryNode predSummary | + predSummary = StepsInput::getSummaryNode(pred) and + summaryLocalStepImpl(predSummary, succ, preservesValue, model) + ) + or + exists(FlowSummaryCallBase summaryCall, ReturnKind rk, SummarizedCallable sc | + pred = StepsInput::getSourceOutNode(summaryCall, rk) and + summaryCall = getASourceCall(sc) and + summary(sc, SummaryComponentStack::return(rk), _, preservesValue, model) and + succ = TSummaryReturnArgumentNode(summaryCall, rk) + ) + } + /** Holds if the value of `succ` is uniquely determined by the value of `pred`. */ predicate summaryLocalMustFlowStep(SummaryNode pred, SummaryNode succ) { - pred = unique(SummaryNode n1 | summaryLocalStep(n1, succ, true, _)) + pred = unique(SummaryNode n1 | summaryLocalStepImpl(n1, succ, true, _)) } /** @@ -1935,7 +2037,7 @@ module Make< or exists(SummaryNode mid, boolean clearsOrExpectsMid | paramReachesLocal(p, mid, clearsOrExpectsMid) and - summaryLocalStep(mid, n, true, _) and + summaryLocalStepImpl(mid, n, true, _) and if summaryClearsContent(n, _) or summaryExpectsContent(n, _) @@ -1993,7 +2095,7 @@ module Make< */ predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { exists(SummaryNode ret | - summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, true, _) + summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), ret, true, _) ) } @@ -2006,7 +2108,7 @@ module Make< */ predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { exists(SummaryNode ret | - summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, false, _) + summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), ret, false, _) ) } @@ -2020,7 +2122,7 @@ module Make< predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { exists(SummaryNode mid, SummaryNode ret | summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and - summaryLocalStep(mid, ret, _, _) + summaryLocalStepImpl(mid, ret, _, _) ) } @@ -2033,7 +2135,7 @@ module Make< */ predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { exists(SummaryNode mid, SummaryNode ret | - summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), mid, _, _) and + summaryLocalStepImpl(summaryArgParamRetOut(arg, ret, out, sc), mid, _, _) and summaryStoreStep(mid, c, ret) ) } @@ -2749,9 +2851,11 @@ module Make< key = "semmle.label" and val = n.toString() } + private Node getNode(SummaryNode sn) { sn = StepsInput::getSummaryNode(result) } + private predicate edgesComponent(NodeOrCall a, NodeOrCall b, string value) { exists(boolean preservesValue | - PrivateSteps::summaryLocalStep(a.asNode(), b.asNode(), preservesValue, _) and + PrivateSteps::summaryLocalStep(getNode(a.asNode()), b.asNode(), preservesValue, _) and if preservesValue = true then value = "value" else value = "taint" ) or diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index b066fbc85b3..54b01ba5146 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -66,7 +66,7 @@ impl<'a> AstNode for Node<'a> { impl AstNode for yeast::Node { fn kind(&self) -> &str { - yeast::Node::kind(self) + yeast::Node::kind_name(self) } fn is_named(&self) -> bool { yeast::Node::is_named(self) @@ -882,7 +882,6 @@ fn emit_extras_in(visitor: &mut Visitor, node: Node<'_>) { } fn traverse_yeast(tree: &yeast::Ast, visitor: &mut Visitor) { - use yeast::Cursor; let mut cursor = tree.walk(); visitor.enter_node(cursor.node()); let mut recurse = true; diff --git a/shared/tree-sitter-extractor/src/generator/mod.rs b/shared/tree-sitter-extractor/src/generator/mod.rs index 6c5fbfabda6..dbecf62569a 100644 --- a/shared/tree-sitter-extractor/src/generator/mod.rs +++ b/shared/tree-sitter-extractor/src/generator/mod.rs @@ -120,14 +120,20 @@ pub fn generate( ))); dbscheme::write(&mut dbscheme_writer, &dbscheme_tail)?; - let mut body = vec![ - ql::TopLevel::Class(ql_gen::create_ast_node_class( - &ast_node_name, - &node_location_table_name, - &node_parent_table_name, - )), - ql::TopLevel::Class(ql_gen::create_token_class(&token_name, &tokeninfo_name)), - ]; + let mut body = vec![]; + + for c in ql_gen::create_ast_node_class( + &ast_node_name, + &node_location_table_name, + &node_parent_table_name, + ) { + body.push(ql::TopLevel::Class(c)); + } + + for c in ql_gen::create_token_class(&token_name, &tokeninfo_name) { + body.push(ql::TopLevel::Class(c)); + } + if has_trivia_tokens { body.push(ql::TopLevel::Class(ql_gen::create_trivia_token_class( &trivia_token_name, diff --git a/shared/tree-sitter-extractor/src/generator/ql.rs b/shared/tree-sitter-extractor/src/generator/ql.rs index 24ae25d854b..6a78a4f95f0 100644 --- a/shared/tree-sitter-extractor/src/generator/ql.rs +++ b/shared/tree-sitter-extractor/src/generator/ql.rs @@ -40,9 +40,12 @@ pub struct Class<'a> { pub qldoc: Option, pub name: &'a str, pub is_abstract: bool, + pub is_final: bool, + pub is_private: bool, pub supertypes: BTreeSet>, pub characteristic_predicate: Option>, pub predicates: Vec>, + pub alias: Option, } impl fmt::Display for Class<'_> { @@ -50,6 +53,16 @@ impl fmt::Display for Class<'_> { if let Some(qldoc) = &self.qldoc { write!(f, "/** {qldoc} */")?; } + if self.is_final { + write!(f, "final ")?; + } + if self.is_private { + write!(f, "private ")?; + } + if let Some(alias) = &self.alias { + write!(f, "class {} = {alias};", &self.name)?; + return Ok(()); + } if self.is_abstract { write!(f, "abstract ")?; } diff --git a/shared/tree-sitter-extractor/src/generator/ql_gen.rs b/shared/tree-sitter-extractor/src/generator/ql_gen.rs index bfefdadeaf7..8f37bf5dff4 100644 --- a/shared/tree-sitter-extractor/src/generator/ql_gen.rs +++ b/shared/tree-sitter-extractor/src/generator/ql_gen.rs @@ -8,7 +8,7 @@ pub fn create_ast_node_class<'a>( ast_node: &'a str, node_location_table: &'a str, node_parent_table: &'a str, -) -> ql::Class<'a> { +) -> [ql::Class<'a>; 2] { // Default implementation of `toString` calls `this.getAPrimaryQlClass()` let to_string = ql::Predicate { qldoc: Some(String::from( @@ -132,25 +132,41 @@ pub fn create_ast_node_class<'a>( ), overlay: None, }; - ql::Class { - qldoc: Some(String::from("The base class for all AST nodes")), - name: "AstNode", - is_abstract: false, - supertypes: vec![ql::Type::At(ast_node)].into_iter().collect(), - characteristic_predicate: None, - predicates: vec![ - to_string, - get_location, - get_parent, - get_parent_index, - get_a_field_or_child, - get_a_primary_ql_class, - get_primary_ql_classes, - ], - } + [ + ql::Class { + qldoc: Some(String::from("The base class for all AST nodes")), + name: "AstNodeImpl", + is_abstract: false, + is_final: false, + is_private: true, + alias: None, + supertypes: vec![ql::Type::At(ast_node)].into_iter().collect(), + characteristic_predicate: None, + predicates: vec![ + to_string, + get_location, + get_parent, + get_parent_index, + get_a_field_or_child, + get_a_primary_ql_class, + get_primary_ql_classes, + ], + }, + ql::Class { + qldoc: None, + name: "AstNode", + is_abstract: false, + is_final: true, + is_private: false, + alias: Some("AstNodeImpl".to_string()), + supertypes: vec![].into_iter().collect(), + characteristic_predicate: None, + predicates: vec![], + }, + ] } -pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Class<'a> { +pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> [ql::Class<'a>; 2] { let tokeninfo_arity = 3; // id, kind, value let get_value = ql::Predicate { qldoc: Some(String::from("Gets the value of this token.")), @@ -183,20 +199,36 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl ), overlay: None, }; - ql::Class { - qldoc: Some(String::from("A token.")), - name: "Token", - is_abstract: false, - supertypes: vec![ql::Type::At(token_type), ql::Type::Normal("AstNode")] - .into_iter() - .collect(), - characteristic_predicate: None, - predicates: vec![ - get_value, - to_string, - create_get_a_primary_ql_class("Token", false), - ], - } + [ + ql::Class { + qldoc: Some(String::from("A token.")), + name: "TokenImpl", + is_abstract: false, + is_final: false, + is_private: true, + alias: None, + supertypes: vec![ql::Type::At(token_type), ql::Type::Normal("AstNodeImpl")] + .into_iter() + .collect(), + characteristic_predicate: None, + predicates: vec![ + get_value, + to_string, + create_get_a_primary_ql_class("Token", false), + ], + }, + ql::Class { + qldoc: None, + name: "Token", + is_abstract: false, + is_final: true, + is_private: false, + alias: Some("TokenImpl".to_string()), + supertypes: vec![].into_iter().collect(), + characteristic_predicate: None, + predicates: vec![], + }, + ] } /// Creates the `TriviaToken` class. Trivia tokens (e.g. comments) are @@ -251,9 +283,15 @@ pub fn create_trivia_token_class<'a>( )), name: "TriviaToken", is_abstract: false, - supertypes: vec![ql::Type::At(trivia_token_type), ql::Type::Normal("AstNode")] - .into_iter() - .collect(), + is_final: true, + is_private: false, + alias: None, + supertypes: vec![ + ql::Type::At(trivia_token_type), + ql::Type::Normal("AstNodeImpl"), + ] + .into_iter() + .collect(), characteristic_predicate: None, predicates: vec![ get_value, @@ -271,7 +309,10 @@ pub fn create_reserved_word_class(db_name: &str) -> ql::Class<'_> { qldoc: Some(String::from("A reserved word.")), name: class_name, is_abstract: false, - supertypes: vec![ql::Type::At(db_name), ql::Type::Normal("Token")] + is_final: true, + is_private: false, + alias: None, + supertypes: vec![ql::Type::At(db_name), ql::Type::Normal("TokenImpl")] .into_iter() .collect(), characteristic_predicate: None, @@ -775,11 +816,14 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { create_get_a_primary_ql_class(&node.ql_class_name, true); let mut supertypes: BTreeSet = BTreeSet::new(); supertypes.insert(ql::Type::At(&node.dbscheme_name)); - supertypes.insert(ql::Type::Normal("Token")); + supertypes.insert(ql::Type::Normal("TokenImpl")); classes.push(ql::TopLevel::Class(ql::Class { qldoc: Some(format!("A class representing `{}` tokens.", type_name.kind)), name: &node.ql_class_name, is_abstract: false, + is_final: true, + is_private: false, + alias: None, supertypes, characteristic_predicate: None, predicates: vec![get_a_primary_ql_class], @@ -793,9 +837,12 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { qldoc: None, name: &node.ql_class_name, is_abstract: false, + is_final: true, + is_private: false, + alias: None, supertypes: vec![ ql::Type::At(&node.dbscheme_name), - ql::Type::Normal("AstNode"), + ql::Type::Normal("AstNodeImpl"), ] .into_iter() .collect(), @@ -824,9 +871,12 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { qldoc: Some(format!("A class representing `{}` nodes.", type_name.kind)), name: main_class_name, is_abstract: false, + is_final: true, + is_private: false, + alias: None, supertypes: vec![ ql::Type::At(&node.dbscheme_name), - ql::Type::Normal("AstNode"), + ql::Type::Normal("AstNodeImpl"), ] .into_iter() .collect(), diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index 24a6392c6be..af818dc94d9 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -1346,6 +1346,14 @@ module Make1 Input1> { module MatchingWithEnvironment { private import Input + pragma[nomagic] + private TypeParameter getDeclTypeParameter(Declaration decl, TypeArgumentPosition tapos) { + exists(TypeParameterPosition tppos | + result = decl.getTypeParameter(tppos) and + typeArgumentParameterPositionMatch(tapos, tppos) + ) + } + /** * Gets the type of the type argument at `path` in `a` that corresponds to * the type parameter `tp` in `target`, if any. @@ -1356,11 +1364,11 @@ module Make1 Input1> { */ bindingset[a, target] pragma[inline_late] - private Type getTypeArgument(Access a, Declaration target, TypeParameter tp, TypePath path) { - exists(TypeArgumentPosition tapos, TypeParameterPosition tppos | + Type getTypeArgument(Access a, Declaration target, TypeParameter tp, TypePath path) { + exists(TypeArgumentPosition tapos | result = a.getTypeArgument(tapos, path) and - tp = target.getTypeParameter(tppos) and - typeArgumentParameterPositionMatch(tapos, tppos) + tp = getDeclTypeParameter(target, tapos) and + not isPseudoType(result) ) } @@ -1526,42 +1534,35 @@ module Make1 Input1> { private module AccessConstraint { private predicate relevantAccessConstraint( - Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath path, + Access a, AccessEnvironment e, Declaration target, TypeParameter constrainedTp, TypeMention constraint ) { target = a.getTarget(e) and - typeParameterHasConstraint(target, apos, _, path, constraint) + typeParameterHasConstraint(target, constrainedTp, constraint) } private newtype TRelevantAccess = - MkRelevantAccess(Access a, AccessPosition apos, AccessEnvironment e, TypePath path) { - relevantAccessConstraint(a, e, _, apos, path, _) + MkRelevantAccess(Access a, AccessEnvironment e, TypeParameter constrainedTp) { + relevantAccessConstraint(a, e, _, constrainedTp, _) } - /** - * If the access `a` for `apos`, environment `e`, and `path` has an inferred type - * which type inference requires to satisfy some constraint. - */ private class RelevantAccess extends MkRelevantAccess { Access a; - AccessPosition apos; AccessEnvironment e; - TypePath path; + TypeParameter constrainedTp; - RelevantAccess() { this = MkRelevantAccess(a, apos, e, path) } + RelevantAccess() { this = MkRelevantAccess(a, e, constrainedTp) } pragma[nomagic] - Type getTypeAt(TypePath suffix) { - result = a.getInferredType(e, apos, path.appendInverse(suffix)) - } + Type getTypeAt(TypePath path) { typeMatch(a, e, _, path, result, constrainedTp) } /** Gets the constraint that this relevant access should satisfy. */ TypeMention getConstraint(Declaration target) { - relevantAccessConstraint(a, e, target, apos, path, result) + relevantAccessConstraint(a, e, target, constrainedTp, result) } string toString() { - result = a.toString() + ", " + apos.toString() + ", " + path.toString() + result = a.toString() + ", " + e.toString() + ", " + constrainedTp.toString() } Location getLocation() { result = a.getLocation() } @@ -1577,7 +1578,7 @@ module Make1 Input1> { class TypeMatchingContext = Access; TypeMatchingContext getTypeMatchingContext(RelevantAccess at) { - at = MkRelevantAccess(result, _, _, _) + at = MkRelevantAccess(result, _, _) } pragma[nomagic] @@ -1591,41 +1592,32 @@ module Make1 Input1> { SatisfiesTypeParameterConstraintInput>; pragma[nomagic] - predicate satisfiesConstraintAtTypeParameter( + predicate argSatisfiesConstraintAtTypeParameter( Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath prefix, TypeMention constraint, TypePath pathToTypeParamInConstraint, TypePath pathToTypeParamInSub ) { - exists(RelevantAccess ra | - ra = MkRelevantAccess(a, apos, e, prefix) and + exists(RelevantAccess ra, TypeParameter constrainedTp | + ra = MkRelevantAccess(a, e, constrainedTp) and + relevantAccessConstraint(a, e, target, constrainedTp, constraint) and SatisfiesTypeParameterConstraint::satisfiesConstraintAtTypeParameter(ra, constraint, pathToTypeParamInConstraint, pathToTypeParamInSub) and - constraint = ra.getConstraint(target) + exists(DeclarationPosition dpos | + accessDeclarationPositionMatch(apos, dpos) and + constrainedTp = target.getDeclaredType(dpos, prefix) + ) ) } pragma[nomagic] predicate satisfiesConstraint( - Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath prefix, + Access a, AccessEnvironment e, Declaration target, TypeParameter constrainedTp, TypeMention constraint, TypePath path, Type t ) { exists(RelevantAccess ra | - ra = MkRelevantAccess(a, apos, e, prefix) and - SatisfiesTypeParameterConstraint::satisfiesConstraint(ra, constraint, path, t) and - constraint = ra.getConstraint(target) - ) - } - - pragma[nomagic] - predicate satisfiesConstraintThrough( - Access a, AccessEnvironment e, Declaration target, AccessPosition apos, TypePath prefix, - TypeAbstraction abs, TypeMention constraint, TypePath path, Type t - ) { - exists(RelevantAccess ra | - ra = MkRelevantAccess(a, apos, e, prefix) and - SatisfiesTypeParameterConstraint::satisfiesConstraintThrough(ra, abs, constraint, path, - t) and - constraint = ra.getConstraint(target) + ra = MkRelevantAccess(a, e, constrainedTp) and + relevantAccessConstraint(a, e, target, constrainedTp, constraint) and + SatisfiesTypeParameterConstraint::satisfiesConstraint(ra, constraint, path, t) ) } } @@ -1644,51 +1636,44 @@ module Make1 Input1> { } /** - * Holds if the type parameter `constrainedTp` occurs in the declared type of - * `target` at `apos` and `pathToConstrained`, and there is a constraint - * `constraint` on `constrainedTp`. + * Holds if the type parameter `constrainedTp` applies to `target` and the + * constraint `constraint` applies to `constrainedTp`. */ pragma[nomagic] private predicate typeParameterHasConstraint( - Declaration target, AccessPosition apos, TypeParameter constrainedTp, - TypePath pathToConstrained, TypeMention constraint + Declaration target, TypeParameter constrainedTp, TypeMention constraint ) { - exists(DeclarationPosition dpos | - accessDeclarationPositionMatch(apos, dpos) and - constrainedTp = target.getTypeParameter(_) and - constrainedTp = target.getDeclaredType(dpos, pathToConstrained) and - constraint = getATypeParameterConstraint(constrainedTp, target) - ) + constrainedTp = target.getTypeParameter(_) and + constraint = getATypeParameterConstraint(constrainedTp, target) } /** - * Holds if the declared type of `target` contains a type parameter at - * `apos` and `pathToConstrained` that must satisfy `constraint` and `tp` - * occurs at `pathToTp` in `constraint`. + * Holds if the type parameter `constrainedTp` applies to `target`, the + * constraint `constraint` applies to `constrainedTp`, and type parameter + * `tp` occurs at `pathToTp` in `constraint`. * * For example, in + * * ```csharp * interface IFoo { } * T1 M(T2 item) where T2 : IFoo { } * ``` - * with the method declaration being the target and with `apos` - * corresponding to `item`, we have the following - * - `pathToConstrained = ""`, - * - `tp = T1`, + * + * with the method declaration being the target, we have the following + * - `constrainedTp = T2`, * - `constraint = IFoo`, + * - `tp = T1`, and * - `pathToTp = "A"`. */ pragma[nomagic] private predicate typeParameterConstraintHasTypeParameter( - Declaration target, AccessPosition apos, TypePath pathToConstrained, TypeMention constraint, - TypePath pathToTp, TypeParameter tp + Declaration target, TypeParameter constrainedTp, TypeMention constraint, TypePath pathToTp, + TypeParameter tp ) { - exists(TypeParameter constrainedTp | - typeParameterHasConstraint(target, apos, constrainedTp, pathToConstrained, constraint) and - tp = target.getTypeParameter(_) and - tp = constraint.getTypeAt(pathToTp) and - constrainedTp != tp - ) + typeParameterHasConstraint(target, constrainedTp, constraint) and + tp = target.getTypeParameter(_) and + tp = constraint.getTypeAt(pathToTp) and + constrainedTp != tp } pragma[nomagic] @@ -1696,9 +1681,9 @@ module Make1 Input1> { Access a, AccessEnvironment e, Declaration target, TypePath path, Type t, TypeParameter tp ) { not exists(getTypeArgument(a, target, tp, _)) and - exists(TypeMention constraint, AccessPosition apos, TypePath pathToTp, TypePath pathToTp2 | - typeParameterConstraintHasTypeParameter(target, apos, pathToTp2, constraint, pathToTp, tp) and - AccessConstraint::satisfiesConstraint(a, e, target, apos, pathToTp2, constraint, + exists(TypeMention constraint, TypeParameter constrainedTp, TypePath pathToTp | + typeParameterConstraintHasTypeParameter(target, constrainedTp, constraint, pathToTp, tp) and + AccessConstraint::satisfiesConstraint(a, e, target, constrainedTp, constraint, pathToTp.appendInverse(path), t) ) } @@ -1781,7 +1766,7 @@ module Make1 Input1> { Declaration target, TypePath prefix, TypeMention constraint, TypePath pathToTypeParamInConstraint, TypePath pathToTypeParamInSub | - AccessConstraint::satisfiesConstraintAtTypeParameter(a, e, target, apos, prefix, + AccessConstraint::argSatisfiesConstraintAtTypeParameter(a, e, target, apos, prefix, constraint, pathToTypeParamInConstraint, pathToTypeParamInSub) | exists(TypePath suffix | @@ -1847,7 +1832,12 @@ module Make1 Input1> { */ typeMatch(a, e, target, suffix, result, tp) and - typeParameterConstraintHasTypeParameter(target, apos, _, constraint, pathToTp, tp) and + exists(TypeParameter constrainedTp, DeclarationPosition dpos | + typeParameterConstraintHasTypeParameter(target, constrainedTp, constraint, pathToTp, + tp) and + accessDeclarationPositionMatch(apos, dpos) and + constrainedTp = target.getDeclaredType(dpos, _) + ) and pathToTp = pathToTypeParamInConstraint.appendInverse(mid) and path = prefix.append(pathToTypeParamInSub.append(mid).append(suffix)) ) diff --git a/shared/yeast-macros/src/lib.rs b/shared/yeast-macros/src/lib.rs index 7153cf30644..7db97f9fb70 100644 --- a/shared/yeast-macros/src/lib.rs +++ b/shared/yeast-macros/src/lib.rs @@ -41,22 +41,14 @@ pub fn query(input: TokenStream) -> TokenStream { /// (kind "literal") - leaf with static content /// (kind #{expr}) - leaf with computed content (expr.to_string()) /// (kind $fresh) - leaf with auto-generated unique name -/// {expr} - embed a Rust expression returning Id -/// {..expr} - splice an iterable of Id (in child/field position) -/// field: {..expr} - splice into a named field -/// {expr}.map(p -> tpl) - apply tpl to each element; splice result -/// {expr}.reduce_left(f -> init, acc, e -> fold) -/// - fold with per-element init; splice 0 or 1 result +/// {expr} - embed a Rust expression, dispatched via +/// the `IntoFieldIds` trait: `Id` pushes a +/// single id; iterables (`Vec`, +/// `Option`, iterator chains) splice +/// their elements +/// field: {expr} - extend a named field with `{expr}`'s ids /// ``` /// -/// Chain syntax after `{expr}` or `{..expr}`: -/// - `.map(param -> template)` — one output node per input element. -/// - `.reduce_left(first -> init, acc, elem -> fold)` — fold left; the first -/// element is converted by `init`, subsequent elements are folded by `fold` -/// with the accumulator bound to `acc`. An empty iterable yields nothing. -/// - Chains always splice (the result is iterable). -/// - Multiple chains can be chained, e.g. `.map(...).reduce_left(...)`. -/// /// Can be called with an explicit context or using the implicit context /// from an enclosing `rule!`: /// @@ -100,7 +92,7 @@ pub fn trees(input: TokenStream) -> TokenStream { /// rule!( /// (query_pattern field: (_) @name (kind)* @repeated (_)? @optional) /// => -/// (output_template field: {name} {..repeated}) +/// (output_template field: {name} {repeated}) /// ) /// /// // Shorthand: captures become fields on the output node @@ -121,37 +113,3 @@ pub fn rule(input: TokenStream) -> TokenStream { Err(err) => err.to_compile_error().into(), } } - -/// Define a desugaring rule whose transform is a hand-written Rust block. -/// -/// Use `manual_rule!` when the transform needs control over capture -/// translation timing — for example, when an outer rule needs to set -/// state in `ctx` (the `BuildCtx`'s user context) before recursive -/// translation reaches inner rules that read that state. -/// -/// ```text -/// manual_rule!( -/// (query_pattern field: (_) @name) -/// { -/// // `ctx` is a `&mut BuildCtx<'_, C>`; capture variables -/// // (`name: NodeRef`, etc.) are bound from the query. -/// let translated = ctx.translate(name)?; -/// Ok(translated) -/// } -/// ) -/// ``` -/// -/// Differences from [`rule!`]: -/// - Captures are **not** auto-translated before the body runs; they -/// refer to raw input-schema nodes. Use [`BuildCtx::translate`] (or -/// [`BuildCtx::translate_opt`]) to translate them when you choose. -/// - The body is plain Rust returning `Result, String>` — no -/// tree template, no `Ok(...)` wrap. -#[proc_macro] -pub fn manual_rule(input: TokenStream) -> TokenStream { - let input2: TokenStream2 = input.into(); - match parse::parse_manual_rule_top(input2) { - Ok(output) => output.into(), - Err(err) => err.to_compile_error().into(), - } -} diff --git a/shared/yeast-macros/src/parse.rs b/shared/yeast-macros/src/parse.rs index fc6031eb39d..2ab6236fdac 100644 --- a/shared/yeast-macros/src/parse.rs +++ b/shared/yeast-macros/src/parse.rs @@ -22,10 +22,9 @@ pub fn parse_query_top(input: TokenStream) -> Result { /// Parse a single query node (possibly with a trailing `@capture`). fn parse_query_node(tokens: &mut Tokens) -> Result { let base = parse_query_atom(tokens)?; - // Check for trailing @capture + // Check for trailing @capture or @@capture if peek_is_at(tokens) { - tokens.next(); // consume @ - let capture_name = expect_ident(tokens, "expected capture name after @")?; + let capture_name = consume_capture_marker(tokens)?; let name_str = capture_name.to_string(); Ok(quote! { yeast::query::QueryNode::Capture { @@ -159,8 +158,7 @@ fn parse_query_fields(tokens: &mut Tokens) -> Result> { push_field_elem(&mut field_order, &mut field_elems, field_str, elem); } else { let child = if peek_is_at(tokens) { - tokens.next(); - let capture_name = expect_ident(tokens, "expected capture name after @")?; + let capture_name = consume_capture_marker(tokens)?; let name_str = capture_name.to_string(); quote! { yeast::query::QueryNode::Capture { @@ -306,7 +304,8 @@ fn parse_ctx_or_implicit(tokens: &mut Tokens) -> Ident { && matches!(lookahead.next(), Some(TokenTree::Punct(p)) if p.as_char() == ','); if is_explicit { - let ctx = expect_ident(tokens, "").unwrap(); + let ctx = expect_ident(tokens, "unreachable: ident was just peeked") + .expect("unreachable: ident was just peeked"); let _ = tokens.next(); // consume comma ctx } else { @@ -344,7 +343,7 @@ pub fn parse_trees_top(input: TokenStream) -> Result { } Ok(quote! { { - let mut __nodes: Vec = Vec::new(); + let mut __nodes: Vec = Vec::new(); #(#items)* __nodes } @@ -358,7 +357,7 @@ fn parse_direct_node(tokens: &mut Tokens, ctx: &Ident) -> Result { Some(TokenTree::Group(g)) if g.delimiter() == Delimiter::Brace => { let group = expect_group(tokens, Delimiter::Brace)?; let expr = group.stream(); - Ok(quote! { ::std::convert::Into::::into({ #expr }) }) + Ok(quote! { ::std::convert::Into::::into({ #expr }) }) } Some(TokenTree::Group(g)) if g.delimiter() == Delimiter::Parenthesis => { let group = expect_group(tokens, Delimiter::Parenthesis)?; @@ -431,49 +430,24 @@ fn parse_direct_node_inner(tokens: &mut Tokens, ctx: &Ident) -> Result into the field + // Plain `field: {expr}` — trait-dispatched extend. if peek_is_group(tokens, Delimiter::Brace) { - let group_clone = tokens.clone().next().unwrap(); - if let TokenTree::Group(g) = &group_clone { - let mut inner_check = g.stream().into_iter(); - let is_splice = matches!(inner_check.next(), Some(TokenTree::Punct(p)) if p.as_char() == '.') - && matches!(inner_check.next(), Some(TokenTree::Punct(p)) if p.as_char() == '.'); - // Determine if a chain (.map(..)) follows the `{}` group. - let mut after = tokens.clone(); - after.next(); // skip the brace group - let has_chain = - matches!(after.peek(), Some(TokenTree::Punct(p)) if p.as_char() == '.'); - - if is_splice || has_chain { - let group = expect_group(tokens, Delimiter::Brace)?; - let base: TokenStream = if is_splice { - let mut inner = group.stream().into_iter().peekable(); - inner.next(); // consume first . - inner.next(); // consume second . - let expr: TokenStream = inner.collect(); - quote! { - { #expr }.into_iter().map(::std::convert::Into::::into) - } - } else { - let expr = group.stream(); - quote! { { #expr }.into_iter() } - }; - let chained = parse_chain_suffix(tokens, ctx, base)?; - stmts.push(quote! { - let #temp: Vec = #chained.collect(); - }); - // An empty splice means the field is absent — skip it - // entirely rather than emitting an empty named field. - field_args.push(quote! { - if !#temp.is_empty() { __fields.push((#field_str, #temp)); } - }); - continue; - } - } + let group = expect_group(tokens, Delimiter::Brace)?; + let expr = group.stream(); + stmts.push(quote! { + let mut #temp: Vec = Vec::new(); + yeast::IntoFieldIds::extend_into({ #expr }, &mut #temp); + }); + // An empty `{expr}` means the field is absent — skip it + // entirely rather than emitting an empty named field. + field_args.push(quote! { + if !#temp.is_empty() { __fields.push((#field_str, #temp)); } + }); + continue; } let value = parse_direct_node(tokens, ctx)?; - stmts.push(quote! { let #temp: usize = #value; }); + stmts.push(quote! { let #temp: yeast::Id = #value; }); field_args.push(quote! { __fields.push((#field_str, vec![#temp])); }); } @@ -490,101 +464,13 @@ fn parse_direct_node_inner(tokens: &mut Tokens, ctx: &Ident) -> Result)> = Vec::new(); + let mut __fields: Vec<(&str, Vec)> = Vec::new(); #(#field_args)* #ctx.node(#kind_str, __fields) } }) } -/// Parse a chain of `.method(args)` suffixes after a `{expr}` or `{..expr}` -/// placeholder in tree templates. Currently supports: -/// -/// ```text -/// .map(param -> template) -- iterator map: produces Vec -/// ``` -/// -/// The chain may be empty (returns `base` unchanged). Multiple chained calls -/// are supported, e.g. `.map(p -> ...).map(q -> ...)`. -/// -/// Each call expects the receiver to be an iterator. The `base` argument -/// should therefore already be an iterator (use `.into_iter()` on it before -/// calling this function). -fn parse_chain_suffix(tokens: &mut Tokens, ctx: &Ident, base: TokenStream) -> Result { - let mut current = base; - while matches!(tokens.peek(), Some(TokenTree::Punct(p)) if p.as_char() == '.') { - tokens.next(); // consume . - let method = expect_ident(tokens, "expected method name after `.`")?; - let method_str = method.to_string(); - let args_group = expect_group(tokens, Delimiter::Parenthesis)?; - match method_str.as_str() { - "map" => { - let mut inner = args_group.stream().into_iter().peekable(); - let param = expect_ident(&mut inner, "expected lambda parameter name")?; - expect_punct(&mut inner, '-', "expected `->` after lambda parameter")?; - expect_punct(&mut inner, '>', "expected `->` after lambda parameter")?; - let body = parse_direct_node(&mut inner, ctx)?; - if let Some(tok) = inner.next() { - return Err(syn::Error::new_spanned( - tok, - "unexpected token after lambda body", - )); - } - current = quote! { - #current.map(|#param| #body) - }; - } - "reduce_left" => { - // Syntax: reduce_left(first -> init_tpl, acc, elem -> fold_tpl) - // - first -> init_tpl : converts the first element to the initial accumulator - // - acc, elem -> fold_tpl : fold step (acc = current accumulator, elem = next element) - // Empty iterator produces an empty iterator; non-empty produces a single-element iterator. - let mut inner = args_group.stream().into_iter().peekable(); - let init_param = expect_ident(&mut inner, "expected initial lambda parameter")?; - expect_punct(&mut inner, '-', "expected `->` after init parameter")?; - expect_punct(&mut inner, '>', "expected `->` after init parameter")?; - let init_body = parse_direct_node(&mut inner, ctx)?; - expect_punct(&mut inner, ',', "expected `,` after init template")?; - let acc_param = expect_ident(&mut inner, "expected accumulator parameter")?; - expect_punct(&mut inner, ',', "expected `,` after accumulator parameter")?; - let elem_param = expect_ident(&mut inner, "expected element parameter")?; - expect_punct(&mut inner, '-', "expected `->` after element parameter")?; - expect_punct(&mut inner, '>', "expected `->` after element parameter")?; - let fold_body = parse_direct_node(&mut inner, ctx)?; - if let Some(tok) = inner.next() { - return Err(syn::Error::new_spanned( - tok, - "unexpected token after fold template", - )); - } - current = quote! { - { - let mut __iter = #current; - let __result: Option = if let Some(#init_param) = __iter.next() { - let mut __acc: usize = #init_body; - for #elem_param in __iter { - let #acc_param: usize = __acc; - __acc = #fold_body; - } - Some(__acc) - } else { - None - }; - __result.into_iter() - } - }; - } - _ => { - return Err(syn::Error::new_spanned( - method, - format!("unknown builtin method `.{method_str}()`"), - )); - } - } - } - Ok(current) -} - /// Parse the top-level list of a `trees!` template. /// Each item is a node template or `{expr}` splice. fn parse_direct_list(tokens: &mut Tokens, ctx: &Ident) -> Result> { @@ -605,35 +491,14 @@ fn parse_direct_list(tokens: &mut Tokens, ctx: &Ident) -> Result::into) - } - } else { - let expr = group.stream(); - quote! { { #expr }.into_iter() } - }; - let chained = parse_chain_suffix(tokens, ctx, base)?; - items.push(quote! { - __nodes.extend(#chained); - }); - } else { - let expr = group.stream(); - items.push(quote! { - __nodes.push(::std::convert::Into::::into({ #expr })); - }); - } + let expr = group.stream(); + items.push(quote! { + yeast::IntoFieldIds::extend_into({ #expr }, &mut __nodes); + }); continue; } @@ -650,6 +515,9 @@ fn parse_direct_list(tokens: &mut Tokens, ctx: &Ident) -> Result { + // `@@name` marks the capture as raw (skip auto-translate). + let raw = matches!( + tokens.peek(), + Some(TokenTree::Punct(p)) if p.as_char() == '@' + ); + if raw { + tokens.next(); // consume the second `@` + } if let Some(TokenTree::Ident(name)) = tokens.next() { let mult = if parent_mult == CaptureMultiplicity::Repeated || last_mult == CaptureMultiplicity::Repeated @@ -723,6 +599,7 @@ fn extract_captures_inner( captures.push(CaptureInfo { name: name.to_string(), multiplicity: mult, + raw, }); } last_mult = CaptureMultiplicity::Single; @@ -776,6 +653,14 @@ pub fn parse_rule_top(input: TokenStream) -> Result { // Parse query let query_code = parse_query_top(query_stream.clone())?; + // Capture names marked `@@name` (raw) — passed to the auto-translate + // prefix as a skip list so those captures keep their input-schema ids. + let raw_capture_names: Vec<&str> = captures + .iter() + .filter(|c| c.raw) + .map(|c| c.name.as_str()) + .collect(); + // Generate capture bindings let ctx_ident = Ident::new(IMPLICIT_CTX, Span::call_site()); let bindings: Vec = captures @@ -786,22 +671,17 @@ pub fn parse_rule_top(input: TokenStream) -> Result { match cap.multiplicity { CaptureMultiplicity::Repeated => { quote! { - let #name: Vec = __captures.get_all(#name_str) - .into_iter() - .map(yeast::NodeRef) - .collect(); + let #name: Vec = __captures.get_all(#name_str); } } CaptureMultiplicity::Optional => { quote! { - let #name: Option = - __captures.get_opt(#name_str).map(yeast::NodeRef); + let #name: Option = __captures.get_opt(#name_str); } } CaptureMultiplicity::Single => { quote! { - let #name: yeast::NodeRef = - yeast::NodeRef(__captures.get_var(#name_str).unwrap()); + let #name: yeast::Id = __captures.get_var(#name_str).unwrap(); } } } @@ -832,7 +712,7 @@ pub fn parse_rule_top(input: TokenStream) -> Result { __fields.insert( __field_id, #name.into_iter() - .map(::std::convert::Into::::into) + .map(::std::convert::Into::::into) .collect(), ); }, @@ -841,14 +721,14 @@ pub fn parse_rule_top(input: TokenStream) -> Result { .unwrap_or_else(|| panic!("field '{}' not found", #name_str)); if let Some(__id) = #name { __fields.entry(__field_id).or_insert_with(Vec::new) - .push(::std::convert::Into::::into(__id)); + .push(::std::convert::Into::::into(__id)); } }, CaptureMultiplicity::Single => quote! { let __field_id = #ctx_ident.ast.field_id_for_name(#name_str) .unwrap_or_else(|| panic!("field '{}' not found", #name_str)); __fields.entry(__field_id).or_insert_with(Vec::new) - .push(::std::convert::Into::::into(#name)); + .push(::std::convert::Into::::into(#name)); }, } }) @@ -880,7 +760,7 @@ pub fn parse_rule_top(input: TokenStream) -> Result { } quote! { - let mut __nodes: Vec = Vec::new(); + let mut __nodes: Vec = Vec::new(); #(#transform_items)* __nodes } @@ -891,120 +771,23 @@ pub fn parse_rule_top(input: TokenStream) -> Result { let __query = #query_code; yeast::Rule::new(__query, Box::new(|__ast: &mut yeast::Ast, mut __captures: yeast::captures::Captures, __fresh: &yeast::tree_builder::FreshScope, __source_range: Option, __user_ctx: &mut _, __translator: yeast::TranslatorHandle<'_, _>| { // Auto-translation prefix: recursively translate every - // captured node before invoking the user's transform body. + // captured node before invoking the user's transform body, + // except for `@@name` captures listed in `__skip` which the + // body consumes raw. // For OneShot rules this preserves the legacy behaviour // (input-schema captures translated to output-schema // nodes); for Repeating rules it is a no-op. - __translator.auto_translate_captures(&mut __captures, __ast, __user_ctx)?; + let __skip: &[&str] = &[#(#raw_capture_names),*]; + __translator.auto_translate_captures(&mut __captures, __ast, __user_ctx, __skip)?; #(#bindings)* let mut #ctx_ident = yeast::build::BuildCtx::with_translator(__ast, &__captures, __fresh, __source_range, __user_ctx, __translator); - let __result: Vec = { #transform_body }; + let __result: Vec = { #transform_body }; Ok(__result) })) } }) } -/// Parse `manual_rule!( query { body } )`. -/// -/// Like [`parse_rule_top`] but: -/// - Expects a Rust block `{ ... }` after the query (no `=>` arrow). -/// - Generates code that does NOT auto-translate captures before -/// running the body. Capture variables refer to raw (input-schema) -/// nodes; the body is responsible for explicit translation via -/// `ctx.translate(...)`. -/// - The body is included verbatim and must evaluate to -/// `Result, String>`. -pub fn parse_manual_rule_top(input: TokenStream) -> Result { - let mut tokens = input.into_iter().peekable(); - - // Collect query tokens up to the body block `{ ... }`. - let mut query_tokens = Vec::new(); - loop { - match tokens.peek() { - None => { - return Err(syn::Error::new( - Span::call_site(), - "expected a Rust block `{ ... }` after the query in manual_rule!", - )) - } - Some(TokenTree::Group(g)) if g.delimiter() == Delimiter::Brace => break, - _ => { - query_tokens.push(tokens.next().unwrap()); - } - } - } - - let query_stream: TokenStream = query_tokens.into_iter().collect(); - - // Extract captures from the query (same as in `rule!`). - let captures = extract_captures(&query_stream); - - // Parse the query into the QueryNode-building expression. - let query_code = parse_query_top(query_stream)?; - - // Generate capture bindings (same as in `rule!`). - let ctx_ident = Ident::new(IMPLICIT_CTX, Span::call_site()); - let bindings: Vec = captures - .iter() - .map(|cap| { - let name = Ident::new(&cap.name, Span::call_site()); - let name_str = &cap.name; - match cap.multiplicity { - CaptureMultiplicity::Repeated => quote! { - let #name: Vec = __captures.get_all(#name_str) - .into_iter() - .map(yeast::NodeRef) - .collect(); - }, - CaptureMultiplicity::Optional => quote! { - let #name: Option = - __captures.get_opt(#name_str).map(yeast::NodeRef); - }, - CaptureMultiplicity::Single => quote! { - let #name: yeast::NodeRef = - yeast::NodeRef(__captures.get_var(#name_str).unwrap()); - }, - } - }) - .collect(); - - // Consume the body block. - let body_group = match tokens.next() { - Some(TokenTree::Group(g)) if g.delimiter() == Delimiter::Brace => g, - other => { - return Err(syn::Error::new( - Span::call_site(), - format!( - "expected a Rust block `{{ ... }}` after the query in manual_rule!, found: {other:?}" - ), - )) - } - }; - let body_stream = body_group.stream(); - - // No tokens should follow the body. - if let Some(tok) = tokens.next() { - return Err(syn::Error::new_spanned( - tok, - "unexpected token after manual_rule! body", - )); - } - - Ok(quote! { - { - let __query = #query_code; - yeast::Rule::new(__query, Box::new(|__ast: &mut yeast::Ast, __captures: yeast::captures::Captures, __fresh: &yeast::tree_builder::FreshScope, __source_range: Option, __user_ctx: &mut _, __translator: yeast::TranslatorHandle<'_, _>| { - // No auto-translate prefix for manual rules — the body - // is responsible for translating captures explicitly. - #(#bindings)* - let mut #ctx_ident = yeast::build::BuildCtx::with_translator(__ast, &__captures, __fresh, __source_range, __user_ctx, __translator); - #body_stream - })) - } - }) -} - // --------------------------------------------------------------------------- // Token utilities // --------------------------------------------------------------------------- @@ -1013,6 +796,16 @@ fn peek_is_at(tokens: &mut Tokens) -> bool { matches!(tokens.peek(), Some(TokenTree::Punct(p)) if p.as_char() == '@') } +/// Consume an `@` or `@@` capture marker and the following name ident. +/// Caller has already verified `peek_is_at(tokens)`. +fn consume_capture_marker(tokens: &mut Tokens) -> Result { + tokens.next(); // consume the first `@` + if peek_is_at(tokens) { + tokens.next(); // consume the second `@` of `@@` + } + expect_ident(tokens, "expected capture name after `@` or `@@`") +} + fn peek_is_literal(tokens: &mut Tokens) -> bool { matches!(tokens.peek(), Some(TokenTree::Literal(_))) } @@ -1025,13 +818,6 @@ fn peek_is_hash(tokens: &mut Tokens) -> bool { matches!(tokens.peek(), Some(TokenTree::Punct(p)) if p.as_char() == '#') } -/// Check for `..` (two consecutive dot punctuation tokens). -fn peek_is_dotdot(tokens: &Tokens) -> bool { - let mut lookahead = tokens.clone(); - matches!(lookahead.next(), Some(TokenTree::Punct(p)) if p.as_char() == '.') - && matches!(lookahead.next(), Some(TokenTree::Punct(p)) if p.as_char() == '.') -} - fn peek_is_underscore(tokens: &mut Tokens) -> bool { matches!(tokens.peek(), Some(TokenTree::Ident(id)) if *id == "_") } @@ -1113,8 +899,7 @@ fn expect_repetition(tokens: &mut Tokens) -> Result { fn maybe_wrap_capture(tokens: &mut Tokens, base: TokenStream) -> Result { if peek_is_at(tokens) { - tokens.next(); // consume @ - let name = expect_ident(tokens, "expected capture name after @")?; + let name = consume_capture_marker(tokens)?; let name_str = name.to_string(); Ok(quote! { yeast::query::QueryNode::Capture { @@ -1141,13 +926,12 @@ fn maybe_wrap_repetition(tokens: &mut Tokens, single: TokenStream) -> Result Result { if peek_is_at(tokens) { - tokens.next(); - let name = expect_ident(tokens, "expected capture name after @")?; + let name = consume_capture_marker(tokens)?; let name_str = name.to_string(); // Re-parse the element isn't practical, so we generate a wrapper // that creates a new Repeated with each child wrapped in a capture. diff --git a/shared/yeast/doc/yeast.md b/shared/yeast/doc/yeast.md index 1700029b43c..8aa050592f6 100644 --- a/shared/yeast/doc/yeast.md +++ b/shared/yeast/doc/yeast.md @@ -214,7 +214,7 @@ yeast::tree!(ctx, ```rust yeast::trees!(ctx, (assignment left: {tmp} right: {right}) - {..body} + {body} ) ``` @@ -256,12 +256,26 @@ occurrences of the same `$name` within one `BuildCtx` share the same value: ### Embedded Rust expressions -`{expr}` embeds a Rust expression that returns a single node `Id`: +`{expr}` embeds a Rust expression whose value is appended to the +enclosing field (or to the rule body's id list). Dispatch happens via +the [`IntoFieldIds`] trait, which is implemented for: + +- `Id` — pushes the single id. +- Any `IntoIterator>` — extends with all yielded ids + (covers `Vec`, `Option`, iterator chains, etc.). + +So the same `{expr}` syntax handles single ids, splices, and zero-or-many +options uniformly: ```rust (assignment - left: {some_node_id} // insert a pre-built node - right: {rhs} // insert a captured value (inside rule!) + left: {some_node_id} // a single Id + right: {rhs} // a captured value (inside rule!) +) + +yeast::trees!(ctx, + (assignment left: {tmp} right: {right}) + {extra_nodes} // splices a Vec ) ``` @@ -277,20 +291,47 @@ expressions (with `let` bindings) work too: }) ``` -`{..expr}` splices a `Vec` (or any iterable of `Id`); the contents -are likewise a Rust block, so the splice can be the result of arbitrary -computation: +Inside `rule!`, captures are Rust variables — `{name}` works for +single, optional, and repeated captures alike: ```rust -yeast::trees!(ctx, - (assignment left: {tmp} right: {right}) - {..extra_nodes} // splice a Vec +rule!( + (assignment left: @lhs right: _* @parts) + => + (assignment left: {lhs} right: (block stmt: {parts})) ) ``` -Inside `rule!`, captures are Rust variables, so `{name}` inserts a -single capture (`Id`) and `{..name}` splices a repeated capture -(`Vec`). +### Raw captures (`@@name`) + +The default `@name` capture marker is *auto-translated*: in OneShot +phases the macro recursively translates the captured node before +binding it, so `{name}` in the output template splices a node that +already conforms to the output schema. + +For rules that need the raw (input-schema) capture — typically to read +its source text or to translate it explicitly with mutable context +state between calls — use `@@name` instead. The body sees the original +input-schema `Id`: + +```rust +yeast::rule!( + (assignment left: (_) @@raw_lhs right: (_) @rhs) + => + { + // raw_lhs is untranslated: read its original source text. + let text = ctx.ast.source_text(raw_lhs); + // rhs is already translated by the auto-translate prefix. + tree!((call + method: (identifier #{text.as_str()}) + receiver: {rhs})) + } +); +``` + +Mix `@` and `@@` freely in the same rule. In a Repeating phase both +markers are equivalent (auto-translation is a no-op for repeating +rules). ## Complete example: for-loop desugaring diff --git a/shared/yeast/src/build.rs b/shared/yeast/src/build.rs index c7c60530599..a5f454a5f54 100644 --- a/shared/yeast/src/build.rs +++ b/shared/yeast/src/build.rs @@ -158,15 +158,6 @@ impl<'a, C> BuildCtx<'a, C> { self.ast .create_named_token_with_range(kind, generated, self.source_range) } - - /// Prepend a value to a field of an existing node. - pub fn prepend_field(&mut self, node_id: Id, field_name: &str, value_id: Id) { - let field_id = self - .ast - .field_id_for_name(field_name) - .unwrap_or_else(|| panic!("build: field '{field_name}' not found")); - self.ast.prepend_field_child(node_id, field_id, value_id); - } } impl BuildCtx<'_, C> { @@ -176,9 +167,6 @@ impl BuildCtx<'_, C> { /// (translation is not meaningful when input and output share a /// schema). /// - /// Accepts any value convertible to [`Id`] (including [`crate::NodeRef`]), - /// so manual rules can pass capture bindings directly without unwrapping. - /// /// Errors if this `BuildCtx` was constructed by hand (without a /// translator handle) — for example, in unit tests that don't go /// through the rule driver. @@ -189,20 +177,6 @@ impl BuildCtx<'_, C> { None => Err("translate() called on a BuildCtx without a translator handle".into()), } } - - /// Translate an optional capture, returning the first translated id or - /// `None`. Convenience for `?`-quantifier captures (`Option`). - /// - /// If the underlying translation produces multiple ids for a single - /// input, only the first is returned. For most use cases (e.g. - /// translating a single type annotation) this is what you want; if - /// you need all ids, use [`translate`] directly. - pub fn translate_opt>(&mut self, id: Option) -> Result, String> { - match id { - Some(id) => Ok(self.translate(id)?.into_iter().next()), - None => Ok(None), - } - } } impl std::ops::Deref for BuildCtx<'_, C> { diff --git a/shared/yeast/src/captures.rs b/shared/yeast/src/captures.rs index 404d402a501..93141ef0084 100644 --- a/shared/yeast/src/captures.rs +++ b/shared/yeast/src/captures.rs @@ -54,24 +54,24 @@ impl Captures { self.captures.entry(key).or_default().push(id); } - pub fn map_captures(&mut self, kind: &str, f: &mut impl FnMut(Id) -> Id) { - if let Some(ids) = self.captures.get_mut(kind) { - for id in ids { - *id = f(*id); - } - } - } - - /// Apply a fallible function to every captured id (across all keys), - /// replacing each id with the results. A function returning an empty - /// vector removes the capture; returning multiple ids splices them - /// into the capture's value list (suitable for `*`/`+` captures). - /// Stops and returns the error on the first failure. - pub fn try_map_all_captures( + /// Apply a fallible function to every captured id, replacing each id + /// with the results. A function returning an empty vector removes + /// the capture; returning multiple ids splices them into the + /// capture's value list (suitable for `*`/`+` captures). Captures + /// whose name appears in `skip` are left untouched. Stops and + /// returns the error on the first failure. + /// + /// Used by the `rule!` macro's auto-translate prefix to translate + /// every capture except those marked `@@name` (raw). + pub fn try_map_captures_except( &mut self, + skip: &[&str], mut f: impl FnMut(Id) -> Result, E>, ) -> Result<(), E> { - for ids in self.captures.values_mut() { + for (name, ids) in self.captures.iter_mut() { + if skip.contains(name) { + continue; + } let mut new_ids = Vec::with_capacity(ids.len()); for &id in ids.iter() { new_ids.extend(f(id)?); @@ -80,12 +80,6 @@ impl Captures { } Ok(()) } - pub fn map_captures_to(&mut self, from: &str, to: &'static str, f: &mut impl FnMut(Id) -> Id) { - if let Some(from_ids) = self.captures.get(from) { - let new_values = from_ids.iter().copied().map(f).collect(); - self.captures.insert(to, new_values); - } - } pub fn merge(&mut self, other: &Captures) { for (key, ids) in &other.captures { diff --git a/shared/yeast/src/cursor.rs b/shared/yeast/src/cursor.rs deleted file mode 100644 index ef5f6d94f25..00000000000 --- a/shared/yeast/src/cursor.rs +++ /dev/null @@ -1,8 +0,0 @@ -pub trait Cursor<'a, T, N, F> { - fn node(&self) -> &'a N; - fn field_id(&self) -> Option; - fn field_name(&self) -> Option<&'static str>; - fn goto_first_child(&mut self) -> bool; - fn goto_next_sibling(&mut self) -> bool; - fn goto_parent(&mut self) -> bool; -} diff --git a/shared/yeast/src/dump.rs b/shared/yeast/src/dump.rs index be496d40bd5..34b61432360 100644 --- a/shared/yeast/src/dump.rs +++ b/shared/yeast/src/dump.rs @@ -1,6 +1,6 @@ use std::fmt::Write; -use crate::{schema::Schema, Ast, Node, NodeContent, CHILD_FIELD}; +use crate::{schema::Schema, Ast, Id, Node, NodeContent, CHILD_FIELD}; /// Options for controlling AST dump output. pub struct DumpOptions { @@ -34,16 +34,11 @@ impl Default for DumpOptions { /// method: /// identifier "foo" /// ``` -pub fn dump_ast(ast: &Ast, root: usize, source: &str) -> String { +pub fn dump_ast(ast: &Ast, root: Id, source: &str) -> String { dump_ast_with_options(ast, root, source, &DumpOptions::default()) } -pub fn dump_ast_with_options( - ast: &Ast, - root: usize, - source: &str, - options: &DumpOptions, -) -> String { +pub fn dump_ast_with_options(ast: &Ast, root: Id, source: &str, options: &DumpOptions) -> String { let mut out = String::new(); dump_node(ast, root, source, options, 0, None, &mut out); out @@ -53,7 +48,7 @@ pub fn dump_ast_with_options( /// /// Any node that does not match the expected type set for its parent field is /// rendered with a trailing `" <-- ERROR: ..."` annotation on the same line. -pub fn dump_ast_with_type_errors(ast: &Ast, root: usize, source: &str, schema: &Schema) -> String { +pub fn dump_ast_with_type_errors(ast: &Ast, root: Id, source: &str, schema: &Schema) -> String { dump_ast_with_type_errors_and_options(ast, root, source, schema, &DumpOptions::default()) } @@ -63,7 +58,7 @@ pub fn dump_ast_with_type_errors(ast: &Ast, root: usize, source: &str, schema: & /// rendered with a trailing `" <-- ERROR: ..."` annotation on the same line. pub fn dump_ast_with_type_errors_and_options( ast: &Ast, - root: usize, + root: Id, source: &str, schema: &Schema, options: &DumpOptions, @@ -176,7 +171,7 @@ fn expected_for_field<'a>( fn dump_node( ast: &Ast, - id: usize, + id: Id, source: &str, options: &DumpOptions, indent: usize, @@ -315,7 +310,7 @@ fn dump_node( /// Dump a leaf node inline (no newline prefix, caller provides context). fn dump_node_inline( ast: &Ast, - id: usize, + id: Id, source: &str, options: &DumpOptions, type_check: Option<( diff --git a/shared/yeast/src/lib.rs b/shared/yeast/src/lib.rs index e0fffc551f3..fdfe4dd0fb0 100644 --- a/shared/yeast/src/lib.rs +++ b/shared/yeast/src/lib.rs @@ -7,7 +7,6 @@ use serde_json::{json, Value}; pub mod build; pub mod captures; -pub mod cursor; pub mod dump; pub mod node_types_yaml; pub mod query; @@ -16,35 +15,64 @@ pub mod schema; pub mod tree_builder; mod visitor; -pub use yeast_macros::{manual_rule, query, rule, tree, trees}; +pub use yeast_macros::{query, rule, tree, trees}; use captures::Captures; -pub use cursor::Cursor; use query::QueryNode; -/// Node ids are indexes into the arena -pub type Id = usize; +/// Node id: an index into the [`Ast`] arena. A newtype around `usize` +/// rather than a bare alias so that it can carry its own +/// [`YeastDisplay`] / [`YeastSourceRange`] / [`IntoFieldIds`] impls +/// without colliding with the impls for plain integers. +/// +/// Use `id.0` (or `id.into()`) to obtain the raw arena index. +#[repr(transparent)] +#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, Serialize)] +pub struct Id(pub usize); + +impl From for Id { + fn from(value: usize) -> Self { + Id(value) + } +} + +impl From for usize { + fn from(value: Id) -> Self { + value.0 + } +} /// Field and Kind ids are provided by tree-sitter type FieldId = u16; type KindId = u16; -/// A typed reference to a node in an [`Ast`] arena. Wraps an [`Id`] but -/// deliberately does not implement [`std::fmt::Display`]: rendering a node -/// requires the [`Ast`] it lives in (to resolve [`NodeContent::Range`] back -/// to source text). Use [`YeastDisplay::yeast_to_string`] to format it. -#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)] -pub struct NodeRef(pub Id); +/// Trait for values that can be appended to a field's id list inside a +/// `tree!`/`trees!`/`rule!` template (in `{expr}` placeholders). +/// +/// `Id` pushes a single id; the blanket impl for +/// `IntoIterator>` handles `Vec`, `Option`, +/// arbitrary iterators yielding `Id`, etc. +/// +/// This lets `{expr}` interpolate any of these shapes without a +/// dedicated splice syntax — the macro emits the same trait-dispatched +/// call regardless of the value's type. +pub trait IntoFieldIds { + fn extend_into(self, out: &mut Vec); +} -impl NodeRef { - pub fn id(self) -> Id { - self.0 +impl IntoFieldIds for Id { + fn extend_into(self, out: &mut Vec) { + out.push(self); } } -impl From for Id { - fn from(value: NodeRef) -> Self { - value.0 +impl IntoFieldIds for I +where + I: IntoIterator, + T: Into, +{ + fn extend_into(self, out: &mut Vec) { + out.extend(self.into_iter().map(Into::into)); } } @@ -61,21 +89,21 @@ pub trait YeastDisplay { /// Optional source range for values used in `#{expr}` interpolations. /// /// By default this returns `None`, so synthesized leaves inherit the matched -/// rule's source range. `NodeRef` returns the referenced node's range, letting +/// rule's source range. `Id` returns the referenced node's range, letting /// `(kind #{capture})` carry the captured node's location. pub trait YeastSourceRange { fn yeast_source_range(&self, ast: &Ast) -> Option; } -impl YeastDisplay for NodeRef { +impl YeastDisplay for Id { fn yeast_to_string(&self, ast: &Ast) -> String { - ast.source_text(self.0) + ast.source_text(*self) } } -impl YeastSourceRange for NodeRef { +impl YeastSourceRange for Id { fn yeast_source_range(&self, ast: &Ast) -> Option { - ast.get_node(self.0).and_then(|n| match &n.content { + ast.get_node(*self).and_then(|n| match &n.content { NodeContent::Range(r) => Some(r.clone()), _ => n.source_range, }) @@ -144,6 +172,36 @@ impl<'a> AstCursor<'a> { self.node_id } + pub fn node(&self) -> &'a Node { + &self.ast.nodes[self.node_id.0] + } + + pub fn field_id(&self) -> Option { + let (_, children) = self.parents.last()?; + children.current_field() + } + + pub fn field_name(&self) -> Option<&'static str> { + if self.field_id() == Some(CHILD_FIELD) { + None + } else { + self.field_id() + .and_then(|id| self.ast.field_name_for_id(id)) + } + } + + pub fn goto_first_child(&mut self) -> bool { + self.goto_first_child_opt().is_some() + } + + pub fn goto_next_sibling(&mut self) -> bool { + self.goto_next_sibling_opt().is_some() + } + + pub fn goto_parent(&mut self) -> bool { + self.goto_parent_opt().is_some() + } + fn goto_next_sibling_opt(&mut self) -> Option<()> { self.node_id = self.parents.last_mut()?.1.next()?; Some(()) @@ -164,37 +222,6 @@ impl<'a> AstCursor<'a> { Some(()) } } -impl<'a> Cursor<'a, Ast, Node, FieldId> for AstCursor<'a> { - fn node(&self) -> &'a Node { - &self.ast.nodes[self.node_id] - } - - fn field_id(&self) -> Option { - let (_, children) = self.parents.last()?; - children.current_field() - } - - fn field_name(&self) -> Option<&'static str> { - if self.field_id() == Some(CHILD_FIELD) { - None - } else { - self.field_id() - .and_then(|id| self.ast.field_name_for_id(id)) - } - } - - fn goto_first_child(&mut self) -> bool { - self.goto_first_child_opt().is_some() - } - - fn goto_next_sibling(&mut self) -> bool { - self.goto_next_sibling_opt().is_some() - } - - fn goto_parent(&mut self) -> bool { - self.goto_parent_opt().is_some() - } -} /// An iterator over the child Ids of a node. #[derive(Debug)] @@ -341,16 +368,16 @@ impl Ast { /// /// This reflects the effective AST after desugaring and excludes orphaned /// arena nodes left behind by rewrite operations. - pub fn reachable_node_ids(&self) -> Vec { + pub fn reachable_node_ids(&self) -> Vec { let mut reachable = Vec::new(); let mut stack = vec![self.root]; let mut seen = vec![false; self.nodes.len()]; while let Some(id) = stack.pop() { - if id >= self.nodes.len() || seen[id] { + if id.0 >= self.nodes.len() || seen[id.0] { continue; } - seen[id] = true; + seen[id.0] = true; reachable.push(id); if let Some(node) = self.get_node(id) { @@ -374,11 +401,11 @@ impl Ast { } pub fn get_node(&self, id: Id) -> Option<&Node> { - self.nodes.get(id) + self.nodes.get(id.0) } pub fn print(&self, source: &str, root_id: Id) -> Value { - let root = &self.nodes()[root_id]; + let root = &self.nodes()[root_id.0]; self.print_node(root, source) } @@ -421,7 +448,7 @@ impl Ast { is_named, source_range, }); - id + Id(id) } fn union_source_range_of_children( @@ -488,15 +515,6 @@ impl Ast { self.create_named_token_with_range(kind, content, None) } - /// Prepend a child id to the given field of the given node. - pub fn prepend_field_child(&mut self, node_id: Id, field_id: FieldId, value_id: Id) { - let node = self - .nodes - .get_mut(node_id) - .expect("prepend_field_child: invalid node id"); - node.fields.entry(field_id).or_default().insert(0, value_id); - } - pub fn create_named_token_with_range( &mut self, kind: &'static str, @@ -518,7 +536,7 @@ impl Ast { fields: BTreeMap::new(), content: NodeContent::DynamicString(content), }); - id + Id(id) } pub fn field_name_for_id(&self, id: FieldId) -> Option<&'static str> { @@ -602,10 +620,6 @@ pub struct Node { } impl Node { - pub fn kind(&self) -> &'static str { - self.kind_name - } - pub fn kind_name(&self) -> &'static str { self.kind_name } @@ -757,13 +771,14 @@ impl<'a, C: Clone> TranslatorHandle<'a, C> { } /// Translate every captured node in `captures` in place (OneShot phase - /// only). In a Repeating phase this is a no-op — Repeating rules - /// receive raw captures. + /// only), except for captures whose name appears in `skip` — those are + /// left as raw (input-schema) ids for the rule body to consume + /// directly. In a Repeating phase this is a no-op — Repeating rules + /// receive raw captures regardless of `skip`. /// - /// Used by the `rule!` macro's generated prefix to preserve the - /// pre-existing "auto-translate captures before running the transform - /// body" behavior. Manually-written transforms typically translate - /// captures selectively via [`translate`] instead. + /// Used by the `rule!` macro's generated prefix. `skip` is populated + /// from the macro's `@@name` capture markers; for plain `@name` + /// captures (and rules with no `@@` markers) it is empty. /// /// To avoid infinite recursion, a capture whose id matches the rule's /// matched root (e.g. from a `(_) @_` pattern) is left unchanged. @@ -772,11 +787,12 @@ impl<'a, C: Clone> TranslatorHandle<'a, C> { captures: &mut Captures, ast: &mut Ast, user_ctx: &mut C, + skip: &[&str], ) -> Result<(), String> { match &self.inner { TranslatorImpl::OneShot { matched_root, .. } => { let root = *matched_root; - captures.try_map_all_captures(|cid| { + captures.try_map_captures_except(skip, |cid| { if cid == root { Ok(vec![cid]) } else { @@ -948,7 +964,7 @@ fn apply_repeating_rules_inner( )); } - let node_kind = ast.get_node(id).map(|n| n.kind()).unwrap_or(""); + let node_kind = ast.get_node(id).map(|n| n.kind_name()).unwrap_or(""); for rule in index.rules_for_kind(node_kind) { let rule_ptr = *rule as *const Rule; if Some(rule_ptr) == skip_rule { @@ -1000,7 +1016,7 @@ fn apply_repeating_rules_inner( // // Child traversal does not increment rewrite depth and starts fresh // (no rule is skipped on child subtrees). - let mut fields = std::mem::take(&mut ast.nodes[id].fields); + let mut fields = std::mem::take(&mut ast.nodes[id.0].fields); for children in fields.values_mut() { let mut new_children: Option> = None; for (i, &child_id) in children.iter().enumerate() { @@ -1033,7 +1049,7 @@ fn apply_repeating_rules_inner( *children = new; } } - ast.nodes[id].fields = fields; + ast.nodes[id.0].fields = fields; Ok(vec![id]) } @@ -1067,7 +1083,7 @@ fn apply_one_shot_rules_inner( )); } - let node_kind = ast.get_node(id).map(|n| n.kind()).unwrap_or(""); + let node_kind = ast.get_node(id).map(|n| n.kind_name()).unwrap_or(""); for rule in index.rules_for_kind(node_kind) { if let Some(captures) = rule.try_match(ast, id)? { diff --git a/shared/yeast/src/visitor.rs b/shared/yeast/src/visitor.rs index 4bd2606c958..bbf4308f133 100644 --- a/shared/yeast/src/visitor.rs +++ b/shared/yeast/src/visitor.rs @@ -49,7 +49,7 @@ impl Visitor { pub fn build_with_schema(self, schema: crate::schema::Schema) -> Ast { Ast { - root: 0, + root: Id(0), schema, nodes: self.nodes.into_iter().map(|n| n.inner).collect(), source: Vec::new(), @@ -72,7 +72,7 @@ impl Visitor { }, parent: self.current, }); - id + Id(id) } fn enter_node(&mut self, node: tree_sitter::Node<'_>) -> bool { @@ -83,10 +83,10 @@ impl Visitor { fn leave_node(&mut self, field_name: Option<&'static str>, _node: tree_sitter::Node<'_>) { let node_id = self.current.unwrap(); - let node_parent = self.nodes[node_id].parent; + let node_parent = self.nodes[node_id.0].parent; if let Some(parent_id) = node_parent { - let parent = self.nodes.get_mut(parent_id).unwrap(); + let parent = self.nodes.get_mut(parent_id.0).unwrap(); if let Some(field) = field_name { let field_id = self.language.field_id_for_name(field).unwrap().get(); parent diff --git a/shared/yeast/tests/test.rs b/shared/yeast/tests/test.rs index 99471f129ab..57a9e17dbd4 100644 --- a/shared/yeast/tests/test.rs +++ b/shared/yeast/tests/test.rs @@ -300,7 +300,7 @@ fn test_query_skips_extras_in_positional_match() { let mut cursor = AstCursor::new(&ast); cursor.goto_first_child(); let array_id = cursor.node_id(); - assert_eq!(ast.get_node(array_id).unwrap().kind(), "array"); + assert_eq!(ast.get_node(array_id).unwrap().kind_name(), "array"); // Two positional wildcards should bind to the two integers, skipping // the comment that sits between them. @@ -309,11 +309,15 @@ fn test_query_skips_extras_in_positional_match() { let matched = query.do_match(&ast, array_id, &mut captures).unwrap(); assert!(matched); assert_eq!( - ast.get_node(captures.get_var("a").unwrap()).unwrap().kind(), + ast.get_node(captures.get_var("a").unwrap()) + .unwrap() + .kind_name(), "integer" ); assert_eq!( - ast.get_node(captures.get_var("b").unwrap()).unwrap().kind(), + ast.get_node(captures.get_var("b").unwrap()) + .unwrap() + .kind_name(), "integer" ); } @@ -391,7 +395,7 @@ fn test_capture_unnamed_node_parenthesized() { assert!(matched); let op_id = captures.get_var("op").unwrap(); let op_node = ast.get_node(op_id).unwrap(); - assert_eq!(op_node.kind(), "="); + assert_eq!(op_node.kind_name(), "="); assert!(!op_node.is_named()); } @@ -414,7 +418,7 @@ fn test_capture_bare_underscore_repeated() { let all = captures.get_all("all"); assert_eq!(all.len(), 1); - assert_eq!(ast.get_node(all[0]).unwrap().kind(), "="); + assert_eq!(ast.get_node(all[0]).unwrap().kind_name(), "="); assert!(!ast.get_node(all[0]).unwrap().is_named()); } @@ -441,7 +445,7 @@ fn test_capture_unnamed_node_bare_literal() { assert!(matched); let op_id = captures.get_var("op").unwrap(); let op_node = ast.get_node(op_id).unwrap(); - assert_eq!(op_node.kind(), "="); + assert_eq!(op_node.kind_name(), "="); assert!(!op_node.is_named()); } @@ -479,7 +483,7 @@ fn test_bare_underscore_matches_unnamed() { .unwrap(); assert!(matched, "_ should match the unnamed `=`"); let any_node = ast.get_node(captures.get_var("any").unwrap()).unwrap(); - assert_eq!(any_node.kind(), "="); + assert_eq!(any_node.kind_name(), "="); assert!(!any_node.is_named()); } @@ -506,7 +510,7 @@ fn test_bare_forms_in_field_position() { assert_eq!( ast.get_node(captures.get_var("lhs").unwrap()) .unwrap() - .kind(), + .kind_name(), "identifier" ); @@ -516,7 +520,7 @@ fn test_bare_forms_in_field_position() { let matched = query.do_match(&ast, assignment_id, &mut captures).unwrap(); assert!(matched); let op = ast.get_node(captures.get_var("op").unwrap()).unwrap(); - assert_eq!(op.kind(), "="); + assert_eq!(op.kind_name(), "="); assert!(!op.is_named()); } @@ -535,7 +539,7 @@ fn test_forward_scan_finds_unnamed_token_late() { let mut cursor = AstCursor::new(&ast); cursor.goto_first_child(); // for cursor.goto_first_child(); // do (the body) - while cursor.node().kind() != "do" || !cursor.node().is_named() { + while cursor.node().kind_name() != "do" || !cursor.node().is_named() { assert!(cursor.goto_next_sibling(), "expected to find named `do`"); } let do_id = cursor.node_id(); @@ -545,7 +549,7 @@ fn test_forward_scan_finds_unnamed_token_late() { let matched = query.do_match(&ast, do_id, &mut captures).unwrap(); assert!(matched, "forward-scan should find the `end` keyword"); let kw = ast.get_node(captures.get_var("kw").unwrap()).unwrap(); - assert_eq!(kw.kind(), "end"); + assert_eq!(kw.kind_name(), "end"); assert!(!kw.is_named()); } @@ -561,7 +565,7 @@ fn test_forward_scan_preserves_order() { let mut cursor = AstCursor::new(&ast); cursor.goto_first_child(); cursor.goto_first_child(); - while cursor.node().kind() != "do" || !cursor.node().is_named() { + while cursor.node().kind_name() != "do" || !cursor.node().is_named() { assert!(cursor.goto_next_sibling(), "expected to find named `do`"); } let do_id = cursor.node_id(); @@ -635,7 +639,7 @@ fn ruby_rules() -> Vec { left: (identifier $tmp) right: {right} ) - {..left.iter().enumerate().map(|(i, &lhs)| + {left.iter().enumerate().map(|(i, &lhs)| yeast::tree!( (assignment left: {lhs} @@ -667,7 +671,7 @@ fn ruby_rules() -> Vec { left: {pat} right: (identifier $tmp) ) - stmt: {..body} + stmt: {body} ) ) ) @@ -903,7 +907,7 @@ fn one_shot_xeq1_rules() -> Vec { yeast::rule!( (program (_)* @stmts) => - (program stmt: {..stmts}) + (program stmt: {stmts}) ), yeast::rule!( (assignment left: (_) @left right: (_) @right) @@ -979,7 +983,7 @@ fn test_one_shot_recurses_into_returned_capture() { yeast::rule!( (program (_)* @stmts) => - (program stmt: {..stmts}) + (program stmt: {stmts}) ), // Returns the captured `left` verbatim, discarding `right`. yeast::rule!( @@ -1021,7 +1025,7 @@ fn test_one_shot_does_not_recurse_into_wrapper_output() { yeast::rule!( (program (_)* @stmts) => - (program stmt: {..stmts}) + (program stmt: {stmts}) ), // Wraps `left` in nested `first_node`/`second_node` output kinds. // Neither wrapper kind has a matching rule, so a buggy implementation @@ -1058,6 +1062,111 @@ fn test_one_shot_does_not_recurse_into_wrapper_output() { ); } +/// Verify that `@@name` capture markers skip the auto-translate prefix: +/// the body sees the *raw* (input-schema) `Id` and can read its +/// source text or call `ctx.translate(...)` explicitly. Compare with +/// the bare `@name` form, where the auto-translate prefix runs the +/// same translation up front and the body sees the post-translate id. +#[test] +fn test_raw_capture_marker() { + let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); + let schema = + yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); + let rules: Vec = vec![ + yeast::rule!( + (program (_)* @stmts) + => + (program stmt: {stmts}) + ), + // `@@raw_lhs` is untranslated: the body reads its source text + // ("x") and embeds it directly as the identifier content. `@rhs` + // is auto-translated (rhs already points to (integer "INT")). + yeast::rule!( + (assignment left: (_) @@raw_lhs right: (_) @rhs) + => + { + let text = ctx.ast.source_text(raw_lhs); + tree!((call + method: (identifier #{text.as_str()}) + receiver: {rhs})) + } + ), + yeast::rule!((identifier) => (identifier "ID")), + yeast::rule!((integer) => (integer "INT")), + ]; + let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let runner: Runner = Runner::with_schema(lang, &schema, &phases); + + let input = "x = 1"; + let ast = runner.run(input).unwrap(); + let dump = dump_ast(&ast, ast.get_root(), input); + // `method:` uses the raw source text ("x"); if `@@` were broken and + // auto-translation ran on `raw_lhs`, it would still produce the + // string "x" (source_text inherits the input range), so the dump + // wouldn't change here. The companion test + // `test_raw_capture_marker_explicit_translate` exercises the + // stronger property that `ctx.translate(raw_lhs)?` succeeds and + // produces the translated `(identifier "ID")`. + assert_dump_eq( + &dump, + r#" + program + stmt: + call + method: identifier "x" + receiver: integer "INT" + "#, + ); +} + +/// Companion to `test_raw_capture_marker`: confirms that calling +/// `ctx.translate(raw)` on a `@@`-captured `Id` from the rule body +/// produces the correctly-translated output-schema node. With `@`, the +/// translation has already happened, so `ctx.translate(...)` inside the +/// body would attempt to re-translate an output node (which has no +/// matching rule and would error). +#[test] +fn test_raw_capture_marker_explicit_translate() { + let lang: tree_sitter::Language = tree_sitter_ruby::LANGUAGE.into(); + let schema = + yeast::node_types_yaml::schema_from_yaml_with_language(OUTPUT_SCHEMA_YAML, &lang).unwrap(); + let rules: Vec = vec![ + yeast::rule!( + (program (_)* @stmts) + => + (program stmt: {stmts}) + ), + yeast::rule!( + (assignment left: (_) @@raw_lhs right: (_) @rhs) + => + { + let translated_lhs = ctx.translate(raw_lhs)?; + tree!((call + method: {translated_lhs} + receiver: {rhs})) + } + ), + yeast::rule!((identifier) => (identifier "ID")), + yeast::rule!((integer) => (integer "INT")), + ]; + let phases = vec![Phase::new("translate", PhaseKind::OneShot, rules)]; + let runner: Runner = Runner::with_schema(lang, &schema, &phases); + + let input = "x = 1"; + let ast = runner.run(input).unwrap(); + let dump = dump_ast(&ast, ast.get_root(), input); + assert_dump_eq( + &dump, + r#" + program + stmt: + call + method: identifier "ID" + receiver: integer "INT" + "#, + ); +} + // ---- Cursor tests ---- #[test] @@ -1067,11 +1176,11 @@ fn test_cursor_navigation() { let mut cursor = AstCursor::new(&ast); // Start at root - assert_eq!(cursor.node().kind(), "program"); + assert_eq!(cursor.node().kind_name(), "program"); // Go to first child (assignment) assert!(cursor.goto_first_child()); - assert_eq!(cursor.node().kind(), "assignment"); + assert_eq!(cursor.node().kind_name(), "assignment"); // No sibling assert!(!cursor.goto_next_sibling()); @@ -1082,10 +1191,10 @@ fn test_cursor_navigation() { // Go back up assert!(cursor.goto_parent()); - assert_eq!(cursor.node().kind(), "assignment"); + assert_eq!(cursor.node().kind_name(), "assignment"); assert!(cursor.goto_parent()); - assert_eq!(cursor.node().kind(), "program"); + assert_eq!(cursor.node().kind_name(), "program"); // Can't go further up assert!(!cursor.goto_parent()); @@ -1130,10 +1239,8 @@ fn test_desugar_for_with_multiple_assignment() { } /// Regression test: `#{capture}` in a template must render the *source text* -/// of the captured node, not its arena `Id`. Previously, captures were bound -/// as `usize`, so `#{cap}` printed the integer id (e.g. `"3"`) via `Display`. -/// Captures are now bound as `NodeRef`, which has no `Display` impl and -/// resolves to the captured node's source text via `YeastDisplay`. +/// of the captured node, not its arena `Id`. Captures are bound as `Id`, +/// whose `YeastDisplay` impl resolves to the captured node's source text. #[test] fn test_hash_brace_renders_capture_source_text() { let rule: Rule = rule!( @@ -1161,7 +1268,7 @@ fn test_hash_brace_renders_capture_source_text() { ); } -/// Regression test: non-`NodeRef` values in `#{expr}` still render via their +/// Regression test: non-`Id` values in `#{expr}` still render via their /// `Display` impl (covered by `YeastDisplay`'s blanket impls for primitives). #[test] fn test_hash_brace_renders_integer_expression() { @@ -1199,12 +1306,12 @@ fn test_hash_brace_uses_capture_location_for_leaf() { let ast = run_and_ast("foo.bar()", vec![rule]); - let mut bar_ids: Vec = Vec::new(); + let mut bar_ids: Vec = Vec::new(); for id in ast.reachable_node_ids() { let Some(node) = ast.get_node(id) else { continue; }; - if node.kind() == "identifier" && ast.source_text(id) == "bar" { + if node.kind_name() == "identifier" && ast.source_text(id) == "bar" { bar_ids.push(id); } } diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll index 9ea57c1ff06..135924c0eb7 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPrivate.qll @@ -305,7 +305,7 @@ private module Cached { model = "" or // flow through a flow summary (extension of `SummaryModelCsv`) - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), true, model) } diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll index 3a096fe3d57..6ca8e12ef6b 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll @@ -20,6 +20,8 @@ module Input implements InputSig class SinkBase = Void; + class FlowSummaryCallBase = Void; + predicate callableFromSource(SummarizedCallableBase c) { c.hasBody() } ArgumentPosition callbackSelfParameterPosition() { result instanceof ThisArgumentPosition } @@ -113,6 +115,10 @@ module Input implements InputSig private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { + Impl::Private::SummaryNode getSummaryNode(Node n) { + result = n.(FlowSummaryNode).getSummaryNode() + } + DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() } diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll index c3f14b03f83..6960dcf6177 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingPrivate.qll @@ -76,7 +76,7 @@ private module Cached { model = "" or // flow through a flow summary (extension of `SummaryModelCsv`) - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo.(FlowSummaryNode).getSummaryNode(), false, model) or any(AdditionalTaintStep a).step(nodeFrom, nodeTo) and model = "AdditionalTaintStep" diff --git a/unified/AGENTS.md b/unified/AGENTS.md index 6c7d697896f..a50a49868a2 100644 --- a/unified/AGENTS.md +++ b/unified/AGENTS.md @@ -19,7 +19,11 @@ This is a CodeQL extractor based on tree-sitter. - To run tests for the parser and mapping, run `cargo test` in the `extractor` directory. -- Do not edit the printed ASTs in `extractor/test/corpus` directly. To regenerate the ASTs, run `scripts/update-corpus.sh`. +- Extractor test cases are located at `extractor/tests/corpus/swift/*/*.swift`. + +- Each test case has a corresponding `.output` file containing its generated output along with a copy of the test case itself. + +- Check the output files for correctness but do not edit them manually. Regenerate them with `scripts/update-corpus.sh`. ## CodeQL Testing - If you changed the extractor code, always rebuild it before running CodeQL tests. diff --git a/unified/codeql-extractor.yml b/unified/codeql-extractor.yml index 388566c09f1..8851d352079 100644 --- a/unified/codeql-extractor.yml +++ b/unified/codeql-extractor.yml @@ -5,6 +5,8 @@ column_kind: "utf8" legacy_qltest_extraction: true build_modes: - none +default_queries: + - codeql/unified-queries github_api_languages: - Swift scc_languages: diff --git a/unified/extractor/ast_types.yml b/unified/extractor/ast_types.yml index 73f8ac7f66d..418772aa268 100644 --- a/unified/extractor/ast_types.yml +++ b/unified/extractor/ast_types.yml @@ -42,6 +42,7 @@ supertypes: - name_pattern - tuple_pattern - constructor_pattern + - or_pattern - ignore_pattern - expr_equality_pattern - bulk_importing_pattern @@ -359,12 +360,12 @@ named: case*: switch_case # A single `case ...:` (or `default:`) entry in a switch. - # An entry with multiple `case p1, p2:` patterns has multiple `pattern`s. - # A `default:` entry has no patterns. + # An entry with multiple `case p1, p2:` patterns uses an `or_pattern`. + # A `default:` entry has no pattern. # An optional `guard` corresponds to a `where`-clause on the case. switch_case: modifier*: modifier - pattern*: pattern + pattern?: pattern guard?: expr body: block @@ -421,6 +422,11 @@ named: constructor: expr_or_type element*: pattern_element + # A disjunction pattern that matches if any of its sub-patterns match. + or_pattern: + modifier*: modifier + pattern*: pattern + # A pattern with an optional associated name. pattern_element: modifier*: modifier diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index c84e3cf3867..5689d930bff 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -1,5 +1,5 @@ use codeql_extractor::extractor::simple; -use yeast::{ConcreteDesugarer, DesugaringConfig, PhaseKind, Rule, manual_rule, rule, tree}; +use yeast::{ConcreteDesugarer, DesugaringConfig, PhaseKind, Rule, rule, tree}; /// User context propagated from outer rules down to the inner rules that /// emit the corresponding output declarations, so that each emitted node @@ -45,7 +45,7 @@ struct SwiftContext { /// Build a freshly-created `chained_declaration` modifier node if /// `ctx.is_chained`, else `None`. Used by inner declaration rules to /// emit the chained tag for non-first children of a flattening outer -/// rule. Returns `Option` so it splices via `{..…}` to 0 or 1 ids. +/// rule. Returns `Option` so it splices via `{…}` to 0 or 1 ids. fn chained_modifier(ctx: &mut yeast::build::BuildCtx<'_, SwiftContext>) -> Option { if ctx.is_chained { Some(ctx.literal("modifier", "chained_declaration")) @@ -63,10 +63,10 @@ fn chained_modifier(ctx: &mut yeast::build::BuildCtx<'_, SwiftContext>) -> Optio /// condition. fn and_chain( ctx: &mut yeast::build::BuildCtx<'_, SwiftContext>, - conds: Vec, + conds: Vec, ) -> yeast::Id { - conds.into_iter() - .map(yeast::Id::from) + conds + .into_iter() .reduce(|acc, elem| { tree!((binary_expr operator: (infix_operator "&&") left: {acc} right: {elem})) }) @@ -79,7 +79,7 @@ fn and_chain( /// guarantees at least one part. fn member_chain( ctx: &mut yeast::build::BuildCtx<'_, SwiftContext>, - parts: Vec, + parts: Vec, ) -> yeast::Id { let mut iter = parts.into_iter(); let first = iter @@ -100,7 +100,7 @@ fn translation_rules() -> Vec> { (source_file statement: _* @children) => (top_level - body: (block stmt: {..children}) + body: (block stmt: {children}) ) ), // Declarations may be wrapped in local/global wrapper nodes. @@ -144,12 +144,12 @@ fn translation_rules() -> Vec> { rule!( (operator_declaration "prefix" (referenceable_operator _ @op) (simple_identifier)? @prec) => - (operator_syntax_declaration name: (identifier #{op}) fixity: (fixity "prefix") precedence: {..prec}) + (operator_syntax_declaration name: (identifier #{op}) fixity: (fixity "prefix") precedence: {prec}) ), rule!( (operator_declaration "postfix" (referenceable_operator _ @op) (simple_identifier)? @prec) => - (operator_syntax_declaration name: (identifier #{op}) fixity: (fixity "postfix") precedence: {..prec}) + (operator_syntax_declaration name: (identifier #{op}) fixity: (fixity "postfix") precedence: {prec}) ), rule!( (operator_declaration "infix" (referenceable_operator _ @op) (simple_identifier)? @prec) @@ -157,7 +157,7 @@ fn translation_rules() -> Vec> { (operator_syntax_declaration name: (identifier #{op}) fixity: (fixity "infix") - precedence: {..prec}) + precedence: {prec}) ), rule!((bitwise_operation lhs: @l op: @op rhs: @r) => (binary_expr left: {l} operator: (infix_operator #{op}) right: {r})), rule!((nil_coalescing_expression value: @l if_nil: @r) => (binary_expr left: {l} operator: (infix_operator "??") right: {r})), @@ -170,9 +170,9 @@ fn translation_rules() -> Vec> { rule!((postfix_expression operation: @op target: @operand) => (unary_expr operator: (postfix_operator #{op}) operand: {operand})), // TODO: Parenthesised single-value tuple is a grouping expression and should pass through. // Multi-value tuples become tuple_expr. - rule!((tuple_expression value: _* @v) => (tuple_expr element: {..v})), + rule!((tuple_expression value: _* @v) => (tuple_expr element: {v})), // Blocks contain statement* directly. - rule!((block statement: _+ @stmts) => (block stmt: {..stmts})), + rule!((block statement: _+ @stmts) => (block stmt: {stmts})), rule!((block) => (block)), // ---- Variables ---- // property_binding rules — these produce variable_declaration and/or accessor_declaration @@ -192,21 +192,15 @@ fn translation_rules() -> Vec> { // this whole property_binding is itself a non-first declarator // of a containing property_declaration); subsequent accessors // always emit `chained_declaration`. - manual_rule!( + rule!( (property_binding name: @pattern type: _? @ty - computed_value: (computed_property accessor: _+ @accessors)) - { - // Translate `ty` first so the context holds an - // output-schema node id. - let translated_ty = ctx.translate_opt(ty)?; - // Build the property-name identifier from the - // (untranslated) pattern leaf. - let name_id = tree!((identifier #{pattern})); - - ctx.property_name = Some(name_id); - ctx.property_type = translated_ty; + computed_value: (computed_property accessor: _+ @@accessors)) + => + {{ + ctx.property_name = Some(tree!((identifier #{pattern}))); + ctx.property_type = ty; let mut result = Vec::new(); for (i, acc) in accessors.into_iter().enumerate() { @@ -215,8 +209,8 @@ fn translation_rules() -> Vec> { } result.extend(ctx.translate(acc)?); } - Ok(result) - } + result + }} ), // Computed property: shorthand getter (no explicit get/set, just // statements) → a single accessor_declaration with kind "get". @@ -229,13 +223,13 @@ fn translation_rules() -> Vec> { computed_value: (computed_property statement: _* @body)) => (accessor_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} name: (identifier #{name}) - type: {..ty} + type: {ty} accessor_kind: (accessor_kind "get") - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // Stored property with willSet/didSet observers (initializer // optional) → a `variable_declaration` followed by one @@ -248,26 +242,22 @@ fn translation_rules() -> Vec> { // The `variable_declaration` itself inherits the outer rule's // chained state; observers always get `chained_declaration` // because they're subsequent outputs of this flattening rule. - manual_rule!( + rule!( (property_binding name: (pattern bound_identifier: @name) type: _? @ty value: _? @val - observers: (willset_didset_block willset: _? @ws didset: _? @ds)) - { - // Translate ty and val so the variable_declaration - // below contains output-schema nodes. - let translated_ty = ctx.translate_opt(ty)?; - let translated_val = ctx.translate_opt(val)?; - + observers: (willset_didset_block willset: _? @@ws didset: _? @@ds)) + => + {{ let var_decl = tree!( (variable_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} pattern: (name_pattern identifier: (identifier #{name})) - type: {..translated_ty} - value: {..translated_val}) + type: {ty} + value: {val}) ); // Publish the property name for the observer rules. @@ -280,8 +270,8 @@ fn translation_rules() -> Vec> { for obs in ws.into_iter().chain(ds) { result.extend(ctx.translate(obs)?); } - Ok(result) - } + result + }} ), // property_binding with any pattern name (identifier or // destructuring). Reads outer modifiers / chained tag from `ctx`. @@ -292,12 +282,12 @@ fn translation_rules() -> Vec> { value: _? @val) => (variable_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} pattern: {pattern} - type: {..ty} - value: {..val}) + type: {ty} + value: {val}) ), // property_declaration: flatten declarators (each may translate // to multiple nodes — variable_declaration and/or @@ -309,27 +299,24 @@ fn translation_rules() -> Vec> { // inner declaration rules (`property_binding` variants, // accessor inner rules) read these fields and emit complete // `modifier:` lists from the start. - manual_rule!( + rule!( (property_declaration - binding: (value_binding_pattern mutability: @binding_kind) - declarator: _* @decls + binding: (value_binding_pattern mutability: @@binding_kind) + declarator: _* @@decls (modifiers)* @mods) - { - let binding_text = ctx.ast.source_text(binding_kind.0); + => + {{ + let binding_text = ctx.ast.source_text(binding_kind); ctx.binding_modifier = Some(ctx.literal("modifier", &binding_text)); - let mut modifiers = Vec::new(); - for m in mods { - modifiers.extend(ctx.translate(m)?); - } - ctx.outer_modifiers = modifiers; + ctx.outer_modifiers = mods; let mut result = Vec::new(); for (i, decl) in decls.into_iter().enumerate() { ctx.is_chained = i > 0; result.extend(ctx.translate(decl)?); } - Ok(result) - } + result + }} ), // ---- Enums ---- // enum_type_parameter → parameter (with optional name as pattern). @@ -355,19 +342,19 @@ fn translation_rules() -> Vec> { data_contents: (enum_type_parameters parameter: _* @params)) => (class_like_declaration - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} modifier: (modifier "enum_case") name: (identifier #{name}) - member: (constructor_declaration parameter: {..params} body: (block))) + member: (constructor_declaration parameter: {params} body: (block))) ), // enum_case_entry with explicit raw value → variable_declaration with that value. rule!( (enum_case_entry name: @name raw_value: @val) => (variable_declaration - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} modifier: (modifier "enum_case") pattern: (name_pattern identifier: (identifier #{name})) value: {val}) @@ -377,8 +364,8 @@ fn translation_rules() -> Vec> { (enum_case_entry name: @name) => (variable_declaration - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} modifier: (modifier "enum_case") pattern: (name_pattern identifier: (identifier #{name}))) ), @@ -386,22 +373,19 @@ fn translation_rules() -> Vec> { // into `ctx` and translate each case with `ctx.is_chained` // toggled per iteration so the inner `enum_case_entry` rules // emit complete `modifier:` lists from the start. - manual_rule!( - (enum_entry case: _+ @cases (modifiers)* @mods) - { - let mut modifiers = Vec::new(); - for m in mods { - modifiers.extend(ctx.translate(m)?); - } - ctx.outer_modifiers = modifiers; + rule!( + (enum_entry case: _+ @@cases (modifiers)* @mods) + => + {{ + ctx.outer_modifiers = mods; let mut result = Vec::new(); for (i, case) in cases.into_iter().enumerate() { ctx.is_chained = i > 0; result.extend(ctx.translate(case)?); } - Ok(result) - } + result + }} ), // Plain assignment: `x = expr` rule!( @@ -434,7 +418,7 @@ fn translation_rules() -> Vec> { => (constructor_pattern constructor: (member_access_expr base: {typ} member: (identifier #{name})) - element: {..items}) + element: {items}) ), // case .foo(x,y) pattern rule!( @@ -442,10 +426,10 @@ fn translation_rules() -> Vec> { => (constructor_pattern constructor: (member_access_expr base: (inferred_type_expr #{dot}) member: (identifier #{name})) - element: {..items}) + element: {items}) ), // Tuple pattern and its (optionally named) items - rule!((pattern kind: (tuple_pattern item: _* @elems)) => (tuple_pattern element: {..elems})), + rule!((pattern kind: (tuple_pattern item: _* @elems)) => (tuple_pattern element: {elems})), rule!((tuple_pattern_item name: @key pattern: @pat) => (pattern_element key: (identifier #{key}) pattern: {pat})), rule!((tuple_pattern_item pattern: @pat) => (pattern_element pattern: {pat})), // Type casting pattern (TODO) @@ -468,20 +452,21 @@ fn translation_rules() -> Vec> { => (function_declaration name: (identifier #{name}) - parameter: {..params} - return_type: {..ret} - body: (block stmt: {..body_stmts})) + parameter: {params} + return_type: {ret} + body: (block stmt: {body_stmts})) ), // Parameters are wrapped in function_parameter, which also carries // optional default values. Publishes the default value into `ctx` // before translating the inner `parameter` so the `parameter` // rules can include it as a `default:` field directly. - manual_rule!( - (function_parameter parameter: @p default_value: _? @def) - { - ctx.default_value = ctx.translate_opt(def)?; - ctx.translate(p) - } + rule!( + (function_parameter parameter: @@p default_value: _? @def) + => + {{ + ctx.default_value = def; + ctx.translate(p)? + }} ), // Parameter with external name and type rule!( @@ -490,7 +475,7 @@ fn translation_rules() -> Vec> { (parameter external_name: (identifier #{ext}) pattern: (name_pattern identifier: (identifier #{name})) - default: {..ctx.default_value}) + default: {ctx.default_value}) ), rule!( (parameter external_name: @ext name: @name type: @ty) @@ -499,7 +484,7 @@ fn translation_rules() -> Vec> { external_name: (identifier #{ext}) pattern: (name_pattern identifier: (identifier #{name})) type: {ty} - default: {..ctx.default_value}) + default: {ctx.default_value}) ), // Parameter with just name and type (no external name) rule!( @@ -507,7 +492,7 @@ fn translation_rules() -> Vec> { => (parameter pattern: (name_pattern identifier: (identifier #{name})) - default: {..ctx.default_value}) + default: {ctx.default_value}) ), rule!( (parameter name: @name type: @ty) @@ -515,7 +500,7 @@ fn translation_rules() -> Vec> { (parameter pattern: (name_pattern identifier: (identifier #{name})) type: {ty} - default: {..ctx.default_value}) + default: {ctx.default_value}) ), // Reference to a function, f(x:y:z:). This is parsed as a call with a single argument with multiple reference_specifier labels. // We don't want downstream QL to try to handle this as a call_expr with a weird argument, so explicitly mark it as unsupported for now. @@ -529,7 +514,7 @@ fn translation_rules() -> Vec> { rule!( (call_expression function: @func suffix: (call_suffix arguments: (value_arguments argument: (value_argument)* @args))) => - (call_expr callee: {func} argument: {..args}) + (call_expr callee: {func} argument: {args}) ), // Value argument with label (value: _ matches both named nodes and anonymous tokens like nil) rule!( @@ -552,7 +537,7 @@ fn translation_rules() -> Vec> { // Return / break / continue, one rule per keyword. // The anonymous "return"/"break"/"continue" keywords are matched as // string literals. - rule!((control_transfer_statement kind: "return" result: _? @val) => (return_expr value: {..val})), + rule!((control_transfer_statement kind: "return" result: _? @val) => (return_expr value: {val})), rule!((control_transfer_statement kind: "break" result: @lbl) => (break_expr label: (identifier #{lbl}))), rule!((control_transfer_statement kind: "break") => (break_expr)), rule!((control_transfer_statement kind: "continue" result: @lbl) => (continue_expr label: (identifier #{lbl}))), @@ -571,20 +556,20 @@ fn translation_rules() -> Vec> { statement: _* @body) => (function_expr - modifier: {..attrs} - capture_declaration: {..captures} - parameter: {..params} - return_type: {..ret} - body: (block stmt: {..body})) + modifier: {attrs} + capture_declaration: {captures} + parameter: {params} + return_type: {ret} + body: (block stmt: {body})) ), // capture_list_item with ownership modifier (e.g. [weak self], [unowned x]) rule!( (capture_list_item ownership: _? @ownership name: @name value: _? @val) => (variable_declaration - modifier: {..ownership} + modifier: {ownership} pattern: (name_pattern identifier: (identifier #{name})) - value: {..val}) + value: {val}) ), // Lambda parameter with type and optional external name rule!( @@ -630,7 +615,7 @@ fn translation_rules() -> Vec> { (if_expr condition: {and_chain(&mut ctx, cond)} then: {then_body} - else: {..else_stmts}) + else: {else_stmts}) ), // Guard statement rule!( @@ -638,7 +623,7 @@ fn translation_rules() -> Vec> { => (guard_if_stmt condition: {and_chain(&mut ctx, cond)} - else: (block stmt: {..else_stmts})) + else: (block stmt: {else_stmts})) ), // Ternary expression → if_expr rule!( @@ -650,27 +635,36 @@ fn translation_rules() -> Vec> { rule!( (switch_statement expr: @val entry: (switch_entry)* @cases) => - (switch_expr value: {val} case: {..cases}) + (switch_expr value: {val} case: {cases}) ), - // Switch entry with patterns and body + // Switch entry with multiple patterns and body rule!( - (switch_entry pattern: (switch_pattern pattern: @pats)* statement: _* @body) + (switch_entry + pattern: (switch_pattern pattern: @first) + pattern: (switch_pattern pattern: @rest)+ + statement: _* @body) => - (switch_case pattern: {..pats} body: (block stmt: {..body})) + (switch_case pattern: (or_pattern pattern: {first} pattern: {rest}) body: (block stmt: {body})) + ), + // Switch entry with exactly one pattern and body + rule!( + (switch_entry pattern: (switch_pattern pattern: @pat) statement: _* @body) + => + (switch_case pattern: {pat} body: (block stmt: {body})) ), // Switch entry: default case (no patterns) rule!( (switch_entry default: (default_keyword) statement: _* @body) => - (switch_case body: (block stmt: {..body})) + (switch_case body: (block stmt: {body})) ), - // if case let x = expr — the pattern is taken as-is (no Optional wrapping) + // if case PATTERN = expr — preserve the pattern directly (no Optional wrapping) rule!( - (if_let_binding "case" (value_binding_pattern) bound_identifier: @name _ @val) + (if_let_binding "case" pattern: @pat value: @val) => (pattern_guard_expr value: {val} - pattern: (name_pattern identifier: (identifier #{name}))) + pattern: {pat}) ), rule!( (if_let_binding @@ -708,8 +702,8 @@ fn translation_rules() -> Vec> { (for_each_stmt pattern: {pat} iterable: {iter} - guard: {..guard} - body: (block stmt: {..body})) + guard: {guard} + body: (block stmt: {body})) ), // While loop rule!( @@ -717,7 +711,7 @@ fn translation_rules() -> Vec> { => (while_stmt condition: {and_chain(&mut ctx, cond)} - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // Repeat-while loop rule!( @@ -725,28 +719,28 @@ fn translation_rules() -> Vec> { => (do_while_stmt condition: {and_chain(&mut ctx, cond)} - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // Labeled statement (e.g. `outer: for ...`). Strip the trailing ':' from the label token. rule!((labeled_statement label: (statement_label) @lbl statement: @stmt) => { - let text = ctx.ast.source_text(lbl.into()); + let text = ctx.ast.source_text(lbl); let name = &text[..text.len() - 1]; tree!((labeled_stmt label: (identifier #{name}) stmt: {stmt})) }), // ---- Collections ---- // Array literal - rule!((array_literal element: _* @elems) => (array_literal element: {..elems})), + rule!((array_literal element: _* @elems) => (array_literal element: {elems})), // Empty array literal rule!((array_literal) => (array_literal)), // Dictionary literal — zip keys and values into key_value_pairs rule!( (dictionary_literal key: _* @keys value: _* @vals) => - (map_literal element: {..keys.into_iter().zip(vals).map(|(k, v)| + (map_literal element: {keys.into_iter().zip(vals).map(|(k, v)| tree!((key_value_pair key: {k} value: {v})) )}) ), - rule!((dictionary_literal element: _* @elems) => (map_literal element: {..elems})), + rule!((dictionary_literal element: _* @elems) => (map_literal element: {elems})), rule!((dictionary_literal_item key: @k value: @v) => (key_value_pair key: {k} value: {v})), // ---- Optionals and errors ---- // Optional chaining — unwrap the marker @@ -759,8 +753,8 @@ fn translation_rules() -> Vec> { (do_statement body: (block statement: _* @body) catch: (catch_block)* @catches) => (try_expr - body: (block stmt: {..body}) - catch_clause: {..catches}) + body: (block stmt: {body}) + catch_clause: {catches}) ), // Catch block with bound identifier; optional where-clause guard. rule!( @@ -772,14 +766,14 @@ fn translation_rules() -> Vec> { => (catch_clause pattern: {pattern} - guard: {..guard} - body: (block stmt: {..body})) + guard: {guard} + body: (block stmt: {body})) ), // Catch block without error binding rule!( (catch_block keyword: (catch_keyword) body: (block statement: _* @body)) => - (catch_clause body: (block stmt: {..body})) + (catch_clause body: (block stmt: {body})) ), // Empty catch block: catch {} rule!( @@ -793,7 +787,7 @@ fn translation_rules() -> Vec> { => (catch_clause pattern: {pat} - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // As expression (type cast) — as?, as! rule!((as_expression (as_operator) @op expr: @val type: @ty) => (type_cast_expr expr: {val} operator: (infix_operator #{op}) type: {ty})), @@ -818,7 +812,7 @@ fn translation_rules() -> Vec> { pattern: (name_pattern identifier: (identifier #{parts.last().unwrap()})) imported_expr: {name} modifier: (modifier #{kind}) - modifier: {..mods}) + modifier: {mods}) ), // Non-scoped import declaration (for example `import Foundation`): // flatten the identifier parts into a member_access_expr and use a @@ -829,7 +823,7 @@ fn translation_rules() -> Vec> { (import_declaration pattern: (bulk_importing_pattern) imported_expr: {name} - modifier: {..mods}) + modifier: {mods}) ), // ---- Types and classes ---- // Self expression → name_expr @@ -837,7 +831,7 @@ fn translation_rules() -> Vec> { // Super expression → super_expr rule!((super_expression) => (super_expr)), // Modifiers — unwrap to individual modifier children - rule!((modifiers _* @mods) => {..mods}), + rule!((modifiers _* @mods) => {mods}), rule!((attribute) @m => (modifier #{m})), rule!((visibility_modifier) @m => (modifier #{m})), rule!((function_modifier) @m => (modifier #{m})), @@ -854,7 +848,7 @@ fn translation_rules() -> Vec> { // Keep a conservative textual fallback to avoid dropping type information. rule!((user_type) @ty => (named_type_expr name: (identifier #{ty}))), // Tuple type → tuple_type_expr - rule!((tuple_type element: _* @elems) => (tuple_type_expr element: {..elems})), + rule!((tuple_type element: _* @elems) => (tuple_type_expr element: {elems})), rule!((tuple_type_item name: @name type: @ty) => (tuple_type_element name: (identifier #{name}) type: {ty})), rule!((tuple_type_item type: @ty) => (tuple_type_element type: {ty})), // Array type `[T]` → generic_type_expr with Array base @@ -871,7 +865,7 @@ fn translation_rules() -> Vec> { base: (named_type_expr name: (identifier "Optional")) type_argument: {w})), // Function type `(Params) -> Ret` → function_type_expr. - rule!((function_type parameter: _* @ps return_type: @ret) => (function_type_expr parameter: {..ps} return_type: {ret})), + rule!((function_type parameter: _* @ps return_type: @ret) => (function_type_expr parameter: {ps} return_type: {ret})), rule!((function_type_parameter name: @name type: @ty) => (parameter external_name: (identifier #{name}) type: {ty})), rule!((function_type_parameter type: @ty) => (parameter type: {ty})), // Selector expression: `#selector(inner)` -- not yet supported @@ -895,10 +889,10 @@ fn translation_rules() -> Vec> { => (class_like_declaration modifier: (modifier #{kind}) - modifier: {..mods} + modifier: {mods} name: (identifier #{name}) - base_type: {..bases} - member: {..members}) + base_type: {bases} + member: {members}) ), // Enum class declaration: same as a regular class but with an enum body. rule!( @@ -911,10 +905,10 @@ fn translation_rules() -> Vec> { => (class_like_declaration modifier: (modifier #{kind}) - modifier: {..mods} + modifier: {mods} name: (identifier #{name}) - base_type: {..bases} - member: {..members}) + base_type: {bases} + member: {members}) ), // Class declaration with empty body rule!( @@ -927,9 +921,9 @@ fn translation_rules() -> Vec> { => (class_like_declaration modifier: (modifier #{kind}) - modifier: {..mods} + modifier: {mods} name: (identifier #{name}) - base_type: {..bases}) + base_type: {bases}) ), // Protocol declaration rule!( @@ -941,10 +935,10 @@ fn translation_rules() -> Vec> { => (class_like_declaration modifier: (modifier "protocol") - modifier: {..mods} + modifier: {mods} name: (identifier #{name}) - base_type: {..bases} - member: {..members}) + base_type: {bases} + member: {members}) ), // Protocol function — return type and body statements both optional. rule!( @@ -956,11 +950,11 @@ fn translation_rules() -> Vec> { (modifiers)* @mods) => (function_declaration - modifier: {..mods} + modifier: {mods} name: (identifier #{name}) - parameter: {..params} - return_type: {..ret} - body: (block stmt: {..body_stmts})) + parameter: {params} + return_type: {ret} + body: (block stmt: {body_stmts})) ), // Init declaration → constructor_declaration. Body statements optional; // body itself is also optional (protocol requirement). @@ -971,9 +965,9 @@ fn translation_rules() -> Vec> { (modifiers)* @mods) => (constructor_declaration - modifier: {..mods} - parameter: {..params} - body: (block stmt: {..body_stmts})) + modifier: {mods} + parameter: {params} + body: (block stmt: {body_stmts})) ), // Deinit declaration → destructor_declaration. Body statements optional. rule!( @@ -982,15 +976,15 @@ fn translation_rules() -> Vec> { (modifiers)* @mods) => (destructor_declaration - modifier: {..mods} - body: (block stmt: {..body_stmts})) + modifier: {mods} + body: (block stmt: {body_stmts})) ), // Typealias declaration rule!( (typealias_declaration name: @name value: @val (modifiers)* @mods) => (type_alias_declaration - modifier: {..mods} + modifier: {mods} name: (identifier #{name}) r#type: {val}) ), @@ -1005,9 +999,9 @@ fn translation_rules() -> Vec> { (associatedtype_declaration name: @name inherits_from: _? @bound (modifiers)* @mods) => (associated_type_declaration - modifier: {..mods} + modifier: {mods} name: (identifier #{name}) - bound: {..bound}) + bound: {bound}) ), // Protocol property declaration: translate each accessor // requirement to an `accessor_declaration` carrying the property @@ -1017,28 +1011,25 @@ fn translation_rules() -> Vec> { // inner `getter_specifier`/`setter_specifier` rules emit // complete nodes from the start (including the // `chained_declaration` tag for non-first accessors). - manual_rule!( + rule!( (protocol_property_declaration name: (pattern bound_identifier: @name) - requirements: (protocol_property_requirements accessor: _+ @accessors) + requirements: (protocol_property_requirements accessor: _+ @@accessors) type: _? @ty (modifiers)* @mods) - { + => + {{ ctx.property_name = Some(tree!((identifier #{name}))); - ctx.property_type = ctx.translate_opt(ty)?; - let mut modifiers = Vec::new(); - for m in mods { - modifiers.extend(ctx.translate(m)?); - } - ctx.outer_modifiers = modifiers; + ctx.property_type = ty; + ctx.outer_modifiers = mods; let mut result = Vec::new(); for (i, acc) in accessors.into_iter().enumerate() { ctx.is_chained = i > 0; result.extend(ctx.translate(acc)?); } - Ok(result) - } + result + }} ), // getter_specifier / setter_specifier → bodyless accessor_declaration // getter_specifier / setter_specifier → bodyless @@ -1049,23 +1040,23 @@ fn translation_rules() -> Vec> { => (accessor_declaration name: {ctx.property_name.ok_or("getter_specifier outside protocol_property_declaration context")?} - type: {..ctx.property_type} + type: {ctx.property_type} accessor_kind: (accessor_kind "get") - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)}) + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)}) ), rule!( (setter_specifier) => (accessor_declaration name: {ctx.property_name.ok_or("setter_specifier outside protocol_property_declaration context")?} - type: {..ctx.property_type} + type: {ctx.property_type} accessor_kind: (accessor_kind "set") - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)}) + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)}) ), // protocol_property_requirements wrapper — should be consumed by above; fallback - rule!((protocol_property_requirements accessor: _* @accs) => {..accs}), + rule!((protocol_property_requirements accessor: _* @accs) => {accs}), // Computed getter → accessor_declaration (body optional). // Reads property name/type from the outer property_binding rule // and binding/outer modifiers + chained tag from the outer @@ -1074,58 +1065,58 @@ fn translation_rules() -> Vec> { (computed_getter body: (block statement: _* @body)?) => (accessor_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} name: {ctx.property_name.ok_or("computed_getter outside property_binding context")?} - type: {..ctx.property_type} + type: {ctx.property_type} accessor_kind: (accessor_kind "get") - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // Computed setter with explicit parameter name. rule!( (computed_setter parameter: @param body: (block statement: _* @body)) => (accessor_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} name: {ctx.property_name.ok_or("computed_setter outside property_binding context")?} - type: {..ctx.property_type} + type: {ctx.property_type} accessor_kind: (accessor_kind "set") parameter: (parameter pattern: (name_pattern identifier: (identifier #{param}))) - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // Computed setter without explicit parameter name; body optional. rule!( (computed_setter body: (block statement: _* @body)?) => (accessor_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} name: {ctx.property_name.ok_or("computed_setter outside property_binding context")?} - type: {..ctx.property_type} + type: {ctx.property_type} accessor_kind: (accessor_kind "set") - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // Computed modify → accessor_declaration rule!( (computed_modify body: (block statement: _* @body)) => (accessor_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} name: {ctx.property_name.ok_or("computed_modify outside property_binding context")?} - type: {..ctx.property_type} + type: {ctx.property_type} accessor_kind: (accessor_kind "modify") - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // willset/didset block — spread to children (only reachable as a // fallback; the outer property_binding manual rule normally // captures the willset/didset clauses directly). - rule!((willset_didset_block _* @clauses) => {..clauses}), + rule!((willset_didset_block _* @clauses) => {clauses}), // willset clause → accessor_declaration (body optional). Reads // `ctx.property_name` set by the outer property_binding rule and // binding/outer modifiers + chained tag from the outer @@ -1134,24 +1125,24 @@ fn translation_rules() -> Vec> { (willset_clause body: (block statement: _* @body)?) => (accessor_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} name: {ctx.property_name.ok_or("willset_clause outside property_binding context")?} accessor_kind: (accessor_kind "willSet") - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // didset clause → accessor_declaration (body optional). rule!( (didset_clause body: (block statement: _* @body)?) => (accessor_declaration - modifier: {..ctx.binding_modifier} - modifier: {..ctx.outer_modifiers.clone()} - modifier: {..chained_modifier(&mut ctx)} + modifier: {ctx.binding_modifier} + modifier: {ctx.outer_modifiers.clone()} + modifier: {chained_modifier(&mut ctx)} name: {ctx.property_name.ok_or("didset_clause outside property_binding context")?} accessor_kind: (accessor_kind "didSet") - body: (block stmt: {..body})) + body: (block stmt: {body})) ), // Preprocessor conditionals — unsupported rule!((diagnostic) => (unsupported_node)), diff --git a/unified/extractor/tests/corpus/swift/closures.txt b/unified/extractor/tests/corpus/swift/closures.txt deleted file mode 100644 index 1d058dfb1e3..00000000000 --- a/unified/extractor/tests/corpus/swift/closures.txt +++ /dev/null @@ -1,377 +0,0 @@ -=== -Closure with explicit parameters -=== - -let f = { (x: Int) -> Int in x * 2 } - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "f" - value: - lambda_literal - statement: - multiplicative_expression - lhs: simple_identifier "x" - op: * - rhs: integer_literal "2" - type: - lambda_function_type - params: - lambda_function_type_parameters - parameter: - lambda_parameter - name: simple_identifier "x" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - return_type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" - value: - function_expr - body: - block - stmt: - binary_expr - operator: infix_operator "*" - left: - name_expr - identifier: identifier "x" - right: int_literal "2" - parameter: - parameter - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - return_type: - named_type_expr - name: identifier "Int" - -=== -Closure with shorthand parameters -=== - -let f = { $0 + $1 } - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "f" - value: - lambda_literal - statement: - additive_expression - lhs: simple_identifier "$0" - op: + - rhs: simple_identifier "$1" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" - value: - function_expr - body: - block - stmt: - binary_expr - operator: infix_operator "+" - left: - name_expr - identifier: identifier "$0" - right: - name_expr - identifier: identifier "$1" - -=== -Trailing closure -=== - -xs.map { $0 * 2 } - ---- - -source_file - statement: - call_expression - function: - navigation_expression - suffix: - navigation_suffix - suffix: simple_identifier "map" - target: simple_identifier "xs" - suffix: - call_suffix - lambda: - lambda_literal - statement: - multiplicative_expression - lhs: simple_identifier "$0" - op: * - rhs: integer_literal "2" - ---- - -top_level - body: - block - stmt: - call_expr - argument: - argument - value: - function_expr - body: - block - stmt: - binary_expr - operator: infix_operator "*" - left: - name_expr - identifier: identifier "$0" - right: int_literal "2" - callee: - member_access_expr - base: - name_expr - identifier: identifier "xs" - member: identifier "map" - -=== -Closure with capture list -=== - -let f = { [weak self] in self?.doThing() } - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "f" - value: - lambda_literal - captures: - capture_list - item: - capture_list_item - name: simple_identifier "self" - ownership: - ownership_modifier - statement: - call_expression - function: - navigation_expression - suffix: - navigation_suffix - suffix: simple_identifier "doThing" - target: - optional_chain_marker - expr: - self_expression - suffix: - call_suffix - arguments: - value_arguments - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" - value: - function_expr - body: - block - stmt: - call_expr - callee: - member_access_expr - base: - name_expr - identifier: identifier "self" - member: identifier "doThing" - capture_declaration: - variable_declaration - modifier: modifier "weak" - pattern: - name_pattern - identifier: identifier "self" - -=== -Multi-statement closure -=== - -let f = { (x: Int) -> Int in - let y = x + 1 - return y * 2 -} - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "f" - value: - lambda_literal - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "y" - value: - additive_expression - lhs: simple_identifier "x" - op: + - rhs: integer_literal "1" - control_transfer_statement - kind: return - result: - multiplicative_expression - lhs: simple_identifier "y" - op: * - rhs: integer_literal "2" - type: - lambda_function_type - params: - lambda_function_type_parameters - parameter: - lambda_parameter - name: simple_identifier "x" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - return_type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "f" - value: - function_expr - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" - value: - binary_expr - operator: infix_operator "+" - left: - name_expr - identifier: identifier "x" - right: int_literal "1" - return_expr - value: - binary_expr - operator: infix_operator "*" - left: - name_expr - identifier: identifier "y" - right: int_literal "2" - parameter: - parameter - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - return_type: - named_type_expr - name: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output b/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output new file mode 100644 index 00000000000..8f28322b493 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.output @@ -0,0 +1,69 @@ +let f = { [weak self] in self?.doThing() } + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "f" + value: + lambda_literal + captures: + capture_list + item: + capture_list_item + name: simple_identifier "self" + ownership: + ownership_modifier + statement: + call_expression + function: + navigation_expression + suffix: + navigation_suffix + suffix: simple_identifier "doThing" + target: + optional_chain_marker + expr: + self_expression + suffix: + call_suffix + arguments: + value_arguments + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "f" + value: + function_expr + body: + block + stmt: + call_expr + callee: + member_access_expr + base: + name_expr + identifier: identifier "self" + member: identifier "doThing" + capture_declaration: + variable_declaration + modifier: modifier "weak" + pattern: + name_pattern + identifier: identifier "self" diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.swift b/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.swift new file mode 100644 index 00000000000..e6b06ca3d0d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-capture-list.swift @@ -0,0 +1 @@ +let f = { [weak self] in self?.doThing() } diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output b/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output new file mode 100644 index 00000000000..95d638118d8 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.output @@ -0,0 +1,77 @@ +let f = { (x: Int) -> Int in x * 2 } + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "f" + value: + lambda_literal + statement: + multiplicative_expression + lhs: simple_identifier "x" + op: * + rhs: integer_literal "2" + type: + lambda_function_type + params: + lambda_function_type_parameters + parameter: + lambda_parameter + name: simple_identifier "x" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + return_type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "f" + value: + function_expr + body: + block + stmt: + binary_expr + operator: infix_operator "*" + left: + name_expr + identifier: identifier "x" + right: int_literal "2" + parameter: + parameter + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" + return_type: + named_type_expr + name: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.swift b/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.swift new file mode 100644 index 00000000000..f0c276371a2 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-explicit-parameters.swift @@ -0,0 +1 @@ +let f = { (x: Int) -> Int in x * 2 } diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output b/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output new file mode 100644 index 00000000000..bd286c38579 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.output @@ -0,0 +1,47 @@ +let f = { $0 + $1 } + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "f" + value: + lambda_literal + statement: + additive_expression + lhs: simple_identifier "$0" + op: + + rhs: simple_identifier "$1" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "f" + value: + function_expr + body: + block + stmt: + binary_expr + operator: infix_operator "+" + left: + name_expr + identifier: identifier "$0" + right: + name_expr + identifier: identifier "$1" diff --git a/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.swift b/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.swift new file mode 100644 index 00000000000..09eabcd29fd --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/closure-with-shorthand-parameters.swift @@ -0,0 +1 @@ +let f = { $0 + $1 } diff --git a/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output b/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output new file mode 100644 index 00000000000..6c9a403f19c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.output @@ -0,0 +1,111 @@ +let f = { (x: Int) -> Int in + let y = x + 1 + return y * 2 +} + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "f" + value: + lambda_literal + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "y" + value: + additive_expression + lhs: simple_identifier "x" + op: + + rhs: integer_literal "1" + control_transfer_statement + kind: return + result: + multiplicative_expression + lhs: simple_identifier "y" + op: * + rhs: integer_literal "2" + type: + lambda_function_type + params: + lambda_function_type_parameters + parameter: + lambda_parameter + name: simple_identifier "x" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + return_type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "f" + value: + function_expr + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "y" + value: + binary_expr + operator: infix_operator "+" + left: + name_expr + identifier: identifier "x" + right: int_literal "1" + return_expr + value: + binary_expr + operator: infix_operator "*" + left: + name_expr + identifier: identifier "y" + right: int_literal "2" + parameter: + parameter + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" + return_type: + named_type_expr + name: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.swift b/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.swift new file mode 100644 index 00000000000..66d6e508592 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/multi-statement-closure.swift @@ -0,0 +1,4 @@ +let f = { (x: Int) -> Int in + let y = x + 1 + return y * 2 +} diff --git a/unified/extractor/tests/corpus/swift/closures/trailing-closure.output b/unified/extractor/tests/corpus/swift/closures/trailing-closure.output new file mode 100644 index 00000000000..56b8bf9a7c2 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/trailing-closure.output @@ -0,0 +1,49 @@ +xs.map { $0 * 2 } + +--- + +source_file + statement: + call_expression + function: + navigation_expression + suffix: + navigation_suffix + suffix: simple_identifier "map" + target: simple_identifier "xs" + suffix: + call_suffix + lambda: + lambda_literal + statement: + multiplicative_expression + lhs: simple_identifier "$0" + op: * + rhs: integer_literal "2" + +--- + +top_level + body: + block + stmt: + call_expr + argument: + argument + value: + function_expr + body: + block + stmt: + binary_expr + operator: infix_operator "*" + left: + name_expr + identifier: identifier "$0" + right: int_literal "2" + callee: + member_access_expr + base: + name_expr + identifier: identifier "xs" + member: identifier "map" diff --git a/unified/extractor/tests/corpus/swift/closures/trailing-closure.swift b/unified/extractor/tests/corpus/swift/closures/trailing-closure.swift new file mode 100644 index 00000000000..285bcc5e9b0 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/closures/trailing-closure.swift @@ -0,0 +1 @@ +xs.map { $0 * 2 } diff --git a/unified/extractor/tests/corpus/swift/collections.txt b/unified/extractor/tests/corpus/swift/collections.txt deleted file mode 100644 index 2ecdf5a0179..00000000000 --- a/unified/extractor/tests/corpus/swift/collections.txt +++ /dev/null @@ -1,410 +0,0 @@ -=== -Array literal -=== - -let xs = [1, 2, 3] - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "xs" - value: - array_literal - element: - integer_literal "1" - integer_literal "2" - integer_literal "3" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "xs" - value: - array_literal - element: - int_literal "1" - int_literal "2" - int_literal "3" - -=== -Empty array literal with type -=== - -let xs: [Int] = [] - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "xs" - type: - type_annotation - type: - type - name: - array_type - element: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - value: - array_literal - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "xs" - type: - generic_type_expr - base: - named_type_expr - name: identifier "Array" - type_argument: - named_type_expr - name: identifier "Int" - value: array_literal "[]" - -=== -Dictionary literal -=== - -let d = ["a": 1, "b": 2] - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "d" - value: - dictionary_literal - element: - dictionary_literal_item - key: - line_string_literal - text: line_str_text "a" - value: integer_literal "1" - dictionary_literal_item - key: - line_string_literal - text: line_str_text "b" - value: integer_literal "2" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "d" - value: map_literal "[\"a\": 1, \"b\": 2]" - -=== -Set literal -=== - -let s: Set = [1, 2, 3] - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "s" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - arguments: - type_arguments - argument: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - name: type_identifier "Set" - value: - array_literal - element: - integer_literal "1" - integer_literal "2" - integer_literal "3" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "s" - type: - named_type_expr - name: identifier "Set" - value: - array_literal - element: - int_literal "1" - int_literal "2" - int_literal "3" - -=== -Tuple literal -=== - -let t = (1, "two", 3.0) - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "t" - value: - tuple_expression - element: - tuple_expression_item - value: integer_literal "1" - tuple_expression_item - value: - line_string_literal - text: line_str_text "two" - tuple_expression_item - value: real_literal "3.0" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "t" - value: tuple_expr "(1, \"two\", 3.0)" - -=== -Subscript access -=== - -// TODO: tree-sitter-swift parses `xs[0]` as a call_expression (same shape -// as `xs(0)`), so the mapping currently produces a call_expr. Update the -// parser / add a separate subscript_expr node and remap when fixed. -let first = xs[0] - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "first" - value: - call_expression - function: simple_identifier "xs" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "0" - comment "// TODO: tree-sitter-swift parses `xs[0]` as a call_expression (same shape" - comment "// as `xs(0)`), so the mapping currently produces a call_expr. Update the" - comment "// parser / add a separate subscript_expr node and remap when fixed." - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "first" - value: - call_expr - argument: - argument - value: int_literal "0" - callee: - name_expr - identifier: identifier "xs" - -=== -Dictionary subscript -=== - -// TODO: same parser issue as the array subscript case above — -// `d["key"]` is parsed as `call_expression(d, ("key"))`. -let v = d["key"] - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "v" - value: - call_expression - function: simple_identifier "d" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: - line_string_literal - text: line_str_text "key" - comment "// TODO: same parser issue as the array subscript case above —" - comment "// `d[\"key\"]` is parsed as `call_expression(d, (\"key\"))`." - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "v" - value: - call_expr - argument: - argument - value: string_literal "\"key\"" - callee: - name_expr - identifier: identifier "d" - -=== -Tuple member access -=== - -let n = t.0 - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "n" - value: - navigation_expression - suffix: - navigation_suffix - suffix: integer_literal "0" - target: simple_identifier "t" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" - value: - member_access_expr - base: - name_expr - identifier: identifier "t" - member: identifier "0" diff --git a/unified/extractor/tests/corpus/swift/collections/array-literal.output b/unified/extractor/tests/corpus/swift/collections/array-literal.output new file mode 100644 index 00000000000..f6ee44c1f80 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/array-literal.output @@ -0,0 +1,39 @@ +let xs = [1, 2, 3] + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "xs" + value: + array_literal + element: + integer_literal "1" + integer_literal "2" + integer_literal "3" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "xs" + value: + array_literal + element: + int_literal "1" + int_literal "2" + int_literal "3" diff --git a/unified/extractor/tests/corpus/swift/collections/array-literal.swift b/unified/extractor/tests/corpus/swift/collections/array-literal.swift new file mode 100644 index 00000000000..eda1f726b64 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/array-literal.swift @@ -0,0 +1 @@ +let xs = [1, 2, 3] diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output new file mode 100644 index 00000000000..a19028d3f3b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.output @@ -0,0 +1,41 @@ +let d = ["a": 1, "b": 2] + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "d" + value: + dictionary_literal + element: + dictionary_literal_item + key: + line_string_literal + text: line_str_text "a" + value: integer_literal "1" + dictionary_literal_item + key: + line_string_literal + text: line_str_text "b" + value: integer_literal "2" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "d" + value: map_literal "[\"a\": 1, \"b\": 2]" diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift new file mode 100644 index 00000000000..1b9eb5ebe2c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-literal.swift @@ -0,0 +1 @@ +let d = ["a": 1, "b": 2] diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output new file mode 100644 index 00000000000..59afc51867a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.output @@ -0,0 +1,51 @@ +// TODO: same parser issue as the array subscript case above — +// `d["key"]` is parsed as `call_expression(d, ("key"))`. +let v = d["key"] + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "v" + value: + call_expression + function: simple_identifier "d" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: + line_string_literal + text: line_str_text "key" + comment "// TODO: same parser issue as the array subscript case above —" + comment "// `d[\"key\"]` is parsed as `call_expression(d, (\"key\"))`." + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "v" + value: + call_expr + argument: + argument + value: string_literal "\"key\"" + callee: + name_expr + identifier: identifier "d" diff --git a/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.swift b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.swift new file mode 100644 index 00000000000..a8ee09a980a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/dictionary-subscript.swift @@ -0,0 +1,3 @@ +// TODO: same parser issue as the array subscript case above — +// `d["key"]` is parsed as `call_expression(d, ("key"))`. +let v = d["key"] diff --git a/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output b/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output new file mode 100644 index 00000000000..90d1a9dde36 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.output @@ -0,0 +1,51 @@ +let xs: [Int] = [] + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "xs" + type: + type_annotation + type: + type + name: + array_type + element: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + value: + array_literal + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "xs" + type: + generic_type_expr + base: + named_type_expr + name: identifier "Array" + type_argument: + named_type_expr + name: identifier "Int" + value: array_literal "[]" diff --git a/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.swift b/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.swift new file mode 100644 index 00000000000..4aa0a276f9c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/empty-array-literal-with-type.swift @@ -0,0 +1 @@ +let xs: [Int] = [] diff --git a/unified/extractor/tests/corpus/swift/collections/set-literal.output b/unified/extractor/tests/corpus/swift/collections/set-literal.output new file mode 100644 index 00000000000..a1a1dde75f9 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/set-literal.output @@ -0,0 +1,60 @@ +let s: Set = [1, 2, 3] + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "s" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + arguments: + type_arguments + argument: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + name: type_identifier "Set" + value: + array_literal + element: + integer_literal "1" + integer_literal "2" + integer_literal "3" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "s" + type: + named_type_expr + name: identifier "Set" + value: + array_literal + element: + int_literal "1" + int_literal "2" + int_literal "3" diff --git a/unified/extractor/tests/corpus/swift/collections/set-literal.swift b/unified/extractor/tests/corpus/swift/collections/set-literal.swift new file mode 100644 index 00000000000..867d9dfb1c4 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/set-literal.swift @@ -0,0 +1 @@ +let s: Set = [1, 2, 3] diff --git a/unified/extractor/tests/corpus/swift/collections/subscript-access.output b/unified/extractor/tests/corpus/swift/collections/subscript-access.output new file mode 100644 index 00000000000..481a3e95f77 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/subscript-access.output @@ -0,0 +1,51 @@ +// TODO: tree-sitter-swift parses `xs[0]` as a call_expression (same shape +// as `xs(0)`), so the mapping currently produces a call_expr. Update the +// parser / add a separate subscript_expr node and remap when fixed. +let first = xs[0] + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "first" + value: + call_expression + function: simple_identifier "xs" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "0" + comment "// TODO: tree-sitter-swift parses `xs[0]` as a call_expression (same shape" + comment "// as `xs(0)`), so the mapping currently produces a call_expr. Update the" + comment "// parser / add a separate subscript_expr node and remap when fixed." + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "first" + value: + call_expr + argument: + argument + value: int_literal "0" + callee: + name_expr + identifier: identifier "xs" diff --git a/unified/extractor/tests/corpus/swift/collections/subscript-access.swift b/unified/extractor/tests/corpus/swift/collections/subscript-access.swift new file mode 100644 index 00000000000..00a85bda433 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/subscript-access.swift @@ -0,0 +1,4 @@ +// TODO: tree-sitter-swift parses `xs[0]` as a call_expression (same shape +// as `xs(0)`), so the mapping currently produces a call_expr. Update the +// parser / add a separate subscript_expr node and remap when fixed. +let first = xs[0] diff --git a/unified/extractor/tests/corpus/swift/collections/tuple-literal.output b/unified/extractor/tests/corpus/swift/collections/tuple-literal.output new file mode 100644 index 00000000000..a0ac8861674 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/tuple-literal.output @@ -0,0 +1,39 @@ +let t = (1, "two", 3.0) + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "t" + value: + tuple_expression + element: + tuple_expression_item + value: integer_literal "1" + tuple_expression_item + value: + line_string_literal + text: line_str_text "two" + tuple_expression_item + value: real_literal "3.0" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "t" + value: tuple_expr "(1, \"two\", 3.0)" diff --git a/unified/extractor/tests/corpus/swift/collections/tuple-literal.swift b/unified/extractor/tests/corpus/swift/collections/tuple-literal.swift new file mode 100644 index 00000000000..d1aad0049c4 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/tuple-literal.swift @@ -0,0 +1 @@ +let t = (1, "two", 3.0) diff --git a/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output b/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output new file mode 100644 index 00000000000..29b234f30e2 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/tuple-member-access.output @@ -0,0 +1,39 @@ +let n = t.0 + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "n" + value: + navigation_expression + suffix: + navigation_suffix + suffix: integer_literal "0" + target: simple_identifier "t" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "n" + value: + member_access_expr + base: + name_expr + identifier: identifier "t" + member: identifier "0" diff --git a/unified/extractor/tests/corpus/swift/collections/tuple-member-access.swift b/unified/extractor/tests/corpus/swift/collections/tuple-member-access.swift new file mode 100644 index 00000000000..cd2651fa80b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/collections/tuple-member-access.swift @@ -0,0 +1 @@ +let n = t.0 diff --git a/unified/extractor/tests/corpus/swift/control-flow.txt b/unified/extractor/tests/corpus/swift/control-flow.txt deleted file mode 100644 index 9a740cb9d45..00000000000 --- a/unified/extractor/tests/corpus/swift/control-flow.txt +++ /dev/null @@ -1,887 +0,0 @@ -=== -If statement -=== - -if x > 0 { - print(x) -} - ---- - -source_file - statement: - if_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "x" - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "0" - ---- - -top_level - body: - block - stmt: - if_expr - condition: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - then: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "x" - callee: - name_expr - identifier: identifier "print" - -=== -If-else -=== - -if x > 0 { - print(x) -} else { - print(-x) -} - ---- - -source_file - statement: - if_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "x" - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "0" - else_branch: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: - prefix_expression - operation: - - target: simple_identifier "x" - ---- - -top_level - body: - block - stmt: - if_expr - condition: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - else: - block - stmt: - call_expr - argument: - argument - value: - unary_expr - operand: - name_expr - identifier: identifier "x" - operator: prefix_operator "-" - callee: - name_expr - identifier: identifier "print" - then: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "x" - callee: - name_expr - identifier: identifier "print" - -=== -If-else-if chain -=== - -if x > 0 { - print(1) -} else if x < 0 { - print(2) -} else { - print(3) -} - ---- - -source_file - statement: - if_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "1" - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "0" - else_branch: - if_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "2" - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: < - rhs: integer_literal "0" - else_branch: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "3" - ---- - -top_level - body: - block - stmt: - if_expr - condition: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - else: - if_expr - condition: - binary_expr - operator: infix_operator "<" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - else: - block - stmt: - call_expr - argument: - argument - value: int_literal "3" - callee: - name_expr - identifier: identifier "print" - then: - block - stmt: - call_expr - argument: - argument - value: int_literal "2" - callee: - name_expr - identifier: identifier "print" - then: - block - stmt: - call_expr - argument: - argument - value: int_literal "1" - callee: - name_expr - identifier: identifier "print" - -=== -If-let optional binding -=== - -if let value = optional { - print(value) -} - ---- - -source_file - statement: - if_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "value" - condition: - if_condition - kind: - if_let_binding - pattern: - pattern - binding: - value_binding_pattern - mutability: let - bound_identifier: simple_identifier "value" - value: simple_identifier "optional" - ---- - -top_level - body: - block - stmt: - if_expr - condition: - pattern_guard_expr - pattern: - constructor_pattern - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" - constructor: - member_access_expr - base: - named_type_expr - name: identifier "Optional" - member: identifier "some" - value: - name_expr - identifier: identifier "optional" - then: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "value" - callee: - name_expr - identifier: identifier "print" - -=== -Guard let -=== - -guard let value = optional else { return } - ---- - -source_file - statement: - guard_statement - body: - block - statement: - control_transfer_statement - kind: return - condition: - if_condition - kind: - if_let_binding - pattern: - pattern - binding: - value_binding_pattern - mutability: let - bound_identifier: simple_identifier "value" - value: simple_identifier "optional" - ---- - -top_level - body: - block - stmt: - guard_if_stmt - condition: - pattern_guard_expr - pattern: - constructor_pattern - element: - pattern_element - pattern: - name_pattern - identifier: identifier "value" - constructor: - member_access_expr - base: - named_type_expr - name: identifier "Optional" - member: identifier "some" - value: - name_expr - identifier: identifier "optional" - else: - block - stmt: return_expr "return" - -=== -Ternary expression -=== - -let y = x > 0 ? 1 : -1 - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "y" - value: - ternary_expression - condition: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "0" - if_false: - prefix_expression - operation: - - target: integer_literal "1" - if_true: integer_literal "1" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" - value: - if_expr - condition: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - else: - unary_expr - operand: int_literal "1" - operator: prefix_operator "-" - then: int_literal "1" - -=== -Switch statement -=== - -switch x { -case 1: - print("one") -case 2, 3: - print("two or three") -default: - print("other") -} - ---- - -source_file - statement: - switch_statement - entry: - switch_entry - pattern: - switch_pattern - pattern: - pattern - kind: integer_literal "1" - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: - line_string_literal - text: line_str_text "one" - switch_entry - pattern: - switch_pattern - pattern: - pattern - kind: integer_literal "2" - switch_pattern - pattern: - pattern - kind: integer_literal "3" - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: - line_string_literal - text: line_str_text "two or three" - switch_entry - default: default_keyword "default" - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: - line_string_literal - text: line_str_text "other" - expr: simple_identifier "x" - ---- - -top_level - body: - block - stmt: - switch_expr - case: - switch_case - body: - block - stmt: - call_expr - argument: - argument - value: string_literal "\"one\"" - callee: - name_expr - identifier: identifier "print" - pattern: - expr_equality_pattern - expr: int_literal "1" - switch_case - body: - block - stmt: - call_expr - argument: - argument - value: string_literal "\"two or three\"" - callee: - name_expr - identifier: identifier "print" - pattern: - expr_equality_pattern - expr: int_literal "2" - expr_equality_pattern - expr: int_literal "3" - switch_case - body: - block - stmt: - call_expr - argument: - argument - value: string_literal "\"other\"" - callee: - name_expr - identifier: identifier "print" - value: - name_expr - identifier: identifier "x" - -=== -Switch with binding pattern -=== - -switch shape { -case .circle(let r): - print(r) -case .square(let s): - print(s) -} - ---- - -source_file - statement: - switch_statement - entry: - switch_entry - pattern: - switch_pattern - pattern: - pattern - kind: - case_pattern - arguments: - tuple_pattern - item: - tuple_pattern_item - pattern: - pattern - kind: - binding_pattern - binding: - value_binding_pattern - mutability: let - pattern: - pattern - bound_identifier: simple_identifier "r" - dot: . - name: simple_identifier "circle" - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "r" - switch_entry - pattern: - switch_pattern - pattern: - pattern - kind: - case_pattern - arguments: - tuple_pattern - item: - tuple_pattern_item - pattern: - pattern - kind: - binding_pattern - binding: - value_binding_pattern - mutability: let - pattern: - pattern - bound_identifier: simple_identifier "s" - dot: . - name: simple_identifier "square" - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "s" - expr: simple_identifier "shape" - ---- - -top_level - body: - block - stmt: - switch_expr - case: - switch_case - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "r" - callee: - name_expr - identifier: identifier "print" - pattern: - constructor_pattern - element: - pattern_element - pattern: - name_pattern - identifier: identifier "r" - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "circle" - switch_case - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "s" - callee: - name_expr - identifier: identifier "print" - pattern: - constructor_pattern - element: - pattern_element - pattern: - name_pattern - identifier: identifier "s" - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "square" - value: - name_expr - identifier: identifier "shape" - -=== -Switch with labeled case pattern arguments -=== - -switch x { -case .implicit(isAcknowledged: false): - print("yes") -case .thread(threadRowId: _, let rowId): - print(rowId) -} - ---- - -source_file - statement: - switch_statement - entry: - switch_entry - pattern: - switch_pattern - pattern: - pattern - kind: - case_pattern - arguments: - tuple_pattern - item: - tuple_pattern_item - name: simple_identifier "isAcknowledged" - pattern: - pattern - kind: - boolean_literal - dot: . - name: simple_identifier "implicit" - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: - line_string_literal - text: line_str_text "yes" - switch_entry - pattern: - switch_pattern - pattern: - pattern - kind: - case_pattern - arguments: - tuple_pattern - item: - tuple_pattern_item - name: simple_identifier "threadRowId" - pattern: - pattern - kind: wildcard_pattern "_" - tuple_pattern_item - pattern: - pattern - kind: - binding_pattern - binding: - value_binding_pattern - mutability: let - pattern: - pattern - bound_identifier: simple_identifier "rowId" - dot: . - name: simple_identifier "thread" - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "rowId" - expr: simple_identifier "x" - ---- - -top_level - body: - block - stmt: - switch_expr - case: - switch_case - body: - block - stmt: - call_expr - argument: - argument - value: string_literal "\"yes\"" - callee: - name_expr - identifier: identifier "print" - pattern: - constructor_pattern - element: - pattern_element - key: identifier "isAcknowledged" - pattern: - expr_equality_pattern - expr: boolean_literal "false" - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "implicit" - switch_case - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "rowId" - callee: - name_expr - identifier: identifier "print" - pattern: - constructor_pattern - element: - pattern_element - key: identifier "threadRowId" - pattern: ignore_pattern "_" - pattern_element - pattern: - name_pattern - identifier: identifier "rowId" - constructor: - member_access_expr - base: inferred_type_expr "." - member: identifier "thread" - value: - name_expr - identifier: identifier "x" diff --git a/unified/extractor/tests/corpus/swift/control-flow/guard-let.output b/unified/extractor/tests/corpus/swift/control-flow/guard-let.output new file mode 100644 index 00000000000..a2196234121 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let.output @@ -0,0 +1,52 @@ +guard let value = optional else { return } + +--- + +source_file + statement: + guard_statement + body: + block + statement: + control_transfer_statement + kind: return + condition: + if_condition + kind: + if_let_binding + pattern: + pattern + binding: + value_binding_pattern + mutability: let + bound_identifier: simple_identifier "value" + value: simple_identifier "optional" + +--- + +top_level + body: + block + stmt: + guard_if_stmt + condition: + pattern_guard_expr + pattern: + constructor_pattern + element: + pattern_element + pattern: + name_pattern + identifier: identifier "value" + constructor: + member_access_expr + base: + named_type_expr + name: identifier "Optional" + member: identifier "some" + value: + name_expr + identifier: identifier "optional" + else: + block + stmt: return_expr "return" diff --git a/unified/extractor/tests/corpus/swift/control-flow/guard-let.swift b/unified/extractor/tests/corpus/swift/control-flow/guard-let.swift new file mode 100644 index 00000000000..d5aad119b28 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/guard-let.swift @@ -0,0 +1 @@ +guard let value = optional else { return } diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output new file mode 100644 index 00000000000..6a53c87d21a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.output @@ -0,0 +1,72 @@ +if case let x = x + 10 { + print(x) +} + +--- + +source_file + statement: + if_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "x" + condition: + if_condition + kind: + if_let_binding + pattern: + pattern + kind: + binding_pattern + binding: + value_binding_pattern + mutability: let + pattern: + pattern + bound_identifier: simple_identifier "x" + value: + additive_expression + lhs: simple_identifier "x" + op: + + rhs: integer_literal "10" + +--- + +top_level + body: + block + stmt: + if_expr + condition: + pattern_guard_expr + pattern: + name_pattern + identifier: identifier "x" + value: + binary_expr + operator: infix_operator "+" + left: + name_expr + identifier: identifier "x" + right: int_literal "10" + then: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "x" + callee: + name_expr + identifier: identifier "print" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift new file mode 100644 index 00000000000..c57c8ae5b67 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-case-let-with-shadowing-in-condition-value.swift @@ -0,0 +1,3 @@ +if case let x = x + 10 { + print(x) +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output b/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output new file mode 100644 index 00000000000..e8f41372646 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.output @@ -0,0 +1,119 @@ +if x > 0 { + print(1) +} else if x < 0 { + print(2) +} else { + print(3) +} + +--- + +source_file + statement: + if_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "1" + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "0" + else_branch: + if_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "2" + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: < + rhs: integer_literal "0" + else_branch: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "3" + +--- + +top_level + body: + block + stmt: + if_expr + condition: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" + else: + if_expr + condition: + binary_expr + operator: infix_operator "<" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" + else: + block + stmt: + call_expr + argument: + argument + value: int_literal "3" + callee: + name_expr + identifier: identifier "print" + then: + block + stmt: + call_expr + argument: + argument + value: int_literal "2" + callee: + name_expr + identifier: identifier "print" + then: + block + stmt: + call_expr + argument: + argument + value: int_literal "1" + callee: + name_expr + identifier: identifier "print" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.swift b/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.swift new file mode 100644 index 00000000000..f0a7feeeabc --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-else-if-chain.swift @@ -0,0 +1,7 @@ +if x > 0 { + print(1) +} else if x < 0 { + print(2) +} else { + print(3) +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-else.output b/unified/extractor/tests/corpus/swift/control-flow/if-else.output new file mode 100644 index 00000000000..46986121467 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-else.output @@ -0,0 +1,87 @@ +if x > 0 { + print(x) +} else { + print(-x) +} + +--- + +source_file + statement: + if_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "x" + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "0" + else_branch: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: + prefix_expression + operation: - + target: simple_identifier "x" + +--- + +top_level + body: + block + stmt: + if_expr + condition: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" + else: + block + stmt: + call_expr + argument: + argument + value: + unary_expr + operand: + name_expr + identifier: identifier "x" + operator: prefix_operator "-" + callee: + name_expr + identifier: identifier "print" + then: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "x" + callee: + name_expr + identifier: identifier "print" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-else.swift b/unified/extractor/tests/corpus/swift/control-flow/if-else.swift new file mode 100644 index 00000000000..2060ecb8cf6 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-else.swift @@ -0,0 +1,5 @@ +if x > 0 { + print(x) +} else { + print(-x) +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output b/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output new file mode 100644 index 00000000000..f6b605a7461 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.output @@ -0,0 +1,70 @@ +if let value = optional { + print(value) +} + +--- + +source_file + statement: + if_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "value" + condition: + if_condition + kind: + if_let_binding + pattern: + pattern + binding: + value_binding_pattern + mutability: let + bound_identifier: simple_identifier "value" + value: simple_identifier "optional" + +--- + +top_level + body: + block + stmt: + if_expr + condition: + pattern_guard_expr + pattern: + constructor_pattern + element: + pattern_element + pattern: + name_pattern + identifier: identifier "value" + constructor: + member_access_expr + base: + named_type_expr + name: identifier "Optional" + member: identifier "some" + value: + name_expr + identifier: identifier "optional" + then: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "value" + callee: + name_expr + identifier: identifier "print" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.swift b/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.swift new file mode 100644 index 00000000000..74af660c7f3 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-let-optional-binding.swift @@ -0,0 +1,3 @@ +if let value = optional { + print(value) +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-statement.output b/unified/extractor/tests/corpus/swift/control-flow/if-statement.output new file mode 100644 index 00000000000..2c29ab1dc69 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-statement.output @@ -0,0 +1,55 @@ +if x > 0 { + print(x) +} + +--- + +source_file + statement: + if_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "x" + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "0" + +--- + +top_level + body: + block + stmt: + if_expr + condition: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" + then: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "x" + callee: + name_expr + identifier: identifier "print" diff --git a/unified/extractor/tests/corpus/swift/control-flow/if-statement.swift b/unified/extractor/tests/corpus/swift/control-flow/if-statement.swift new file mode 100644 index 00000000000..5046074db14 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/if-statement.swift @@ -0,0 +1,3 @@ +if x > 0 { + print(x) +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output b/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output new file mode 100644 index 00000000000..bb90cb60fc5 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-statement.output @@ -0,0 +1,125 @@ +switch x { +case 1: + print("one") +case 2, 3: + print("two or three") +default: + print("other") +} + +--- + +source_file + statement: + switch_statement + entry: + switch_entry + pattern: + switch_pattern + pattern: + pattern + kind: integer_literal "1" + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: + line_string_literal + text: line_str_text "one" + switch_entry + pattern: + switch_pattern + pattern: + pattern + kind: integer_literal "2" + switch_pattern + pattern: + pattern + kind: integer_literal "3" + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: + line_string_literal + text: line_str_text "two or three" + switch_entry + default: default_keyword "default" + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: + line_string_literal + text: line_str_text "other" + expr: simple_identifier "x" + +--- + +top_level + body: + block + stmt: + switch_expr + case: + switch_case + body: + block + stmt: + call_expr + argument: + argument + value: string_literal "\"one\"" + callee: + name_expr + identifier: identifier "print" + pattern: + expr_equality_pattern + expr: int_literal "1" + switch_case + body: + block + stmt: + call_expr + argument: + argument + value: string_literal "\"two or three\"" + callee: + name_expr + identifier: identifier "print" + pattern: + or_pattern + pattern: + expr_equality_pattern + expr: int_literal "2" + expr_equality_pattern + expr: int_literal "3" + switch_case + body: + block + stmt: + call_expr + argument: + argument + value: string_literal "\"other\"" + callee: + name_expr + identifier: identifier "print" + value: + name_expr + identifier: identifier "x" diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-statement.swift b/unified/extractor/tests/corpus/swift/control-flow/switch-statement.swift new file mode 100644 index 00000000000..f8d62c5e788 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-statement.swift @@ -0,0 +1,8 @@ +switch x { +case 1: + print("one") +case 2, 3: + print("two or three") +default: + print("other") +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output b/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output new file mode 100644 index 00000000000..4d98620fe8f --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.output @@ -0,0 +1,140 @@ +switch shape { +case .circle(let r): + print(r) +case .square(let s): + print(s) +} + +--- + +source_file + statement: + switch_statement + entry: + switch_entry + pattern: + switch_pattern + pattern: + pattern + kind: + case_pattern + arguments: + tuple_pattern + item: + tuple_pattern_item + pattern: + pattern + kind: + binding_pattern + binding: + value_binding_pattern + mutability: let + pattern: + pattern + bound_identifier: simple_identifier "r" + dot: . + name: simple_identifier "circle" + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "r" + switch_entry + pattern: + switch_pattern + pattern: + pattern + kind: + case_pattern + arguments: + tuple_pattern + item: + tuple_pattern_item + pattern: + pattern + kind: + binding_pattern + binding: + value_binding_pattern + mutability: let + pattern: + pattern + bound_identifier: simple_identifier "s" + dot: . + name: simple_identifier "square" + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "s" + expr: simple_identifier "shape" + +--- + +top_level + body: + block + stmt: + switch_expr + case: + switch_case + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "r" + callee: + name_expr + identifier: identifier "print" + pattern: + constructor_pattern + element: + pattern_element + pattern: + name_pattern + identifier: identifier "r" + constructor: + member_access_expr + base: inferred_type_expr "." + member: identifier "circle" + switch_case + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "s" + callee: + name_expr + identifier: identifier "print" + pattern: + constructor_pattern + element: + pattern_element + pattern: + name_pattern + identifier: identifier "s" + constructor: + member_access_expr + base: inferred_type_expr "." + member: identifier "square" + value: + name_expr + identifier: identifier "shape" diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.swift b/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.swift new file mode 100644 index 00000000000..e57a4e4ad06 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-with-binding-pattern.swift @@ -0,0 +1,6 @@ +switch shape { +case .circle(let r): + print(r) +case .square(let s): + print(s) +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output b/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output new file mode 100644 index 00000000000..aef36c16855 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.output @@ -0,0 +1,144 @@ +switch x { +case .implicit(isAcknowledged: false): + print("yes") +case .thread(threadRowId: _, let rowId): + print(rowId) +} + +--- + +source_file + statement: + switch_statement + entry: + switch_entry + pattern: + switch_pattern + pattern: + pattern + kind: + case_pattern + arguments: + tuple_pattern + item: + tuple_pattern_item + name: simple_identifier "isAcknowledged" + pattern: + pattern + kind: + boolean_literal + dot: . + name: simple_identifier "implicit" + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: + line_string_literal + text: line_str_text "yes" + switch_entry + pattern: + switch_pattern + pattern: + pattern + kind: + case_pattern + arguments: + tuple_pattern + item: + tuple_pattern_item + name: simple_identifier "threadRowId" + pattern: + pattern + kind: wildcard_pattern "_" + tuple_pattern_item + pattern: + pattern + kind: + binding_pattern + binding: + value_binding_pattern + mutability: let + pattern: + pattern + bound_identifier: simple_identifier "rowId" + dot: . + name: simple_identifier "thread" + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "rowId" + expr: simple_identifier "x" + +--- + +top_level + body: + block + stmt: + switch_expr + case: + switch_case + body: + block + stmt: + call_expr + argument: + argument + value: string_literal "\"yes\"" + callee: + name_expr + identifier: identifier "print" + pattern: + constructor_pattern + element: + pattern_element + key: identifier "isAcknowledged" + pattern: + expr_equality_pattern + expr: boolean_literal "false" + constructor: + member_access_expr + base: inferred_type_expr "." + member: identifier "implicit" + switch_case + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "rowId" + callee: + name_expr + identifier: identifier "print" + pattern: + constructor_pattern + element: + pattern_element + key: identifier "threadRowId" + pattern: ignore_pattern "_" + pattern_element + pattern: + name_pattern + identifier: identifier "rowId" + constructor: + member_access_expr + base: inferred_type_expr "." + member: identifier "thread" + value: + name_expr + identifier: identifier "x" diff --git a/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.swift b/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.swift new file mode 100644 index 00000000000..4a7bd6bd9ca --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/switch-with-labeled-case-pattern-arguments.swift @@ -0,0 +1,6 @@ +switch x { +case .implicit(isAcknowledged: false): + print("yes") +case .thread(threadRowId: _, let rowId): + print(rowId) +} diff --git a/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output b/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output new file mode 100644 index 00000000000..7f9da80d34a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.output @@ -0,0 +1,53 @@ +let y = x > 0 ? 1 : -1 + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "y" + value: + ternary_expression + condition: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "0" + if_false: + prefix_expression + operation: - + target: integer_literal "1" + if_true: integer_literal "1" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "y" + value: + if_expr + condition: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" + else: + unary_expr + operand: int_literal "1" + operator: prefix_operator "-" + then: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.swift b/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.swift new file mode 100644 index 00000000000..9284457311d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/control-flow/ternary-expression.swift @@ -0,0 +1 @@ +let y = x > 0 ? 1 : -1 diff --git a/unified/extractor/tests/corpus/swift/desugar.txt b/unified/extractor/tests/corpus/swift/desugar.txt deleted file mode 100644 index 1611943bf1a..00000000000 --- a/unified/extractor/tests/corpus/swift/desugar.txt +++ /dev/null @@ -1,186 +0,0 @@ -=== -Additive expression is desugared -=== - -1 + 2 - ---- - -source_file - statement: - additive_expression - lhs: integer_literal "1" - op: + - rhs: integer_literal "2" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "+" - left: int_literal "1" - right: int_literal "2" - -=== -Another additive expression is desugared -=== - -foo + bar - ---- - -source_file - statement: - additive_expression - lhs: simple_identifier "foo" - op: + - rhs: simple_identifier "bar" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "+" - left: - name_expr - identifier: identifier "foo" - right: - name_expr - identifier: identifier "bar" - -=== -Simple import with single name -=== - -import Foundation - ---- - -source_file - statement: - import_declaration - name: - identifier - part: simple_identifier "Foundation" - ---- - -top_level - body: - block - stmt: - import_declaration - pattern: bulk_importing_pattern "import Foundation" - imported_expr: - name_expr - identifier: identifier "Foundation" - -=== -Import with dotted path (two parts) -=== - -import Foundation.Networking - ---- - -source_file - statement: - import_declaration - name: - identifier - part: - simple_identifier "Foundation" - simple_identifier "Networking" - ---- - -top_level - body: - block - stmt: - import_declaration - pattern: bulk_importing_pattern "import Foundation.Networking" - imported_expr: - member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Networking" - -=== -Import with deeply nested path (three parts) -=== - -import Foundation.Networking.URLSession - ---- - -source_file - statement: - import_declaration - name: - identifier - part: - simple_identifier "Foundation" - simple_identifier "Networking" - simple_identifier "URLSession" - ---- - -top_level - body: - block - stmt: - import_declaration - pattern: bulk_importing_pattern "import Foundation.Networking.URLSession" - imported_expr: - member_access_expr - base: - member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Networking" - member: identifier "URLSession" - -=== -Scoped import uses name_pattern -=== - -import struct Foundation.Date - ---- - -source_file - statement: - import_declaration - name: - identifier - part: - simple_identifier "Foundation" - simple_identifier "Date" - scoped_import_kind: struct - ---- - -top_level - body: - block - stmt: - import_declaration - modifier: modifier "struct" - pattern: - name_pattern - identifier: identifier "Date" - imported_expr: - member_access_expr - base: - name_expr - identifier: identifier "Foundation" - member: identifier "Date" diff --git a/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output b/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output new file mode 100644 index 00000000000..07aa40618bd --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.output @@ -0,0 +1,21 @@ +1 + 2 + +--- + +source_file + statement: + additive_expression + lhs: integer_literal "1" + op: + + rhs: integer_literal "2" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "+" + left: int_literal "1" + right: int_literal "2" diff --git a/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.swift b/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.swift new file mode 100644 index 00000000000..e0ef5840209 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/additive-expression-is-desugared.swift @@ -0,0 +1 @@ +1 + 2 diff --git a/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output b/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output new file mode 100644 index 00000000000..ff830fd4b89 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.output @@ -0,0 +1,25 @@ +foo + bar + +--- + +source_file + statement: + additive_expression + lhs: simple_identifier "foo" + op: + + rhs: simple_identifier "bar" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "+" + left: + name_expr + identifier: identifier "foo" + right: + name_expr + identifier: identifier "bar" diff --git a/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.swift b/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.swift new file mode 100644 index 00000000000..40750801b0d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/another-additive-expression-is-desugared.swift @@ -0,0 +1 @@ +foo + bar diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output new file mode 100644 index 00000000000..4f312dabb15 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.output @@ -0,0 +1,31 @@ +import Foundation.Networking.URLSession + +--- + +source_file + statement: + import_declaration + name: + identifier + part: + simple_identifier "Foundation" + simple_identifier "Networking" + simple_identifier "URLSession" + +--- + +top_level + body: + block + stmt: + import_declaration + pattern: bulk_importing_pattern "import Foundation.Networking.URLSession" + imported_expr: + member_access_expr + base: + member_access_expr + base: + name_expr + identifier: identifier "Foundation" + member: identifier "Networking" + member: identifier "URLSession" diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.swift b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.swift new file mode 100644 index 00000000000..031ca336c03 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-deeply-nested-path-three-parts.swift @@ -0,0 +1 @@ +import Foundation.Networking.URLSession diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output new file mode 100644 index 00000000000..efd2a646124 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.output @@ -0,0 +1,27 @@ +import Foundation.Networking + +--- + +source_file + statement: + import_declaration + name: + identifier + part: + simple_identifier "Foundation" + simple_identifier "Networking" + +--- + +top_level + body: + block + stmt: + import_declaration + pattern: bulk_importing_pattern "import Foundation.Networking" + imported_expr: + member_access_expr + base: + name_expr + identifier: identifier "Foundation" + member: identifier "Networking" diff --git a/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.swift b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.swift new file mode 100644 index 00000000000..0b2c36fa11a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/import-with-dotted-path-two-parts.swift @@ -0,0 +1 @@ +import Foundation.Networking diff --git a/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output b/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output new file mode 100644 index 00000000000..fbf8e8100af --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.output @@ -0,0 +1,31 @@ +import struct Foundation.Date + +--- + +source_file + statement: + import_declaration + name: + identifier + part: + simple_identifier "Foundation" + simple_identifier "Date" + scoped_import_kind: struct + +--- + +top_level + body: + block + stmt: + import_declaration + modifier: modifier "struct" + pattern: + name_pattern + identifier: identifier "Date" + imported_expr: + member_access_expr + base: + name_expr + identifier: identifier "Foundation" + member: identifier "Date" diff --git a/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.swift b/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.swift new file mode 100644 index 00000000000..450a7925418 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/scoped-import-uses-name-pattern.swift @@ -0,0 +1 @@ +import struct Foundation.Date diff --git a/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output new file mode 100644 index 00000000000..7a6be1c35e4 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.output @@ -0,0 +1,22 @@ +import Foundation + +--- + +source_file + statement: + import_declaration + name: + identifier + part: simple_identifier "Foundation" + +--- + +top_level + body: + block + stmt: + import_declaration + pattern: bulk_importing_pattern "import Foundation" + imported_expr: + name_expr + identifier: identifier "Foundation" diff --git a/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.swift b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.swift new file mode 100644 index 00000000000..fecc4ab4499 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/desugar/simple-import-with-single-name.swift @@ -0,0 +1 @@ +import Foundation diff --git a/unified/extractor/tests/corpus/swift/functions.txt b/unified/extractor/tests/corpus/swift/functions.txt deleted file mode 100644 index ed86618910c..00000000000 --- a/unified/extractor/tests/corpus/swift/functions.txt +++ /dev/null @@ -1,657 +0,0 @@ -=== -Function with no parameters -=== - -func greet() { - print("hello") -} - ---- - -source_file - statement: - function_declaration - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: - line_string_literal - text: line_str_text "hello" - name: simple_identifier "greet" - ---- - -top_level - body: - block - stmt: - function_declaration - body: - block - stmt: - call_expr - argument: - argument - value: string_literal "\"hello\"" - callee: - name_expr - identifier: identifier "print" - name: identifier "greet" - -=== -Function with parameters and return type -=== - -func add(_ a: Int, _ b: Int) -> Int { - return a + b -} - ---- - -source_file - statement: - function_declaration - body: - block - statement: - control_transfer_statement - kind: return - result: - additive_expression - lhs: simple_identifier "a" - op: + - rhs: simple_identifier "b" - name: simple_identifier "add" - parameter: - function_parameter - parameter: - parameter - external_name: simple_identifier "_" - name: simple_identifier "a" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - function_parameter - parameter: - parameter - external_name: simple_identifier "_" - name: simple_identifier "b" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - return_type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - ---- - -top_level - body: - block - stmt: - function_declaration - body: - block - stmt: - return_expr - value: - binary_expr - operator: infix_operator "+" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - name: identifier "add" - parameter: - parameter - external_name: identifier "_" - pattern: - name_pattern - identifier: identifier "a" - parameter - external_name: identifier "_" - pattern: - name_pattern - identifier: identifier "b" - return_type: - named_type_expr - name: identifier "Int" - -=== -Function with named parameters -=== - -func greet(person name: String) { - print(name) -} - ---- - -source_file - statement: - function_declaration - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "name" - name: simple_identifier "greet" - parameter: - function_parameter - parameter: - parameter - external_name: simple_identifier "person" - name: simple_identifier "name" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "String" - ---- - -top_level - body: - block - stmt: - function_declaration - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "name" - callee: - name_expr - identifier: identifier "print" - name: identifier "greet" - parameter: - parameter - external_name: identifier "person" - pattern: - name_pattern - identifier: identifier "name" - -=== -Function with default parameter value -=== - -func greet(name: String = "world") { - print(name) -} - ---- - -source_file - statement: - function_declaration - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "name" - name: simple_identifier "greet" - parameter: - function_parameter - default_value: - line_string_literal - text: line_str_text "world" - parameter: - parameter - name: simple_identifier "name" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "String" - ---- - -top_level - body: - block - stmt: - function_declaration - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "name" - callee: - name_expr - identifier: identifier "print" - name: identifier "greet" - parameter: - parameter - default: string_literal "\"world\"" - pattern: - name_pattern - identifier: identifier "name" - -=== -Variadic function -=== - -func sum(_ values: Int...) -> Int { - return values.reduce(0, +) -} - ---- - -source_file - statement: - function_declaration - body: - block - statement: - control_transfer_statement - kind: return - result: - call_expression - function: - navigation_expression - suffix: - navigation_suffix - suffix: simple_identifier "reduce" - target: simple_identifier "values" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "0" - value_argument - value: - referenceable_operator - operator: + - name: simple_identifier "sum" - parameter: - function_parameter - parameter: - parameter - external_name: simple_identifier "_" - name: simple_identifier "values" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - return_type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - ---- - -top_level - body: - block - stmt: - function_declaration - body: - block - stmt: - return_expr - value: - call_expr - argument: - argument - value: int_literal "0" - argument - value: - name_expr - identifier: identifier "+" - callee: - member_access_expr - base: - name_expr - identifier: identifier "values" - member: identifier "reduce" - name: identifier "sum" - parameter: - parameter - external_name: identifier "_" - pattern: - name_pattern - identifier: identifier "values" - return_type: - named_type_expr - name: identifier "Int" - -=== -Function call -=== - -foo(1, 2) - ---- - -source_file - statement: - call_expression - function: simple_identifier "foo" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "1" - value_argument - value: integer_literal "2" - ---- - -top_level - body: - block - stmt: - call_expr - argument: - argument - value: int_literal "1" - argument - value: int_literal "2" - callee: - name_expr - identifier: identifier "foo" - -=== -Function call with labelled arguments -=== - -greet(person: "Bob") - ---- - -source_file - statement: - call_expression - function: simple_identifier "greet" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - name: - value_argument_label - name: simple_identifier "person" - value: - line_string_literal - text: line_str_text "Bob" - ---- - -top_level - body: - block - stmt: - call_expr - argument: - argument - name: identifier "person" - value: string_literal "\"Bob\"" - callee: - name_expr - identifier: identifier "greet" - -=== -Method call -=== - -list.append(1) - ---- - -source_file - statement: - call_expression - function: - navigation_expression - suffix: - navigation_suffix - suffix: simple_identifier "append" - target: simple_identifier "list" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "1" - ---- - -top_level - body: - block - stmt: - call_expr - argument: - argument - value: int_literal "1" - callee: - member_access_expr - base: - name_expr - identifier: identifier "list" - member: identifier "append" - -=== -Generic function -=== - -func identity(_ x: T) -> T { - return x -} - ---- - -source_file - statement: - function_declaration - body: - block - statement: - control_transfer_statement - kind: return - result: simple_identifier "x" - name: simple_identifier "identity" - parameter: - function_parameter - parameter: - parameter - external_name: simple_identifier "_" - name: simple_identifier "x" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "T" - return_type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "T" - type_parameters: - type_parameters - parameter: - type_parameter - name: type_identifier "T" - ---- - -top_level - body: - block - stmt: - function_declaration - body: - block - stmt: - return_expr - value: - name_expr - identifier: identifier "x" - name: identifier "identity" - parameter: - parameter - external_name: identifier "_" - pattern: - name_pattern - identifier: identifier "x" - return_type: - named_type_expr - name: identifier "T" - -=== -Leading-dot expression value -=== - -let x = .foo - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - value: - prefix_expression - operation: . - target: simple_identifier "foo" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - value: - member_access_expr - base: inferred_type_expr ".foo" - member: identifier "foo" - -=== -Leading-dot expression call -=== - -let y = .some(1) - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "y" - value: - call_expression - function: - prefix_expression - operation: . - target: simple_identifier "some" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: integer_literal "1" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" - value: - call_expr - argument: - argument - value: int_literal "1" - callee: - member_access_expr - base: inferred_type_expr ".some" - member: identifier "some" diff --git a/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output b/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output new file mode 100644 index 00000000000..ba0c002a452 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.output @@ -0,0 +1,35 @@ +greet(person: "Bob") + +--- + +source_file + statement: + call_expression + function: simple_identifier "greet" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + name: + value_argument_label + name: simple_identifier "person" + value: + line_string_literal + text: line_str_text "Bob" + +--- + +top_level + body: + block + stmt: + call_expr + argument: + argument + name: identifier "person" + value: string_literal "\"Bob\"" + callee: + name_expr + identifier: identifier "greet" diff --git a/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.swift b/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.swift new file mode 100644 index 00000000000..10ae64e57c1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-call-with-labelled-arguments.swift @@ -0,0 +1 @@ +greet(person: "Bob") diff --git a/unified/extractor/tests/corpus/swift/functions/function-call.output b/unified/extractor/tests/corpus/swift/functions/function-call.output new file mode 100644 index 00000000000..ed604730d33 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-call.output @@ -0,0 +1,33 @@ +foo(1, 2) + +--- + +source_file + statement: + call_expression + function: simple_identifier "foo" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "1" + value_argument + value: integer_literal "2" + +--- + +top_level + body: + block + stmt: + call_expr + argument: + argument + value: int_literal "1" + argument + value: int_literal "2" + callee: + name_expr + identifier: identifier "foo" diff --git a/unified/extractor/tests/corpus/swift/functions/function-call.swift b/unified/extractor/tests/corpus/swift/functions/function-call.swift new file mode 100644 index 00000000000..22594bf8c7d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-call.swift @@ -0,0 +1 @@ +foo(1, 2) diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output b/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output new file mode 100644 index 00000000000..fdd737e1258 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.output @@ -0,0 +1,64 @@ +func greet(name: String = "world") { + print(name) +} + +--- + +source_file + statement: + function_declaration + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "name" + name: simple_identifier "greet" + parameter: + function_parameter + default_value: + line_string_literal + text: line_str_text "world" + parameter: + parameter + name: simple_identifier "name" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "String" + +--- + +top_level + body: + block + stmt: + function_declaration + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "name" + callee: + name_expr + identifier: identifier "print" + name: identifier "greet" + parameter: + parameter + default: string_literal "\"world\"" + pattern: + name_pattern + identifier: identifier "name" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.swift b/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.swift new file mode 100644 index 00000000000..892d1b7bbfe --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-default-parameter-value.swift @@ -0,0 +1,3 @@ +func greet(name: String = "world") { + print(name) +} diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output b/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output new file mode 100644 index 00000000000..bfa68c645ea --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.output @@ -0,0 +1,62 @@ +func greet(person name: String) { + print(name) +} + +--- + +source_file + statement: + function_declaration + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "name" + name: simple_identifier "greet" + parameter: + function_parameter + parameter: + parameter + external_name: simple_identifier "person" + name: simple_identifier "name" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "String" + +--- + +top_level + body: + block + stmt: + function_declaration + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "name" + callee: + name_expr + identifier: identifier "print" + name: identifier "greet" + parameter: + parameter + external_name: identifier "person" + pattern: + name_pattern + identifier: identifier "name" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.swift b/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.swift new file mode 100644 index 00000000000..0b18f19768c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-named-parameters.swift @@ -0,0 +1,3 @@ +func greet(person name: String) { + print(name) +} diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output b/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output new file mode 100644 index 00000000000..b5cdfd73d48 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.output @@ -0,0 +1,43 @@ +func greet() { + print("hello") +} + +--- + +source_file + statement: + function_declaration + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: + line_string_literal + text: line_str_text "hello" + name: simple_identifier "greet" + +--- + +top_level + body: + block + stmt: + function_declaration + body: + block + stmt: + call_expr + argument: + argument + value: string_literal "\"hello\"" + callee: + name_expr + identifier: identifier "print" + name: identifier "greet" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.swift b/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.swift new file mode 100644 index 00000000000..3f690449977 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-no-parameters.swift @@ -0,0 +1,3 @@ +func greet() { + print("hello") +} diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output b/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output new file mode 100644 index 00000000000..6544f4313cd --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.output @@ -0,0 +1,88 @@ +func add(_ a: Int, _ b: Int) -> Int { + return a + b +} + +--- + +source_file + statement: + function_declaration + body: + block + statement: + control_transfer_statement + kind: return + result: + additive_expression + lhs: simple_identifier "a" + op: + + rhs: simple_identifier "b" + name: simple_identifier "add" + parameter: + function_parameter + parameter: + parameter + external_name: simple_identifier "_" + name: simple_identifier "a" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + function_parameter + parameter: + parameter + external_name: simple_identifier "_" + name: simple_identifier "b" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + return_type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + +--- + +top_level + body: + block + stmt: + function_declaration + body: + block + stmt: + return_expr + value: + binary_expr + operator: infix_operator "+" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" + name: identifier "add" + parameter: + parameter + external_name: identifier "_" + pattern: + name_pattern + identifier: identifier "a" + parameter + external_name: identifier "_" + pattern: + name_pattern + identifier: identifier "b" + return_type: + named_type_expr + name: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.swift b/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.swift new file mode 100644 index 00000000000..d87ad5c9b0d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/function-with-parameters-and-return-type.swift @@ -0,0 +1,3 @@ +func add(_ a: Int, _ b: Int) -> Int { + return a + b +} diff --git a/unified/extractor/tests/corpus/swift/functions/generic-function.output b/unified/extractor/tests/corpus/swift/functions/generic-function.output new file mode 100644 index 00000000000..f42367a8fca --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/generic-function.output @@ -0,0 +1,66 @@ +func identity(_ x: T) -> T { + return x +} + +--- + +source_file + statement: + function_declaration + body: + block + statement: + control_transfer_statement + kind: return + result: simple_identifier "x" + name: simple_identifier "identity" + parameter: + function_parameter + parameter: + parameter + external_name: simple_identifier "_" + name: simple_identifier "x" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "T" + return_type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "T" + type_parameters: + type_parameters + parameter: + type_parameter + name: type_identifier "T" + +--- + +top_level + body: + block + stmt: + function_declaration + body: + block + stmt: + return_expr + value: + name_expr + identifier: identifier "x" + name: identifier "identity" + parameter: + parameter + external_name: identifier "_" + pattern: + name_pattern + identifier: identifier "x" + return_type: + named_type_expr + name: identifier "T" diff --git a/unified/extractor/tests/corpus/swift/functions/generic-function.swift b/unified/extractor/tests/corpus/swift/functions/generic-function.swift new file mode 100644 index 00000000000..7a3180392a7 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/generic-function.swift @@ -0,0 +1,3 @@ +func identity(_ x: T) -> T { + return x +} diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output new file mode 100644 index 00000000000..8db16da8ab8 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.output @@ -0,0 +1,49 @@ +let y = .some(1) + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "y" + value: + call_expression + function: + prefix_expression + operation: . + target: simple_identifier "some" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "1" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "y" + value: + call_expr + argument: + argument + value: int_literal "1" + callee: + member_access_expr + base: inferred_type_expr ".some" + member: identifier "some" diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.swift b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.swift new file mode 100644 index 00000000000..13a878c7cbb --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-call.swift @@ -0,0 +1 @@ +let y = .some(1) diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output new file mode 100644 index 00000000000..85aeeffde6e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.output @@ -0,0 +1,35 @@ +let x = .foo + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + value: + prefix_expression + operation: . + target: simple_identifier "foo" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "x" + value: + member_access_expr + base: inferred_type_expr ".foo" + member: identifier "foo" diff --git a/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.swift b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.swift new file mode 100644 index 00000000000..3c7f897a0d8 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/leading-dot-expression-value.swift @@ -0,0 +1 @@ +let x = .foo diff --git a/unified/extractor/tests/corpus/swift/functions/method-call.output b/unified/extractor/tests/corpus/swift/functions/method-call.output new file mode 100644 index 00000000000..5a8a23f5658 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/method-call.output @@ -0,0 +1,37 @@ +list.append(1) + +--- + +source_file + statement: + call_expression + function: + navigation_expression + suffix: + navigation_suffix + suffix: simple_identifier "append" + target: simple_identifier "list" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "1" + +--- + +top_level + body: + block + stmt: + call_expr + argument: + argument + value: int_literal "1" + callee: + member_access_expr + base: + name_expr + identifier: identifier "list" + member: identifier "append" diff --git a/unified/extractor/tests/corpus/swift/functions/method-call.swift b/unified/extractor/tests/corpus/swift/functions/method-call.swift new file mode 100644 index 00000000000..4c6b77a1ea7 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/method-call.swift @@ -0,0 +1 @@ +list.append(1) diff --git a/unified/extractor/tests/corpus/swift/functions/variadic-function.output b/unified/extractor/tests/corpus/swift/functions/variadic-function.output new file mode 100644 index 00000000000..7ca1dfbad4e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/variadic-function.output @@ -0,0 +1,91 @@ +func sum(_ values: Int...) -> Int { + return values.reduce(0, +) +} + +--- + +source_file + statement: + function_declaration + body: + block + statement: + control_transfer_statement + kind: return + result: + call_expression + function: + navigation_expression + suffix: + navigation_suffix + suffix: simple_identifier "reduce" + target: simple_identifier "values" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: integer_literal "0" + value_argument + value: + referenceable_operator + operator: + + name: simple_identifier "sum" + parameter: + function_parameter + parameter: + parameter + external_name: simple_identifier "_" + name: simple_identifier "values" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + return_type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + +--- + +top_level + body: + block + stmt: + function_declaration + body: + block + stmt: + return_expr + value: + call_expr + argument: + argument + value: int_literal "0" + argument + value: + name_expr + identifier: identifier "+" + callee: + member_access_expr + base: + name_expr + identifier: identifier "values" + member: identifier "reduce" + name: identifier "sum" + parameter: + parameter + external_name: identifier "_" + pattern: + name_pattern + identifier: identifier "values" + return_type: + named_type_expr + name: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/functions/variadic-function.swift b/unified/extractor/tests/corpus/swift/functions/variadic-function.swift new file mode 100644 index 00000000000..98d4f00e3aa --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/variadic-function.swift @@ -0,0 +1,3 @@ +func sum(_ values: Int...) -> Int { + return values.reduce(0, +) +} diff --git a/unified/extractor/tests/corpus/swift/literals.txt b/unified/extractor/tests/corpus/swift/literals.txt deleted file mode 100644 index bf0e4aae560..00000000000 --- a/unified/extractor/tests/corpus/swift/literals.txt +++ /dev/null @@ -1,143 +0,0 @@ -=== -Integer literal -=== - -42 - ---- - -source_file - statement: integer_literal "42" - ---- - -top_level - body: - block - stmt: int_literal "42" - -=== -Negative integer literal -=== - --7 - ---- - -source_file - statement: - prefix_expression - operation: - - target: integer_literal "7" - ---- - -top_level - body: - block - stmt: - unary_expr - operand: int_literal "7" - operator: prefix_operator "-" - -=== -Floating-point literal -=== - -3.14 - ---- - -source_file - statement: real_literal "3.14" - ---- - -top_level - body: - block - stmt: float_literal "3.14" - -=== -Boolean literals -=== - -true -false - ---- - -source_file - statement: - boolean_literal - boolean_literal - ---- - -top_level - body: - block - stmt: - boolean_literal "true" - boolean_literal "false" - -=== -Nil literal -=== - -nil - ---- - -source_file - statement: nil - ---- - -top_level - body: - block - stmt: builtin_expr "nil" - -=== -String literal -=== - -"hello" - ---- - -source_file - statement: - line_string_literal - text: line_str_text "hello" - ---- - -top_level - body: - block - stmt: string_literal "\"hello\"" - -=== -String with interpolation -=== - -"hello \(name)" - ---- - -source_file - statement: - line_string_literal - interpolation: - interpolated_expression - value: simple_identifier "name" - text: line_str_text "hello " - ---- - -top_level - body: - block - stmt: string_literal "\"hello \\(name)\"" diff --git a/unified/extractor/tests/corpus/swift/literals/boolean-literals.output b/unified/extractor/tests/corpus/swift/literals/boolean-literals.output new file mode 100644 index 00000000000..d31893de052 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/boolean-literals.output @@ -0,0 +1,18 @@ +true +false + +--- + +source_file + statement: + boolean_literal + boolean_literal + +--- + +top_level + body: + block + stmt: + boolean_literal "true" + boolean_literal "false" diff --git a/unified/extractor/tests/corpus/swift/literals/boolean-literals.swift b/unified/extractor/tests/corpus/swift/literals/boolean-literals.swift new file mode 100644 index 00000000000..da29283aaa4 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/boolean-literals.swift @@ -0,0 +1,2 @@ +true +false diff --git a/unified/extractor/tests/corpus/swift/literals/floating-point-literal.output b/unified/extractor/tests/corpus/swift/literals/floating-point-literal.output new file mode 100644 index 00000000000..0c374dc4452 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/floating-point-literal.output @@ -0,0 +1,13 @@ +3.14 + +--- + +source_file + statement: real_literal "3.14" + +--- + +top_level + body: + block + stmt: float_literal "3.14" diff --git a/unified/extractor/tests/corpus/swift/literals/floating-point-literal.swift b/unified/extractor/tests/corpus/swift/literals/floating-point-literal.swift new file mode 100644 index 00000000000..6324d401a06 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/floating-point-literal.swift @@ -0,0 +1 @@ +3.14 diff --git a/unified/extractor/tests/corpus/swift/literals/integer-literal.output b/unified/extractor/tests/corpus/swift/literals/integer-literal.output new file mode 100644 index 00000000000..018c5798394 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/integer-literal.output @@ -0,0 +1,13 @@ +42 + +--- + +source_file + statement: integer_literal "42" + +--- + +top_level + body: + block + stmt: int_literal "42" diff --git a/unified/extractor/tests/corpus/swift/literals/integer-literal.swift b/unified/extractor/tests/corpus/swift/literals/integer-literal.swift new file mode 100644 index 00000000000..d81cc0710eb --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/integer-literal.swift @@ -0,0 +1 @@ +42 diff --git a/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output b/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output new file mode 100644 index 00000000000..e1ca11e070a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.output @@ -0,0 +1,19 @@ +-7 + +--- + +source_file + statement: + prefix_expression + operation: - + target: integer_literal "7" + +--- + +top_level + body: + block + stmt: + unary_expr + operand: int_literal "7" + operator: prefix_operator "-" diff --git a/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.swift b/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.swift new file mode 100644 index 00000000000..17bdab10382 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/negative-integer-literal.swift @@ -0,0 +1 @@ +-7 diff --git a/unified/extractor/tests/corpus/swift/literals/nil-literal.output b/unified/extractor/tests/corpus/swift/literals/nil-literal.output new file mode 100644 index 00000000000..6c826cabe7d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/nil-literal.output @@ -0,0 +1,13 @@ +nil + +--- + +source_file + statement: nil + +--- + +top_level + body: + block + stmt: builtin_expr "nil" diff --git a/unified/extractor/tests/corpus/swift/literals/nil-literal.swift b/unified/extractor/tests/corpus/swift/literals/nil-literal.swift new file mode 100644 index 00000000000..607602cfc6e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/nil-literal.swift @@ -0,0 +1 @@ +nil diff --git a/unified/extractor/tests/corpus/swift/literals/string-literal.output b/unified/extractor/tests/corpus/swift/literals/string-literal.output new file mode 100644 index 00000000000..ca2ac6df325 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/string-literal.output @@ -0,0 +1,15 @@ +"hello" + +--- + +source_file + statement: + line_string_literal + text: line_str_text "hello" + +--- + +top_level + body: + block + stmt: string_literal "\"hello\"" diff --git a/unified/extractor/tests/corpus/swift/literals/string-literal.swift b/unified/extractor/tests/corpus/swift/literals/string-literal.swift new file mode 100644 index 00000000000..3580093b9da --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/string-literal.swift @@ -0,0 +1 @@ +"hello" diff --git a/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output new file mode 100644 index 00000000000..eb56fbbbb03 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.output @@ -0,0 +1,18 @@ +"hello \(name)" + +--- + +source_file + statement: + line_string_literal + interpolation: + interpolated_expression + value: simple_identifier "name" + text: line_str_text "hello " + +--- + +top_level + body: + block + stmt: string_literal "\"hello \\(name)\"" diff --git a/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift new file mode 100644 index 00000000000..4c58b37b89e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/literals/string-with-interpolation.swift @@ -0,0 +1 @@ +"hello \(name)" diff --git a/unified/extractor/tests/corpus/swift/loops.txt b/unified/extractor/tests/corpus/swift/loops.txt deleted file mode 100644 index b0e25debff5..00000000000 --- a/unified/extractor/tests/corpus/swift/loops.txt +++ /dev/null @@ -1,410 +0,0 @@ -=== -For-in over array literal -=== - -for x in [1, 2, 3] { - print(x) -} - ---- - -source_file - statement: - for_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "x" - collection: - array_literal - element: - integer_literal "1" - integer_literal "2" - integer_literal "3" - item: - pattern - bound_identifier: simple_identifier "x" - ---- - -top_level - body: - block - stmt: - for_each_stmt - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "x" - callee: - name_expr - identifier: identifier "print" - pattern: - name_pattern - identifier: identifier "x" - iterable: - array_literal - element: - int_literal "1" - int_literal "2" - int_literal "3" - -=== -For-in over range -=== - -for i in 0..<10 { - print(i) -} - ---- - -source_file - statement: - for_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "i" - collection: - range_expression - end: integer_literal "10" - op: ..< - start: integer_literal "0" - item: - pattern - bound_identifier: simple_identifier "i" - ---- - -top_level - body: - block - stmt: - for_each_stmt - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "i" - callee: - name_expr - identifier: identifier "print" - pattern: - name_pattern - identifier: identifier "i" - iterable: - binary_expr - operator: infix_operator "..<" - left: int_literal "0" - right: int_literal "10" - -=== -For-in with where clause -=== - -for x in xs where x > 0 { - print(x) -} - ---- - -source_file - statement: - for_statement - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "x" - collection: simple_identifier "xs" - item: - pattern - bound_identifier: simple_identifier "x" - where: - where_clause - expr: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "0" - keyword: where_keyword "where" - ---- - -top_level - body: - block - stmt: - for_each_stmt - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "x" - callee: - name_expr - identifier: identifier "print" - pattern: - name_pattern - identifier: identifier "x" - guard: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - iterable: - name_expr - identifier: identifier "xs" - -=== -While loop -=== - -while x > 0 { - x -= 1 -} - ---- - -source_file - statement: - while_statement - body: - block - statement: - assignment - operator: -= - result: integer_literal "1" - target: - directly_assignable_expression - expr: simple_identifier "x" - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "0" - ---- - -top_level - body: - block - stmt: - while_stmt - body: - block - stmt: - compound_assign_expr - operator: infix_operator "-=" - target: - name_expr - identifier: identifier "x" - value: int_literal "1" - condition: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - -=== -Repeat-while loop -=== - -repeat { - x -= 1 -} while x > 0 - ---- - -source_file - statement: - repeat_while_statement - body: - block - statement: - assignment - operator: -= - result: integer_literal "1" - target: - directly_assignable_expression - expr: simple_identifier "x" - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "0" - ---- - -top_level - body: - block - stmt: - do_while_stmt - body: - block - stmt: - compound_assign_expr - operator: infix_operator "-=" - target: - name_expr - identifier: identifier "x" - value: int_literal "1" - condition: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - -=== -Break and continue -=== - -for x in xs { - if x < 0 { continue } - if x > 100 { break } - print(x) -} - ---- - -source_file - statement: - for_statement - body: - block - statement: - if_statement - body: - block - statement: - control_transfer_statement - kind: continue - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: < - rhs: integer_literal "0" - if_statement - body: - block - statement: - control_transfer_statement - kind: break - condition: - if_condition - kind: - comparison_expression - lhs: simple_identifier "x" - op: > - rhs: integer_literal "100" - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "x" - collection: simple_identifier "xs" - item: - pattern - bound_identifier: simple_identifier "x" - ---- - -top_level - body: - block - stmt: - for_each_stmt - body: - block - stmt: - if_expr - condition: - binary_expr - operator: infix_operator "<" - left: - name_expr - identifier: identifier "x" - right: int_literal "0" - then: - block - stmt: continue_expr "continue" - if_expr - condition: - binary_expr - operator: infix_operator ">" - left: - name_expr - identifier: identifier "x" - right: int_literal "100" - then: - block - stmt: break_expr "break" - call_expr - argument: - argument - value: - name_expr - identifier: identifier "x" - callee: - name_expr - identifier: identifier "print" - pattern: - name_pattern - identifier: identifier "x" - iterable: - name_expr - identifier: identifier "xs" diff --git a/unified/extractor/tests/corpus/swift/loops/break-and-continue.output b/unified/extractor/tests/corpus/swift/loops/break-and-continue.output new file mode 100644 index 00000000000..702cd0cbc68 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/break-and-continue.output @@ -0,0 +1,101 @@ +for x in xs { + if x < 0 { continue } + if x > 100 { break } + print(x) +} + +--- + +source_file + statement: + for_statement + body: + block + statement: + if_statement + body: + block + statement: + control_transfer_statement + kind: continue + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: < + rhs: integer_literal "0" + if_statement + body: + block + statement: + control_transfer_statement + kind: break + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "100" + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "x" + collection: simple_identifier "xs" + item: + pattern + bound_identifier: simple_identifier "x" + +--- + +top_level + body: + block + stmt: + for_each_stmt + body: + block + stmt: + if_expr + condition: + binary_expr + operator: infix_operator "<" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" + then: + block + stmt: continue_expr "continue" + if_expr + condition: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "100" + then: + block + stmt: break_expr "break" + call_expr + argument: + argument + value: + name_expr + identifier: identifier "x" + callee: + name_expr + identifier: identifier "print" + pattern: + name_pattern + identifier: identifier "x" + iterable: + name_expr + identifier: identifier "xs" diff --git a/unified/extractor/tests/corpus/swift/loops/break-and-continue.swift b/unified/extractor/tests/corpus/swift/loops/break-and-continue.swift new file mode 100644 index 00000000000..c06840ed852 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/break-and-continue.swift @@ -0,0 +1,5 @@ +for x in xs { + if x < 0 { continue } + if x > 100 { break } + print(x) +} diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output b/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output new file mode 100644 index 00000000000..bb1711a2341 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.output @@ -0,0 +1,59 @@ +for x in [1, 2, 3] { + print(x) +} + +--- + +source_file + statement: + for_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "x" + collection: + array_literal + element: + integer_literal "1" + integer_literal "2" + integer_literal "3" + item: + pattern + bound_identifier: simple_identifier "x" + +--- + +top_level + body: + block + stmt: + for_each_stmt + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "x" + callee: + name_expr + identifier: identifier "print" + pattern: + name_pattern + identifier: identifier "x" + iterable: + array_literal + element: + int_literal "1" + int_literal "2" + int_literal "3" diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.swift b/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.swift new file mode 100644 index 00000000000..e348f9cb04c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/for-in-over-array-literal.swift @@ -0,0 +1,3 @@ +for x in [1, 2, 3] { + print(x) +} diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-over-range.output b/unified/extractor/tests/corpus/swift/loops/for-in-over-range.output new file mode 100644 index 00000000000..87a0baf328b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/for-in-over-range.output @@ -0,0 +1,57 @@ +for i in 0..<10 { + print(i) +} + +--- + +source_file + statement: + for_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "i" + collection: + range_expression + end: integer_literal "10" + op: ..< + start: integer_literal "0" + item: + pattern + bound_identifier: simple_identifier "i" + +--- + +top_level + body: + block + stmt: + for_each_stmt + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "i" + callee: + name_expr + identifier: identifier "print" + pattern: + name_pattern + identifier: identifier "i" + iterable: + binary_expr + operator: infix_operator "..<" + left: int_literal "0" + right: int_literal "10" diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-over-range.swift b/unified/extractor/tests/corpus/swift/loops/for-in-over-range.swift new file mode 100644 index 00000000000..a13c39683cc --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/for-in-over-range.swift @@ -0,0 +1,3 @@ +for i in 0..<10 { + print(i) +} diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output b/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output new file mode 100644 index 00000000000..84e832c2be5 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.output @@ -0,0 +1,66 @@ +for x in xs where x > 0 { + print(x) +} + +--- + +source_file + statement: + for_statement + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "x" + collection: simple_identifier "xs" + item: + pattern + bound_identifier: simple_identifier "x" + where: + where_clause + expr: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "0" + keyword: where_keyword "where" + +--- + +top_level + body: + block + stmt: + for_each_stmt + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "x" + callee: + name_expr + identifier: identifier "print" + pattern: + name_pattern + identifier: identifier "x" + guard: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" + iterable: + name_expr + identifier: identifier "xs" diff --git a/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.swift b/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.swift new file mode 100644 index 00000000000..5abedde7c56 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/for-in-with-where-clause.swift @@ -0,0 +1,3 @@ +for x in xs where x > 0 { + print(x) +} diff --git a/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output b/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output new file mode 100644 index 00000000000..15b673109f2 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.output @@ -0,0 +1,49 @@ +repeat { + x -= 1 +} while x > 0 + +--- + +source_file + statement: + repeat_while_statement + body: + block + statement: + assignment + operator: -= + result: integer_literal "1" + target: + directly_assignable_expression + expr: simple_identifier "x" + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "0" + +--- + +top_level + body: + block + stmt: + do_while_stmt + body: + block + stmt: + compound_assign_expr + operator: infix_operator "-=" + target: + name_expr + identifier: identifier "x" + value: int_literal "1" + condition: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" diff --git a/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.swift b/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.swift new file mode 100644 index 00000000000..ddffe068b70 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/repeat-while-loop.swift @@ -0,0 +1,3 @@ +repeat { + x -= 1 +} while x > 0 diff --git a/unified/extractor/tests/corpus/swift/loops/while-loop.output b/unified/extractor/tests/corpus/swift/loops/while-loop.output new file mode 100644 index 00000000000..516ab43a2ee --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/while-loop.output @@ -0,0 +1,49 @@ +while x > 0 { + x -= 1 +} + +--- + +source_file + statement: + while_statement + body: + block + statement: + assignment + operator: -= + result: integer_literal "1" + target: + directly_assignable_expression + expr: simple_identifier "x" + condition: + if_condition + kind: + comparison_expression + lhs: simple_identifier "x" + op: > + rhs: integer_literal "0" + +--- + +top_level + body: + block + stmt: + while_stmt + body: + block + stmt: + compound_assign_expr + operator: infix_operator "-=" + target: + name_expr + identifier: identifier "x" + value: int_literal "1" + condition: + binary_expr + operator: infix_operator ">" + left: + name_expr + identifier: identifier "x" + right: int_literal "0" diff --git a/unified/extractor/tests/corpus/swift/loops/while-loop.swift b/unified/extractor/tests/corpus/swift/loops/while-loop.swift new file mode 100644 index 00000000000..acd87ad53e1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/loops/while-loop.swift @@ -0,0 +1,3 @@ +while x > 0 { + x -= 1 +} diff --git a/unified/extractor/tests/corpus/swift/operators.txt b/unified/extractor/tests/corpus/swift/operators.txt deleted file mode 100644 index d912a1085dc..00000000000 --- a/unified/extractor/tests/corpus/swift/operators.txt +++ /dev/null @@ -1,367 +0,0 @@ -=== -Addition -=== - -a + b - ---- - -source_file - statement: - additive_expression - lhs: simple_identifier "a" - op: + - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "+" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Subtraction -=== - -a - b - ---- - -source_file - statement: - additive_expression - lhs: simple_identifier "a" - op: - - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "-" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Multiplication -=== - -a * b - ---- - -source_file - statement: - multiplicative_expression - lhs: simple_identifier "a" - op: * - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "*" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Division -=== - -a / b - ---- - -source_file - statement: - multiplicative_expression - lhs: simple_identifier "a" - op: / - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "/" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Operator precedence: addition and multiplication -=== - -a + b * c - ---- - -source_file - statement: - additive_expression - lhs: simple_identifier "a" - op: + - rhs: - multiplicative_expression - lhs: simple_identifier "b" - op: * - rhs: simple_identifier "c" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "+" - left: - name_expr - identifier: identifier "a" - right: - binary_expr - operator: infix_operator "*" - left: - name_expr - identifier: identifier "b" - right: - name_expr - identifier: identifier "c" - -=== -Parenthesised expression -=== - -(a + b) * c - ---- - -source_file - statement: - multiplicative_expression - lhs: - tuple_expression - element: - tuple_expression_item - value: - additive_expression - lhs: simple_identifier "a" - op: + - rhs: simple_identifier "b" - op: * - rhs: simple_identifier "c" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "*" - left: tuple_expr "(a + b)" - right: - name_expr - identifier: identifier "c" - -=== -Comparison -=== - -a < b - ---- - -source_file - statement: - comparison_expression - lhs: simple_identifier "a" - op: < - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "<" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Equality -=== - -a == b - ---- - -source_file - statement: - equality_expression - lhs: simple_identifier "a" - op: == - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "==" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Logical and -=== - -a && b - ---- - -source_file - statement: - conjunction_expression - lhs: simple_identifier "a" - op: && - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "&&" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Logical or -=== - -a || b - ---- - -source_file - statement: - disjunction_expression - lhs: simple_identifier "a" - op: || - rhs: simple_identifier "b" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "||" - left: - name_expr - identifier: identifier "a" - right: - name_expr - identifier: identifier "b" - -=== -Logical not -=== - -!a - ---- - -source_file - statement: - prefix_expression - operation: bang "!" - target: simple_identifier "a" - ---- - -top_level - body: - block - stmt: - unary_expr - operand: - name_expr - identifier: identifier "a" - operator: prefix_operator "!" - -=== -Range operator -=== - -1...10 - ---- - -source_file - statement: - range_expression - end: integer_literal "10" - op: ... - start: integer_literal "1" - ---- - -top_level - body: - block - stmt: - binary_expr - operator: infix_operator "..." - left: int_literal "1" - right: int_literal "10" diff --git a/unified/extractor/tests/corpus/swift/operators/addition.output b/unified/extractor/tests/corpus/swift/operators/addition.output new file mode 100644 index 00000000000..42c0ca9de61 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/addition.output @@ -0,0 +1,25 @@ +a + b + +--- + +source_file + statement: + additive_expression + lhs: simple_identifier "a" + op: + + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "+" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/addition.swift b/unified/extractor/tests/corpus/swift/operators/addition.swift new file mode 100644 index 00000000000..745e8d376f7 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/addition.swift @@ -0,0 +1 @@ +a + b diff --git a/unified/extractor/tests/corpus/swift/operators/comparison.output b/unified/extractor/tests/corpus/swift/operators/comparison.output new file mode 100644 index 00000000000..f9428ad1758 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/comparison.output @@ -0,0 +1,25 @@ +a < b + +--- + +source_file + statement: + comparison_expression + lhs: simple_identifier "a" + op: < + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "<" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/comparison.swift b/unified/extractor/tests/corpus/swift/operators/comparison.swift new file mode 100644 index 00000000000..ec87be7535b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/comparison.swift @@ -0,0 +1 @@ +a < b diff --git a/unified/extractor/tests/corpus/swift/operators/division.output b/unified/extractor/tests/corpus/swift/operators/division.output new file mode 100644 index 00000000000..76554954302 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/division.output @@ -0,0 +1,25 @@ +a / b + +--- + +source_file + statement: + multiplicative_expression + lhs: simple_identifier "a" + op: / + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "/" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/division.swift b/unified/extractor/tests/corpus/swift/operators/division.swift new file mode 100644 index 00000000000..81e31eb2d56 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/division.swift @@ -0,0 +1 @@ +a / b diff --git a/unified/extractor/tests/corpus/swift/operators/equality.output b/unified/extractor/tests/corpus/swift/operators/equality.output new file mode 100644 index 00000000000..cc891492c75 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/equality.output @@ -0,0 +1,25 @@ +a == b + +--- + +source_file + statement: + equality_expression + lhs: simple_identifier "a" + op: == + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "==" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/equality.swift b/unified/extractor/tests/corpus/swift/operators/equality.swift new file mode 100644 index 00000000000..3868da7afe3 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/equality.swift @@ -0,0 +1 @@ +a == b diff --git a/unified/extractor/tests/corpus/swift/operators/logical-and.output b/unified/extractor/tests/corpus/swift/operators/logical-and.output new file mode 100644 index 00000000000..bf852cd4614 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/logical-and.output @@ -0,0 +1,25 @@ +a && b + +--- + +source_file + statement: + conjunction_expression + lhs: simple_identifier "a" + op: && + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "&&" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/logical-and.swift b/unified/extractor/tests/corpus/swift/operators/logical-and.swift new file mode 100644 index 00000000000..b0af58dca08 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/logical-and.swift @@ -0,0 +1 @@ +a && b diff --git a/unified/extractor/tests/corpus/swift/operators/logical-not.output b/unified/extractor/tests/corpus/swift/operators/logical-not.output new file mode 100644 index 00000000000..d07e357620f --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/logical-not.output @@ -0,0 +1,21 @@ +!a + +--- + +source_file + statement: + prefix_expression + operation: bang "!" + target: simple_identifier "a" + +--- + +top_level + body: + block + stmt: + unary_expr + operand: + name_expr + identifier: identifier "a" + operator: prefix_operator "!" diff --git a/unified/extractor/tests/corpus/swift/operators/logical-not.swift b/unified/extractor/tests/corpus/swift/operators/logical-not.swift new file mode 100644 index 00000000000..60fc874768f --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/logical-not.swift @@ -0,0 +1 @@ +!a diff --git a/unified/extractor/tests/corpus/swift/operators/logical-or.output b/unified/extractor/tests/corpus/swift/operators/logical-or.output new file mode 100644 index 00000000000..e246174844c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/logical-or.output @@ -0,0 +1,25 @@ +a || b + +--- + +source_file + statement: + disjunction_expression + lhs: simple_identifier "a" + op: || + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "||" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/logical-or.swift b/unified/extractor/tests/corpus/swift/operators/logical-or.swift new file mode 100644 index 00000000000..ba0778d2395 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/logical-or.swift @@ -0,0 +1 @@ +a || b diff --git a/unified/extractor/tests/corpus/swift/operators/multiplication.output b/unified/extractor/tests/corpus/swift/operators/multiplication.output new file mode 100644 index 00000000000..b4c33b13286 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/multiplication.output @@ -0,0 +1,25 @@ +a * b + +--- + +source_file + statement: + multiplicative_expression + lhs: simple_identifier "a" + op: * + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "*" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/multiplication.swift b/unified/extractor/tests/corpus/swift/operators/multiplication.swift new file mode 100644 index 00000000000..339d501baf1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/multiplication.swift @@ -0,0 +1 @@ +a * b diff --git a/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output b/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output new file mode 100644 index 00000000000..b1467474e7c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.output @@ -0,0 +1,35 @@ +a + b * c + +--- + +source_file + statement: + additive_expression + lhs: simple_identifier "a" + op: + + rhs: + multiplicative_expression + lhs: simple_identifier "b" + op: * + rhs: simple_identifier "c" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "+" + left: + name_expr + identifier: identifier "a" + right: + binary_expr + operator: infix_operator "*" + left: + name_expr + identifier: identifier "b" + right: + name_expr + identifier: identifier "c" diff --git a/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.swift b/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.swift new file mode 100644 index 00000000000..a191c7bf0b6 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/operator-precedence-addition-and-multiplication.swift @@ -0,0 +1 @@ +a + b * c diff --git a/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output b/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output new file mode 100644 index 00000000000..dfc60e5b7f7 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.output @@ -0,0 +1,31 @@ +(a + b) * c + +--- + +source_file + statement: + multiplicative_expression + lhs: + tuple_expression + element: + tuple_expression_item + value: + additive_expression + lhs: simple_identifier "a" + op: + + rhs: simple_identifier "b" + op: * + rhs: simple_identifier "c" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "*" + left: tuple_expr "(a + b)" + right: + name_expr + identifier: identifier "c" diff --git a/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.swift b/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.swift new file mode 100644 index 00000000000..614106d923c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/parenthesised-expression.swift @@ -0,0 +1 @@ +(a + b) * c diff --git a/unified/extractor/tests/corpus/swift/operators/range-operator.output b/unified/extractor/tests/corpus/swift/operators/range-operator.output new file mode 100644 index 00000000000..03d0290bb7c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/range-operator.output @@ -0,0 +1,21 @@ +1...10 + +--- + +source_file + statement: + range_expression + end: integer_literal "10" + op: ... + start: integer_literal "1" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "..." + left: int_literal "1" + right: int_literal "10" diff --git a/unified/extractor/tests/corpus/swift/operators/range-operator.swift b/unified/extractor/tests/corpus/swift/operators/range-operator.swift new file mode 100644 index 00000000000..3161f10bb72 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/range-operator.swift @@ -0,0 +1 @@ +1...10 diff --git a/unified/extractor/tests/corpus/swift/operators/subtraction.output b/unified/extractor/tests/corpus/swift/operators/subtraction.output new file mode 100644 index 00000000000..69f75e72040 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/subtraction.output @@ -0,0 +1,25 @@ +a - b + +--- + +source_file + statement: + additive_expression + lhs: simple_identifier "a" + op: - + rhs: simple_identifier "b" + +--- + +top_level + body: + block + stmt: + binary_expr + operator: infix_operator "-" + left: + name_expr + identifier: identifier "a" + right: + name_expr + identifier: identifier "b" diff --git a/unified/extractor/tests/corpus/swift/operators/subtraction.swift b/unified/extractor/tests/corpus/swift/operators/subtraction.swift new file mode 100644 index 00000000000..3ab3ec9adf1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/operators/subtraction.swift @@ -0,0 +1 @@ +a - b diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors.txt b/unified/extractor/tests/corpus/swift/optionals-and-errors.txt deleted file mode 100644 index 23e545f5463..00000000000 --- a/unified/extractor/tests/corpus/swift/optionals-and-errors.txt +++ /dev/null @@ -1,418 +0,0 @@ -=== -Optional type annotation -=== - -let x: Int? = nil - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - type: - type_annotation - type: - type - name: - optional_type - wrapped: - user_type - part: - simple_user_type - name: type_identifier "Int" - value: nil - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - type: - generic_type_expr - base: - named_type_expr - name: identifier "Optional" - type_argument: - named_type_expr - name: identifier "Int" - value: builtin_expr "nil" - -=== -Optional chaining -=== - -let n = obj?.foo?.bar - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "n" - value: - navigation_expression - suffix: - navigation_suffix - suffix: simple_identifier "bar" - target: - optional_chain_marker - expr: - navigation_expression - suffix: - navigation_suffix - suffix: simple_identifier "foo" - target: - optional_chain_marker - expr: simple_identifier "obj" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" - value: - member_access_expr - base: - member_access_expr - base: - name_expr - identifier: identifier "obj" - member: identifier "foo" - member: identifier "bar" - -=== -Force unwrap -=== - -let n = opt! - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "n" - value: - postfix_expression - operation: bang "!" - target: simple_identifier "opt" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" - value: - unary_expr - operand: - name_expr - identifier: identifier "opt" - operator: postfix_operator "!" - -=== -Nil-coalescing -=== - -let n = opt ?? 0 - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "n" - value: - nil_coalescing_expression - if_nil: integer_literal "0" - value: simple_identifier "opt" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "n" - value: - binary_expr - operator: infix_operator "??" - left: - name_expr - identifier: identifier "opt" - right: int_literal "0" - -=== -Throwing function -=== - -func read() throws -> String { - return "" -} - ---- - -source_file - statement: - function_declaration - body: - block - statement: - control_transfer_statement - kind: return - result: - line_string_literal - name: simple_identifier "read" - return_type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "String" - throws: throws "throws" - ---- - -top_level - body: - block - stmt: - function_declaration - body: - block - stmt: - return_expr - value: string_literal "\"\"" - name: identifier "read" - return_type: - named_type_expr - name: identifier "String" - -=== -Do-catch -=== - -do { - try foo() -} catch { - print(error) -} - ---- - -source_file - statement: - do_statement - body: - block - statement: - try_expression - expr: - call_expression - function: simple_identifier "foo" - suffix: - call_suffix - arguments: - value_arguments - operator: - try_operator - catch: - catch_block - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "error" - keyword: catch_keyword "catch" - ---- - -top_level - body: - block - stmt: - try_expr - body: - block - stmt: - unary_expr - operand: - call_expr - callee: - name_expr - identifier: identifier "foo" - operator: prefix_operator "try" - catch_clause: - catch_clause - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "error" - callee: - name_expr - identifier: identifier "print" - -=== -Try? expression -=== - -let result = try? foo() - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "result" - value: - try_expression - expr: - call_expression - function: simple_identifier "foo" - suffix: - call_suffix - arguments: - value_arguments - operator: - try_operator - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "result" - value: - unary_expr - operand: - call_expr - callee: - name_expr - identifier: identifier "foo" - operator: prefix_operator "try?" - -=== -Try! expression -=== - -let result = try! foo() - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "result" - value: - try_expression - expr: - call_expression - function: simple_identifier "foo" - suffix: - call_suffix - arguments: - value_arguments - operator: - try_operator - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "result" - value: - unary_expr - operand: - call_expr - callee: - name_expr - identifier: identifier "foo" - operator: prefix_operator "try!" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output new file mode 100644 index 00000000000..c807bd9b7b9 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.output @@ -0,0 +1,71 @@ +do { + try foo() +} catch { + print(error) +} + +--- + +source_file + statement: + do_statement + body: + block + statement: + try_expression + expr: + call_expression + function: simple_identifier "foo" + suffix: + call_suffix + arguments: + value_arguments + operator: + try_operator + catch: + catch_block + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "error" + keyword: catch_keyword "catch" + +--- + +top_level + body: + block + stmt: + try_expr + body: + block + stmt: + unary_expr + operand: + call_expr + callee: + name_expr + identifier: identifier "foo" + operator: prefix_operator "try" + catch_clause: + catch_clause + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "error" + callee: + name_expr + identifier: identifier "print" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.swift new file mode 100644 index 00000000000..21eadeeda01 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/do-catch.swift @@ -0,0 +1,5 @@ +do { + try foo() +} catch { + print(error) +} diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output new file mode 100644 index 00000000000..96fb627e18b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.output @@ -0,0 +1,37 @@ +let n = opt! + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "n" + value: + postfix_expression + operation: bang "!" + target: simple_identifier "opt" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "n" + value: + unary_expr + operand: + name_expr + identifier: identifier "opt" + operator: postfix_operator "!" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.swift new file mode 100644 index 00000000000..a8d4c873143 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/force-unwrap.swift @@ -0,0 +1 @@ +let n = opt! diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output new file mode 100644 index 00000000000..81a9a9187c0 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.output @@ -0,0 +1,38 @@ +let n = opt ?? 0 + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "n" + value: + nil_coalescing_expression + if_nil: integer_literal "0" + value: simple_identifier "opt" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "n" + value: + binary_expr + operator: infix_operator "??" + left: + name_expr + identifier: identifier "opt" + right: int_literal "0" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.swift new file mode 100644 index 00000000000..8452be9529e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/nil-coalescing.swift @@ -0,0 +1 @@ +let n = opt ?? 0 diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output new file mode 100644 index 00000000000..6c5b27a64fe --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.output @@ -0,0 +1,51 @@ +let n = obj?.foo?.bar + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "n" + value: + navigation_expression + suffix: + navigation_suffix + suffix: simple_identifier "bar" + target: + optional_chain_marker + expr: + navigation_expression + suffix: + navigation_suffix + suffix: simple_identifier "foo" + target: + optional_chain_marker + expr: simple_identifier "obj" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "n" + value: + member_access_expr + base: + member_access_expr + base: + name_expr + identifier: identifier "obj" + member: identifier "foo" + member: identifier "bar" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.swift new file mode 100644 index 00000000000..d49b180cdea --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-chaining.swift @@ -0,0 +1 @@ +let n = obj?.foo?.bar diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output new file mode 100644 index 00000000000..06191891496 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.output @@ -0,0 +1,48 @@ +let x: Int? = nil + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + type: + type_annotation + type: + type + name: + optional_type + wrapped: + user_type + part: + simple_user_type + name: type_identifier "Int" + value: nil + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "x" + type: + generic_type_expr + base: + named_type_expr + name: identifier "Optional" + type_argument: + named_type_expr + name: identifier "Int" + value: builtin_expr "nil" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.swift new file mode 100644 index 00000000000..79c1610f361 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/optional-type-annotation.swift @@ -0,0 +1 @@ +let x: Int? = nil diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output new file mode 100644 index 00000000000..f1240bd0b3e --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.output @@ -0,0 +1,42 @@ +func read() throws -> String { + return "" +} + +--- + +source_file + statement: + function_declaration + body: + block + statement: + control_transfer_statement + kind: return + result: + line_string_literal + name: simple_identifier "read" + return_type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "String" + throws: throws "throws" + +--- + +top_level + body: + block + stmt: + function_declaration + body: + block + stmt: + return_expr + value: string_literal "\"\"" + name: identifier "read" + return_type: + named_type_expr + name: identifier "String" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.swift new file mode 100644 index 00000000000..bab5b74fcd0 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/throwing-function.swift @@ -0,0 +1,3 @@ +func read() throws -> String { + return "" +} diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output new file mode 100644 index 00000000000..9d5ff032d75 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.output @@ -0,0 +1,46 @@ +let result = try! foo() + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "result" + value: + try_expression + expr: + call_expression + function: simple_identifier "foo" + suffix: + call_suffix + arguments: + value_arguments + operator: + try_operator + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "result" + value: + unary_expr + operand: + call_expr + callee: + name_expr + identifier: identifier "foo" + operator: prefix_operator "try!" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.swift new file mode 100644 index 00000000000..186255d96ca --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression-2.swift @@ -0,0 +1 @@ +let result = try! foo() diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output new file mode 100644 index 00000000000..e6a7bfef344 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.output @@ -0,0 +1,46 @@ +let result = try? foo() + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "result" + value: + try_expression + expr: + call_expression + function: simple_identifier "foo" + suffix: + call_suffix + arguments: + value_arguments + operator: + try_operator + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "result" + value: + unary_expr + operand: + call_expr + callee: + name_expr + identifier: identifier "foo" + operator: prefix_operator "try?" diff --git a/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.swift b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.swift new file mode 100644 index 00000000000..1185bae5ec1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/optionals-and-errors/try-expression.swift @@ -0,0 +1 @@ +let result = try? foo() diff --git a/unified/extractor/tests/corpus/swift/types.txt b/unified/extractor/tests/corpus/swift/types.txt deleted file mode 100644 index 9c22ae74798..00000000000 --- a/unified/extractor/tests/corpus/swift/types.txt +++ /dev/null @@ -1,1082 +0,0 @@ -=== -Empty class -=== - -class Foo {} - ---- - -source_file - statement: - class_declaration - body: - class_body - declaration_kind: class - name: type_identifier "Foo" - ---- - -top_level - body: - block - stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Foo" - -=== -Class with stored properties -=== - -class Point { - var x: Int - var y: Int -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "y" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - declaration_kind: class - name: type_identifier "Point" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "y" - type: - named_type_expr - name: identifier "Int" - modifier: modifier "class" - name: identifier "Point" - -=== -Class with initializer -=== - -class Point { - var x: Int - init(x: Int) { - self.x = x - } -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - init_declaration - body: - block - statement: - assignment - operator: = - result: simple_identifier "x" - target: - directly_assignable_expression - expr: - navigation_expression - suffix: - navigation_suffix - suffix: simple_identifier "x" - target: - self_expression - parameter: - function_parameter - parameter: - parameter - name: simple_identifier "x" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - declaration_kind: class - name: type_identifier "Point" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - constructor_declaration - body: - block - stmt: - assign_expr - target: - member_access_expr - base: - name_expr - identifier: identifier "self" - member: identifier "x" - value: - name_expr - identifier: identifier "x" - modifier: modifier "class" - name: identifier "Point" - -=== -Class with method -=== - -class Counter { - var n = 0 - func bump() { - n += 1 - } -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "n" - value: integer_literal "0" - function_declaration - body: - block - statement: - assignment - operator: += - result: integer_literal "1" - target: - directly_assignable_expression - expr: simple_identifier "n" - name: simple_identifier "bump" - declaration_kind: class - name: type_identifier "Counter" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "n" - value: int_literal "0" - function_declaration - body: - block - stmt: - compound_assign_expr - operator: infix_operator "+=" - target: - name_expr - identifier: identifier "n" - value: int_literal "1" - name: identifier "bump" - modifier: modifier "class" - name: identifier "Counter" - -=== -Class inheritance -=== - -class Dog: Animal {} - ---- - -source_file - statement: - class_declaration - body: - class_body - declaration_kind: class - inherits: - inheritance_specifier - inherits_from: - user_type - part: - simple_user_type - name: type_identifier "Animal" - name: type_identifier "Dog" - ---- - -top_level - body: - block - stmt: - class_like_declaration - modifier: modifier "class" - name: identifier "Dog" - -=== -Struct -=== - -struct Point { - let x: Int - let y: Int -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "y" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - declaration_kind: struct - name: type_identifier "Point" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "y" - type: - named_type_expr - name: identifier "Int" - modifier: modifier "struct" - name: identifier "Point" - -=== -Enum with cases -=== - -enum Direction { - case north - case south - case east - case west -} - ---- - -source_file - statement: - class_declaration - body: - enum_class_body - member: - enum_entry - case: - enum_case_entry - name: simple_identifier "north" - enum_entry - case: - enum_case_entry - name: simple_identifier "south" - enum_entry - case: - enum_case_entry - name: simple_identifier "east" - enum_entry - case: - enum_case_entry - name: simple_identifier "west" - declaration_kind: enum - name: type_identifier "Direction" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "north" - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "south" - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "east" - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "west" - modifier: modifier "enum" - name: identifier "Direction" - -=== -Enum with associated values -=== - -enum Shape { - case circle(radius: Double) - case square(side: Double) -} - ---- - -source_file - statement: - class_declaration - body: - enum_class_body - member: - enum_entry - case: - enum_case_entry - data_contents: - enum_type_parameters - parameter: - enum_type_parameter - name: simple_identifier "radius" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Double" - name: simple_identifier "circle" - enum_entry - case: - enum_case_entry - data_contents: - enum_type_parameters - parameter: - enum_type_parameter - name: simple_identifier "side" - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Double" - name: simple_identifier "square" - declaration_kind: enum - name: type_identifier "Shape" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - class_like_declaration - member: - constructor_declaration - body: block "circle(radius: Double)" - parameter: - parameter - pattern: - name_pattern - identifier: identifier "radius" - type: - named_type_expr - name: identifier "Double" - modifier: modifier "enum_case" - name: identifier "circle" - class_like_declaration - member: - constructor_declaration - body: block "square(side: Double)" - parameter: - parameter - pattern: - name_pattern - identifier: identifier "side" - type: - named_type_expr - name: identifier "Double" - modifier: modifier "enum_case" - name: identifier "square" - modifier: modifier "enum" - name: identifier "Shape" - -=== -Protocol declaration -=== - -protocol Drawable { - func draw() -} - ---- - -source_file - statement: - protocol_declaration - body: - protocol_body - member: - protocol_function_declaration - name: simple_identifier "draw" - name: type_identifier "Drawable" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - function_declaration - body: block "func draw()" - name: identifier "draw" - modifier: modifier "protocol" - name: identifier "Drawable" - -=== -Extension -=== - -extension Int { - func squared() -> Int { return self * self } -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - function_declaration - body: - block - statement: - control_transfer_statement - kind: return - result: - multiplicative_expression - lhs: - self_expression - op: * - rhs: - self_expression - name: simple_identifier "squared" - return_type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - declaration_kind: extension - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - function_declaration - body: - block - stmt: - return_expr - value: - binary_expr - operator: infix_operator "*" - left: - name_expr - identifier: identifier "self" - right: - name_expr - identifier: identifier "self" - name: identifier "squared" - return_type: - named_type_expr - name: identifier "Int" - modifier: modifier "extension" - name: identifier "Int" - -=== -Computed property -=== - -class Rect { - var w: Double - var h: Double - var area: Double { - return w * h - } -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "w" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Double" - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "h" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Double" - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - computed_value: - computed_property - statement: - control_transfer_statement - kind: return - result: - multiplicative_expression - lhs: simple_identifier "w" - op: * - rhs: simple_identifier "h" - name: - pattern - bound_identifier: simple_identifier "area" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Double" - declaration_kind: class - name: type_identifier "Rect" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "w" - type: - named_type_expr - name: identifier "Double" - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "h" - type: - named_type_expr - name: identifier "Double" - accessor_declaration - body: - block - stmt: - return_expr - value: - binary_expr - operator: infix_operator "*" - left: - name_expr - identifier: identifier "w" - right: - name_expr - identifier: identifier "h" - modifier: modifier "var" - name: identifier "area" - type: - named_type_expr - name: identifier "Double" - accessor_kind: accessor_kind "get" - modifier: modifier "class" - name: identifier "Rect" - -=== -Property with getter and setter -=== - -class Box { - private var _v = 0 - var v: Int { - get { return _v } - set { _v = newValue } - } -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "_v" - value: integer_literal "0" - modifiers: - modifiers - modifier: - visibility_modifier - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - computed_value: - computed_property - accessor: - computed_getter - body: - block - statement: - control_transfer_statement - kind: return - result: simple_identifier "_v" - specifier: - getter_specifier - computed_setter - body: - block - statement: - assignment - operator: = - result: simple_identifier "newValue" - target: - directly_assignable_expression - expr: simple_identifier "_v" - specifier: - setter_specifier - name: - pattern - bound_identifier: simple_identifier "v" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - declaration_kind: class - name: type_identifier "Box" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "_v" - value: int_literal "0" - accessor_declaration - body: - block - stmt: - return_expr - value: - name_expr - identifier: identifier "_v" - modifier: modifier "var" - name: identifier "v" - type: - named_type_expr - name: identifier "Int" - accessor_kind: accessor_kind "get" - accessor_declaration - body: - block - stmt: - assign_expr - target: - name_expr - identifier: identifier "_v" - value: - name_expr - identifier: identifier "newValue" - modifier: - modifier "var" - modifier "chained_declaration" - name: identifier "v" - type: - named_type_expr - name: identifier "Int" - accessor_kind: accessor_kind "set" - modifier: modifier "class" - name: identifier "Box" - -=== -Protocol with read-only and read-write property requirements -=== - -protocol P { - var foo: Int { get } - var bar: String { get set } -} - ---- - -source_file - statement: - protocol_declaration - body: - protocol_body - member: - protocol_property_declaration - name: - pattern - binding: - value_binding_pattern - mutability: var - bound_identifier: simple_identifier "foo" - requirements: - protocol_property_requirements - accessor: - getter_specifier - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - protocol_property_declaration - name: - pattern - binding: - value_binding_pattern - mutability: var - bound_identifier: simple_identifier "bar" - requirements: - protocol_property_requirements - accessor: - getter_specifier - setter_specifier - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "String" - name: type_identifier "P" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - accessor_declaration - name: identifier "foo" - type: - named_type_expr - name: identifier "Int" - accessor_kind: accessor_kind "get" - accessor_declaration - name: identifier "bar" - type: - named_type_expr - name: identifier "String" - accessor_kind: accessor_kind "get" - accessor_declaration - modifier: modifier "chained_declaration" - name: identifier "bar" - type: - named_type_expr - name: identifier "String" - accessor_kind: accessor_kind "set" - modifier: modifier "protocol" - name: identifier "P" - -=== -Enum with comma-separated cases (chained_declaration) -=== - -enum Suit { - case clubs, diamonds, hearts, spades -} - ---- - -source_file - statement: - class_declaration - body: - enum_class_body - member: - enum_entry - case: - enum_case_entry - name: simple_identifier "clubs" - enum_case_entry - name: simple_identifier "diamonds" - enum_case_entry - name: simple_identifier "hearts" - enum_case_entry - name: simple_identifier "spades" - declaration_kind: enum - name: type_identifier "Suit" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "enum_case" - pattern: - name_pattern - identifier: identifier "clubs" - variable_declaration - modifier: - modifier "chained_declaration" - modifier "enum_case" - pattern: - name_pattern - identifier: identifier "diamonds" - variable_declaration - modifier: - modifier "chained_declaration" - modifier "enum_case" - pattern: - name_pattern - identifier: identifier "hearts" - variable_declaration - modifier: - modifier "chained_declaration" - modifier "enum_case" - pattern: - name_pattern - identifier: identifier "spades" - modifier: modifier "enum" - name: identifier "Suit" diff --git a/unified/extractor/tests/corpus/swift/types/class-inheritance.output b/unified/extractor/tests/corpus/swift/types/class-inheritance.output new file mode 100644 index 00000000000..e90cccc4a8b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-inheritance.output @@ -0,0 +1,28 @@ +class Dog: Animal {} + +--- + +source_file + statement: + class_declaration + body: + class_body + declaration_kind: class + inherits: + inheritance_specifier + inherits_from: + user_type + part: + simple_user_type + name: type_identifier "Animal" + name: type_identifier "Dog" + +--- + +top_level + body: + block + stmt: + class_like_declaration + modifier: modifier "class" + name: identifier "Dog" diff --git a/unified/extractor/tests/corpus/swift/types/class-inheritance.swift b/unified/extractor/tests/corpus/swift/types/class-inheritance.swift new file mode 100644 index 00000000000..4e23bbf345d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-inheritance.swift @@ -0,0 +1 @@ +class Dog: Animal {} diff --git a/unified/extractor/tests/corpus/swift/types/class-with-initializer.output b/unified/extractor/tests/corpus/swift/types/class-with-initializer.output new file mode 100644 index 00000000000..13e0097172c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-with-initializer.output @@ -0,0 +1,96 @@ +class Point { + var x: Int + init(x: Int) { + self.x = x + } +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + init_declaration + body: + block + statement: + assignment + operator: = + result: simple_identifier "x" + target: + directly_assignable_expression + expr: + navigation_expression + suffix: + navigation_suffix + suffix: simple_identifier "x" + target: + self_expression + parameter: + function_parameter + parameter: + parameter + name: simple_identifier "x" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + declaration_kind: class + name: type_identifier "Point" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" + constructor_declaration + body: + block + stmt: + assign_expr + target: + member_access_expr + base: + name_expr + identifier: identifier "self" + member: identifier "x" + value: + name_expr + identifier: identifier "x" + modifier: modifier "class" + name: identifier "Point" diff --git a/unified/extractor/tests/corpus/swift/types/class-with-initializer.swift b/unified/extractor/tests/corpus/swift/types/class-with-initializer.swift new file mode 100644 index 00000000000..b6614be2c0f --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-with-initializer.swift @@ -0,0 +1,6 @@ +class Point { + var x: Int + init(x: Int) { + self.x = x + } +} diff --git a/unified/extractor/tests/corpus/swift/types/class-with-method.output b/unified/extractor/tests/corpus/swift/types/class-with-method.output new file mode 100644 index 00000000000..770030d884a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-with-method.output @@ -0,0 +1,66 @@ +class Counter { + var n = 0 + func bump() { + n += 1 + } +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "n" + value: integer_literal "0" + function_declaration + body: + block + statement: + assignment + operator: += + result: integer_literal "1" + target: + directly_assignable_expression + expr: simple_identifier "n" + name: simple_identifier "bump" + declaration_kind: class + name: type_identifier "Counter" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "n" + value: int_literal "0" + function_declaration + body: + block + stmt: + compound_assign_expr + operator: infix_operator "+=" + target: + name_expr + identifier: identifier "n" + value: int_literal "1" + name: identifier "bump" + modifier: modifier "class" + name: identifier "Counter" diff --git a/unified/extractor/tests/corpus/swift/types/class-with-method.swift b/unified/extractor/tests/corpus/swift/types/class-with-method.swift new file mode 100644 index 00000000000..21b04669f0d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-with-method.swift @@ -0,0 +1,6 @@ +class Counter { + var n = 0 + func bump() { + n += 1 + } +} diff --git a/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output b/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output new file mode 100644 index 00000000000..9d28afe6ae0 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.output @@ -0,0 +1,78 @@ +class Point { + var x: Int + var y: Int +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "y" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + declaration_kind: class + name: type_identifier "Point" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "y" + type: + named_type_expr + name: identifier "Int" + modifier: modifier "class" + name: identifier "Point" diff --git a/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.swift b/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.swift new file mode 100644 index 00000000000..737d710ed4d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/class-with-stored-properties.swift @@ -0,0 +1,4 @@ +class Point { + var x: Int + var y: Int +} diff --git a/unified/extractor/tests/corpus/swift/types/computed-property.output b/unified/extractor/tests/corpus/swift/types/computed-property.output new file mode 100644 index 00000000000..8803e652d31 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/computed-property.output @@ -0,0 +1,129 @@ +class Rect { + var w: Double + var h: Double + var area: Double { + return w * h + } +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "w" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Double" + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "h" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Double" + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + computed_value: + computed_property + statement: + control_transfer_statement + kind: return + result: + multiplicative_expression + lhs: simple_identifier "w" + op: * + rhs: simple_identifier "h" + name: + pattern + bound_identifier: simple_identifier "area" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Double" + declaration_kind: class + name: type_identifier "Rect" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "w" + type: + named_type_expr + name: identifier "Double" + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "h" + type: + named_type_expr + name: identifier "Double" + accessor_declaration + body: + block + stmt: + return_expr + value: + binary_expr + operator: infix_operator "*" + left: + name_expr + identifier: identifier "w" + right: + name_expr + identifier: identifier "h" + modifier: modifier "var" + name: identifier "area" + type: + named_type_expr + name: identifier "Double" + accessor_kind: accessor_kind "get" + modifier: modifier "class" + name: identifier "Rect" diff --git a/unified/extractor/tests/corpus/swift/types/computed-property.swift b/unified/extractor/tests/corpus/swift/types/computed-property.swift new file mode 100644 index 00000000000..579a8720019 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/computed-property.swift @@ -0,0 +1,7 @@ +class Rect { + var w: Double + var h: Double + var area: Double { + return w * h + } +} diff --git a/unified/extractor/tests/corpus/swift/types/empty-class.output b/unified/extractor/tests/corpus/swift/types/empty-class.output new file mode 100644 index 00000000000..761de778543 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/empty-class.output @@ -0,0 +1,21 @@ +class Foo {} + +--- + +source_file + statement: + class_declaration + body: + class_body + declaration_kind: class + name: type_identifier "Foo" + +--- + +top_level + body: + block + stmt: + class_like_declaration + modifier: modifier "class" + name: identifier "Foo" diff --git a/unified/extractor/tests/corpus/swift/types/empty-class.swift b/unified/extractor/tests/corpus/swift/types/empty-class.swift new file mode 100644 index 00000000000..4e6a6de6531 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/empty-class.swift @@ -0,0 +1 @@ +class Foo {} diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output b/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output new file mode 100644 index 00000000000..12b5191f69f --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.output @@ -0,0 +1,86 @@ +enum Shape { + case circle(radius: Double) + case square(side: Double) +} + +--- + +source_file + statement: + class_declaration + body: + enum_class_body + member: + enum_entry + case: + enum_case_entry + data_contents: + enum_type_parameters + parameter: + enum_type_parameter + name: simple_identifier "radius" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Double" + name: simple_identifier "circle" + enum_entry + case: + enum_case_entry + data_contents: + enum_type_parameters + parameter: + enum_type_parameter + name: simple_identifier "side" + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Double" + name: simple_identifier "square" + declaration_kind: enum + name: type_identifier "Shape" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + class_like_declaration + member: + constructor_declaration + body: block "circle(radius: Double)" + parameter: + parameter + pattern: + name_pattern + identifier: identifier "radius" + type: + named_type_expr + name: identifier "Double" + modifier: modifier "enum_case" + name: identifier "circle" + class_like_declaration + member: + constructor_declaration + body: block "square(side: Double)" + parameter: + parameter + pattern: + name_pattern + identifier: identifier "side" + type: + named_type_expr + name: identifier "Double" + modifier: modifier "enum_case" + name: identifier "square" + modifier: modifier "enum" + name: identifier "Shape" diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.swift b/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.swift new file mode 100644 index 00000000000..860944cc530 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/enum-with-associated-values.swift @@ -0,0 +1,4 @@ +enum Shape { + case circle(radius: Double) + case square(side: Double) +} diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-cases.output b/unified/extractor/tests/corpus/swift/types/enum-with-cases.output new file mode 100644 index 00000000000..72435fd2b1f --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/enum-with-cases.output @@ -0,0 +1,64 @@ +enum Direction { + case north + case south + case east + case west +} + +--- + +source_file + statement: + class_declaration + body: + enum_class_body + member: + enum_entry + case: + enum_case_entry + name: simple_identifier "north" + enum_entry + case: + enum_case_entry + name: simple_identifier "south" + enum_entry + case: + enum_case_entry + name: simple_identifier "east" + enum_entry + case: + enum_case_entry + name: simple_identifier "west" + declaration_kind: enum + name: type_identifier "Direction" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "enum_case" + pattern: + name_pattern + identifier: identifier "north" + variable_declaration + modifier: modifier "enum_case" + pattern: + name_pattern + identifier: identifier "south" + variable_declaration + modifier: modifier "enum_case" + pattern: + name_pattern + identifier: identifier "east" + variable_declaration + modifier: modifier "enum_case" + pattern: + name_pattern + identifier: identifier "west" + modifier: modifier "enum" + name: identifier "Direction" diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-cases.swift b/unified/extractor/tests/corpus/swift/types/enum-with-cases.swift new file mode 100644 index 00000000000..1200f764fd1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/enum-with-cases.swift @@ -0,0 +1,6 @@ +enum Direction { + case north + case south + case east + case west +} diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output b/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output new file mode 100644 index 00000000000..6a4aac4b552 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.output @@ -0,0 +1,61 @@ +enum Suit { + case clubs, diamonds, hearts, spades +} + +--- + +source_file + statement: + class_declaration + body: + enum_class_body + member: + enum_entry + case: + enum_case_entry + name: simple_identifier "clubs" + enum_case_entry + name: simple_identifier "diamonds" + enum_case_entry + name: simple_identifier "hearts" + enum_case_entry + name: simple_identifier "spades" + declaration_kind: enum + name: type_identifier "Suit" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "enum_case" + pattern: + name_pattern + identifier: identifier "clubs" + variable_declaration + modifier: + modifier "chained_declaration" + modifier "enum_case" + pattern: + name_pattern + identifier: identifier "diamonds" + variable_declaration + modifier: + modifier "chained_declaration" + modifier "enum_case" + pattern: + name_pattern + identifier: identifier "hearts" + variable_declaration + modifier: + modifier "chained_declaration" + modifier "enum_case" + pattern: + name_pattern + identifier: identifier "spades" + modifier: modifier "enum" + name: identifier "Suit" diff --git a/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.swift b/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.swift new file mode 100644 index 00000000000..efb9ef45d7c --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/enum-with-comma-separated-cases-chained-declaration.swift @@ -0,0 +1,3 @@ +enum Suit { + case clubs, diamonds, hearts, spades +} diff --git a/unified/extractor/tests/corpus/swift/types/extension.output b/unified/extractor/tests/corpus/swift/types/extension.output new file mode 100644 index 00000000000..ad663cb86e1 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/extension.output @@ -0,0 +1,68 @@ +extension Int { + func squared() -> Int { return self * self } +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + function_declaration + body: + block + statement: + control_transfer_statement + kind: return + result: + multiplicative_expression + lhs: + self_expression + op: * + rhs: + self_expression + name: simple_identifier "squared" + return_type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + declaration_kind: extension + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + function_declaration + body: + block + stmt: + return_expr + value: + binary_expr + operator: infix_operator "*" + left: + name_expr + identifier: identifier "self" + right: + name_expr + identifier: identifier "self" + name: identifier "squared" + return_type: + named_type_expr + name: identifier "Int" + modifier: modifier "extension" + name: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/types/extension.swift b/unified/extractor/tests/corpus/swift/types/extension.swift new file mode 100644 index 00000000000..ac537d5c0aa --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/extension.swift @@ -0,0 +1,3 @@ +extension Int { + func squared() -> Int { return self * self } +} diff --git a/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output b/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output new file mode 100644 index 00000000000..0a8b2d8cc5d --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.output @@ -0,0 +1,124 @@ +class Box { + private var _v = 0 + var v: Int { + get { return _v } + set { _v = newValue } + } +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "_v" + value: integer_literal "0" + modifiers: + modifiers + modifier: + visibility_modifier + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + computed_value: + computed_property + accessor: + computed_getter + body: + block + statement: + control_transfer_statement + kind: return + result: simple_identifier "_v" + specifier: + getter_specifier + computed_setter + body: + block + statement: + assignment + operator: = + result: simple_identifier "newValue" + target: + directly_assignable_expression + expr: simple_identifier "_v" + specifier: + setter_specifier + name: + pattern + bound_identifier: simple_identifier "v" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + declaration_kind: class + name: type_identifier "Box" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "_v" + value: int_literal "0" + accessor_declaration + body: + block + stmt: + return_expr + value: + name_expr + identifier: identifier "_v" + modifier: modifier "var" + name: identifier "v" + type: + named_type_expr + name: identifier "Int" + accessor_kind: accessor_kind "get" + accessor_declaration + body: + block + stmt: + assign_expr + target: + name_expr + identifier: identifier "_v" + value: + name_expr + identifier: identifier "newValue" + modifier: + modifier "var" + modifier "chained_declaration" + name: identifier "v" + type: + named_type_expr + name: identifier "Int" + accessor_kind: accessor_kind "set" + modifier: modifier "class" + name: identifier "Box" diff --git a/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.swift b/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.swift new file mode 100644 index 00000000000..98bfd857493 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/property-with-getter-and-setter.swift @@ -0,0 +1,7 @@ +class Box { + private var _v = 0 + var v: Int { + get { return _v } + set { _v = newValue } + } +} diff --git a/unified/extractor/tests/corpus/swift/types/protocol-declaration.output b/unified/extractor/tests/corpus/swift/types/protocol-declaration.output new file mode 100644 index 00000000000..55a71218c18 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/protocol-declaration.output @@ -0,0 +1,29 @@ +protocol Drawable { + func draw() +} + +--- + +source_file + statement: + protocol_declaration + body: + protocol_body + member: + protocol_function_declaration + name: simple_identifier "draw" + name: type_identifier "Drawable" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + function_declaration + body: block "func draw()" + name: identifier "draw" + modifier: modifier "protocol" + name: identifier "Drawable" diff --git a/unified/extractor/tests/corpus/swift/types/protocol-declaration.swift b/unified/extractor/tests/corpus/swift/types/protocol-declaration.swift new file mode 100644 index 00000000000..030b68a60c0 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/protocol-declaration.swift @@ -0,0 +1,3 @@ +protocol Drawable { + func draw() +} diff --git a/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output new file mode 100644 index 00000000000..0293534adf7 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.output @@ -0,0 +1,85 @@ +protocol P { + var foo: Int { get } + var bar: String { get set } +} + +--- + +source_file + statement: + protocol_declaration + body: + protocol_body + member: + protocol_property_declaration + name: + pattern + binding: + value_binding_pattern + mutability: var + bound_identifier: simple_identifier "foo" + requirements: + protocol_property_requirements + accessor: + getter_specifier + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + protocol_property_declaration + name: + pattern + binding: + value_binding_pattern + mutability: var + bound_identifier: simple_identifier "bar" + requirements: + protocol_property_requirements + accessor: + getter_specifier + setter_specifier + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "String" + name: type_identifier "P" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + accessor_declaration + name: identifier "foo" + type: + named_type_expr + name: identifier "Int" + accessor_kind: accessor_kind "get" + accessor_declaration + name: identifier "bar" + type: + named_type_expr + name: identifier "String" + accessor_kind: accessor_kind "get" + accessor_declaration + modifier: modifier "chained_declaration" + name: identifier "bar" + type: + named_type_expr + name: identifier "String" + accessor_kind: accessor_kind "set" + modifier: modifier "protocol" + name: identifier "P" diff --git a/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift new file mode 100644 index 00000000000..44299edc15b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/protocol-with-read-only-and-read-write-property-requirements.swift @@ -0,0 +1,4 @@ +protocol P { + var foo: Int { get } + var bar: String { get set } +} diff --git a/unified/extractor/tests/corpus/swift/types/struct.output b/unified/extractor/tests/corpus/swift/types/struct.output new file mode 100644 index 00000000000..e130ef9b862 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/struct.output @@ -0,0 +1,78 @@ +struct Point { + let x: Int + let y: Int +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "y" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + declaration_kind: struct + name: type_identifier "Point" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "y" + type: + named_type_expr + name: identifier "Int" + modifier: modifier "struct" + name: identifier "Point" diff --git a/unified/extractor/tests/corpus/swift/types/struct.swift b/unified/extractor/tests/corpus/swift/types/struct.swift new file mode 100644 index 00000000000..718ecf5e938 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/types/struct.swift @@ -0,0 +1,4 @@ +struct Point { + let x: Int + let y: Int +} diff --git a/unified/extractor/tests/corpus/swift/variables.txt b/unified/extractor/tests/corpus/swift/variables.txt deleted file mode 100644 index 78b80d9a509..00000000000 --- a/unified/extractor/tests/corpus/swift/variables.txt +++ /dev/null @@ -1,448 +0,0 @@ -=== -Let binding -=== - -let x = 1 - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - value: integer_literal "1" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - value: int_literal "1" - -=== -Var binding -=== - -var x = 1 - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - value: integer_literal "1" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - value: int_literal "1" - -=== -Let with type annotation -=== - -let x: Int = 1 - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - value: integer_literal "1" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - value: int_literal "1" - -=== -Var without initialiser -=== - -var x: Int - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - -=== -Tuple destructuring binding -=== - -let (a, b) = pair - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - kind: - tuple_pattern - item: - tuple_pattern_item - pattern: - pattern - kind: simple_identifier "a" - tuple_pattern_item - pattern: - pattern - kind: simple_identifier "b" - value: simple_identifier "pair" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - tuple_pattern - element: - pattern_element - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "a" - pattern_element - pattern: - expr_equality_pattern - expr: - name_expr - identifier: identifier "b" - value: - name_expr - identifier: identifier "pair" - -=== -Multiple bindings on one line -=== - -let x = 1, y = 2 - ---- - -source_file - statement: - property_declaration - binding: - value_binding_pattern - mutability: let - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - value: integer_literal "1" - property_binding - name: - pattern - bound_identifier: simple_identifier "y" - value: integer_literal "2" - ---- - -top_level - body: - block - stmt: - variable_declaration - modifier: modifier "let" - pattern: - name_pattern - identifier: identifier "x" - value: int_literal "1" - variable_declaration - modifier: - modifier "let" - modifier "chained_declaration" - pattern: - name_pattern - identifier: identifier "y" - value: int_literal "2" - -=== -Assignment -=== - -x = 1 - ---- - -source_file - statement: - assignment - operator: = - result: integer_literal "1" - target: - directly_assignable_expression - expr: simple_identifier "x" - ---- - -top_level - body: - block - stmt: - assign_expr - target: - name_expr - identifier: identifier "x" - value: int_literal "1" - -=== -Compound assignment -=== - -x += 1 - ---- - -source_file - statement: - assignment - operator: += - result: integer_literal "1" - target: - directly_assignable_expression - expr: simple_identifier "x" - ---- - -top_level - body: - block - stmt: - compound_assign_expr - operator: infix_operator "+=" - target: - name_expr - identifier: identifier "x" - value: int_literal "1" - -=== -Property with willSet and didSet observers -=== - -class C { - var x: Int = 0 { - willSet { print(newValue) } - didSet { print(oldValue) } - } -} - ---- - -source_file - statement: - class_declaration - body: - class_body - member: - property_declaration - binding: - value_binding_pattern - mutability: var - declarator: - property_binding - name: - pattern - bound_identifier: simple_identifier "x" - observers: - willset_didset_block - didset: - didset_clause - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "oldValue" - willset: - willset_clause - body: - block - statement: - call_expression - function: simple_identifier "print" - suffix: - call_suffix - arguments: - value_arguments - argument: - value_argument - value: simple_identifier "newValue" - type: - type_annotation - type: - type - name: - user_type - part: - simple_user_type - name: type_identifier "Int" - value: integer_literal "0" - declaration_kind: class - name: type_identifier "C" - ---- - -top_level - body: - block - stmt: - class_like_declaration - member: - variable_declaration - modifier: modifier "var" - pattern: - name_pattern - identifier: identifier "x" - type: - named_type_expr - name: identifier "Int" - value: int_literal "0" - accessor_declaration - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "newValue" - callee: - name_expr - identifier: identifier "print" - modifier: - modifier "var" - modifier "chained_declaration" - name: identifier "x" - accessor_kind: accessor_kind "willSet" - accessor_declaration - body: - block - stmt: - call_expr - argument: - argument - value: - name_expr - identifier: identifier "oldValue" - callee: - name_expr - identifier: identifier "print" - modifier: - modifier "var" - modifier "chained_declaration" - name: identifier "x" - accessor_kind: accessor_kind "didSet" - modifier: modifier "class" - name: identifier "C" diff --git a/unified/extractor/tests/corpus/swift/variables/assignment.output b/unified/extractor/tests/corpus/swift/variables/assignment.output new file mode 100644 index 00000000000..9d1a61e89a8 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/assignment.output @@ -0,0 +1,24 @@ +x = 1 + +--- + +source_file + statement: + assignment + operator: = + result: integer_literal "1" + target: + directly_assignable_expression + expr: simple_identifier "x" + +--- + +top_level + body: + block + stmt: + assign_expr + target: + name_expr + identifier: identifier "x" + value: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/variables/assignment.swift b/unified/extractor/tests/corpus/swift/variables/assignment.swift new file mode 100644 index 00000000000..7d4290a117a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/assignment.swift @@ -0,0 +1 @@ +x = 1 diff --git a/unified/extractor/tests/corpus/swift/variables/compound-assignment.output b/unified/extractor/tests/corpus/swift/variables/compound-assignment.output new file mode 100644 index 00000000000..95b7edb0a6b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/compound-assignment.output @@ -0,0 +1,25 @@ +x += 1 + +--- + +source_file + statement: + assignment + operator: += + result: integer_literal "1" + target: + directly_assignable_expression + expr: simple_identifier "x" + +--- + +top_level + body: + block + stmt: + compound_assign_expr + operator: infix_operator "+=" + target: + name_expr + identifier: identifier "x" + value: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/variables/compound-assignment.swift b/unified/extractor/tests/corpus/swift/variables/compound-assignment.swift new file mode 100644 index 00000000000..9feca8b7659 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/compound-assignment.swift @@ -0,0 +1 @@ +x += 1 diff --git a/unified/extractor/tests/corpus/swift/variables/let-binding.output b/unified/extractor/tests/corpus/swift/variables/let-binding.output new file mode 100644 index 00000000000..b8b16dc8014 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/let-binding.output @@ -0,0 +1,29 @@ +let x = 1 + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + value: integer_literal "1" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "x" + value: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/variables/let-binding.swift b/unified/extractor/tests/corpus/swift/variables/let-binding.swift new file mode 100644 index 00000000000..0547b3d0eee --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/let-binding.swift @@ -0,0 +1 @@ +let x = 1 diff --git a/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output b/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output new file mode 100644 index 00000000000..3fd78d09fa4 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.output @@ -0,0 +1,41 @@ +let x: Int = 1 + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + value: integer_literal "1" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" + value: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.swift b/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.swift new file mode 100644 index 00000000000..4eea1708b6b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/let-with-type-annotation.swift @@ -0,0 +1 @@ +let x: Int = 1 diff --git a/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output b/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output new file mode 100644 index 00000000000..7f202885b9b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.output @@ -0,0 +1,42 @@ +let x = 1, y = 2 + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + value: integer_literal "1" + property_binding + name: + pattern + bound_identifier: simple_identifier "y" + value: integer_literal "2" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + name_pattern + identifier: identifier "x" + value: int_literal "1" + variable_declaration + modifier: + modifier "let" + modifier "chained_declaration" + pattern: + name_pattern + identifier: identifier "y" + value: int_literal "2" diff --git a/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.swift b/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.swift new file mode 100644 index 00000000000..42c4804475b --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/multiple-bindings-on-one-line.swift @@ -0,0 +1 @@ +let x = 1, y = 2 diff --git a/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output b/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output new file mode 100644 index 00000000000..2d612e1d950 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.output @@ -0,0 +1,122 @@ +class C { + var x: Int = 0 { + willSet { print(newValue) } + didSet { print(oldValue) } + } +} + +--- + +source_file + statement: + class_declaration + body: + class_body + member: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + observers: + willset_didset_block + didset: + didset_clause + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "oldValue" + willset: + willset_clause + body: + block + statement: + call_expression + function: simple_identifier "print" + suffix: + call_suffix + arguments: + value_arguments + argument: + value_argument + value: simple_identifier "newValue" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + value: integer_literal "0" + declaration_kind: class + name: type_identifier "C" + +--- + +top_level + body: + block + stmt: + class_like_declaration + member: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" + value: int_literal "0" + accessor_declaration + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "newValue" + callee: + name_expr + identifier: identifier "print" + modifier: + modifier "var" + modifier "chained_declaration" + name: identifier "x" + accessor_kind: accessor_kind "willSet" + accessor_declaration + body: + block + stmt: + call_expr + argument: + argument + value: + name_expr + identifier: identifier "oldValue" + callee: + name_expr + identifier: identifier "print" + modifier: + modifier "var" + modifier "chained_declaration" + name: identifier "x" + accessor_kind: accessor_kind "didSet" + modifier: modifier "class" + name: identifier "C" diff --git a/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.swift b/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.swift new file mode 100644 index 00000000000..a8ea2d06016 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/property-with-willset-and-didset-observers.swift @@ -0,0 +1,6 @@ +class C { + var x: Int = 0 { + willSet { print(newValue) } + didSet { print(oldValue) } + } +} diff --git a/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output b/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output new file mode 100644 index 00000000000..a0a45eb6d22 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.output @@ -0,0 +1,53 @@ +let (a, b) = pair + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: let + declarator: + property_binding + name: + pattern + kind: + tuple_pattern + item: + tuple_pattern_item + pattern: + pattern + kind: simple_identifier "a" + tuple_pattern_item + pattern: + pattern + kind: simple_identifier "b" + value: simple_identifier "pair" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "let" + pattern: + tuple_pattern + element: + pattern_element + pattern: + expr_equality_pattern + expr: + name_expr + identifier: identifier "a" + pattern_element + pattern: + expr_equality_pattern + expr: + name_expr + identifier: identifier "b" + value: + name_expr + identifier: identifier "pair" diff --git a/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.swift b/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.swift new file mode 100644 index 00000000000..0d9823c33a3 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/tuple-destructuring-binding.swift @@ -0,0 +1 @@ +let (a, b) = pair diff --git a/unified/extractor/tests/corpus/swift/variables/var-binding.output b/unified/extractor/tests/corpus/swift/variables/var-binding.output new file mode 100644 index 00000000000..b7dc8e77270 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/var-binding.output @@ -0,0 +1,29 @@ +var x = 1 + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + value: integer_literal "1" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "x" + value: int_literal "1" diff --git a/unified/extractor/tests/corpus/swift/variables/var-binding.swift b/unified/extractor/tests/corpus/swift/variables/var-binding.swift new file mode 100644 index 00000000000..492fc438eae --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/var-binding.swift @@ -0,0 +1 @@ +var x = 1 diff --git a/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output b/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output new file mode 100644 index 00000000000..692befea855 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.output @@ -0,0 +1,39 @@ +var x: Int + +--- + +source_file + statement: + property_declaration + binding: + value_binding_pattern + mutability: var + declarator: + property_binding + name: + pattern + bound_identifier: simple_identifier "x" + type: + type_annotation + type: + type + name: + user_type + part: + simple_user_type + name: type_identifier "Int" + +--- + +top_level + body: + block + stmt: + variable_declaration + modifier: modifier "var" + pattern: + name_pattern + identifier: identifier "x" + type: + named_type_expr + name: identifier "Int" diff --git a/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.swift b/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.swift new file mode 100644 index 00000000000..6b39ae0ffe9 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/var-without-initialiser.swift @@ -0,0 +1 @@ +var x: Int diff --git a/unified/extractor/tests/corpus_tests.rs b/unified/extractor/tests/corpus_tests.rs index 6c859c2f6cf..ac93f06622c 100644 --- a/unified/extractor/tests/corpus_tests.rs +++ b/unified/extractor/tests/corpus_tests.rs @@ -9,7 +9,6 @@ mod languages; #[derive(Debug)] struct CorpusCase { - name: String, input: String, raw: String, expected: String, @@ -21,129 +20,43 @@ fn update_mode_enabled() -> bool { .unwrap_or(false) } -fn is_header_rule(line: &str) -> bool { - let trimmed = line.trim(); - trimmed.len() >= 3 && trimmed.chars().all(|c| c == '=') -} +/// Parse a corpus `.output` file. The file holds a single test case made of +/// three sections separated by `---` delimiter lines: +/// +/// ```text +/// +/// +/// --- +/// +/// +/// +/// --- +/// +/// +/// ``` +/// +/// The test name is the file name, so there is no header section. Missing +/// trailing sections (e.g. a freshly added file) are treated as empty. +fn parse_corpus(content: &str) -> CorpusCase { + let lines: Vec<&str> = content.split('\n').collect(); + let mut sections = lines + .split(|line| line.trim() == "---") + .map(|chunk| chunk.join("\n").trim().to_string()); -fn is_next_case_header(lines: &[&str], i: usize) -> bool { - is_header_rule(lines[i]) - && i + 2 < lines.len() - && !lines[i + 1].trim().is_empty() - && is_header_rule(lines[i + 2]) -} - -fn parse_corpus(content: &str) -> Vec { - let lines: Vec<&str> = content.lines().collect(); - let mut i = 0; - let mut cases = Vec::new(); - - while i < lines.len() { - while i < lines.len() && lines[i].trim().is_empty() { - i += 1; - } - if i >= lines.len() { - break; - } - - assert!( - is_header_rule(lines[i]), - "Expected header delimiter at line {}", - i + 1 - ); - i += 1; - - assert!(i < lines.len(), "Missing test name at line {}", i + 1); - let name = lines[i].trim().to_string(); - i += 1; - - assert!( - i < lines.len() && is_header_rule(lines[i]), - "Missing closing header delimiter for case {name}" - ); - i += 1; - - let input_start = i; - while i < lines.len() && lines[i].trim() != "---" { - if is_next_case_header(&lines, i) { - break; - } - i += 1; - } - let input = lines[input_start..i].join("\n").trim_end().to_string(); - let raw; - let expected; - if i >= lines.len() || lines[i].trim() != "---" { - // No `---` separator before next case (or EOF). Treat the - // remaining sections as empty. - raw = String::new(); - expected = String::new(); - } else { - i += 1; - - // Raw tree-sitter parse section. New-format files have a second - // `---` separator between the raw tree and the mapped AST. Legacy - // files (with only one separator) have no raw section — in that - // case `raw` stays empty and update mode will populate it. - let raw_start = i; - let mut next_sep = i; - while next_sep < lines.len() && lines[next_sep].trim() != "---" { - if is_next_case_header(&lines, next_sep) { - break; - } - next_sep += 1; - } - raw = if next_sep < lines.len() && lines[next_sep].trim() == "---" { - let raw_text = lines[raw_start..next_sep].join("\n").trim().to_string(); - i = next_sep + 1; - raw_text - } else { - String::new() - }; - - let expected_start = i; - while i < lines.len() { - if is_next_case_header(&lines, i) { - break; - } - i += 1; - } - expected = lines[expected_start..i].join("\n").trim().to_string(); - } - - cases.push(CorpusCase { - name, - input, - raw, - expected, - }); + CorpusCase { + input: sections.next().unwrap_or_default(), + raw: sections.next().unwrap_or_default(), + expected: sections.next().unwrap_or_default(), } - - cases } -fn render_corpus(cases: &[CorpusCase]) -> String { - let mut out = String::new(); - - for (idx, case) in cases.iter().enumerate() { - if idx > 0 { - // Blank line between cases. - out.push('\n'); - } - out.push_str("===\n"); - out.push_str(case.name.trim()); - out.push_str("\n===\n\n"); - out.push_str(case.input.trim()); - out.push_str("\n\n---\n\n"); - out.push_str(case.raw.trim()); - out.push_str("\n\n---\n\n"); - out.push_str(case.expected.trim()); - // Single trailing newline per case; the inter-case blank line is - // added by the prefix above, and the file ends with exactly one `\n`. - out.push('\n'); - } - - out +fn render_corpus(case: &CorpusCase) -> String { + format!( + "{}\n\n---\n\n{}\n\n---\n\n{}\n", + case.input.trim(), + case.raw.trim(), + case.expected.trim() + ) } fn run_desugaring(lang: &simple::LanguageSpec, input: &str) -> Result { @@ -182,6 +95,26 @@ fn dump_raw_parse(lang: &simple::LanguageSpec, input: &str) -> Result) { + let entries = fs::read_dir(dir) + .unwrap_or_else(|e| panic!("Failed to read corpus directory {}: {e}", dir.display())); + for entry in entries { + let path = entry.expect("Failed to read corpus entry").path(); + if path.is_dir() { + collect_corpus_stems(&path, out); + } else if path + .extension() + .is_some_and(|ext| ext == "swift" || ext == "output") + { + out.push(path.with_extension("")); + } + } +} + #[test] fn test_corpus() { let update_mode = update_mode_enabled(); @@ -200,47 +133,85 @@ fn test_corpus() { continue; } - let mut corpus_files: Vec<_> = fs::read_dir(&lang_corpus_dir) - .unwrap_or_else(|e| { - panic!( - "Failed to read corpus directory {}: {e}", - lang_corpus_dir.display() - ) - }) - .map(|entry| entry.expect("Failed to read corpus entry").path()) - .filter(|path| path.extension().is_some_and(|ext| ext == "txt")) - .collect(); - corpus_files.sort(); + let mut stems = Vec::new(); + collect_corpus_stems(&lang_corpus_dir, &mut stems); + stems.sort(); + stems.dedup(); - for corpus_path in corpus_files { - let content = fs::read_to_string(&corpus_path) - .unwrap_or_else(|e| panic!("Failed to read {}: {e}", corpus_path.display())); - let mut cases = parse_corpus(&content); + for stem in stems { + let swift_path = stem.with_extension("swift"); + let output_path = stem.with_extension("output"); let mut failures = Vec::new(); - assert!( - !cases.is_empty(), - "No corpus cases found in {}", - corpus_path.display() - ); - for case in &mut cases { - match dump_raw_parse(&lang, &case.input) { + // The canonical test case lives in the `.swift` file and is the + // source of truth. An `.output` file without a `.swift` sibling is + // an orphan: there is nothing to drive it from. + if !swift_path.exists() { + panic!( + "Found {} with no corresponding test case; add {} or remove the output file", + output_path.display(), + swift_path.display() + ); + } + + let swift_input = fs::read_to_string(&swift_path) + .unwrap_or_else(|e| panic!("Failed to read {}: {e}", swift_path.display())) + .trim() + .to_string(); + + // Build the case from the existing `.output` file when present. + // When it is missing (a freshly added `.swift`), start from an + // empty case: update mode will generate it, and a normal test run + // reports the missing output. + let mut case = if output_path.exists() { + let content = fs::read_to_string(&output_path) + .unwrap_or_else(|e| panic!("Failed to read {}: {e}", output_path.display())); + parse_corpus(&content) + } else { + if !update_mode { + failures.push(format!( + "Missing output file {}; run scripts/update-corpus.sh to generate it", + output_path.display() + )); + } + CorpusCase { + input: String::new(), + raw: String::new(), + expected: String::new(), + } + }; + + { + // The input section in the `.output` file is a generated copy + // of the `.swift` source, kept only so reviewers can see the + // source alongside its printed ASTs. + if update_mode { + case.input = swift_input.clone(); + } else if output_path.exists() && case.input.trim() != swift_input { + failures.push(format!( + "Test case copy out of date in {}; rerun update-corpus to regenerate from {}", + output_path.display(), + swift_path.display() + )); + } + // Ensure the AST passes below operate on the source of truth. + let case_input = swift_input.clone(); + + match dump_raw_parse(&lang, &case_input) { Err(e) => { failures.push(format!( - "Raw parse failed for {} in {}: {}", - case.name, - corpus_path.display(), + "Raw parse failed in {}: {}", + output_path.display(), e )); } Ok(actual_raw) => { if update_mode { case.raw = actual_raw.trim().to_string(); - } else if case.raw.trim() != actual_raw.trim() { + } else if output_path.exists() && case.raw.trim() != actual_raw.trim() { failures.push(format!( - "Raw parse mismatch in {}: \"{}\"\nEXPECTED:\n\n{}\n\nACTUAL:\n\n{}", - corpus_path.display(), - case.name, + "Raw parse mismatch in {}:\nEXPECTED:\n\n{}\n\nACTUAL:\n\n{}", + output_path.display(), case.raw.trim(), actual_raw.trim() )); @@ -248,12 +219,11 @@ fn test_corpus() { } } - match run_desugaring(&lang, &case.input) { + match run_desugaring(&lang, &case_input) { Err(e) => { failures.push(format!( - "Desugaring failed for {} in {}: {}", - case.name, - corpus_path.display(), + "Desugaring failed in {}: {}", + output_path.display(), e )); } @@ -261,16 +231,17 @@ fn test_corpus() { let actual_dump = dump_ast_with_type_errors( &actual, actual.get_root(), - &case.input, + &case_input, &output_schema, ); if update_mode { case.expected = actual_dump.trim().to_string(); - } else if case.expected.trim() != actual_dump.trim() { + } else if output_path.exists() + && case.expected.trim() != actual_dump.trim() + { failures.push(format!( - "Test failed in {}: \"{}\"\nEXPECTED:\n\n{}\n\nACTUAL:\n\n{}", - corpus_path.display(), - case.name, + "Test failed in {}:\nEXPECTED:\n\n{}\n\nACTUAL:\n\n{}", + output_path.display(), case.expected.trim(), actual_dump.trim() )); @@ -282,12 +253,12 @@ fn test_corpus() { assert!(failures.is_empty(), "{}", failures.join("\n\n") + "\n\n"); if update_mode { - let updated = render_corpus(&cases); - let write_result = fs::write(&corpus_path, updated); + let updated = render_corpus(&case); + let write_result = fs::write(&output_path, updated); assert!( write_result.is_ok(), "Failed to update corpus file {}: {}", - corpus_path.display(), + output_path.display(), write_result .err() .map_or_else(String::new, |e| e.to_string()) diff --git a/unified/ql/lib/codeql/unified/Ast.qll b/unified/ql/lib/codeql/unified/Ast.qll index 1c2d5f3dd4a..8adb4c2e44a 100644 --- a/unified/ql/lib/codeql/unified/Ast.qll +++ b/unified/ql/lib/codeql/unified/Ast.qll @@ -26,7 +26,7 @@ private predicate discardLocation(@location_default loc) { overlay[local] module Unified { /** The base class for all AST nodes */ - class AstNode extends @unified_ast_node { + private class AstNodeImpl extends @unified_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -49,8 +49,10 @@ module Unified { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @unified_token, AstNode { + private class TokenImpl extends @unified_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { unified_tokeninfo(this, _, result) } @@ -61,8 +63,10 @@ module Unified { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A trivia token, such as a comment, preserved from the original parse tree. */ - class TriviaToken extends @unified_trivia_token, AstNode { + final class TriviaToken extends @unified_trivia_token, AstNodeImpl { /** Gets the source text of this trivia token. */ final string getValue() { unified_trivia_tokeninfo(this, _, result) } @@ -94,7 +98,7 @@ module Unified { } /** A class representing `accessor_declaration` nodes. */ - class AccessorDeclaration extends @unified_accessor_declaration, AstNode { + final class AccessorDeclaration extends @unified_accessor_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AccessorDeclaration" } @@ -128,13 +132,13 @@ module Unified { } /** A class representing `accessor_kind` tokens. */ - class AccessorKind extends @unified_token_accessor_kind, Token { + final class AccessorKind extends @unified_token_accessor_kind, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AccessorKind" } } /** A class representing `argument` nodes. */ - class Argument extends @unified_argument, AstNode { + final class Argument extends @unified_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Argument" } @@ -156,7 +160,7 @@ module Unified { } /** A class representing `array_literal` nodes. */ - class ArrayLiteral extends @unified_array_literal, AstNode { + final class ArrayLiteral extends @unified_array_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArrayLiteral" } @@ -168,7 +172,7 @@ module Unified { } /** A class representing `assign_expr` nodes. */ - class AssignExpr extends @unified_assign_expr, AstNode { + final class AssignExpr extends @unified_assign_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AssignExpr" } @@ -185,7 +189,7 @@ module Unified { } /** A class representing `associated_type_declaration` nodes. */ - class AssociatedTypeDeclaration extends @unified_associated_type_declaration, AstNode { + final class AssociatedTypeDeclaration extends @unified_associated_type_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AssociatedTypeDeclaration" } @@ -209,7 +213,7 @@ module Unified { } /** A class representing `base_type` nodes. */ - class BaseType extends @unified_base_type, AstNode { + final class BaseType extends @unified_base_type, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BaseType" } @@ -226,7 +230,7 @@ module Unified { } /** A class representing `binary_expr` nodes. */ - class BinaryExpr extends @unified_binary_expr, AstNode { + final class BinaryExpr extends @unified_binary_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BinaryExpr" } @@ -248,7 +252,7 @@ module Unified { } /** A class representing `block` nodes. */ - class Block extends @unified_block, AstNode { + final class Block extends @unified_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Block" } @@ -260,13 +264,13 @@ module Unified { } /** A class representing `boolean_literal` tokens. */ - class BooleanLiteral extends @unified_token_boolean_literal, Token { + final class BooleanLiteral extends @unified_token_boolean_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BooleanLiteral" } } /** A class representing `bound_type_constraint` nodes. */ - class BoundTypeConstraint extends @unified_bound_type_constraint, AstNode { + final class BoundTypeConstraint extends @unified_bound_type_constraint, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BoundTypeConstraint" } @@ -284,7 +288,7 @@ module Unified { } /** A class representing `break_expr` nodes. */ - class BreakExpr extends @unified_break_expr, AstNode { + final class BreakExpr extends @unified_break_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BreakExpr" } @@ -296,13 +300,13 @@ module Unified { } /** A class representing `builtin_expr` tokens. */ - class BuiltinExpr extends @unified_token_builtin_expr, Token { + final class BuiltinExpr extends @unified_token_builtin_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BuiltinExpr" } } /** A class representing `bulk_importing_pattern` nodes. */ - class BulkImportingPattern extends @unified_bulk_importing_pattern, AstNode { + final class BulkImportingPattern extends @unified_bulk_importing_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BulkImportingPattern" } @@ -316,7 +320,7 @@ module Unified { } /** A class representing `call_expr` nodes. */ - class CallExpr extends @unified_call_expr, AstNode { + final class CallExpr extends @unified_call_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CallExpr" } @@ -338,7 +342,7 @@ module Unified { } /** A class representing `catch_clause` nodes. */ - class CatchClause extends @unified_catch_clause, AstNode { + final class CatchClause extends @unified_catch_clause, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CatchClause" } @@ -364,7 +368,7 @@ module Unified { } /** A class representing `class_like_declaration` nodes. */ - class ClassLikeDeclaration extends @unified_class_like_declaration, AstNode { + final class ClassLikeDeclaration extends @unified_class_like_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassLikeDeclaration" } @@ -402,7 +406,7 @@ module Unified { } /** A class representing `compound_assign_expr` nodes. */ - class CompoundAssignExpr extends @unified_compound_assign_expr, AstNode { + final class CompoundAssignExpr extends @unified_compound_assign_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CompoundAssignExpr" } @@ -424,7 +428,7 @@ module Unified { } /** A class representing `constructor_declaration` nodes. */ - class ConstructorDeclaration extends @unified_constructor_declaration, AstNode { + final class ConstructorDeclaration extends @unified_constructor_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ConstructorDeclaration" } @@ -452,7 +456,7 @@ module Unified { } /** A class representing `constructor_pattern` nodes. */ - class ConstructorPattern extends @unified_constructor_pattern, AstNode { + final class ConstructorPattern extends @unified_constructor_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ConstructorPattern" } @@ -474,7 +478,7 @@ module Unified { } /** A class representing `continue_expr` nodes. */ - class ContinueExpr extends @unified_continue_expr, AstNode { + final class ContinueExpr extends @unified_continue_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ContinueExpr" } @@ -486,7 +490,7 @@ module Unified { } /** A class representing `destructor_declaration` nodes. */ - class DestructorDeclaration extends @unified_destructor_declaration, AstNode { + final class DestructorDeclaration extends @unified_destructor_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DestructorDeclaration" } @@ -504,7 +508,7 @@ module Unified { } /** A class representing `do_while_stmt` nodes. */ - class DoWhileStmt extends @unified_do_while_stmt, AstNode { + final class DoWhileStmt extends @unified_do_while_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DoWhileStmt" } @@ -526,13 +530,13 @@ module Unified { } /** A class representing `empty_expr` tokens. */ - class EmptyExpr extends @unified_token_empty_expr, Token { + final class EmptyExpr extends @unified_token_empty_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EmptyExpr" } } /** A class representing `equality_type_constraint` nodes. */ - class EqualityTypeConstraint extends @unified_equality_type_constraint, AstNode { + final class EqualityTypeConstraint extends @unified_equality_type_constraint, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EqualityTypeConstraint" } @@ -549,10 +553,10 @@ module Unified { } } - class Expr extends @unified_expr, AstNode { } + final class Expr extends @unified_expr, AstNodeImpl { } /** A class representing `expr_equality_pattern` nodes. */ - class ExprEqualityPattern extends @unified_expr_equality_pattern, AstNode { + final class ExprEqualityPattern extends @unified_expr_equality_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExprEqualityPattern" } @@ -563,24 +567,24 @@ module Unified { final override AstNode getAFieldOrChild() { unified_expr_equality_pattern_def(this, result) } } - class ExprOrPattern extends @unified_expr_or_pattern, AstNode { } + final class ExprOrPattern extends @unified_expr_or_pattern, AstNodeImpl { } - class ExprOrType extends @unified_expr_or_type, AstNode { } + final class ExprOrType extends @unified_expr_or_type, AstNodeImpl { } /** A class representing `fixity` tokens. */ - class Fixity extends @unified_token_fixity, Token { + final class Fixity extends @unified_token_fixity, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Fixity" } } /** A class representing `float_literal` tokens. */ - class FloatLiteral extends @unified_token_float_literal, Token { + final class FloatLiteral extends @unified_token_float_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FloatLiteral" } } /** A class representing `for_each_stmt` nodes. */ - class ForEachStmt extends @unified_for_each_stmt, AstNode { + final class ForEachStmt extends @unified_for_each_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ForEachStmt" } @@ -610,7 +614,7 @@ module Unified { } /** A class representing `function_declaration` nodes. */ - class FunctionDeclaration extends @unified_function_declaration, AstNode { + final class FunctionDeclaration extends @unified_function_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FunctionDeclaration" } @@ -652,7 +656,7 @@ module Unified { } /** A class representing `function_expr` nodes. */ - class FunctionExpr extends @unified_function_expr, AstNode { + final class FunctionExpr extends @unified_function_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FunctionExpr" } @@ -684,7 +688,7 @@ module Unified { } /** A class representing `function_type_expr` nodes. */ - class FunctionTypeExpr extends @unified_function_type_expr, AstNode { + final class FunctionTypeExpr extends @unified_function_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FunctionTypeExpr" } @@ -702,7 +706,7 @@ module Unified { } /** A class representing `generic_type_expr` nodes. */ - class GenericTypeExpr extends @unified_generic_type_expr, AstNode { + final class GenericTypeExpr extends @unified_generic_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GenericTypeExpr" } @@ -722,7 +726,7 @@ module Unified { } /** A class representing `guard_if_stmt` nodes. */ - class GuardIfStmt extends @unified_guard_if_stmt, AstNode { + final class GuardIfStmt extends @unified_guard_if_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GuardIfStmt" } @@ -739,13 +743,13 @@ module Unified { } /** A class representing `identifier` tokens. */ - class Identifier extends @unified_token_identifier, Token { + final class Identifier extends @unified_token_identifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Identifier" } } /** A class representing `if_expr` nodes. */ - class IfExpr extends @unified_if_expr, AstNode { + final class IfExpr extends @unified_if_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfExpr" } @@ -767,13 +771,13 @@ module Unified { } /** A class representing `ignore_pattern` tokens. */ - class IgnorePattern extends @unified_token_ignore_pattern, Token { + final class IgnorePattern extends @unified_token_ignore_pattern, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IgnorePattern" } } /** A class representing `import_declaration` nodes. */ - class ImportDeclaration extends @unified_import_declaration, AstNode { + final class ImportDeclaration extends @unified_import_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ImportDeclaration" } @@ -795,19 +799,19 @@ module Unified { } /** A class representing `inferred_type_expr` tokens. */ - class InferredTypeExpr extends @unified_token_inferred_type_expr, Token { + final class InferredTypeExpr extends @unified_token_inferred_type_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InferredTypeExpr" } } /** A class representing `infix_operator` tokens. */ - class InfixOperator extends @unified_token_infix_operator, Token { + final class InfixOperator extends @unified_token_infix_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InfixOperator" } } /** A class representing `initializer_declaration` nodes. */ - class InitializerDeclaration extends @unified_initializer_declaration, AstNode { + final class InitializerDeclaration extends @unified_initializer_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InitializerDeclaration" } @@ -825,13 +829,13 @@ module Unified { } /** A class representing `int_literal` tokens. */ - class IntLiteral extends @unified_token_int_literal, Token { + final class IntLiteral extends @unified_token_int_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IntLiteral" } } /** A class representing `key_value_pair` nodes. */ - class KeyValuePair extends @unified_key_value_pair, AstNode { + final class KeyValuePair extends @unified_key_value_pair, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "KeyValuePair" } @@ -848,7 +852,7 @@ module Unified { } /** A class representing `labeled_stmt` nodes. */ - class LabeledStmt extends @unified_labeled_stmt, AstNode { + final class LabeledStmt extends @unified_labeled_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LabeledStmt" } @@ -865,7 +869,7 @@ module Unified { } /** A class representing `map_literal` nodes. */ - class MapLiteral extends @unified_map_literal, AstNode { + final class MapLiteral extends @unified_map_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MapLiteral" } @@ -876,10 +880,10 @@ module Unified { final override AstNode getAFieldOrChild() { unified_map_literal_element(this, _, result) } } - class Member extends @unified_member, AstNode { } + final class Member extends @unified_member, AstNodeImpl { } /** A class representing `member_access_expr` nodes. */ - class MemberAccessExpr extends @unified_member_access_expr, AstNode { + final class MemberAccessExpr extends @unified_member_access_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MemberAccessExpr" } @@ -897,13 +901,13 @@ module Unified { } /** A class representing `modifier` tokens. */ - class Modifier extends @unified_token_modifier, Token { + final class Modifier extends @unified_token_modifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Modifier" } } /** A class representing `name_expr` nodes. */ - class NameExpr extends @unified_name_expr, AstNode { + final class NameExpr extends @unified_name_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NameExpr" } @@ -915,7 +919,7 @@ module Unified { } /** A class representing `name_pattern` nodes. */ - class NamePattern extends @unified_name_pattern, AstNode { + final class NamePattern extends @unified_name_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NamePattern" } @@ -932,7 +936,7 @@ module Unified { } /** A class representing `named_type_expr` nodes. */ - class NamedTypeExpr extends @unified_named_type_expr, AstNode { + final class NamedTypeExpr extends @unified_named_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NamedTypeExpr" } @@ -948,10 +952,10 @@ module Unified { } } - class Operator extends @unified_operator, AstNode { } + final class Operator extends @unified_operator, AstNodeImpl { } /** A class representing `operator_syntax_declaration` nodes. */ - class OperatorSyntaxDeclaration extends @unified_operator_syntax_declaration, AstNode { + final class OperatorSyntaxDeclaration extends @unified_operator_syntax_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OperatorSyntaxDeclaration" } @@ -978,8 +982,25 @@ module Unified { } } + /** A class representing `or_pattern` nodes. */ + final class OrPattern extends @unified_or_pattern, AstNodeImpl { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OrPattern" } + + /** Gets the node corresponding to the field `modifier`. */ + final Modifier getModifier(int i) { unified_or_pattern_modifier(this, i, result) } + + /** Gets the node corresponding to the field `pattern`. */ + final Pattern getPattern(int i) { unified_or_pattern_pattern(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + unified_or_pattern_modifier(this, _, result) or unified_or_pattern_pattern(this, _, result) + } + } + /** A class representing `parameter` nodes. */ - class Parameter extends @unified_parameter, AstNode { + final class Parameter extends @unified_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Parameter" } @@ -1008,10 +1029,10 @@ module Unified { } } - class Pattern extends @unified_pattern, AstNode { } + final class Pattern extends @unified_pattern, AstNodeImpl { } /** A class representing `pattern_element` nodes. */ - class PatternElement extends @unified_pattern_element, AstNode { + final class PatternElement extends @unified_pattern_element, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PatternElement" } @@ -1033,7 +1054,7 @@ module Unified { } /** A class representing `pattern_guard_expr` nodes. */ - class PatternGuardExpr extends @unified_pattern_guard_expr, AstNode { + final class PatternGuardExpr extends @unified_pattern_guard_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PatternGuardExpr" } @@ -1051,25 +1072,25 @@ module Unified { } /** A class representing `postfix_operator` tokens. */ - class PostfixOperator extends @unified_token_postfix_operator, Token { + final class PostfixOperator extends @unified_token_postfix_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PostfixOperator" } } /** A class representing `prefix_operator` tokens. */ - class PrefixOperator extends @unified_token_prefix_operator, Token { + final class PrefixOperator extends @unified_token_prefix_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PrefixOperator" } } /** A class representing `regex_literal` tokens. */ - class RegexLiteral extends @unified_token_regex_literal, Token { + final class RegexLiteral extends @unified_token_regex_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RegexLiteral" } } /** A class representing `return_expr` nodes. */ - class ReturnExpr extends @unified_return_expr, AstNode { + final class ReturnExpr extends @unified_return_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReturnExpr" } @@ -1080,22 +1101,22 @@ module Unified { final override AstNode getAFieldOrChild() { unified_return_expr_value(this, result) } } - class Stmt extends @unified_stmt, AstNode { } + final class Stmt extends @unified_stmt, AstNodeImpl { } /** A class representing `string_literal` tokens. */ - class StringLiteral extends @unified_token_string_literal, Token { + final class StringLiteral extends @unified_token_string_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringLiteral" } } /** A class representing `super_expr` tokens. */ - class SuperExpr extends @unified_token_super_expr, Token { + final class SuperExpr extends @unified_token_super_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SuperExpr" } } /** A class representing `switch_case` nodes. */ - class SwitchCase extends @unified_switch_case, AstNode { + final class SwitchCase extends @unified_switch_case, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SwitchCase" } @@ -1109,19 +1130,19 @@ module Unified { final Modifier getModifier(int i) { unified_switch_case_modifier(this, i, result) } /** Gets the node corresponding to the field `pattern`. */ - final Pattern getPattern(int i) { unified_switch_case_pattern(this, i, result) } + final Pattern getPattern() { unified_switch_case_pattern(this, result) } /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { unified_switch_case_def(this, result) or unified_switch_case_guard(this, result) or unified_switch_case_modifier(this, _, result) or - unified_switch_case_pattern(this, _, result) + unified_switch_case_pattern(this, result) } } /** A class representing `switch_expr` nodes. */ - class SwitchExpr extends @unified_switch_expr, AstNode { + final class SwitchExpr extends @unified_switch_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SwitchExpr" } @@ -1143,7 +1164,7 @@ module Unified { } /** A class representing `throw_expr` nodes. */ - class ThrowExpr extends @unified_throw_expr, AstNode { + final class ThrowExpr extends @unified_throw_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ThrowExpr" } @@ -1155,7 +1176,7 @@ module Unified { } /** A class representing `top_level` nodes. */ - class TopLevel extends @unified_top_level, AstNode { + final class TopLevel extends @unified_top_level, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TopLevel" } @@ -1167,7 +1188,7 @@ module Unified { } /** A class representing `try_expr` nodes. */ - class TryExpr extends @unified_try_expr, AstNode { + final class TryExpr extends @unified_try_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TryExpr" } @@ -1189,7 +1210,7 @@ module Unified { } /** A class representing `tuple_expr` nodes. */ - class TupleExpr extends @unified_tuple_expr, AstNode { + final class TupleExpr extends @unified_tuple_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TupleExpr" } @@ -1201,7 +1222,7 @@ module Unified { } /** A class representing `tuple_pattern` nodes. */ - class TuplePattern extends @unified_tuple_pattern, AstNode { + final class TuplePattern extends @unified_tuple_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TuplePattern" } @@ -1219,7 +1240,7 @@ module Unified { } /** A class representing `tuple_type_element` nodes. */ - class TupleTypeElement extends @unified_tuple_type_element, AstNode { + final class TupleTypeElement extends @unified_tuple_type_element, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TupleTypeElement" } @@ -1236,7 +1257,7 @@ module Unified { } /** A class representing `tuple_type_expr` nodes. */ - class TupleTypeExpr extends @unified_tuple_type_expr, AstNode { + final class TupleTypeExpr extends @unified_tuple_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TupleTypeExpr" } @@ -1248,7 +1269,7 @@ module Unified { } /** A class representing `type_alias_declaration` nodes. */ - class TypeAliasDeclaration extends @unified_type_alias_declaration, AstNode { + final class TypeAliasDeclaration extends @unified_type_alias_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeAliasDeclaration" } @@ -1282,7 +1303,7 @@ module Unified { } /** A class representing `type_cast_expr` nodes. */ - class TypeCastExpr extends @unified_type_cast_expr, AstNode { + final class TypeCastExpr extends @unified_type_cast_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeCastExpr" } @@ -1303,12 +1324,12 @@ module Unified { } } - class TypeConstraint extends @unified_type_constraint, AstNode { } + final class TypeConstraint extends @unified_type_constraint, AstNodeImpl { } - class TypeExpr extends @unified_type_expr, AstNode { } + final class TypeExpr extends @unified_type_expr, AstNodeImpl { } /** A class representing `type_parameter` nodes. */ - class TypeParameter extends @unified_type_parameter, AstNode { + final class TypeParameter extends @unified_type_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeParameter" } @@ -1330,7 +1351,7 @@ module Unified { } /** A class representing `type_test_expr` nodes. */ - class TypeTestExpr extends @unified_type_test_expr, AstNode { + final class TypeTestExpr extends @unified_type_test_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeTestExpr" } @@ -1352,7 +1373,7 @@ module Unified { } /** A class representing `type_test_pattern` nodes. */ - class TypeTestPattern extends @unified_type_test_pattern, AstNode { + final class TypeTestPattern extends @unified_type_test_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeTestPattern" } @@ -1370,7 +1391,7 @@ module Unified { } /** A class representing `unary_expr` nodes. */ - class UnaryExpr extends @unified_unary_expr, AstNode { + final class UnaryExpr extends @unified_unary_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnaryExpr" } @@ -1387,13 +1408,13 @@ module Unified { } /** A class representing `unsupported_node` tokens. */ - class UnsupportedNode extends @unified_token_unsupported_node, Token { + final class UnsupportedNode extends @unified_token_unsupported_node, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnsupportedNode" } } /** A class representing `variable_declaration` nodes. */ - class VariableDeclaration extends @unified_variable_declaration, AstNode { + final class VariableDeclaration extends @unified_variable_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VariableDeclaration" } @@ -1419,7 +1440,7 @@ module Unified { } /** A class representing `while_stmt` nodes. */ - class WhileStmt extends @unified_while_stmt, AstNode { + final class WhileStmt extends @unified_while_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "WhileStmt" } @@ -1654,6 +1675,10 @@ module Unified { i = -1 and name = "getPrecedence" or + result = node.(OrPattern).getModifier(i) and name = "getModifier" + or + result = node.(OrPattern).getPattern(i) and name = "getPattern" + or result = node.(Parameter).getDefault() and i = -1 and name = "getDefault" or result = node.(Parameter).getExternalName() and i = -1 and name = "getExternalName" @@ -1682,7 +1707,7 @@ module Unified { or result = node.(SwitchCase).getModifier(i) and name = "getModifier" or - result = node.(SwitchCase).getPattern(i) and name = "getPattern" + result = node.(SwitchCase).getPattern() and i = -1 and name = "getPattern" or result = node.(SwitchExpr).getCase(i) and name = "getCase" or diff --git a/unified/ql/lib/unified.dbscheme b/unified/ql/lib/unified.dbscheme index 3d9e5cddae0..e957e303c22 100644 --- a/unified/ql/lib/unified.dbscheme +++ b/unified/ql/lib/unified.dbscheme @@ -716,6 +716,24 @@ unified_operator_syntax_declaration_def( int name: @unified_token_identifier ref ); +#keyset[unified_or_pattern, index] +unified_or_pattern_modifier( + int unified_or_pattern: @unified_or_pattern ref, + int index: int ref, + unique int modifier: @unified_token_modifier ref +); + +#keyset[unified_or_pattern, index] +unified_or_pattern_pattern( + int unified_or_pattern: @unified_or_pattern ref, + int index: int ref, + unique int pattern: @unified_pattern ref +); + +unified_or_pattern_def( + unique int id: @unified_or_pattern +); + unified_parameter_default( unique int unified_parameter: @unified_parameter ref, unique int default: @unified_expr ref @@ -747,7 +765,7 @@ unified_parameter_def( unique int id: @unified_parameter ); -@unified_pattern = @unified_bulk_importing_pattern | @unified_constructor_pattern | @unified_expr_equality_pattern | @unified_name_pattern | @unified_token_ignore_pattern | @unified_token_unsupported_node | @unified_tuple_pattern +@unified_pattern = @unified_bulk_importing_pattern | @unified_constructor_pattern | @unified_expr_equality_pattern | @unified_name_pattern | @unified_or_pattern | @unified_token_ignore_pattern | @unified_token_unsupported_node | @unified_tuple_pattern unified_pattern_element_key( unique int unified_pattern_element: @unified_pattern_element ref, @@ -795,10 +813,8 @@ unified_switch_case_modifier( unique int modifier: @unified_token_modifier ref ); -#keyset[unified_switch_case, index] unified_switch_case_pattern( - int unified_switch_case: @unified_switch_case ref, - int index: int ref, + unique int unified_switch_case: @unified_switch_case ref, unique int pattern: @unified_pattern ref ); @@ -1056,7 +1072,7 @@ unified_trivia_tokeninfo( string value: string ref ); -@unified_ast_node = @unified_accessor_declaration | @unified_argument | @unified_array_literal | @unified_assign_expr | @unified_associated_type_declaration | @unified_base_type | @unified_binary_expr | @unified_block | @unified_bound_type_constraint | @unified_break_expr | @unified_bulk_importing_pattern | @unified_call_expr | @unified_catch_clause | @unified_class_like_declaration | @unified_compound_assign_expr | @unified_constructor_declaration | @unified_constructor_pattern | @unified_continue_expr | @unified_destructor_declaration | @unified_do_while_stmt | @unified_equality_type_constraint | @unified_expr_equality_pattern | @unified_for_each_stmt | @unified_function_declaration | @unified_function_expr | @unified_function_type_expr | @unified_generic_type_expr | @unified_guard_if_stmt | @unified_if_expr | @unified_import_declaration | @unified_initializer_declaration | @unified_key_value_pair | @unified_labeled_stmt | @unified_map_literal | @unified_member_access_expr | @unified_name_expr | @unified_name_pattern | @unified_named_type_expr | @unified_operator_syntax_declaration | @unified_parameter | @unified_pattern_element | @unified_pattern_guard_expr | @unified_return_expr | @unified_switch_case | @unified_switch_expr | @unified_throw_expr | @unified_token | @unified_top_level | @unified_trivia_token | @unified_try_expr | @unified_tuple_expr | @unified_tuple_pattern | @unified_tuple_type_element | @unified_tuple_type_expr | @unified_type_alias_declaration | @unified_type_cast_expr | @unified_type_parameter | @unified_type_test_expr | @unified_type_test_pattern | @unified_unary_expr | @unified_variable_declaration | @unified_while_stmt +@unified_ast_node = @unified_accessor_declaration | @unified_argument | @unified_array_literal | @unified_assign_expr | @unified_associated_type_declaration | @unified_base_type | @unified_binary_expr | @unified_block | @unified_bound_type_constraint | @unified_break_expr | @unified_bulk_importing_pattern | @unified_call_expr | @unified_catch_clause | @unified_class_like_declaration | @unified_compound_assign_expr | @unified_constructor_declaration | @unified_constructor_pattern | @unified_continue_expr | @unified_destructor_declaration | @unified_do_while_stmt | @unified_equality_type_constraint | @unified_expr_equality_pattern | @unified_for_each_stmt | @unified_function_declaration | @unified_function_expr | @unified_function_type_expr | @unified_generic_type_expr | @unified_guard_if_stmt | @unified_if_expr | @unified_import_declaration | @unified_initializer_declaration | @unified_key_value_pair | @unified_labeled_stmt | @unified_map_literal | @unified_member_access_expr | @unified_name_expr | @unified_name_pattern | @unified_named_type_expr | @unified_operator_syntax_declaration | @unified_or_pattern | @unified_parameter | @unified_pattern_element | @unified_pattern_guard_expr | @unified_return_expr | @unified_switch_case | @unified_switch_expr | @unified_throw_expr | @unified_token | @unified_top_level | @unified_trivia_token | @unified_try_expr | @unified_tuple_expr | @unified_tuple_pattern | @unified_tuple_type_element | @unified_tuple_type_expr | @unified_type_alias_declaration | @unified_type_cast_expr | @unified_type_parameter | @unified_type_test_expr | @unified_type_test_pattern | @unified_unary_expr | @unified_variable_declaration | @unified_while_stmt unified_ast_node_location( unique int node: @unified_ast_node ref, diff --git a/unified/ql/lib/utils/test/InlineExpectationsTest.qll b/unified/ql/lib/utils/test/InlineExpectationsTest.qll new file mode 100644 index 00000000000..7b331deb945 --- /dev/null +++ b/unified/ql/lib/utils/test/InlineExpectationsTest.qll @@ -0,0 +1,8 @@ +/** + * Inline expectation tests for unified. + * See `shared/util/codeql/util/test/InlineExpectationsTest.qll` + */ + +private import codeql.util.test.InlineExpectationsTest +private import internal.InlineExpectationsTestImpl +import Make diff --git a/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql b/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql new file mode 100644 index 00000000000..039194bc2e3 --- /dev/null +++ b/unified/ql/lib/utils/test/InlineExpectationsTestQuery.ql @@ -0,0 +1,21 @@ +/** + * @kind test-postprocess + */ + +private import unified +private import codeql.util.test.InlineExpectationsTest as T +private import internal.InlineExpectationsTestImpl +import T::TestPostProcessing +import T::TestPostProcessing::Make + +private module Input implements T::TestPostProcessing::InputSig { + string getRelativeUrl(Location location) { + exists(File f, int startline, int startcolumn, int endline, int endcolumn | + location.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and + f = location.getFile() + | + result = + f.getRelativePath() + ":" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } +} diff --git a/unified/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll b/unified/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll new file mode 100644 index 00000000000..b7330168741 --- /dev/null +++ b/unified/ql/lib/utils/test/internal/InlineExpectationsTestImpl.qll @@ -0,0 +1,12 @@ +private import unified as U +private import U +private import codeql.util.test.InlineExpectationsTest + +module Impl implements InlineExpectationsTestSig { + class ExpectationComment extends U::Comment { + /** Gets the text inside this comment, without the surrounding comment delimiters. */ + string getContents() { result = this.getCommentText() } + } + + class Location = U::Location; +} diff --git a/unified/ql/src/DummyQuery.ql b/unified/ql/src/DummyQuery.ql new file mode 100644 index 00000000000..32890433c10 --- /dev/null +++ b/unified/ql/src/DummyQuery.ql @@ -0,0 +1,16 @@ +/** + * @name Dummy query + * @description Dummy query that flags any name longer than 100 characters + * @kind problem + * @id unified/dummy + * @problem.severity error + * @precision high + * @security-severity 7 + * @tags security + */ + +import unified + +from Identifier id +where id.getValue().length() > 100 +select id, "Name is too long: " + id.getValue() diff --git a/unified/ql/src/codeql-suites/unified-code-quality-extended.qls b/unified/ql/src/codeql-suites/unified-code-quality-extended.qls new file mode 100644 index 00000000000..1ee85cae856 --- /dev/null +++ b/unified/ql/src/codeql-suites/unified-code-quality-extended.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-extended-selectors.yml + from: codeql/suite-helpers diff --git a/unified/ql/src/codeql-suites/unified-code-quality.qls b/unified/ql/src/codeql-suites/unified-code-quality.qls new file mode 100644 index 00000000000..2074f9378cf --- /dev/null +++ b/unified/ql/src/codeql-suites/unified-code-quality.qls @@ -0,0 +1,3 @@ +- queries: . +- apply: code-quality-selectors.yml + from: codeql/suite-helpers diff --git a/unified/ql/src/codeql-suites/unified-code-scanning.qls b/unified/ql/src/codeql-suites/unified-code-scanning.qls new file mode 100644 index 00000000000..2a46a1604c3 --- /dev/null +++ b/unified/ql/src/codeql-suites/unified-code-scanning.qls @@ -0,0 +1,4 @@ +- description: Standard Code Scanning queries for Unified +- queries: . +- apply: code-scanning-selectors.yml + from: codeql/suite-helpers diff --git a/unified/ql/src/codeql-suites/unified-security-and-quality.qls b/unified/ql/src/codeql-suites/unified-security-and-quality.qls new file mode 100644 index 00000000000..255b6082c8b --- /dev/null +++ b/unified/ql/src/codeql-suites/unified-security-and-quality.qls @@ -0,0 +1,4 @@ +- description: Security-and-quality queries for Unified +- queries: . +- apply: security-and-quality-selectors.yml + from: codeql/suite-helpers diff --git a/unified/ql/src/codeql-suites/unified-security-experimental.qls b/unified/ql/src/codeql-suites/unified-security-experimental.qls new file mode 100644 index 00000000000..d94d4fcae6a --- /dev/null +++ b/unified/ql/src/codeql-suites/unified-security-experimental.qls @@ -0,0 +1,4 @@ +- description: Extended and experimental security queries for Unified +- queries: . +- apply: security-experimental-selectors.yml + from: codeql/suite-helpers diff --git a/unified/ql/src/codeql-suites/unified-security-extended.qls b/unified/ql/src/codeql-suites/unified-security-extended.qls new file mode 100644 index 00000000000..fc6446d8fed --- /dev/null +++ b/unified/ql/src/codeql-suites/unified-security-extended.qls @@ -0,0 +1,4 @@ +- description: Security-extended queries for Unified +- queries: . +- apply: security-extended-selectors.yml + from: codeql/suite-helpers