diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index a87de2bc4682..e9580dcaa2aa 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -256,7 +256,6 @@ lib/codeql/rust/elements/internal/ConstParamImpl.qll c6995be58f84d1df65897c80f7e lib/codeql/rust/elements/internal/ContinueExprConstructor.qll cd93f1b35ccdb031d7e8deba92f6a76187f6009c454f3ea07e89ba459de57ca6 6f658e7d580c4c9068b01d6dd6f72888b8800860668a6653f8c3b27dc9996935 lib/codeql/rust/elements/internal/CrateConstructor.qll 2a3710ed6ff4ffdbc773ac16e2cf176415be8908e1d59fd0702bdeddbae096f4 f75a069b0ef71e54089001eb3a34b8a9e4ce8e4f65ffa71b669b38cf86e0af40 lib/codeql/rust/elements/internal/DynTraitTypeReprConstructor.qll 6964e6c80fb7f5e283c1d15562cef18ed097452b7fcbc04eff780c7646675c7a f03c4830bf1b958fdfb6563136fa21c911b2e41ce1d1caee14ec572c7232866d -lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll 635b491538a2ede0b2cf8ecaa1cea21e115a707dec4e023fcdbc1f7197615e8c 7a0dc718656631e08c4becc53174af42fbaaa639e252fb087d4317f5add840dc lib/codeql/rust/elements/internal/EnumConstructor.qll eca1a13937faacb1db50e4cf69d175f992f2204a5aaed9144bb6f3cb63814ac5 1bafba78b2729fdb052a25a1ba3f4f70871564aa4df632b4a1d467858a437924 lib/codeql/rust/elements/internal/ExprImpl.qll ab20ee174e2e786f34af6e5dedf3ec071bb89fc266b3e91df6377f72aa38d3f2 f68192700f449bf1c229cfbaabd5353c7c559941c915d5a0c88752cf9844194b lib/codeql/rust/elements/internal/ExprStmtConstructor.qll dd6bb06a7d48c12f630aafd611621cc50ce0f3e7d9abba5484a695f90879264b dc8b6ec8acc314e041ae71868803630c5d4cab488c72c1ea929bb756e1847c52 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index a10f0277198c..d74e5c802f17 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -258,7 +258,6 @@ /lib/codeql/rust/elements/internal/ContinueExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CrateConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/DynTraitTypeReprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/EnumConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExprStmtConstructor.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll index 0ea1d4397f94..53e46a5f65a7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `DynTraitTypeRepr`. * @@ -12,6 +11,10 @@ private import codeql.rust.elements.internal.generated.DynTraitTypeRepr * be referenced directly. */ module Impl { + private import rust + private import codeql.rust.internal.PathResolution as PathResolution + + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A dynamic trait object type. * @@ -21,5 +24,16 @@ module Impl { * // ^^^^^^^^^ * ``` */ - class DynTraitTypeRepr extends Generated::DynTraitTypeRepr { } + class DynTraitTypeRepr extends Generated::DynTraitTypeRepr { + /** Gets the trait that this trait object refers to. */ + pragma[nomagic] + Trait getTrait() { + result = + PathResolution::resolvePath(this.getTypeBoundList() + .getBound(0) + .getTypeRepr() + .(PathTypeRepr) + .getPath()) + } + } } diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index 79f2ad84b18a..6b9b70ee63bc 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -24,11 +24,15 @@ newtype TType = TArrayType() or // todo: add size? TRefType() or // todo: add mut? TImplTraitType(ImplTraitTypeRepr impl) or + TDynTraitType(Trait t) { t = any(DynTraitTypeRepr dt).getTrait() } or TSliceType() or TTupleTypeParameter(int arity, int i) { exists(TTuple(arity)) and i in [0 .. arity - 1] } or TTypeParamTypeParameter(TypeParam t) or TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or TArrayTypeParameter() or + TDynTraitTypeParameter(TypeParam tp) { + tp = any(DynTraitTypeRepr dt).getTrait().getGenericParamList().getATypeParam() + } or TRefTypeParameter() or TSelfTypeParameter(Trait t) or TSliceTypeParameter() @@ -247,6 +251,26 @@ class ImplTraitType extends Type, TImplTraitType { override Location getLocation() { result = impl.getLocation() } } +class DynTraitType extends Type, TDynTraitType { + Trait trait; + + DynTraitType() { this = TDynTraitType(trait) } + + override StructField getStructField(string name) { none() } + + override TupleField getTupleField(int i) { none() } + + override DynTraitTypeParameter getTypeParameter(int i) { + result = TDynTraitTypeParameter(trait.getGenericParamList().getTypeParam(i)) + } + + Trait getTrait() { result = trait } + + override string toString() { result = "dyn " + trait.getName().toString() } + + override Location getLocation() { result = trait.getLocation() } +} + /** * An [impl Trait in return position][1] type, for example: * @@ -381,6 +405,18 @@ class ArrayTypeParameter extends TypeParameter, TArrayTypeParameter { override Location getLocation() { result instanceof EmptyLocation } } +class DynTraitTypeParameter extends TypeParameter, TDynTraitTypeParameter { + private TypeParam typeParam; + + DynTraitTypeParameter() { this = TDynTraitTypeParameter(typeParam) } + + TypeParam getTypeParam() { result = typeParam } + + override string toString() { result = "dyn(" + typeParam.toString() + ")" } + + override Location getLocation() { result = typeParam.getLocation() } +} + /** An implicit reference type parameter. */ class RefTypeParameter extends TypeParameter, TRefTypeParameter { override string toString() { result = "&T" } @@ -465,6 +501,13 @@ final class ImplTypeAbstraction extends TypeAbstraction, Impl { } } +final class DynTypeAbstraction extends TypeAbstraction, DynTraitTypeRepr { + override TypeParameter getATypeParameter() { + result.(TypeParamTypeParameter).getTypeParam() = + this.getTrait().getGenericParamList().getATypeParam() + } +} + final class TraitTypeAbstraction extends TypeAbstraction, Trait { override TypeParameter getATypeParameter() { result.(TypeParamTypeParameter).getTypeParam() = this.getGenericParamList().getATypeParam() diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 51e0f3a715ab..b818a4ef1bd7 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -97,6 +97,9 @@ private module Input1 implements InputSig1 { id = 2 or kind = 1 and + id = idOfTypeParameterAstNode(tp0.(DynTraitTypeParameter).getTypeParam()) + or + kind = 2 and exists(AstNode node | id = idOfTypeParameterAstNode(node) | node = tp0.(TypeParamTypeParameter).getTypeParam() or node = tp0.(AssociatedTypeTypeParameter).getTypeAlias() or @@ -107,7 +110,7 @@ private module Input1 implements InputSig1 { exists(TupleTypeParameter ttp, int maxArity | maxArity = max(int i | i = any(TupleType tt).getArity()) and tp0 = ttp and - kind = 2 and + kind = 3 and id = ttp.getTupleType().getArity() * maxArity + ttp.getIndex() ) | @@ -189,6 +192,14 @@ private module Input2 implements InputSig2 { condition = impl and constraint = impl.getTypeBoundList().getABound().getTypeRepr() ) + or + // a `dyn Trait` type implements `Trait`. See the comment on + // `DynTypeBoundListMention` for further details. + exists(DynTraitTypeRepr object | + abs = object and + condition = object.getTypeBoundList() and + constraint = object.getTrait() + ) } } @@ -1715,10 +1726,16 @@ private Function getMethodFromImpl(MethodCall mc) { bindingset[trait, name] pragma[inline_late] -private Function getTraitMethod(ImplTraitReturnType trait, string name) { +private Function getImplTraitMethod(ImplTraitReturnType trait, string name) { result = getMethodSuccessor(trait.getImplTraitTypeRepr(), name) } +bindingset[traitObject, name] +pragma[inline_late] +private Function getDynTraitMethod(DynTraitType traitObject, string name) { + result = getMethodSuccessor(traitObject.getTrait(), name) +} + pragma[nomagic] private Function resolveMethodCallTarget(MethodCall mc) { // The method comes from an `impl` block targeting the type of the receiver. @@ -1729,7 +1746,10 @@ private Function resolveMethodCallTarget(MethodCall mc) { result = getTypeParameterMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) or // The type of the receiver is an `impl Trait` type. - result = getTraitMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) + result = getImplTraitMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) + or + // The type of the receiver is a trait object `dyn Trait` type. + result = getDynTraitMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) } pragma[nomagic] @@ -2073,6 +2093,13 @@ private module Debug { result = resolveCallTarget(c) } + predicate debugConditionSatisfiesConstraint( + TypeAbstraction abs, TypeMention condition, TypeMention constraint + ) { + abs = getRelevantLocatable() and + Input2::conditionSatisfiesConstraint(abs, condition, constraint) + } + predicate debugInferImplicitSelfType(SelfParam self, TypePath path, Type t) { self = getRelevantLocatable() and t = inferImplicitSelfType(self, path) diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index a76d080989b3..cdd64900967d 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -309,3 +309,64 @@ class SelfTypeParameterMention extends TypeMention instanceof Name { result = TSelfTypeParameter(trait) } } + +class DynTraitTypeReprMention extends TypeMention instanceof DynTraitTypeRepr { + private DynTraitType dynType; + + DynTraitTypeReprMention() { + // This excludes `DynTraitTypeRepr` elements where `getTrait` is not + // defined, i.e., where path resolution can't find a trait. + dynType.getTrait() = super.getTrait() + } + + override Type resolveTypeAt(TypePath path) { + path.isEmpty() and + result = dynType + or + exists(DynTraitTypeParameter tp, TypePath path0, TypePath suffix | + tp = dynType.getTypeParameter(_) and + path = TypePath::cons(tp, suffix) and + result = super.getTypeBoundList().getBound(0).getTypeRepr().(TypeMention).resolveTypeAt(path0) and + path0.isCons(TTypeParamTypeParameter(tp.getTypeParam()), suffix) + ) + } +} + +// We want a type of the form `dyn Trait` to implement `Trait`. If `Trait` has +// type parameters then `dyn Trait` has equivalent type parameters and the +// implementation should be abstracted over them. +// +// Intuitively we want something to the effect of: +// ``` +// impl Trait for (dyn Trait) +// ``` +// To achieve this: +// - `DynTypeAbstraction` is an abstraction over type parameters of the trait. +// - `DynTypeBoundListMention` (this class) is a type mention which has `dyn +// Trait` at the root and which for every type parameter of `dyn Trait` has the +// corresponding type parameter of the trait. +// - `TraitMention` (which is used for other things as well) is a type mention +// for the trait applied to its own type parameters. +// +// We arbitrarily use the `TypeBoundList` inside `DynTraitTypeRepr` to encode +// this type mention, since it doesn't syntactically appear in the AST. This +// works because there is a one-to-one correspondence between a trait object and +// its list of type bounds. +class DynTypeBoundListMention extends TypeMention instanceof TypeBoundList { + private Trait trait; + + DynTypeBoundListMention() { + exists(DynTraitTypeRepr dyn | this = dyn.getTypeBoundList() and trait = dyn.getTrait()) + } + + override Type resolveTypeAt(TypePath path) { + path.isEmpty() and + result.(DynTraitType).getTrait() = trait + or + exists(TypeParam param | + param = trait.getGenericParamList().getATypeParam() and + path = TypePath::singleton(TDynTraitTypeParameter(param)) and + result = TTypeParamTypeParameter(param) + ) + } +} diff --git a/rust/ql/src/change-notes/2025-07-18-type-inference-trait-objects.md b/rust/ql/src/change-notes/2025-07-18-type-inference-trait-objects.md new file mode 100644 index 000000000000..7abb03b9b95d --- /dev/null +++ b/rust/ql/src/change-notes/2025-07-18-type-inference-trait-objects.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Type inference now supports trait objects, i.e., `dyn Trait` types. \ No newline at end of file diff --git a/rust/ql/test/library-tests/type-inference/dyn_type.rs b/rust/ql/test/library-tests/type-inference/dyn_type.rs new file mode 100644 index 000000000000..e0d804c73730 --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/dyn_type.rs @@ -0,0 +1,67 @@ +// Test cases for type inference and method resolution with `dyn` types + +use std::fmt::Debug; + +trait MyTrait1 { + // MyTrait1::m + fn m(&self) -> String; +} + +trait GenericGet { + // GenericGet::get + fn get(&self) -> A; +} + +#[derive(Clone, Debug)] +struct MyStruct { + value: i32, +} + +impl MyTrait1 for MyStruct { + // MyStruct1::m + fn m(&self) -> String { + format!("MyTrait1: {}", self.value) // $ fieldof=MyStruct + } +} + +#[derive(Clone, Debug)] +struct GenStruct { + value: A, +} + +impl GenericGet for GenStruct { + // GenStruct::get + fn get(&self) -> A { + self.value.clone() // $ fieldof=GenStruct target=clone + } +} + +fn get_a + ?Sized>(a: &G) -> A { + a.get() // $ target=GenericGet::get +} + +fn get_box_trait(a: A) -> Box> { + Box::new(GenStruct { value: a }) // $ target=new +} + +fn test_basic_dyn_trait(obj: &dyn MyTrait1) { + let _result = (*obj).m(); // $ target=deref target=MyTrait1::m type=_result:String +} + +fn test_generic_dyn_trait(obj: &dyn GenericGet) { + let _result1 = (*obj).get(); // $ target=deref target=GenericGet::get type=_result1:String + let _result2 = get_a(obj); // $ target=get_a type=_result2:String +} + +fn test_poly_dyn_trait() { + let obj = get_box_trait(true); // $ target=get_box_trait + let _result = (*obj).get(); // $ target=deref target=GenericGet::get type=_result:bool +} + +pub fn test() { + test_basic_dyn_trait(&MyStruct { value: 42 }); // $ target=test_basic_dyn_trait + test_generic_dyn_trait(&GenStruct { + value: "".to_string(), + }); // $ target=test_generic_dyn_trait + test_poly_dyn_trait(); // $ target=test_poly_dyn_trait +} diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 316ac64873df..958323c3d39a 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2292,8 +2292,6 @@ mod loops { } } -mod dereference; - mod explicit_type_args { struct S1(T); @@ -2461,6 +2459,9 @@ mod closures { } } +mod dereference; +mod dyn_type; + fn main() { field_access::f(); // $ target=f method_impl::f(); // $ target=f @@ -2491,5 +2492,6 @@ fn main() { dereference::test(); // $ target=test pattern_matching::test_all_patterns(); // $ target=test_all_patterns pattern_matching_experimental::box_patterns(); // $ target=box_patterns - closures::f() // $ target=f + closures::f(); // $ target=f + dyn_type::test(); // $ target=test } 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 fdd87ae75ea7..adeaa62df670 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -156,6 +156,117 @@ inferType | dereference.rs:92:37:92:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:93:14:93:14 | x | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:93:14:93:14 | x | T | {EXTERNAL LOCATION} | i64 | +| dyn_type.rs:7:10:7:14 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:7:10:7:14 | SelfParam | &T | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | +| dyn_type.rs:12:12:12:16 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:12:12:12:16 | SelfParam | &T | dyn_type.rs:10:1:13:1 | Self [trait GenericGet] | +| dyn_type.rs:22:10:22:14 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:22:10:22:14 | SelfParam | &T | dyn_type.rs:15:1:18:1 | MyStruct | +| dyn_type.rs:22:27:24:5 | { ... } | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:23:9:23:43 | MacroExpr | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:23:17:23:30 | "MyTrait1: {}" | | file://:0:0:0:0 | & | +| dyn_type.rs:23:17:23:30 | "MyTrait1: {}" | &T | {EXTERNAL LOCATION} | str | +| dyn_type.rs:23:17:23:42 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:23:17:23:42 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:23:17:23:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| dyn_type.rs:23:17:23:42 | MacroBlockExpr | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:23:17:23:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| dyn_type.rs:23:17:23:42 | { ... } | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:23:33:23:36 | self | | file://:0:0:0:0 | & | +| dyn_type.rs:23:33:23:36 | self | &T | dyn_type.rs:15:1:18:1 | MyStruct | +| dyn_type.rs:23:33:23:42 | self.value | | {EXTERNAL LOCATION} | i32 | +| dyn_type.rs:34:12:34:16 | SelfParam | | file://:0:0:0:0 | & | +| dyn_type.rs:34:12:34:16 | SelfParam | &T | dyn_type.rs:27:1:30:1 | GenStruct | +| dyn_type.rs:34:12:34:16 | SelfParam | &T.A | dyn_type.rs:32:6:32:21 | A | +| dyn_type.rs:34:24:36:5 | { ... } | | dyn_type.rs:32:6:32:21 | A | +| dyn_type.rs:35:9:35:12 | self | | file://:0:0:0:0 | & | +| dyn_type.rs:35:9:35:12 | self | &T | dyn_type.rs:27:1:30:1 | GenStruct | +| dyn_type.rs:35:9:35:12 | self | &T.A | dyn_type.rs:32:6:32:21 | A | +| dyn_type.rs:35:9:35:18 | self.value | | dyn_type.rs:32:6:32:21 | A | +| dyn_type.rs:35:9:35:26 | ... .clone() | | dyn_type.rs:32:6:32:21 | A | +| dyn_type.rs:39:40:39:40 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:39:40:39:40 | a | &T | dyn_type.rs:39:13:39:37 | G | +| dyn_type.rs:39:52:41:1 | { ... } | | dyn_type.rs:39:10:39:10 | A | +| dyn_type.rs:40:5:40:5 | a | | file://:0:0:0:0 | & | +| dyn_type.rs:40:5:40:5 | a | &T | dyn_type.rs:39:13:39:37 | G | +| dyn_type.rs:40:5:40:11 | a.get() | | dyn_type.rs:39:10:39:10 | A | +| dyn_type.rs:43:46:43:46 | a | | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:43:78:45:1 | { ... } | | {EXTERNAL LOCATION} | Box | +| dyn_type.rs:43:78:45:1 | { ... } | A | {EXTERNAL LOCATION} | Global | +| dyn_type.rs:43:78:45:1 | { ... } | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:43:78:45:1 | { ... } | T | dyn_type.rs:27:1:30:1 | GenStruct | +| dyn_type.rs:43:78:45:1 | { ... } | T.A | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:43:78:45:1 | { ... } | T.dyn(A) | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:44:5:44:36 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dyn_type.rs:44:5:44:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dyn_type.rs:44:5:44:36 | ...::new(...) | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:44:5:44:36 | ...::new(...) | T | dyn_type.rs:27:1:30:1 | GenStruct | +| dyn_type.rs:44:5:44:36 | ...::new(...) | T.A | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:44:5:44:36 | ...::new(...) | T.dyn(A) | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:44:14:44:35 | GenStruct {...} | | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:44:14:44:35 | GenStruct {...} | | dyn_type.rs:27:1:30:1 | GenStruct | +| dyn_type.rs:44:14:44:35 | GenStruct {...} | A | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:44:14:44:35 | GenStruct {...} | dyn(A) | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:44:33:44:33 | a | | dyn_type.rs:43:18:43:43 | A | +| dyn_type.rs:47:25:47:27 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:47:25:47:27 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:48:9:48:15 | _result | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:48:19:48:24 | (...) | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:48:19:48:28 | ... .m() | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:48:20:48:23 | * ... | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:48:21:48:23 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:48:21:48:23 | obj | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:51:27:51:29 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:51:27:51:29 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:51:27:51:29 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:52:9:52:16 | _result1 | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:52:20:52:25 | (...) | | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:52:20:52:25 | (...) | dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:52:20:52:31 | ... .get() | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:52:21:52:24 | * ... | | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:52:21:52:24 | * ... | dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:52:22:52:24 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:52:22:52:24 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:52:22:52:24 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:53:9:53:16 | _result2 | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:53:20:53:29 | get_a(...) | | {EXTERNAL LOCATION} | String | +| dyn_type.rs:53:26:53:28 | obj | | file://:0:0:0:0 | & | +| dyn_type.rs:53:26:53:28 | obj | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:53:26:53:28 | obj | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:57:9:57:11 | obj | | {EXTERNAL LOCATION} | Box | +| dyn_type.rs:57:9:57:11 | obj | A | {EXTERNAL LOCATION} | Global | +| dyn_type.rs:57:9:57:11 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:57:9:57:11 | obj | T.dyn(A) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:57:15:57:33 | get_box_trait(...) | | {EXTERNAL LOCATION} | Box | +| dyn_type.rs:57:15:57:33 | get_box_trait(...) | A | {EXTERNAL LOCATION} | Global | +| dyn_type.rs:57:15:57:33 | get_box_trait(...) | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:57:15:57:33 | get_box_trait(...) | T.dyn(A) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:57:29:57:32 | true | | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:58:9:58:15 | _result | | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:58:19:58:24 | (...) | | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:58:19:58:24 | (...) | dyn(A) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:58:19:58:30 | ... .get() | | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:58:20:58:23 | * ... | | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:58:20:58:23 | * ... | dyn(A) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:58:21:58:23 | obj | | {EXTERNAL LOCATION} | Box | +| dyn_type.rs:58:21:58:23 | obj | A | {EXTERNAL LOCATION} | Global | +| dyn_type.rs:58:21:58:23 | obj | T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:58:21:58:23 | obj | T.dyn(A) | {EXTERNAL LOCATION} | bool | +| dyn_type.rs:62:26:62:48 | &... | | file://:0:0:0:0 | & | +| dyn_type.rs:62:26:62:48 | &... | &T | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:62:26:62:48 | &... | &T | dyn_type.rs:15:1:18:1 | MyStruct | +| dyn_type.rs:62:27:62:48 | MyStruct {...} | | dyn_type.rs:5:1:8:1 | dyn MyTrait1 | +| dyn_type.rs:62:27:62:48 | MyStruct {...} | | dyn_type.rs:15:1:18:1 | MyStruct | +| dyn_type.rs:62:45:62:46 | 42 | | {EXTERNAL LOCATION} | i32 | +| dyn_type.rs:63:28:65:5 | &... | | file://:0:0:0:0 | & | +| dyn_type.rs:63:28:65:5 | &... | &T | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:63:28:65:5 | &... | &T | dyn_type.rs:27:1:30:1 | GenStruct | +| dyn_type.rs:63:28:65:5 | &... | &T.dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:63:29:65:5 | GenStruct {...} | | dyn_type.rs:10:1:13:1 | dyn GenericGet | +| dyn_type.rs:63:29:65:5 | GenStruct {...} | | dyn_type.rs:27:1:30:1 | GenStruct | +| dyn_type.rs:63:29:65:5 | GenStruct {...} | dyn(A) | {EXTERNAL LOCATION} | String | +| dyn_type.rs:64:16:64:17 | "" | | file://:0:0:0:0 | & | +| dyn_type.rs:64:16:64:17 | "" | &T | {EXTERNAL LOCATION} | str | | loop/main.rs:7:12:7:15 | SelfParam | | loop/main.rs:6:1:8:1 | Self [trait T1] | | loop/main.rs:11:12:11:15 | SelfParam | | loop/main.rs:10:1:14:1 | Self [trait T2] | | loop/main.rs:12:9:12:12 | self | | loop/main.rs:10:1:14:1 | Self [trait T2] | @@ -1477,16 +1588,20 @@ inferType | main.rs:977:35:977:36 | &x | &T | main.rs:945:5:946:14 | S1 | | main.rs:977:36:977:36 | x | | main.rs:945:5:946:14 | S1 | | main.rs:979:13:979:13 | x | | main.rs:945:5:946:14 | S1 | +| main.rs:979:13:979:13 | x | | main.rs:951:5:951:25 | dyn Trait | | main.rs:979:17:979:18 | S1 | | main.rs:945:5:946:14 | S1 | +| main.rs:979:17:979:18 | S1 | | main.rs:951:5:951:25 | dyn Trait | | main.rs:981:18:981:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:981:18:981:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:981:18:981:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:981:18:981:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:981:26:981:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:981:26:981:44 | id::<...>(...) | &T | main.rs:945:5:946:14 | S1 | +| main.rs:981:26:981:44 | id::<...>(...) | &T | main.rs:951:5:951:25 | dyn Trait | | main.rs:981:42:981:43 | &x | | file://:0:0:0:0 | & | | main.rs:981:42:981:43 | &x | &T | main.rs:945:5:946:14 | S1 | +| main.rs:981:42:981:43 | &x | &T | main.rs:951:5:951:25 | dyn Trait | | main.rs:981:43:981:43 | x | | main.rs:945:5:946:14 | S1 | +| main.rs:981:43:981:43 | x | | main.rs:951:5:951:25 | dyn Trait | | main.rs:983:13:983:13 | x | | main.rs:945:5:946:14 | S1 | | main.rs:983:17:983:18 | S1 | | main.rs:945:5:946:14 | S1 | | main.rs:984:9:984:25 | into::<...>(...) | | main.rs:948:5:949:14 | S2 | @@ -4009,304 +4124,304 @@ inferType | main.rs:2290:13:2290:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:2290:13:2290:18 | ... += ... | | file://:0:0:0:0 | () | | main.rs:2290:18:2290:18 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2304:40:2306:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2304:40:2306:9 | { ... } | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2304:40:2306:9 | { ... } | T.T | main.rs:2303:10:2303:19 | T | -| main.rs:2305:13:2305:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2305:13:2305:16 | None | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2305:13:2305:16 | None | T.T | main.rs:2303:10:2303:19 | T | -| main.rs:2308:30:2310:9 | { ... } | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2308:30:2310:9 | { ... } | T | main.rs:2303:10:2303:19 | T | -| main.rs:2309:13:2309:28 | S1(...) | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2309:13:2309:28 | S1(...) | T | main.rs:2303:10:2303:19 | T | -| main.rs:2309:16:2309:27 | ...::default(...) | | main.rs:2303:10:2303:19 | T | -| main.rs:2312:19:2312:22 | SelfParam | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2312:19:2312:22 | SelfParam | T | main.rs:2303:10:2303:19 | T | -| main.rs:2312:33:2314:9 | { ... } | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2312:33:2314:9 | { ... } | T | main.rs:2303:10:2303:19 | T | -| main.rs:2313:13:2313:16 | self | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2313:13:2313:16 | self | T | main.rs:2303:10:2303:19 | T | -| main.rs:2325:15:2325:15 | x | | main.rs:2325:12:2325:12 | T | -| main.rs:2325:26:2327:5 | { ... } | | main.rs:2325:12:2325:12 | T | -| main.rs:2326:9:2326:9 | x | | main.rs:2325:12:2325:12 | T | -| main.rs:2330:13:2330:14 | x1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2330:13:2330:14 | x1 | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2330:13:2330:14 | x1 | T.T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2330:34:2330:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2330:34:2330:48 | ...::assoc_fun(...) | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2330:34:2330:48 | ...::assoc_fun(...) | T.T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2331:13:2331:14 | x2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2331:13:2331:14 | x2 | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2331:13:2331:14 | x2 | T.T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2331:18:2331:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2331:18:2331:38 | ...::assoc_fun(...) | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2331:18:2331:38 | ...::assoc_fun(...) | T.T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2332:13:2332:14 | x3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2332:13:2332:14 | x3 | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2332:13:2332:14 | x3 | T.T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2332:18:2332:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2332:18:2332:32 | ...::assoc_fun(...) | T | main.rs:2298:5:2298:20 | S1 | -| main.rs:2332:18:2332:32 | ...::assoc_fun(...) | T.T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2333:13:2333:14 | x4 | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2333:13:2333:14 | x4 | T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2333:18:2333:48 | ...::method(...) | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2333:18:2333:48 | ...::method(...) | T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2333:35:2333:47 | ...::default(...) | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2333:35:2333:47 | ...::default(...) | T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2334:13:2334:14 | x5 | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2334:13:2334:14 | x5 | T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2334:18:2334:42 | ...::method(...) | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2334:18:2334:42 | ...::method(...) | T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2334:29:2334:41 | ...::default(...) | | main.rs:2298:5:2298:20 | S1 | -| main.rs:2334:29:2334:41 | ...::default(...) | T | main.rs:2300:5:2301:14 | S2 | -| main.rs:2335:13:2335:14 | x6 | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2335:13:2335:14 | x6 | T4 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2335:18:2335:45 | S4::<...>(...) | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2335:18:2335:45 | S4::<...>(...) | T4 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2335:27:2335:44 | ...::default(...) | | main.rs:2300:5:2301:14 | S2 | -| main.rs:2336:13:2336:14 | x7 | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2336:13:2336:14 | x7 | T4 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2336:18:2336:23 | S4(...) | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2336:18:2336:23 | S4(...) | T4 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2336:21:2336:22 | S2 | | main.rs:2300:5:2301:14 | S2 | -| main.rs:2337:13:2337:14 | x8 | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2337:13:2337:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2337:18:2337:22 | S4(...) | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2337:18:2337:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | -| main.rs:2337:21:2337:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2338:13:2338:14 | x9 | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2338:13:2338:14 | x9 | T4 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2338:18:2338:34 | S4(...) | | main.rs:2319:5:2319:27 | S4 | -| main.rs:2338:18:2338:34 | S4(...) | T4 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2338:21:2338:33 | ...::default(...) | | main.rs:2300:5:2301:14 | S2 | -| main.rs:2339:13:2339:15 | x10 | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2339:13:2339:15 | x10 | T5 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2339:19:2342:9 | S5::<...> {...} | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2339:19:2342:9 | S5::<...> {...} | T5 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2341:20:2341:37 | ...::default(...) | | main.rs:2300:5:2301:14 | S2 | -| main.rs:2343:13:2343:15 | x11 | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2343:13:2343:15 | x11 | T5 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2343:19:2343:34 | S5 {...} | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2343:19:2343:34 | S5 {...} | T5 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2343:31:2343:32 | S2 | | main.rs:2300:5:2301:14 | S2 | -| main.rs:2344:13:2344:15 | x12 | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2344:13:2344:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:19:2344:33 | S5 {...} | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2344:19:2344:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | -| main.rs:2344:31:2344:31 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2345:13:2345:15 | x13 | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2345:13:2345:15 | x13 | T5 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2345:19:2348:9 | S5 {...} | | main.rs:2321:5:2323:5 | S5 | -| main.rs:2345:19:2348:9 | S5 {...} | T5 | main.rs:2300:5:2301:14 | S2 | -| main.rs:2347:20:2347:32 | ...::default(...) | | main.rs:2300:5:2301:14 | S2 | -| main.rs:2349:13:2349:15 | x14 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2349:19:2349:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2349:30:2349:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2357:35:2359:9 | { ... } | | file://:0:0:0:0 | (T_2) | -| main.rs:2357:35:2359:9 | { ... } | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2357:35:2359:9 | { ... } | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2358:13:2358:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2358:13:2358:26 | TupleExpr | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2358:13:2358:26 | TupleExpr | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2358:14:2358:18 | S1 {...} | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2358:21:2358:25 | S1 {...} | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2360:16:2360:19 | SelfParam | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2364:13:2364:13 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2364:13:2364:13 | a | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2364:13:2364:13 | a | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2364:17:2364:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2364:17:2364:30 | ...::get_pair(...) | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2364:17:2364:30 | ...::get_pair(...) | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2365:17:2365:17 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2365:17:2365:17 | b | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2365:17:2365:17 | b | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2365:21:2365:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2365:21:2365:34 | ...::get_pair(...) | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2365:21:2365:34 | ...::get_pair(...) | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2366:13:2366:18 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2366:13:2366:18 | TuplePat | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2366:13:2366:18 | TuplePat | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2366:14:2366:14 | c | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2366:17:2366:17 | d | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2366:22:2366:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2366:22:2366:35 | ...::get_pair(...) | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2366:22:2366:35 | ...::get_pair(...) | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2367:13:2367:22 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2367:13:2367:22 | TuplePat | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2367:13:2367:22 | TuplePat | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2367:18:2367:18 | e | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2367:21:2367:21 | f | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2367:26:2367:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2367:26:2367:39 | ...::get_pair(...) | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2367:26:2367:39 | ...::get_pair(...) | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2368:13:2368:26 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2368:13:2368:26 | TuplePat | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2368:13:2368:26 | TuplePat | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2368:18:2368:18 | g | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2368:25:2368:25 | h | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2368:30:2368:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | -| main.rs:2368:30:2368:43 | ...::get_pair(...) | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2368:30:2368:43 | ...::get_pair(...) | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2370:9:2370:9 | a | | file://:0:0:0:0 | (T_2) | -| main.rs:2370:9:2370:9 | a | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2370:9:2370:9 | a | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2370:9:2370:11 | a.0 | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2371:9:2371:9 | b | | file://:0:0:0:0 | (T_2) | -| main.rs:2371:9:2371:9 | b | 0(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2371:9:2371:9 | b | 1(2) | main.rs:2354:5:2354:16 | S1 | -| main.rs:2371:9:2371:11 | b.1 | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2372:9:2372:9 | c | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2373:9:2373:9 | d | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2374:9:2374:9 | e | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2375:9:2375:9 | f | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2376:9:2376:9 | g | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2377:9:2377:9 | h | | main.rs:2354:5:2354:16 | S1 | -| main.rs:2382:13:2382:13 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2382:17:2382:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2383:13:2383:13 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2383:17:2383:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| main.rs:2384:13:2384:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2384:13:2384:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2384:13:2384:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2384:20:2384:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | -| main.rs:2384:20:2384:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2384:20:2384:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2384:21:2384:21 | a | | {EXTERNAL LOCATION} | i64 | -| main.rs:2384:24:2384:24 | b | | {EXTERNAL LOCATION} | bool | -| main.rs:2385:13:2385:13 | i | | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:22:2385:25 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2385:22:2385:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2385:22:2385:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2385:22:2385:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2386:13:2386:13 | j | | {EXTERNAL LOCATION} | bool | -| main.rs:2386:23:2386:26 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2386:23:2386:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | -| main.rs:2386:23:2386:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | -| main.rs:2386:23:2386:28 | pair.1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2388:13:2388:16 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2388:13:2388:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:13:2388:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:20:2388:25 | [...] | | file://:0:0:0:0 | [] | -| main.rs:2388:20:2388:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:20:2388:32 | ... .into() | | file://:0:0:0:0 | (T_2) | -| main.rs:2388:20:2388:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:20:2388:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:21:2388:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:24:2388:24 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2389:15:2389:18 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2389:15:2389:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2389:15:2389:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2390:13:2390:17 | TuplePat | | file://:0:0:0:0 | (T_2) | -| main.rs:2390:13:2390:17 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2390:13:2390:17 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2390:14:2390:14 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2390:16:2390:16 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2390:29:2390:40 | "unexpected" | | file://:0:0:0:0 | & | -| main.rs:2390:29:2390:40 | "unexpected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2390:29:2390:40 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2390:29:2390:40 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2391:13:2391:13 | _ | | file://:0:0:0:0 | (T_2) | -| main.rs:2391:13:2391:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2391:13:2391:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2391:25:2391:34 | "expected" | | file://:0:0:0:0 | & | -| main.rs:2391:25:2391:34 | "expected" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2391:25:2391:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2391:25:2391:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2393:13:2393:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2393:17:2393:20 | pair | | file://:0:0:0:0 | (T_2) | -| main.rs:2393:17:2393:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2393:17:2393:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | -| main.rs:2393:17:2393:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2400:13:2400:23 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2400:13:2400:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2400:13:2400:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2400:27:2400:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2400:27:2400:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2400:27:2400:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2400:36:2400:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2403:15:2403:25 | boxed_value | | {EXTERNAL LOCATION} | Box | -| main.rs:2403:15:2403:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | -| main.rs:2403:15:2403:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2404:13:2404:19 | box 100 | | {EXTERNAL LOCATION} | Box | -| main.rs:2404:13:2404:19 | box 100 | A | {EXTERNAL LOCATION} | Global | -| main.rs:2404:13:2404:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2404:17:2404:19 | 100 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:26:2405:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | -| main.rs:2405:26:2405:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2405:26:2405:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2405:26:2405:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2407:13:2407:17 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2407:13:2407:17 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2407:13:2407:17 | box ... | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2409:26:2409:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2409:26:2409:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2409:26:2409:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2409:26:2409:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2414:13:2414:22 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2414:13:2414:22 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2414:13:2414:22 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2414:13:2414:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2414:13:2414:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:26:2414:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2414:26:2414:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2414:26:2414:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | -| main.rs:2414:26:2414:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2414:26:2414:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:35:2414:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| main.rs:2414:35:2414:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2414:35:2414:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2414:44:2414:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2415:15:2415:24 | nested_box | | {EXTERNAL LOCATION} | Box | -| main.rs:2415:15:2415:24 | nested_box | A | {EXTERNAL LOCATION} | Global | -| main.rs:2415:15:2415:24 | nested_box | T | {EXTERNAL LOCATION} | Box | -| main.rs:2415:15:2415:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2415:15:2415:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2416:13:2416:21 | box ... | | {EXTERNAL LOCATION} | Box | -| main.rs:2416:13:2416:21 | box ... | A | {EXTERNAL LOCATION} | Global | -| main.rs:2416:13:2416:21 | box ... | T | {EXTERNAL LOCATION} | Box | -| main.rs:2416:13:2416:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | -| main.rs:2416:13:2416:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:26:2418:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | -| main.rs:2418:26:2418:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2418:26:2418:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2418:26:2418:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2430:16:2430:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2430:16:2430:20 | SelfParam | &T | main.rs:2425:5:2427:5 | Row | -| main.rs:2430:30:2432:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2431:13:2431:16 | self | | file://:0:0:0:0 | & | -| main.rs:2431:13:2431:16 | self | &T | main.rs:2425:5:2427:5 | Row | -| main.rs:2431:13:2431:21 | self.data | | {EXTERNAL LOCATION} | i64 | -| main.rs:2440:26:2442:9 | { ... } | | main.rs:2435:5:2437:5 | Table | -| main.rs:2441:13:2441:38 | Table {...} | | main.rs:2435:5:2437:5 | Table | -| main.rs:2441:27:2441:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:2441:27:2441:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:2441:27:2441:36 | ...::new(...) | T | main.rs:2425:5:2427:5 | Row | -| main.rs:2444:23:2444:27 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:2444:23:2444:27 | SelfParam | &T | main.rs:2435:5:2437:5 | Table | -| main.rs:2444:30:2444:37 | property | | main.rs:2444:40:2444:59 | ImplTraitTypeRepr | -| main.rs:2444:69:2446:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:2444:69:2446:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:2445:13:2445:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2445:13:2445:13 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:2450:9:2450:15 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2450:9:2450:15 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2450:9:2453:10 | ... .map(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2450:14:2450:14 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2452:22:2452:26 | "{x}\\n" | | file://:0:0:0:0 | & | -| main.rs:2452:22:2452:26 | "{x}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2452:22:2452:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2452:22:2452:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2455:13:2455:17 | table | | main.rs:2435:5:2437:5 | Table | -| main.rs:2455:21:2455:32 | ...::new(...) | | main.rs:2435:5:2437:5 | Table | -| main.rs:2456:13:2456:18 | result | | {EXTERNAL LOCATION} | i64 | -| main.rs:2456:22:2456:26 | table | | main.rs:2435:5:2437:5 | Table | -| main.rs:2456:22:2460:14 | table.count_with(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:2459:21:2459:21 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2466:5:2466:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2467:5:2467:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2467:20:2467:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2467:41:2467:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2483:5:2483:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2302:40:2304:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:2302:40:2304:9 | { ... } | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2302:40:2304:9 | { ... } | T.T | main.rs:2301:10:2301:19 | T | +| main.rs:2303:13:2303:16 | None | | {EXTERNAL LOCATION} | Option | +| main.rs:2303:13:2303:16 | None | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2303:13:2303:16 | None | T.T | main.rs:2301:10:2301:19 | T | +| main.rs:2306:30:2308:9 | { ... } | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2306:30:2308:9 | { ... } | T | main.rs:2301:10:2301:19 | T | +| main.rs:2307:13:2307:28 | S1(...) | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2307:13:2307:28 | S1(...) | T | main.rs:2301:10:2301:19 | T | +| main.rs:2307:16:2307:27 | ...::default(...) | | main.rs:2301:10:2301:19 | T | +| main.rs:2310:19:2310:22 | SelfParam | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2310:19:2310:22 | SelfParam | T | main.rs:2301:10:2301:19 | T | +| main.rs:2310:33:2312:9 | { ... } | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2310:33:2312:9 | { ... } | T | main.rs:2301:10:2301:19 | T | +| main.rs:2311:13:2311:16 | self | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2311:13:2311:16 | self | T | main.rs:2301:10:2301:19 | T | +| main.rs:2323:15:2323:15 | x | | main.rs:2323:12:2323:12 | T | +| main.rs:2323:26:2325:5 | { ... } | | main.rs:2323:12:2323:12 | T | +| main.rs:2324:9:2324:9 | x | | main.rs:2323:12:2323:12 | T | +| main.rs:2328:13:2328:14 | x1 | | {EXTERNAL LOCATION} | Option | +| main.rs:2328:13:2328:14 | x1 | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2328:13:2328:14 | x1 | T.T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2328:34:2328:48 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2328:34:2328:48 | ...::assoc_fun(...) | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2328:34:2328:48 | ...::assoc_fun(...) | T.T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2329:13:2329:14 | x2 | | {EXTERNAL LOCATION} | Option | +| main.rs:2329:13:2329:14 | x2 | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2329:13:2329:14 | x2 | T.T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2329:18:2329:38 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2329:18:2329:38 | ...::assoc_fun(...) | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2329:18:2329:38 | ...::assoc_fun(...) | T.T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2330:13:2330:14 | x3 | | {EXTERNAL LOCATION} | Option | +| main.rs:2330:13:2330:14 | x3 | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2330:13:2330:14 | x3 | T.T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2330:18:2330:32 | ...::assoc_fun(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2330:18:2330:32 | ...::assoc_fun(...) | T | main.rs:2296:5:2296:20 | S1 | +| main.rs:2330:18:2330:32 | ...::assoc_fun(...) | T.T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2331:13:2331:14 | x4 | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2331:13:2331:14 | x4 | T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2331:18:2331:48 | ...::method(...) | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2331:18:2331:48 | ...::method(...) | T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2331:35:2331:47 | ...::default(...) | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2331:35:2331:47 | ...::default(...) | T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2332:13:2332:14 | x5 | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2332:13:2332:14 | x5 | T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2332:18:2332:42 | ...::method(...) | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2332:18:2332:42 | ...::method(...) | T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2332:29:2332:41 | ...::default(...) | | main.rs:2296:5:2296:20 | S1 | +| main.rs:2332:29:2332:41 | ...::default(...) | T | main.rs:2298:5:2299:14 | S2 | +| main.rs:2333:13:2333:14 | x6 | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2333:13:2333:14 | x6 | T4 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2333:18:2333:45 | S4::<...>(...) | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2333:18:2333:45 | S4::<...>(...) | T4 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2333:27:2333:44 | ...::default(...) | | main.rs:2298:5:2299:14 | S2 | +| main.rs:2334:13:2334:14 | x7 | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2334:13:2334:14 | x7 | T4 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2334:18:2334:23 | S4(...) | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2334:18:2334:23 | S4(...) | T4 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2334:21:2334:22 | S2 | | main.rs:2298:5:2299:14 | S2 | +| main.rs:2335:13:2335:14 | x8 | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2335:13:2335:14 | x8 | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2335:18:2335:22 | S4(...) | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2335:18:2335:22 | S4(...) | T4 | {EXTERNAL LOCATION} | i32 | +| main.rs:2335:21:2335:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2336:13:2336:14 | x9 | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2336:13:2336:14 | x9 | T4 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2336:18:2336:34 | S4(...) | | main.rs:2317:5:2317:27 | S4 | +| main.rs:2336:18:2336:34 | S4(...) | T4 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2336:21:2336:33 | ...::default(...) | | main.rs:2298:5:2299:14 | S2 | +| main.rs:2337:13:2337:15 | x10 | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2337:13:2337:15 | x10 | T5 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2337:19:2340:9 | S5::<...> {...} | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2337:19:2340:9 | S5::<...> {...} | T5 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2339:20:2339:37 | ...::default(...) | | main.rs:2298:5:2299:14 | S2 | +| main.rs:2341:13:2341:15 | x11 | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2341:13:2341:15 | x11 | T5 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2341:19:2341:34 | S5 {...} | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2341:19:2341:34 | S5 {...} | T5 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2341:31:2341:32 | S2 | | main.rs:2298:5:2299:14 | S2 | +| main.rs:2342:13:2342:15 | x12 | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2342:13:2342:15 | x12 | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2342:19:2342:33 | S5 {...} | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2342:19:2342:33 | S5 {...} | T5 | {EXTERNAL LOCATION} | i32 | +| main.rs:2342:31:2342:31 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2343:13:2343:15 | x13 | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2343:13:2343:15 | x13 | T5 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2343:19:2346:9 | S5 {...} | | main.rs:2319:5:2321:5 | S5 | +| main.rs:2343:19:2346:9 | S5 {...} | T5 | main.rs:2298:5:2299:14 | S2 | +| main.rs:2345:20:2345:32 | ...::default(...) | | main.rs:2298:5:2299:14 | S2 | +| main.rs:2347:13:2347:15 | x14 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2347:19:2347:48 | foo::<...>(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2347:30:2347:47 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| main.rs:2355:35:2357:9 | { ... } | | file://:0:0:0:0 | (T_2) | +| main.rs:2355:35:2357:9 | { ... } | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2355:35:2357:9 | { ... } | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2356:13:2356:26 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2356:13:2356:26 | TupleExpr | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2356:13:2356:26 | TupleExpr | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2356:14:2356:18 | S1 {...} | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2356:21:2356:25 | S1 {...} | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2358:16:2358:19 | SelfParam | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2362:13:2362:13 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2362:13:2362:13 | a | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2362:13:2362:13 | a | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2362:17:2362:30 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2362:17:2362:30 | ...::get_pair(...) | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2362:17:2362:30 | ...::get_pair(...) | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2363:17:2363:17 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2363:17:2363:17 | b | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2363:17:2363:17 | b | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2363:21:2363:34 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2363:21:2363:34 | ...::get_pair(...) | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2363:21:2363:34 | ...::get_pair(...) | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2364:13:2364:18 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2364:13:2364:18 | TuplePat | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2364:13:2364:18 | TuplePat | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2364:14:2364:14 | c | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2364:17:2364:17 | d | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2364:22:2364:35 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2364:22:2364:35 | ...::get_pair(...) | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2364:22:2364:35 | ...::get_pair(...) | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2365:13:2365:22 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2365:13:2365:22 | TuplePat | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2365:13:2365:22 | TuplePat | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2365:18:2365:18 | e | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2365:21:2365:21 | f | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2365:26:2365:39 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2365:26:2365:39 | ...::get_pair(...) | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2365:26:2365:39 | ...::get_pair(...) | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2366:13:2366:26 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2366:13:2366:26 | TuplePat | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2366:13:2366:26 | TuplePat | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2366:18:2366:18 | g | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2366:25:2366:25 | h | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2366:30:2366:43 | ...::get_pair(...) | | file://:0:0:0:0 | (T_2) | +| main.rs:2366:30:2366:43 | ...::get_pair(...) | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2366:30:2366:43 | ...::get_pair(...) | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2368:9:2368:9 | a | | file://:0:0:0:0 | (T_2) | +| main.rs:2368:9:2368:9 | a | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2368:9:2368:9 | a | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2368:9:2368:11 | a.0 | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2369:9:2369:9 | b | | file://:0:0:0:0 | (T_2) | +| main.rs:2369:9:2369:9 | b | 0(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2369:9:2369:9 | b | 1(2) | main.rs:2352:5:2352:16 | S1 | +| main.rs:2369:9:2369:11 | b.1 | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2370:9:2370:9 | c | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2371:9:2371:9 | d | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2372:9:2372:9 | e | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2373:9:2373:9 | f | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2374:9:2374:9 | g | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2375:9:2375:9 | h | | main.rs:2352:5:2352:16 | S1 | +| main.rs:2380:13:2380:13 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2380:17:2380:34 | ...::default(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2381:13:2381:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2381:17:2381:34 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| main.rs:2382:13:2382:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2382:13:2382:16 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2382:13:2382:16 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2382:20:2382:25 | TupleExpr | | file://:0:0:0:0 | (T_2) | +| main.rs:2382:20:2382:25 | TupleExpr | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2382:20:2382:25 | TupleExpr | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2382:21:2382:21 | a | | {EXTERNAL LOCATION} | i64 | +| main.rs:2382:24:2382:24 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:2383:13:2383:13 | i | | {EXTERNAL LOCATION} | i64 | +| main.rs:2383:22:2383:25 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2383:22:2383:25 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2383:22:2383:25 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2383:22:2383:27 | pair.0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2384:13:2384:13 | j | | {EXTERNAL LOCATION} | bool | +| main.rs:2384:23:2384:26 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2384:23:2384:26 | pair | 0(2) | {EXTERNAL LOCATION} | i64 | +| main.rs:2384:23:2384:26 | pair | 1(2) | {EXTERNAL LOCATION} | bool | +| main.rs:2384:23:2384:28 | pair.1 | | {EXTERNAL LOCATION} | bool | +| main.rs:2386:13:2386:16 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2386:13:2386:16 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2386:13:2386:16 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2386:20:2386:25 | [...] | | file://:0:0:0:0 | [] | +| main.rs:2386:20:2386:25 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| main.rs:2386:20:2386:32 | ... .into() | | file://:0:0:0:0 | (T_2) | +| main.rs:2386:20:2386:32 | ... .into() | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2386:20:2386:32 | ... .into() | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2386:21:2386:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2386:24:2386:24 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2387:15:2387:18 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2387:15:2387:18 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2387:15:2387:18 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2388:13:2388:17 | TuplePat | | file://:0:0:0:0 | (T_2) | +| main.rs:2388:13:2388:17 | TuplePat | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2388:13:2388:17 | TuplePat | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2388:14:2388:14 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2388:16:2388:16 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2388:29:2388:40 | "unexpected" | | file://:0:0:0:0 | & | +| main.rs:2388:29:2388:40 | "unexpected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2388:29:2388:40 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2388:29:2388:40 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2389:13:2389:13 | _ | | file://:0:0:0:0 | (T_2) | +| main.rs:2389:13:2389:13 | _ | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2389:13:2389:13 | _ | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2389:25:2389:34 | "expected" | | file://:0:0:0:0 | & | +| main.rs:2389:25:2389:34 | "expected" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2389:25:2389:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2389:25:2389:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2391:13:2391:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:2391:17:2391:20 | pair | | file://:0:0:0:0 | (T_2) | +| main.rs:2391:17:2391:20 | pair | 0(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2391:17:2391:20 | pair | 1(2) | {EXTERNAL LOCATION} | i32 | +| main.rs:2391:17:2391:22 | pair.0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2398:13:2398:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2398:13:2398:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2398:13:2398:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2398:27:2398:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2398:27:2398:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2398:27:2398:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2398:36:2398:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2401:15:2401:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2401:15:2401:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2401:15:2401:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2402:13:2402:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2402:13:2402:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2402:13:2402:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2402:17:2402:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2403:26:2403:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2403:26:2403:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2403:26:2403:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2403:26:2403:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2405:13:2405:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2405:13:2405:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2405:13:2405:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2407:26:2407:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2407:26:2407:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2407:26:2407:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2407:26:2407:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2412:13:2412:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2412:13:2412:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2412:13:2412:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2412:13:2412:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2412:13:2412:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2412:26:2412:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2412:26:2412:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2412:26:2412:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2412:26:2412:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2412:26:2412:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2412:35:2412:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2412:35:2412:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2412:35:2412:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2412:44:2412:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2413:15:2413:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2413:15:2413:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2413:15:2413:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2413:15:2413:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2413:15:2413:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2414:13:2414:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2414:13:2414:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2414:13:2414:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2414:13:2414:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2414:13:2414:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2416:26:2416:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2416:26:2416:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2416:26:2416:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2416:26:2416:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2428:16:2428:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2428:16:2428:20 | SelfParam | &T | main.rs:2423:5:2425:5 | Row | +| main.rs:2428:30:2430:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2429:13:2429:16 | self | | file://:0:0:0:0 | & | +| main.rs:2429:13:2429:16 | self | &T | main.rs:2423:5:2425:5 | Row | +| main.rs:2429:13:2429:21 | self.data | | {EXTERNAL LOCATION} | i64 | +| main.rs:2438:26:2440:9 | { ... } | | main.rs:2433:5:2435:5 | Table | +| main.rs:2439:13:2439:38 | Table {...} | | main.rs:2433:5:2435:5 | Table | +| main.rs:2439:27:2439:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:2439:27:2439:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2439:27:2439:36 | ...::new(...) | T | main.rs:2423:5:2425:5 | Row | +| main.rs:2442:23:2442:27 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:2442:23:2442:27 | SelfParam | &T | main.rs:2433:5:2435:5 | Table | +| main.rs:2442:30:2442:37 | property | | main.rs:2442:40:2442:59 | ImplTraitTypeRepr | +| main.rs:2442:69:2444:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:2442:69:2444:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:2443:13:2443:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2443:13:2443:13 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:2448:9:2448:15 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2448:9:2448:15 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2448:9:2451:10 | ... .map(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2448:14:2448:14 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2450:22:2450:26 | "{x}\\n" | | file://:0:0:0:0 | & | +| main.rs:2450:22:2450:26 | "{x}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2450:22:2450:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2450:22:2450:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2453:13:2453:17 | table | | main.rs:2433:5:2435:5 | Table | +| main.rs:2453:21:2453:32 | ...::new(...) | | main.rs:2433:5:2435:5 | Table | +| main.rs:2454:13:2454:18 | result | | {EXTERNAL LOCATION} | i64 | +| main.rs:2454:22:2454:26 | table | | main.rs:2433:5:2435:5 | Table | +| main.rs:2454:22:2458:14 | table.count_with(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:2457:21:2457:21 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2467:5:2467:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2468:5:2468:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2468:20:2468:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2468:41:2468:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2484:5:2484:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected index bd02a006dc88..22e607bfa486 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -9,8 +9,6 @@ multipleCallTargets | lifetime.rs:612:41:612:52 | bar.as_str() | | lifetime.rs:628:13:628:31 | ...::from(...) | | lifetime.rs:629:32:629:43 | baz.as_str() | -| main.rs:41:8:41:24 | ...::into_raw(...) | -| main.rs:80:11:80:27 | ...::into_raw(...) | multiplePathResolutions | deallocation.rs:106:16:106:19 | libc | | deallocation.rs:112:3:112:6 | libc |