Merge pull request #20084 from paldepind/rust/type-inference-trait-object

Rust: Implement type inference for trait objects/`dyn` types
This commit is contained in:
Simon Friis Vindum
2025-07-24 10:17:23 +02:00
committed by GitHub
11 changed files with 640 additions and 311 deletions

View File

@@ -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

1
rust/ql/.gitattributes generated vendored
View File

@@ -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

View File

@@ -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())
}
}
}

View File

@@ -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()

View File

@@ -97,6 +97,9 @@ private module Input1 implements InputSig1<Location> {
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<Location> {
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)

View File

@@ -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<A, B, ..> Trait<A, B, ..> for (dyn Trait)<A, B, ..>
// ```
// 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)
)
}
}

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Type inference now supports trait objects, i.e., `dyn Trait` types.

View File

@@ -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<A> {
// 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<A: Clone + Debug> {
value: A,
}
impl<A: Clone + Debug> GenericGet<A> for GenStruct<A> {
// GenStruct<A>::get
fn get(&self) -> A {
self.value.clone() // $ fieldof=GenStruct target=clone
}
}
fn get_a<A, G: GenericGet<A> + ?Sized>(a: &G) -> A {
a.get() // $ target=GenericGet::get
}
fn get_box_trait<A: Clone + Debug + 'static>(a: A) -> Box<dyn GenericGet<A>> {
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<String>) {
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
}

View File

@@ -2292,8 +2292,6 @@ mod loops {
}
}
mod dereference;
mod explicit_type_args {
struct S1<T>(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
}

View File

@@ -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 |

View File

@@ -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 |