diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index f30625807b43..102b505e872b 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -110,18 +110,15 @@ pragma[nomagic] private ItemNode getAChildSuccessor(ItemNode item, string name, SuccessorKind kind) { item = result.getImmediateParent() and name = result.getName() and + // Associated types in `impl` and `trait` blocks are handled elsewhere + not (item instanceof ImplOrTraitItemNode and result instanceof AssocItem) and // type parameters are only available inside the declaring item if result instanceof TypeParam then kind.isInternal() else - // associated items must always be qualified, also within the declaring - // item (using `Self`) - if item instanceof ImplOrTraitItemNode and result instanceof AssocItem - then kind.isExternal() - else - if result.isPublic() - then kind.isBoth() - else kind.isInternal() + if result.isPublic() + then kind.isBoth() + else kind.isInternal() } private module UseOption = Option; @@ -327,30 +324,24 @@ abstract class ItemNode extends Locatable { ) ) or - // a trait has access to the associated items of its supertraits - this = - any(TraitItemNodeImpl trait | - result = trait.resolveABoundCand().getASuccessor(name, kind, useOpt) and - kind.isExternalOrBoth() and - result instanceof AssocItemNode and - not trait.hasAssocItem(name) - ) + exists(TraitItemNodeImpl trait | this = trait | + result = trait.getAssocItem(name) + or + // a trait has access to the associated items of its supertraits + not trait.hasAssocItem(name) and + result = trait.resolveABoundCand().getASuccessor(name).(AssocItemNode) + ) and + kind.isExternal() and + useOpt.isNone() or // items made available by an implementation where `this` is the implementing type - typeImplEdge(this, _, name, kind, result, useOpt) - or - // trait items with default implementations made available in an implementation - exists(ImplItemNodeImpl impl, TraitItemNode trait | - this = impl and - trait = impl.resolveTraitTyCand() and - result = trait.getASuccessor(name, kind, useOpt) and - // do not inherit default implementations from super traits; those are inherited by - // their `impl` blocks - result = trait.getAssocItem(name) and - result.(AssocItemNode).hasImplementation() and - kind.isExternalOrBoth() and - not impl.hasAssocItem(name) - ) + typeImplEdge(this, _, name, result) and + kind.isExternal() and + useOpt.isNone() + or + implEdge(this, name, result) and + kind.isExternal() and + useOpt.isNone() or // type parameters have access to the associated items of its bounds result = @@ -413,14 +404,8 @@ abstract class ItemNode extends Locatable { this instanceof SourceFile and builtin(name, result) or - exists(ImplOrTraitItemNode i | - name = "Self" and - this = i.getAnItemInSelfScope() - | - result = i.(Trait) - or - result = i.(ImplItemNodeImpl).resolveSelfTyCand() - ) + name = "Self" and + this = result.(ImplOrTraitItemNode).getAnItemInSelfScope() or name = "crate" and this = result.(CrateItemNode).getASourceFile() @@ -755,7 +740,7 @@ abstract class ImplOrTraitItemNode extends ItemNode { } /** Gets an associated item belonging to this trait or `impl` block. */ - abstract AssocItemNode getAnAssocItem(); + AssocItemNode getAnAssocItem() { result = this.getADescendant() } /** Gets the associated item named `name` belonging to this trait or `impl` block. */ pragma[nomagic] @@ -807,8 +792,6 @@ final class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { TraitItemNode resolveTraitTy() { result = resolvePath(this.getTraitPath()) } - override AssocItemNode getAnAssocItem() { result = this.getADescendant() } - override string getName() { result = "(impl)" } override Namespace getNamespace() { @@ -985,6 +968,18 @@ private class ImplItemNodeImpl extends ImplItemNode { } TraitItemNodeImpl resolveTraitTyCand() { result = resolvePathCand(this.getTraitPath()) } + + /** + * Gets the associated item named `name` in this impl block or the default + * inherited from the trait being implemented. + */ + AssocItemNode getAssocItemOrDefault(string name) { + result = this.getAssocItem(name) + or + not this.hasAssocItem(name) and + result = this.resolveTraitTyCand().getAssocItem(name) and + result.hasImplementation() + } } private class StructItemNode extends TypeItemTypeItemNode, ParameterizableItemNode instanceof Struct @@ -1020,8 +1015,6 @@ final class TraitItemNode extends ImplOrTraitItemNode, TypeItemNode instanceof T ItemNode resolveABound() { result = this.resolveBound(_) } - override AssocItemNode getAnAssocItem() { result = this.getADescendant() } - override string getName() { result = Trait.super.getName().getText() } override Namespace getNamespace() { result.isType() } @@ -1852,35 +1845,12 @@ private predicate checkQualifiedVisibility( not i instanceof TypeParam } -pragma[nomagic] -private predicate isImplSelfQualifiedPath( - ImplItemNode impl, PathExt qualifier, PathExt path, string name -) { - qualifier = impl.getASelfPath() and - qualifier = path.getQualifier() and - name = path.getText() -} - -private ItemNode resolveImplSelfQualified(PathExt qualifier, PathExt path, Namespace ns) { - exists(ImplItemNode impl, string name | - isImplSelfQualifiedPath(impl, qualifier, path, name) and - result = impl.getAssocItem(name) and - ns = result.getNamespace() - ) -} - /** * Gets the item that `path` resolves to in `ns` when `qualifier` is the * qualifier of `path` and `qualifier` resolves to `q`, if any. */ pragma[nomagic] private ItemNode resolvePathCandQualified(PathExt qualifier, ItemNode q, PathExt path, Namespace ns) { - // Special case for `Self::Assoc`; this always refers to the associated - // item in the enclosing `impl` block, if available. - q = resolvePathCandQualifier(qualifier, path, _) and - result = resolveImplSelfQualified(qualifier, path, ns) - or - not exists(resolveImplSelfQualified(qualifier, path, ns)) and exists(string name, SuccessorKind kind, UseOption useOpt | q = resolvePathCandQualifier(qualifier, path, name) and result = getASuccessor(q, name, ns, kind, useOpt) and @@ -1940,6 +1910,37 @@ private predicate macroExportEdge(CrateItemNode crate, string name, MacroItemNod name = macro.getName() } +/** + * Holds if a `Self` path inside `impl` might refer to a function named `name` + * from another impl block. + */ +pragma[nomagic] +private predicate relevantSelfFunctionName(ImplItemNodeImpl impl, string name) { + any(Path path | path.getQualifier() = impl.getASelfPath()).getText() = name and + not impl.hasAssocItem(name) +} + +/** + * Holds if `impl` has a `node` available externally at `name`. + * + * Since `Self` in an impl block resolves to the impl block, this corresponds to + * the items that should be available on `Self` within the `impl` block. + */ +private predicate implEdge(ImplItemNodeImpl impl, string name, AssocItemNode node) { + node = impl.getAssocItemOrDefault(name) + or + // Associated types from the implemented trait are available on `Self`. + not impl.hasAssocItem(name) and + node = impl.resolveTraitTyCand().getASuccessor(name).(TypeAliasItemNode) + or + // Items available on the implementing type are available on `Self`. We only + // add these edges when they are relevant. If a type has `n` impl blocks with + // `m` functions each, we would otherwise end up always constructing somethong + // proportional to `O(n * m)`. + relevantSelfFunctionName(impl, name) and + node = impl.resolveSelfTyCand().getASuccessor(name) +} + /** * Holds if item `i` contains a `mod` or `extern crate` definition that * makes the macro `macro` named `name` available using a `#[macro_use]` @@ -1984,7 +1985,9 @@ private ItemNode resolvePathCand(PathExt path) { then result instanceof TraitItemNode else if path = any(PathTypeRepr p).getPath() - then result instanceof TypeItemNode + then + result instanceof TypeItemNode or + result instanceof ImplItemNodeImpl else if path instanceof IdentPat then @@ -2011,7 +2014,7 @@ private ItemNode resolvePathCand(PathExt path) { private Trait getResolvePathTraitUsed(PathExt path, AssocItemNode node) { exists(TypeItemNode type, ImplItemNodeImpl impl | node = resolvePathCandQualified(_, type, path, _) and - typeImplEdge(type, impl, _, _, node, _) and + typeImplEdge(type, impl, _, node) and result = impl.resolveTraitTyCand() ) } @@ -2182,12 +2185,14 @@ private predicate externCrateEdge( * makes `assoc` available as `name` at `kind`. */ private predicate typeImplEdge( - TypeItemNode typeItem, ImplItemNodeImpl impl, string name, SuccessorKind kind, - AssocItemNode assoc, UseOption useOpt + TypeItemNode typeItem, ImplItemNodeImpl impl, string name, AssocItemNode assoc ) { + assoc = impl.getAssocItemOrDefault(name) and typeItem = impl.resolveSelfTyCand() and - assoc = impl.getASuccessor(name, kind, useOpt) and - kind.isExternalOrBoth() + // Functions in `impl` blocks are made available on the implementing type + // (e.g., `S::fun` is valid) but associated types are not (e.g., `S::Output` + // is invalid). + (assoc instanceof FunctionItemNode or assoc instanceof ConstItemNode) } pragma[nomagic] diff --git a/rust/ql/test/library-tests/definitions/Definitions.expected b/rust/ql/test/library-tests/definitions/Definitions.expected index 23ad4e291de3..b051c264a830 100644 --- a/rust/ql/test/library-tests/definitions/Definitions.expected +++ b/rust/ql/test/library-tests/definitions/Definitions.expected @@ -1,12 +1,12 @@ | main.rs:3:5:3:7 | lib | lib.rs:1:1:1:1 | SourceFile | file | | main.rs:9:14:9:14 | S | main.rs:7:9:7:21 | struct S | path | -| main.rs:10:36:10:39 | Self | main.rs:7:9:7:21 | struct S | path | +| main.rs:10:36:10:39 | Self | main.rs:9:9:13:9 | impl S { ... } | path | | main.rs:11:17:11:17 | S | main.rs:7:9:7:21 | struct S | path | | main.rs:16:22:16:22 | T | main.rs:16:19:16:19 | T | path | | main.rs:18:13:18:14 | S2 | main.rs:16:5:16:24 | struct S2 | path | | main.rs:18:16:18:16 | T | main.rs:18:10:18:10 | T | path | | main.rs:19:23:19:23 | T | main.rs:18:10:18:10 | T | path | -| main.rs:19:29:19:32 | Self | main.rs:16:5:16:24 | struct S2 | path | +| main.rs:19:29:19:32 | Self | main.rs:18:5:22:5 | impl S2::<...> { ... } | path | | main.rs:20:13:20:14 | S2 | main.rs:16:5:16:24 | struct S2 | path | | main.rs:20:16:20:16 | x | main.rs:19:20:19:20 | x | local variable | | main.rs:29:5:29:11 | println | {EXTERNAL LOCATION} | MacroRules | path | diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index 761e97fced1e..3088b2d1a553 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -716,13 +716,13 @@ mod m23 { #[rustfmt::skip] impl Trait1< - Self // $ item=I4 + Self // $ item=implTrait1forS > // $ item=I2 for S { // $ item=I4 fn f(&self) { println!("m23::>::f"); // $ item=println } // I5 - } + } // implTrait1forS #[rustfmt::skip] pub fn f() { @@ -870,6 +870,71 @@ mod associated_types { } } +mod associated_types_subtrait { + trait Super { + type Out; // SuperAssoc + } // Super + + trait Sub: Super // $ item=Super + { + fn f() -> Self::Out // $ item=SuperAssoc + ; // Sub_f + } // Sub + + struct S( + ST, // $ item=ST + ); + + #[rustfmt::skip] + impl Super for S { // $ item=Super item=S item=i32 + type Out = char // $ item=char + ; // S::Out + } + + #[rustfmt::skip] + impl Super for S { // $ item=Super item=S item=bool + type Out = i64 // $ item=i64 + ; // S::Out + } + + #[rustfmt::skip] + impl Sub for S { // $ item=Sub item=S item=i32 + fn f() -> Self::Out { // $ item=SuperAssoc + 'a' + } + } + + #[rustfmt::skip] + impl Sub for S { // $ item=Sub item=S item=bool + fn f() -> Self::Out { // $ item=SuperAssoc + 1 + } + } + + trait SuperAlt { + type Out; // SuperAltAssoc + } // SuperAlt + + trait SubAlt: SuperAlt // $ item=SuperAlt + { + fn f(self) -> Self::Out // $ item=SuperAltAssoc + ; // SubAlt_f + } // SubAlt + + #[rustfmt::skip] + impl SuperAlt for S { // $ item=SuperAlt item=S item=A + type Out = A // $ item=A + ; // S::Out + } + + #[rustfmt::skip] + impl SubAlt for S { // $ item=SubAlt item=S item=A + fn f(self) -> Self::Out { // $ item=SuperAltAssoc + self.0 + } + } +} + use std::{self as ztd}; // $ item=std fn use_ztd(x: ztd::string::String) {} // $ item=String diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index c6bac60b4123..d55b5adda5c3 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -31,8 +31,9 @@ mod | main.rs:707:1:732:1 | mod m23 | | main.rs:734:1:802:1 | mod m24 | | main.rs:819:1:871:1 | mod associated_types | -| main.rs:877:1:896:1 | mod impl_with_attribute_macro | -| main.rs:898:1:939:1 | mod patterns | +| main.rs:873:1:936:1 | mod associated_types_subtrait | +| main.rs:942:1:961:1 | mod impl_with_attribute_macro | +| main.rs:963:1:1004:1 | mod patterns | | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:20:1:20:12 | mod my3 | | my2/mod.rs:22:1:23:10 | mod mymod | @@ -73,7 +74,7 @@ resolvePath | main.rs:37:17:37:24 | ...::f | main.rs:26:9:28:9 | fn f | | main.rs:39:17:39:23 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:40:17:40:17 | f | main.rs:26:9:28:9 | fn f | -| main.rs:47:9:47:13 | super | main.rs:1:1:978:2 | SourceFile | +| main.rs:47:9:47:13 | super | main.rs:1:1:1043:2 | SourceFile | | main.rs:47:9:47:17 | ...::m1 | main.rs:20:1:44:1 | mod m1 | | main.rs:47:9:47:21 | ...::m2 | main.rs:25:5:43:5 | mod m2 | | main.rs:47:9:47:24 | ...::g | main.rs:30:9:34:9 | fn g | @@ -88,7 +89,7 @@ resolvePath | main.rs:68:17:68:19 | Foo | main.rs:66:9:66:21 | struct Foo | | main.rs:71:13:71:15 | Foo | main.rs:60:5:60:17 | struct Foo | | main.rs:73:5:73:5 | f | main.rs:62:5:69:5 | fn f | -| main.rs:75:5:75:8 | self | main.rs:1:1:978:2 | SourceFile | +| main.rs:75:5:75:8 | self | main.rs:1:1:1043:2 | SourceFile | | main.rs:75:5:75:11 | ...::i | main.rs:78:1:90:1 | fn i | | main.rs:79:5:79:11 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:81:13:81:15 | Foo | main.rs:55:1:55:13 | struct Foo | @@ -110,7 +111,7 @@ resolvePath | main.rs:112:9:112:15 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:118:9:118:15 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:122:9:122:15 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:125:13:125:17 | super | main.rs:1:1:978:2 | SourceFile | +| main.rs:125:13:125:17 | super | main.rs:1:1:1043:2 | SourceFile | | main.rs:125:13:125:21 | ...::m5 | main.rs:110:1:114:1 | mod m5 | | main.rs:126:9:126:9 | f | main.rs:111:5:113:5 | fn f | | main.rs:126:9:126:9 | f | main.rs:117:5:119:5 | fn f | @@ -133,7 +134,7 @@ resolvePath | main.rs:169:22:169:29 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | | main.rs:171:13:171:19 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:172:13:172:13 | f | main.rs:164:5:166:5 | fn f | -| main.rs:173:13:173:16 | Self | main.rs:162:5:162:22 | struct MyStruct | +| main.rs:173:13:173:16 | Self | main.rs:168:5:179:5 | impl MyTrait for MyStruct { ... } | | main.rs:173:13:173:19 | ...::g | main.rs:176:9:178:9 | fn g | | main.rs:177:13:177:19 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:182:10:182:17 | MyStruct | main.rs:162:5:162:22 | struct MyStruct | @@ -197,7 +198,7 @@ resolvePath | main.rs:341:10:341:15 | Trait1 | main.rs:307:5:311:5 | trait Trait1 | | main.rs:342:11:342:11 | S | main.rs:338:5:338:13 | struct S | | main.rs:344:13:344:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:345:13:345:16 | Self | main.rs:338:5:338:13 | struct S | +| main.rs:345:13:345:16 | Self | main.rs:340:5:352:5 | impl Trait1 for S { ... } | | main.rs:345:13:345:19 | ...::g | main.rs:349:9:351:9 | fn g | | main.rs:350:13:350:19 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:355:10:355:15 | Trait2 | main.rs:313:5:321:5 | trait Trait2 | @@ -230,11 +231,11 @@ resolvePath | main.rs:418:11:418:11 | S | main.rs:412:5:412:13 | struct S | | main.rs:419:24:419:24 | S | main.rs:412:5:412:13 | struct S | | main.rs:420:13:420:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:421:13:421:16 | Self | main.rs:412:5:412:13 | struct S | +| main.rs:421:13:421:16 | Self | main.rs:414:5:432:5 | impl Trait1::<...> for S { ... } | | main.rs:421:13:421:19 | ...::g | main.rs:425:9:428:9 | fn g | | main.rs:425:24:425:24 | S | main.rs:412:5:412:13 | struct S | | main.rs:426:13:426:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:427:13:427:16 | Self | main.rs:412:5:412:13 | struct S | +| main.rs:427:13:427:16 | Self | main.rs:414:5:432:5 | impl Trait1::<...> for S { ... } | | main.rs:427:13:427:19 | ...::c | main.rs:430:9:431:9 | Const | | main.rs:430:18:430:18 | S | main.rs:412:5:412:13 | struct S | | main.rs:430:22:430:22 | S | main.rs:412:5:412:13 | struct S | @@ -242,10 +243,10 @@ resolvePath | main.rs:436:7:436:7 | S | main.rs:412:5:412:13 | struct S | | main.rs:438:11:438:11 | S | main.rs:412:5:412:13 | struct S | | main.rs:439:24:439:24 | S | main.rs:412:5:412:13 | struct S | -| main.rs:440:13:440:16 | Self | main.rs:412:5:412:13 | struct S | +| main.rs:440:13:440:16 | Self | main.rs:434:5:444:5 | impl Trait2::<...> for S { ... } | | main.rs:440:13:440:19 | ...::g | main.rs:425:9:428:9 | fn g | | main.rs:441:13:441:19 | println | {EXTERNAL LOCATION} | MacroRules | -| main.rs:442:13:442:16 | Self | main.rs:412:5:412:13 | struct S | +| main.rs:442:13:442:16 | Self | main.rs:434:5:444:5 | impl Trait2::<...> for S { ... } | | main.rs:442:13:442:19 | ...::c | main.rs:430:9:431:9 | Const | | main.rs:448:9:448:15 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:449:17:449:17 | S | main.rs:412:5:412:13 | struct S | @@ -267,42 +268,42 @@ resolvePath | main.rs:487:10:487:15 | Trait3 | main.rs:472:5:476:5 | trait Trait3 | | main.rs:487:21:487:22 | S2 | main.rs:484:5:484:14 | struct S2 | | main.rs:488:26:488:28 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:492:20:492:23 | Self | main.rs:484:5:484:14 | struct S2 | +| main.rs:492:20:492:23 | Self | main.rs:486:5:494:5 | impl Trait3 for S2 { ... } | | main.rs:492:20:492:34 | ...::AssocType | main.rs:487:26:489:9 | type AssocType | | main.rs:497:10:497:15 | Trait4 | main.rs:478:5:482:5 | trait Trait4 | | main.rs:497:21:497:22 | S2 | main.rs:484:5:484:14 | struct S2 | | main.rs:498:26:498:29 | bool | {EXTERNAL LOCATION} | struct bool | -| main.rs:502:13:502:16 | Self | main.rs:484:5:484:14 | struct S2 | +| main.rs:502:13:502:16 | Self | main.rs:496:5:506:5 | impl Trait4 for S2 { ... } | | main.rs:502:13:502:19 | ...::f | main.rs:489:11:493:9 | fn f | | main.rs:503:13:503:14 | S2 | main.rs:484:5:484:14 | struct S2 | | main.rs:503:13:503:17 | ...::f | main.rs:489:11:493:9 | fn f | -| main.rs:504:20:504:23 | Self | main.rs:484:5:484:14 | struct S2 | +| main.rs:504:20:504:23 | Self | main.rs:496:5:506:5 | impl Trait4 for S2 { ... } | | main.rs:504:20:504:34 | ...::AssocType | main.rs:497:26:499:9 | type AssocType | | main.rs:511:23:511:26 | Self | main.rs:508:5:512:5 | trait Trait5 | | main.rs:511:23:511:33 | ...::Assoc | main.rs:509:9:509:19 | type Assoc | | main.rs:515:10:515:15 | Trait5 | main.rs:508:5:512:5 | trait Trait5 | | main.rs:515:21:515:21 | S | main.rs:412:5:412:13 | struct S | | main.rs:516:22:516:24 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:520:16:520:19 | Self | main.rs:412:5:412:13 | struct S | +| main.rs:520:16:520:19 | Self | main.rs:514:5:523:5 | impl Trait5 for S { ... } | | main.rs:520:16:520:26 | ...::Assoc | main.rs:515:25:517:9 | type Assoc | -| main.rs:521:13:521:16 | Self | main.rs:412:5:412:13 | struct S | +| main.rs:521:13:521:16 | Self | main.rs:514:5:523:5 | impl Trait5 for S { ... } | | main.rs:521:13:521:23 | ...::Assoc | main.rs:519:9:522:9 | fn Assoc | | main.rs:525:19:525:20 | T3 | main.rs:525:15:525:16 | T3 | | main.rs:528:10:528:15 | Trait5 | main.rs:508:5:512:5 | trait Trait5 | | main.rs:528:21:528:27 | S3::<...> | main.rs:525:5:525:22 | struct S3 | | main.rs:528:24:528:26 | i32 | {EXTERNAL LOCATION} | struct i32 | | main.rs:529:22:529:24 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:533:16:533:19 | Self | main.rs:525:5:525:22 | struct S3 | +| main.rs:533:16:533:19 | Self | main.rs:527:5:536:5 | impl Trait5 for S3::<...> { ... } | | main.rs:533:16:533:26 | ...::Assoc | main.rs:528:31:530:9 | type Assoc | -| main.rs:534:13:534:16 | Self | main.rs:525:5:525:22 | struct S3 | +| main.rs:534:13:534:16 | Self | main.rs:527:5:536:5 | impl Trait5 for S3::<...> { ... } | | main.rs:534:13:534:23 | ...::Assoc | main.rs:532:9:535:9 | fn Assoc | | main.rs:539:10:539:15 | Trait5 | main.rs:508:5:512:5 | trait Trait5 | | main.rs:539:21:539:28 | S3::<...> | main.rs:525:5:525:22 | struct S3 | | main.rs:539:24:539:27 | bool | {EXTERNAL LOCATION} | struct bool | | main.rs:540:22:540:25 | bool | {EXTERNAL LOCATION} | struct bool | -| main.rs:544:16:544:19 | Self | main.rs:525:5:525:22 | struct S3 | +| main.rs:544:16:544:19 | Self | main.rs:538:5:547:5 | impl Trait5 for S3::<...> { ... } | | main.rs:544:16:544:26 | ...::Assoc | main.rs:539:32:541:9 | type Assoc | -| main.rs:545:14:545:17 | Self | main.rs:525:5:525:22 | struct S3 | +| main.rs:545:14:545:17 | Self | main.rs:538:5:547:5 | impl Trait5 for S3::<...> { ... } | | main.rs:545:14:545:24 | ...::Assoc | main.rs:543:9:546:9 | fn Assoc | | main.rs:550:10:550:16 | S3::<...> | main.rs:525:5:525:22 | struct S3 | | main.rs:550:13:550:15 | i32 | {EXTERNAL LOCATION} | struct i32 | @@ -377,7 +378,7 @@ resolvePath | main.rs:701:21:701:29 | ...::A | main.rs:683:13:683:13 | A | | main.rs:702:21:702:28 | MyStruct | main.rs:686:9:686:28 | struct MyStruct | | main.rs:718:10:720:5 | Trait1::<...> | main.rs:708:5:713:5 | trait Trait1 | -| main.rs:719:7:719:10 | Self | main.rs:715:5:715:13 | struct S | +| main.rs:719:7:719:10 | Self | main.rs:717:5:725:5 | impl Trait1::<...> for S { ... } | | main.rs:721:11:721:11 | S | main.rs:715:5:715:13 | struct S | | main.rs:723:13:723:19 | println | {EXTERNAL LOCATION} | MacroRules | | main.rs:729:17:729:17 | S | main.rs:715:5:715:13 | struct S | @@ -436,120 +437,154 @@ resolvePath | main.rs:845:13:845:17 | Error | main.rs:841:13:841:17 | Error | | main.rs:848:22:851:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | | main.rs:849:13:849:17 | Input | main.rs:840:13:840:17 | Input | -| main.rs:850:13:850:16 | Self | main.rs:833:5:836:5 | struct MyImpl | +| main.rs:850:13:850:16 | Self | main.rs:838:5:870:5 | impl Reduce for MyImpl::<...> { ... } | | main.rs:850:13:850:23 | ...::Error | main.rs:852:11:856:9 | type Error | | main.rs:853:22:855:9 | Option::<...> | {EXTERNAL LOCATION} | enum Option | | main.rs:854:11:854:15 | Error | main.rs:841:13:841:17 | Error | | main.rs:858:13:858:17 | Input | main.rs:840:13:840:17 | Input | -| main.rs:863:19:863:22 | Self | main.rs:833:5:836:5 | struct MyImpl | +| main.rs:863:19:863:22 | Self | main.rs:838:5:870:5 | impl Reduce for MyImpl::<...> { ... } | | main.rs:863:19:863:29 | ...::Input | main.rs:848:9:852:9 | type Input | | main.rs:864:14:867:9 | Result::<...> | {EXTERNAL LOCATION} | enum Result | -| main.rs:865:13:865:16 | Self | main.rs:833:5:836:5 | struct MyImpl | +| main.rs:865:13:865:16 | Self | main.rs:838:5:870:5 | impl Reduce for MyImpl::<...> { ... } | | main.rs:865:13:865:24 | ...::Output | main.rs:856:11:859:9 | type Output | -| main.rs:866:13:866:16 | Self | main.rs:833:5:836:5 | struct MyImpl | +| main.rs:866:13:866:16 | Self | main.rs:838:5:870:5 | impl Reduce for MyImpl::<...> { ... } | | main.rs:866:13:866:23 | ...::Error | main.rs:852:11:856:9 | type Error | -| main.rs:873:5:873:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:873:11:873:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:875:15:875:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | -| main.rs:875:15:875:25 | ...::string | {EXTERNAL LOCATION} | mod string | -| main.rs:875:15:875:33 | ...::String | {EXTERNAL LOCATION} | struct String | -| main.rs:885:7:885:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | -| main.rs:885:7:885:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | -| main.rs:886:10:886:15 | ATrait | main.rs:881:5:883:5 | trait ATrait | -| main.rs:886:21:886:23 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:888:11:888:13 | i64 | {EXTERNAL LOCATION} | struct i64 | -| main.rs:894:17:894:19 | Foo | main.rs:879:5:879:15 | struct Foo | -| main.rs:900:22:900:32 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:900:29:900:31 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:901:17:901:20 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:902:17:902:27 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:902:24:902:26 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:903:13:903:16 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:904:17:904:20 | None | {EXTERNAL LOCATION} | None | -| main.rs:906:13:906:16 | None | {EXTERNAL LOCATION} | None | -| main.rs:907:17:907:20 | None | {EXTERNAL LOCATION} | None | -| main.rs:916:19:916:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | -| main.rs:916:26:916:28 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:917:26:917:29 | test | main.rs:899:5:913:5 | fn test | -| main.rs:923:14:923:16 | i32 | {EXTERNAL LOCATION} | struct i32 | -| main.rs:928:17:928:20 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:930:13:930:16 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:935:13:935:16 | Some | {EXTERNAL LOCATION} | Some | -| main.rs:935:18:935:18 | z | main.rs:922:5:924:12 | Const | -| main.rs:935:24:935:24 | z | main.rs:922:5:924:12 | Const | -| main.rs:942:5:942:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:942:5:942:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:942:5:942:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:942:5:942:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:942:5:942:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:943:5:943:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:943:5:943:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:944:5:944:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:944:5:944:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:944:5:944:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:944:5:944:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:945:5:945:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:946:5:946:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:947:5:947:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:947:5:947:12 | ...::h | main.rs:57:1:76:1 | fn h | -| main.rs:948:5:948:6 | m1 | main.rs:20:1:44:1 | mod m1 | -| main.rs:948:5:948:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | -| main.rs:948:5:948:13 | ...::g | main.rs:30:9:34:9 | fn g | -| main.rs:949:5:949:6 | m1 | main.rs:20:1:44:1 | mod m1 | -| main.rs:949:5:949:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | -| main.rs:949:5:949:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | -| main.rs:949:5:949:17 | ...::h | main.rs:37:27:41:13 | fn h | -| main.rs:950:5:950:6 | m4 | main.rs:46:1:53:1 | mod m4 | -| main.rs:950:5:950:9 | ...::i | main.rs:49:5:52:5 | fn i | -| main.rs:951:5:951:5 | h | main.rs:57:1:76:1 | fn h | -| main.rs:952:5:952:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:953:5:953:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:954:5:954:5 | j | main.rs:104:1:108:1 | fn j | -| main.rs:955:5:955:6 | m6 | main.rs:116:1:128:1 | mod m6 | -| main.rs:955:5:955:9 | ...::g | main.rs:121:5:127:5 | fn g | -| main.rs:956:5:956:6 | m7 | main.rs:130:1:149:1 | mod m7 | -| main.rs:956:5:956:9 | ...::f | main.rs:141:5:148:5 | fn f | -| main.rs:957:5:957:6 | m8 | main.rs:151:1:205:1 | mod m8 | -| main.rs:957:5:957:9 | ...::g | main.rs:189:5:204:5 | fn g | -| main.rs:958:5:958:6 | m9 | main.rs:207:1:215:1 | mod m9 | -| main.rs:958:5:958:9 | ...::f | main.rs:210:5:214:5 | fn f | -| main.rs:959:5:959:7 | m11 | main.rs:238:1:275:1 | mod m11 | -| main.rs:959:5:959:10 | ...::f | main.rs:243:5:246:5 | fn f | -| main.rs:960:5:960:7 | m15 | main.rs:306:1:375:1 | mod m15 | -| main.rs:960:5:960:10 | ...::f | main.rs:362:5:374:5 | fn f | -| main.rs:961:5:961:7 | m16 | main.rs:377:1:574:1 | mod m16 | -| main.rs:961:5:961:10 | ...::f | main.rs:446:5:470:5 | fn f | -| main.rs:962:5:962:20 | trait_visibility | main.rs:576:1:626:1 | mod trait_visibility | -| main.rs:962:5:962:23 | ...::f | main.rs:603:5:625:5 | fn f | -| main.rs:963:5:963:7 | m17 | main.rs:628:1:658:1 | mod m17 | -| main.rs:963:5:963:10 | ...::f | main.rs:652:5:657:5 | fn f | -| main.rs:964:5:964:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:964:5:964:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:965:5:965:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:965:5:965:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:966:5:966:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | -| main.rs:966:5:966:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:967:5:967:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:968:5:968:12 | my_alias | main.rs:1:1:1:7 | mod my | -| main.rs:968:5:968:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:969:5:969:7 | m18 | main.rs:660:1:678:1 | mod m18 | -| main.rs:969:5:969:12 | ...::m19 | main.rs:665:5:677:5 | mod m19 | -| main.rs:969:5:969:17 | ...::m20 | main.rs:670:9:676:9 | mod m20 | -| main.rs:969:5:969:20 | ...::g | main.rs:671:13:675:13 | fn g | -| main.rs:970:5:970:7 | m23 | main.rs:707:1:732:1 | mod m23 | -| main.rs:970:5:970:10 | ...::f | main.rs:727:5:731:5 | fn f | -| main.rs:971:5:971:7 | m24 | main.rs:734:1:802:1 | mod m24 | -| main.rs:971:5:971:10 | ...::f | main.rs:788:5:801:5 | fn f | -| main.rs:972:5:972:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:972:5:972:11 | ...::h | main.rs:57:1:76:1 | fn h | -| main.rs:973:5:973:13 | z_changed | main.rs:807:1:807:9 | fn z_changed | -| main.rs:974:5:974:11 | AStruct | main.rs:809:1:809:17 | struct AStruct | -| main.rs:974:5:974:22 | ...::z_on_type | main.rs:813:5:813:17 | fn z_on_type | -| main.rs:975:5:975:11 | AStruct | main.rs:809:1:809:17 | struct AStruct | -| main.rs:976:5:976:29 | impl_with_attribute_macro | main.rs:877:1:896:1 | mod impl_with_attribute_macro | -| main.rs:976:5:976:35 | ...::test | main.rs:892:5:895:5 | fn test | -| main.rs:977:5:977:12 | patterns | main.rs:898:1:939:1 | mod patterns | -| main.rs:977:5:977:18 | ...::test | main.rs:899:5:913:5 | fn test | +| main.rs:878:16:878:20 | Super | main.rs:874:5:876:5 | trait Super | +| main.rs:880:19:880:22 | Self | main.rs:878:5:882:5 | trait Sub | +| main.rs:880:19:880:27 | ...::Out | main.rs:875:9:875:17 | type Out | +| main.rs:885:9:885:10 | ST | main.rs:884:14:884:15 | ST | +| main.rs:889:10:889:14 | Super | main.rs:874:5:876:5 | trait Super | +| main.rs:889:20:889:25 | S::<...> | main.rs:884:5:886:6 | struct S | +| main.rs:889:22:889:24 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:890:20:890:23 | char | {EXTERNAL LOCATION} | struct char | +| main.rs:895:10:895:14 | Super | main.rs:874:5:876:5 | trait Super | +| main.rs:895:20:895:26 | S::<...> | main.rs:884:5:886:6 | struct S | +| main.rs:895:22:895:25 | bool | {EXTERNAL LOCATION} | struct bool | +| main.rs:896:20:896:22 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:901:10:901:12 | Sub | main.rs:878:5:882:5 | trait Sub | +| main.rs:901:18:901:23 | S::<...> | main.rs:884:5:886:6 | struct S | +| main.rs:901:20:901:22 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:902:19:902:22 | Self | main.rs:900:5:905:5 | impl Sub for S::<...> { ... } | +| main.rs:902:19:902:27 | ...::Out | main.rs:875:9:875:17 | type Out | +| main.rs:908:10:908:12 | Sub | main.rs:878:5:882:5 | trait Sub | +| main.rs:908:18:908:24 | S::<...> | main.rs:884:5:886:6 | struct S | +| main.rs:908:20:908:23 | bool | {EXTERNAL LOCATION} | struct bool | +| main.rs:909:19:909:22 | Self | main.rs:907:5:912:5 | impl Sub for S::<...> { ... } | +| main.rs:909:19:909:27 | ...::Out | main.rs:875:9:875:17 | type Out | +| main.rs:918:19:918:26 | SuperAlt | main.rs:914:5:916:5 | trait SuperAlt | +| main.rs:920:23:920:26 | Self | main.rs:918:5:922:5 | trait SubAlt | +| main.rs:920:23:920:31 | ...::Out | main.rs:915:9:915:17 | type Out | +| main.rs:925:13:925:20 | SuperAlt | main.rs:914:5:916:5 | trait SuperAlt | +| main.rs:925:26:925:29 | S::<...> | main.rs:884:5:886:6 | struct S | +| main.rs:925:28:925:28 | A | main.rs:925:10:925:10 | A | +| main.rs:926:20:926:20 | A | main.rs:925:10:925:10 | A | +| main.rs:931:13:931:18 | SubAlt | main.rs:918:5:922:5 | trait SubAlt | +| main.rs:931:24:931:27 | S::<...> | main.rs:884:5:886:6 | struct S | +| main.rs:931:26:931:26 | A | main.rs:931:10:931:10 | A | +| main.rs:932:23:932:26 | Self | main.rs:930:5:935:5 | impl SubAlt for S::<...> { ... } | +| main.rs:932:23:932:31 | ...::Out | main.rs:915:9:915:17 | type Out | +| main.rs:938:5:938:7 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:938:11:938:14 | self | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:940:15:940:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| main.rs:940:15:940:25 | ...::string | {EXTERNAL LOCATION} | mod string | +| main.rs:940:15:940:33 | ...::String | {EXTERNAL LOCATION} | struct String | +| main.rs:950:7:950:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) | +| main.rs:950:7:950:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity | +| main.rs:951:10:951:15 | ATrait | main.rs:946:5:948:5 | trait ATrait | +| main.rs:951:21:951:23 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:953:11:953:13 | i64 | {EXTERNAL LOCATION} | struct i64 | +| main.rs:959:17:959:19 | Foo | main.rs:944:5:944:15 | struct Foo | +| main.rs:965:22:965:32 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:965:29:965:31 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:966:17:966:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:967:17:967:27 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:967:24:967:26 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:968:13:968:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:969:17:969:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:971:13:971:16 | None | {EXTERNAL LOCATION} | None | +| main.rs:972:17:972:20 | None | {EXTERNAL LOCATION} | None | +| main.rs:981:19:981:29 | Option::<...> | {EXTERNAL LOCATION} | enum Option | +| main.rs:981:26:981:28 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:982:26:982:29 | test | main.rs:964:5:978:5 | fn test | +| main.rs:988:14:988:16 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:993:17:993:20 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:995:13:995:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:1000:13:1000:16 | Some | {EXTERNAL LOCATION} | Some | +| main.rs:1000:18:1000:18 | z | main.rs:987:5:989:12 | Const | +| main.rs:1000:24:1000:24 | z | main.rs:987:5:989:12 | Const | +| main.rs:1007:5:1007:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:1007:5:1007:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:1007:5:1007:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:1007:5:1007:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:1007:5:1007:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:1008:5:1008:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:1008:5:1008:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:1009:5:1009:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:1009:5:1009:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:1009:5:1009:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:1009:5:1009:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:1010:5:1010:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:1011:5:1011:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:1012:5:1012:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:1012:5:1012:12 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:1013:5:1013:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:1013:5:1013:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:1013:5:1013:13 | ...::g | main.rs:30:9:34:9 | fn g | +| main.rs:1014:5:1014:6 | m1 | main.rs:20:1:44:1 | mod m1 | +| main.rs:1014:5:1014:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 | +| main.rs:1014:5:1014:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 | +| main.rs:1014:5:1014:17 | ...::h | main.rs:37:27:41:13 | fn h | +| main.rs:1015:5:1015:6 | m4 | main.rs:46:1:53:1 | mod m4 | +| main.rs:1015:5:1015:9 | ...::i | main.rs:49:5:52:5 | fn i | +| main.rs:1016:5:1016:5 | h | main.rs:57:1:76:1 | fn h | +| main.rs:1017:5:1017:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:1018:5:1018:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:1019:5:1019:5 | j | main.rs:104:1:108:1 | fn j | +| main.rs:1020:5:1020:6 | m6 | main.rs:116:1:128:1 | mod m6 | +| main.rs:1020:5:1020:9 | ...::g | main.rs:121:5:127:5 | fn g | +| main.rs:1021:5:1021:6 | m7 | main.rs:130:1:149:1 | mod m7 | +| main.rs:1021:5:1021:9 | ...::f | main.rs:141:5:148:5 | fn f | +| main.rs:1022:5:1022:6 | m8 | main.rs:151:1:205:1 | mod m8 | +| main.rs:1022:5:1022:9 | ...::g | main.rs:189:5:204:5 | fn g | +| main.rs:1023:5:1023:6 | m9 | main.rs:207:1:215:1 | mod m9 | +| main.rs:1023:5:1023:9 | ...::f | main.rs:210:5:214:5 | fn f | +| main.rs:1024:5:1024:7 | m11 | main.rs:238:1:275:1 | mod m11 | +| main.rs:1024:5:1024:10 | ...::f | main.rs:243:5:246:5 | fn f | +| main.rs:1025:5:1025:7 | m15 | main.rs:306:1:375:1 | mod m15 | +| main.rs:1025:5:1025:10 | ...::f | main.rs:362:5:374:5 | fn f | +| main.rs:1026:5:1026:7 | m16 | main.rs:377:1:574:1 | mod m16 | +| main.rs:1026:5:1026:10 | ...::f | main.rs:446:5:470:5 | fn f | +| main.rs:1027:5:1027:20 | trait_visibility | main.rs:576:1:626:1 | mod trait_visibility | +| main.rs:1027:5:1027:23 | ...::f | main.rs:603:5:625:5 | fn f | +| main.rs:1028:5:1028:7 | m17 | main.rs:628:1:658:1 | mod m17 | +| main.rs:1028:5:1028:10 | ...::f | main.rs:652:5:657:5 | fn f | +| main.rs:1029:5:1029:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:1029:5:1029:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:1030:5:1030:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:1030:5:1030:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:1031:5:1031:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 | +| main.rs:1031:5:1031:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:1032:5:1032:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:1033:5:1033:12 | my_alias | main.rs:1:1:1:7 | mod my | +| main.rs:1033:5:1033:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:1034:5:1034:7 | m18 | main.rs:660:1:678:1 | mod m18 | +| main.rs:1034:5:1034:12 | ...::m19 | main.rs:665:5:677:5 | mod m19 | +| main.rs:1034:5:1034:17 | ...::m20 | main.rs:670:9:676:9 | mod m20 | +| main.rs:1034:5:1034:20 | ...::g | main.rs:671:13:675:13 | fn g | +| main.rs:1035:5:1035:7 | m23 | main.rs:707:1:732:1 | mod m23 | +| main.rs:1035:5:1035:10 | ...::f | main.rs:727:5:731:5 | fn f | +| main.rs:1036:5:1036:7 | m24 | main.rs:734:1:802:1 | mod m24 | +| main.rs:1036:5:1036:10 | ...::f | main.rs:788:5:801:5 | fn f | +| main.rs:1037:5:1037:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:1037:5:1037:11 | ...::h | main.rs:57:1:76:1 | fn h | +| main.rs:1038:5:1038:13 | z_changed | main.rs:807:1:807:9 | fn z_changed | +| main.rs:1039:5:1039:11 | AStruct | main.rs:809:1:809:17 | struct AStruct | +| main.rs:1039:5:1039:22 | ...::z_on_type | main.rs:813:5:813:17 | fn z_on_type | +| main.rs:1040:5:1040:11 | AStruct | main.rs:809:1:809:17 | struct AStruct | +| main.rs:1041:5:1041:29 | impl_with_attribute_macro | main.rs:942:1:961:1 | mod impl_with_attribute_macro | +| main.rs:1041:5:1041:35 | ...::test | main.rs:957:5:960:5 | fn test | +| main.rs:1042:5:1042:12 | patterns | main.rs:963:1:1004:1 | mod patterns | +| main.rs:1042:5:1042:18 | ...::test | main.rs:964:5:978:5 | fn test | | my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules | | my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | | my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | @@ -575,7 +610,7 @@ resolvePath | my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g | | my2/my3/mod.rs:4:5:4:5 | h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:978:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:1043:2 | SourceFile | | my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:57:1:76:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | diff --git a/rust/ql/test/library-tests/type-inference/associated_types.rs b/rust/ql/test/library-tests/type-inference/associated_types.rs index b08be0264a04..9b2677085eca 100644 --- a/rust/ql/test/library-tests/type-inference/associated_types.rs +++ b/rust/ql/test/library-tests/type-inference/associated_types.rs @@ -55,6 +55,24 @@ impl GetSet for Wrapper { } } +struct Odd(OddT); + +impl GetSet for Odd { + type Output = bool; + + fn get(&self) -> Self::Output { + true + } +} + +impl GetSet for Odd { + type Output = char; + + fn get(&self) -> Self::Output { + 'a' + } +} + mod default_method_using_associated_type { use super::*; @@ -293,6 +311,21 @@ mod associated_type_in_supertrait { } } + impl Subtrait for Odd { + // Odd::get_content + fn get_content(&self) -> Self::Output { + // let _x = Self::get(self); + Default::default() // $ MISSING: target=default + } + } + + impl Subtrait for Odd { + // Odd::get_content + fn get_content(&self) -> Self::Output { + Default::default() // $ MISSING: target=default + } + } + fn get_content(item: &T) -> T::Output { item.get_content() // $ target=Subtrait::get_content } @@ -308,6 +341,9 @@ mod associated_type_in_supertrait { let item2 = MyType(true); let _content2 = get_content(&item2); // $ target=get_content MISSING: type=_content2:bool + + let _content3 = Odd(42i32).get_content(); // $ target=Odd::get_content MISSING: type=_content3:bool + let _content4 = Odd(true).get_content(); // $ target=Odd::get_content MISSING: type=_content4:char } } 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 b4edd40f0f79..062686d30df1 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -27,205 +27,223 @@ inferCertainType | associated_types.rs:54:9:54:12 | self | | {EXTERNAL LOCATION} | & | | associated_types.rs:54:9:54:12 | self | TRef | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:54:9:54:12 | self | TRef.A | associated_types.rs:49:6:49:12 | T | -| associated_types.rs:65:15:65:18 | SelfParam | | associated_types.rs:61:5:76:5 | Self [trait MyTrait] | -| associated_types.rs:67:15:67:18 | SelfParam | | associated_types.rs:61:5:76:5 | Self [trait MyTrait] | -| associated_types.rs:71:9:75:9 | { ... } | | associated_types.rs:62:9:62:28 | AssociatedType[MyTrait] | -| associated_types.rs:72:13:72:16 | self | | associated_types.rs:61:5:76:5 | Self [trait MyTrait] | -| associated_types.rs:82:15:82:18 | SelfParam | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:82:45:84:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:91:15:91:18 | SelfParam | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:91:45:93:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:91:45:93:9 | { ... } | A | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:92:21:92:24 | self | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:96:19:110:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:99:18:99:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:99:18:99:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:99:18:99:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:99:18:99:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:104:18:104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:104:18:104:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:104:18:104:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:104:18:104:26 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:107:18:107:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:107:18:107:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:107:18:107:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:107:18:107:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:109:18:109:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:109:18:109:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:109:18:109:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:109:18:109:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:117:30:117:34 | thing | | associated_types.rs:117:19:117:27 | T | -| associated_types.rs:118:9:118:13 | thing | | associated_types.rs:117:19:117:27 | T | -| associated_types.rs:121:33:121:37 | thing | | associated_types.rs:121:22:121:30 | T | -| associated_types.rs:122:9:122:13 | thing | | associated_types.rs:121:22:121:30 | T | -| associated_types.rs:125:19:128:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:135:26:135:26 | x | | associated_types.rs:135:23:135:23 | T | -| associated_types.rs:138:5:140:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:139:18:139:18 | x | | associated_types.rs:135:23:135:23 | T | -| associated_types.rs:143:24:143:24 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:146:5:150:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:147:19:147:19 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:148:23:148:24 | &x | | {EXTERNAL LOCATION} | & | -| associated_types.rs:148:24:148:24 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:149:18:149:18 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:153:23:153:23 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:157:5:161:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:158:19:158:19 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:159:23:159:24 | &x | | {EXTERNAL LOCATION} | & | -| associated_types.rs:159:24:159:24 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:160:18:160:18 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:167:17:167:21 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:167:17:167:21 | SelfParam | TRef | associated_types.rs:163:5:168:5 | Self [trait AssocNameClash] | -| associated_types.rs:170:34:170:34 | x | | associated_types.rs:170:31:170:31 | T | -| associated_types.rs:174:5:177:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:175:18:175:18 | x | | associated_types.rs:170:31:170:31 | T | -| associated_types.rs:176:18:176:18 | x | | associated_types.rs:170:31:170:31 | T | -| associated_types.rs:187:19:187:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:187:19:187:23 | SelfParam | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:187:26:187:26 | a | | associated_types.rs:187:16:187:16 | A | -| associated_types.rs:190:23:190:27 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:190:23:190:27 | SelfParam | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:190:30:190:30 | a | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:190:36:190:36 | b | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:190:76:193:9 | { ... } | | associated_types.rs:184:9:184:52 | GenericAssociatedType[MyTraitAssoc2] | -| associated_types.rs:191:13:191:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:191:13:191:16 | self | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:191:22:191:22 | a | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:192:13:192:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:192:13:192:16 | self | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:192:22:192:22 | b | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:201:19:201:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:201:19:201:23 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:201:26:201:26 | a | | associated_types.rs:201:16:201:16 | A | -| associated_types.rs:201:46:203:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:201:46:203:9 | { ... } | A | associated_types.rs:201:16:201:16 | A | -| associated_types.rs:202:21:202:21 | a | | associated_types.rs:201:16:201:16 | A | -| associated_types.rs:206:19:213:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:209:25:209:28 | 1i32 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:212:29:212:32 | true | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:212:35:212:39 | false | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:224:21:224:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:224:21:224:25 | SelfParam | TRef | associated_types.rs:219:5:229:5 | Self [trait TraitMultipleAssoc] | -| associated_types.rs:226:20:226:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:226:20:226:24 | SelfParam | TRef | associated_types.rs:219:5:229:5 | Self [trait TraitMultipleAssoc] | -| associated_types.rs:228:20:228:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:228:20:228:24 | SelfParam | TRef | associated_types.rs:219:5:229:5 | Self [trait TraitMultipleAssoc] | -| associated_types.rs:235:21:235:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:235:21:235:25 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:235:34:237:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:239:20:239:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:239:20:239:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:239:43:241:9 | { ... } | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:243:20:243:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:243:20:243:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:243:43:245:9 | { ... } | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:248:19:252:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:260:24:260:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:260:24:260:28 | SelfParam | TRef | associated_types.rs:258:5:261:5 | Self [trait Subtrait] | -| associated_types.rs:269:23:269:27 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:269:23:269:27 | SelfParam | TRef | associated_types.rs:263:5:273:5 | Self [trait Subtrait2] | -| associated_types.rs:269:30:269:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:269:48:269:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:269:66:272:9 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:270:13:270:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:270:13:270:16 | self | TRef | associated_types.rs:263:5:273:5 | Self [trait Subtrait2] | -| associated_types.rs:270:22:270:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:271:13:271:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:271:13:271:16 | self | TRef | associated_types.rs:263:5:273:5 | Self [trait Subtrait2] | -| associated_types.rs:271:22:271:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:280:16:280:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:280:16:280:20 | SelfParam | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:280:16:280:20 | SelfParam | TRef.T | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:280:39:282:9 | { ... } | | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:281:13:281:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:281:13:281:16 | self | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:281:13:281:16 | self | TRef.T | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:284:16:284:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:284:16:284:20 | SelfParam | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:284:16:284:20 | SelfParam | TRef.T | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:284:23:284:30 | _content | | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:284:47:286:9 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:285:22:285:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:285:22:285:42 | "Inserting content: \\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:285:22:285:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:285:22:285:42 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:291:24:291:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:291:24:291:28 | SelfParam | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:291:24:291:28 | SelfParam | TRef.T | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:292:15:292:18 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:292:15:292:18 | self | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:292:15:292:18 | self | TRef.T | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:296:33:296:36 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:296:33:296:36 | item | TRef | associated_types.rs:296:20:296:30 | T | -| associated_types.rs:297:9:297:12 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:297:9:297:12 | item | TRef | associated_types.rs:296:20:296:30 | T | -| associated_types.rs:300:35:300:38 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:300:35:300:38 | item | TRef | associated_types.rs:300:21:300:32 | T | -| associated_types.rs:300:90:303:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:301:9:301:12 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:301:9:301:12 | item | TRef | associated_types.rs:300:21:300:32 | T | -| associated_types.rs:302:9:302:12 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:302:9:302:12 | item | TRef | associated_types.rs:300:21:300:32 | T | -| associated_types.rs:305:19:311:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:306:28:306:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| associated_types.rs:309:28:309:31 | true | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:310:37:310:42 | &item2 | | {EXTERNAL LOCATION} | & | -| associated_types.rs:324:16:324:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:324:16:324:20 | SelfParam | TRef | associated_types.rs:317:5:317:20 | ST | -| associated_types.rs:324:16:324:20 | SelfParam | TRef.T | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:324:39:326:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| associated_types.rs:324:39:326:9 | { ... } | E | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:324:39:326:9 | { ... } | T | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:325:16:325:19 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:325:16:325:19 | self | TRef | associated_types.rs:317:5:317:20 | ST | -| associated_types.rs:325:16:325:19 | self | TRef.T | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:329:19:331:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:330:21:330:24 | true | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:338:31:338:31 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:338:31:338:31 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:338:31:338:31 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:338:61:346:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:340:21:340:21 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:340:21:340:21 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:340:21:340:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:343:19:343:19 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:343:19:343:19 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:343:19:343:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:345:23:345:23 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:345:23:345:23 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:345:23:345:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:348:36:348:36 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:348:36:348:36 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:348:36:348:36 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:348:36:348:36 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:348:92:354:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:349:21:349:21 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:349:21:349:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:349:21:349:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:349:21:349:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:350:19:350:19 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:350:19:350:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:350:19:350:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:350:19:350:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:351:23:351:23 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:351:23:351:23 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:351:23:351:23 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:351:23:351:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:352:21:352:21 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:352:21:352:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:352:21:352:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:352:21:352:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:353:19:353:19 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:353:19:353:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:353:19:353:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:353:19:353:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:357:15:364:1 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:358:5:358:48 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:359:5:359:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:360:5:360:35 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:361:5:361:37 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:362:5:362:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:363:5:363:46 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:63:12:63:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:63:12:63:16 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:63:12:63:16 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:63:35:65:5 | { ... } | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:64:9:64:12 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:71:12:71:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:71:12:71:16 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:71:12:71:16 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | bool | +| associated_types.rs:71:35:73:5 | { ... } | | {EXTERNAL LOCATION} | char | +| associated_types.rs:72:9:72:11 | 'a' | | {EXTERNAL LOCATION} | char | +| associated_types.rs:83:15:83:18 | SelfParam | | associated_types.rs:79:5:94:5 | Self [trait MyTrait] | +| associated_types.rs:85:15:85:18 | SelfParam | | associated_types.rs:79:5:94:5 | Self [trait MyTrait] | +| associated_types.rs:89:9:93:9 | { ... } | | associated_types.rs:80:9:80:28 | AssociatedType[MyTrait] | +| associated_types.rs:90:13:90:16 | self | | associated_types.rs:79:5:94:5 | Self [trait MyTrait] | +| associated_types.rs:100:15:100:18 | SelfParam | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:100:45:102:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:109:15:109:18 | SelfParam | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:109:45:111:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:109:45:111:9 | { ... } | A | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:110:21:110:24 | self | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:114:19:128:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:117:18:117:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:117:18:117:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:117:18:117:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:117:18:117:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:122:18:122:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:122:18:122:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:122:18:122:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:122:18:122:26 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:125:18:125:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:125:18:125:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:125:18:125:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:125:18:125:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:127:18:127:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:127:18:127:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:127:18:127:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:127:18:127:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:135:30:135:34 | thing | | associated_types.rs:135:19:135:27 | T | +| associated_types.rs:136:9:136:13 | thing | | associated_types.rs:135:19:135:27 | T | +| associated_types.rs:139:33:139:37 | thing | | associated_types.rs:139:22:139:30 | T | +| associated_types.rs:140:9:140:13 | thing | | associated_types.rs:139:22:139:30 | T | +| associated_types.rs:143:19:146:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:153:26:153:26 | x | | associated_types.rs:153:23:153:23 | T | +| associated_types.rs:156:5:158:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:157:18:157:18 | x | | associated_types.rs:153:23:153:23 | T | +| associated_types.rs:161:24:161:24 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:164:5:168:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:165:19:165:19 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:166:23:166:24 | &x | | {EXTERNAL LOCATION} | & | +| associated_types.rs:166:24:166:24 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:167:18:167:18 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:171:23:171:23 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:175:5:179:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:176:19:176:19 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:177:23:177:24 | &x | | {EXTERNAL LOCATION} | & | +| associated_types.rs:177:24:177:24 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:178:18:178:18 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:185:17:185:21 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:185:17:185:21 | SelfParam | TRef | associated_types.rs:181:5:186:5 | Self [trait AssocNameClash] | +| associated_types.rs:188:34:188:34 | x | | associated_types.rs:188:31:188:31 | T | +| associated_types.rs:192:5:195:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:193:18:193:18 | x | | associated_types.rs:188:31:188:31 | T | +| associated_types.rs:194:18:194:18 | x | | associated_types.rs:188:31:188:31 | T | +| associated_types.rs:205:19:205:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:205:19:205:23 | SelfParam | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:205:26:205:26 | a | | associated_types.rs:205:16:205:16 | A | +| associated_types.rs:208:23:208:27 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:208:23:208:27 | SelfParam | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:208:30:208:30 | a | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:208:36:208:36 | b | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:208:76:211:9 | { ... } | | associated_types.rs:202:9:202:52 | GenericAssociatedType[MyTraitAssoc2] | +| associated_types.rs:209:13:209:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:209:13:209:16 | self | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:209:22:209:22 | a | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:210:13:210:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:210:13:210:16 | self | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:210:22:210:22 | b | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:219:19:219:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:219:19:219:23 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:219:26:219:26 | a | | associated_types.rs:219:16:219:16 | A | +| associated_types.rs:219:46:221:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:219:46:221:9 | { ... } | A | associated_types.rs:219:16:219:16 | A | +| associated_types.rs:220:21:220:21 | a | | associated_types.rs:219:16:219:16 | A | +| associated_types.rs:224:19:231:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:227:25:227:28 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:230:29:230:32 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:230:35:230:39 | false | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:242:21:242:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:242:21:242:25 | SelfParam | TRef | associated_types.rs:237:5:247:5 | Self [trait TraitMultipleAssoc] | +| associated_types.rs:244:20:244:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:244:20:244:24 | SelfParam | TRef | associated_types.rs:237:5:247:5 | Self [trait TraitMultipleAssoc] | +| associated_types.rs:246:20:246:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:246:20:246:24 | SelfParam | TRef | associated_types.rs:237:5:247:5 | Self [trait TraitMultipleAssoc] | +| associated_types.rs:253:21:253:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:253:21:253:25 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:253:34:255:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:257:20:257:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:257:20:257:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:257:43:259:9 | { ... } | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:261:20:261:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:261:20:261:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:261:43:263:9 | { ... } | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:266:19:270:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:278:24:278:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:278:24:278:28 | SelfParam | TRef | associated_types.rs:276:5:279:5 | Self [trait Subtrait] | +| associated_types.rs:287:23:287:27 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:287:23:287:27 | SelfParam | TRef | associated_types.rs:281:5:291:5 | Self [trait Subtrait2] | +| associated_types.rs:287:30:287:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:287:48:287:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:287:66:290:9 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:288:13:288:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:288:13:288:16 | self | TRef | associated_types.rs:281:5:291:5 | Self [trait Subtrait2] | +| associated_types.rs:288:22:288:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:289:13:289:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:289:13:289:16 | self | TRef | associated_types.rs:281:5:291:5 | Self [trait Subtrait2] | +| associated_types.rs:289:22:289:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:298:16:298:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:298:16:298:20 | SelfParam | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:298:16:298:20 | SelfParam | TRef.T | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:298:39:300:9 | { ... } | | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:299:13:299:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:299:13:299:16 | self | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:299:13:299:16 | self | TRef.T | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:302:16:302:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:302:16:302:20 | SelfParam | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:302:16:302:20 | SelfParam | TRef.T | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:302:23:302:30 | _content | | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:302:47:304:9 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:303:22:303:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:303:22:303:42 | "Inserting content: \\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:303:22:303:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:303:22:303:42 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:309:24:309:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:309:24:309:28 | SelfParam | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:309:24:309:28 | SelfParam | TRef.T | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:310:15:310:18 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:310:15:310:18 | self | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:310:15:310:18 | self | TRef.T | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:316:24:316:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:316:24:316:28 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:316:24:316:28 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:324:24:324:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:324:24:324:28 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:324:24:324:28 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | bool | +| associated_types.rs:329:33:329:36 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:329:33:329:36 | item | TRef | associated_types.rs:329:20:329:30 | T | +| associated_types.rs:330:9:330:12 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:330:9:330:12 | item | TRef | associated_types.rs:329:20:329:30 | T | +| associated_types.rs:333:35:333:38 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:333:35:333:38 | item | TRef | associated_types.rs:333:21:333:32 | T | +| associated_types.rs:333:90:336:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:334:9:334:12 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:334:9:334:12 | item | TRef | associated_types.rs:333:21:333:32 | T | +| associated_types.rs:335:9:335:12 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:335:9:335:12 | item | TRef | associated_types.rs:333:21:333:32 | T | +| associated_types.rs:338:19:347:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:339:28:339:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| associated_types.rs:342:28:342:31 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:343:37:343:42 | &item2 | | {EXTERNAL LOCATION} | & | +| associated_types.rs:345:29:345:33 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:346:29:346:32 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:360:16:360:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:360:16:360:20 | SelfParam | TRef | associated_types.rs:353:5:353:20 | ST | +| associated_types.rs:360:16:360:20 | SelfParam | TRef.T | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:360:39:362:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| associated_types.rs:360:39:362:9 | { ... } | E | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:360:39:362:9 | { ... } | T | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:361:16:361:19 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:361:16:361:19 | self | TRef | associated_types.rs:353:5:353:20 | ST | +| associated_types.rs:361:16:361:19 | self | TRef.T | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:365:19:367:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:366:21:366:24 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:374:31:374:31 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:374:31:374:31 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:374:31:374:31 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:374:61:382:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:376:21:376:21 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:376:21:376:21 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:376:21:376:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:379:19:379:19 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:379:19:379:19 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:379:19:379:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:381:23:381:23 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:381:23:381:23 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:381:23:381:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:384:36:384:36 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:384:36:384:36 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:384:36:384:36 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:384:36:384:36 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:384:92:390:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:385:21:385:21 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:385:21:385:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:385:21:385:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:385:21:385:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:386:19:386:19 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:386:19:386:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:386:19:386:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:386:19:386:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:387:23:387:23 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:387:23:387:23 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:387:23:387:23 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:387:23:387:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:388:21:388:21 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:388:21:388:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:388:21:388:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:388:21:388:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:389:19:389:19 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:389:19:389:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:389:19:389:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:389:19:389:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:393:15:400:1 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:394:5:394:48 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:395:5:395:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:396:5:396:35 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:397:5:397:37 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:398:5:398:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:399:5:399:46 | ...::test(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:15:18:15:22 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:15:18:15:22 | SelfParam | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:15:42:17:9 | { ... } | | {EXTERNAL LOCATION} | & | @@ -4660,355 +4678,377 @@ inferType | associated_types.rs:54:9:54:12 | self | TRef | associated_types.rs:1:1:2:21 | Wrapper | | associated_types.rs:54:9:54:12 | self | TRef.A | associated_types.rs:49:6:49:12 | T | | associated_types.rs:54:9:54:14 | self.0 | | associated_types.rs:49:6:49:12 | T | -| associated_types.rs:65:15:65:18 | SelfParam | | associated_types.rs:61:5:76:5 | Self [trait MyTrait] | -| associated_types.rs:67:15:67:18 | SelfParam | | associated_types.rs:61:5:76:5 | Self [trait MyTrait] | -| associated_types.rs:71:9:75:9 | { ... } | | associated_types.rs:62:9:62:28 | AssociatedType[MyTrait] | -| associated_types.rs:72:13:72:16 | self | | associated_types.rs:61:5:76:5 | Self [trait MyTrait] | -| associated_types.rs:72:13:72:21 | self.m1() | | associated_types.rs:62:9:62:28 | AssociatedType[MyTrait] | -| associated_types.rs:74:13:74:43 | ...::default(...) | | associated_types.rs:62:9:62:28 | AssociatedType[MyTrait] | -| associated_types.rs:82:15:82:18 | SelfParam | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:82:45:84:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:83:13:83:14 | S3 | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:91:15:91:18 | SelfParam | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:91:45:93:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:91:45:93:9 | { ... } | A | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:92:13:92:25 | Wrapper(...) | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:92:13:92:25 | Wrapper(...) | A | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:92:21:92:24 | self | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:96:19:110:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:97:13:97:14 | x1 | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:97:18:97:18 | S | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:99:9:99:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| associated_types.rs:99:18:99:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:99:18:99:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:99:18:99:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:99:18:99:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:99:18:99:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:99:26:99:27 | x1 | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:99:26:99:32 | x1.m1() | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:101:13:101:14 | x2 | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:101:18:101:18 | S | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:103:13:103:13 | y | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:103:17:103:18 | x2 | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:103:17:103:23 | x2.m2() | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:104:9:104:27 | MacroExpr | | {EXTERNAL LOCATION} | () | -| associated_types.rs:104:18:104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:104:18:104:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:104:18:104:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:104:18:104:26 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:104:18:104:26 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:104:26:104:26 | y | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:106:13:106:14 | x5 | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:106:18:106:19 | S2 | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:107:9:107:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| associated_types.rs:107:18:107:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:107:18:107:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:107:18:107:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:107:18:107:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:107:18:107:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:107:26:107:27 | x5 | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:107:26:107:32 | x5.m1() | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:107:26:107:32 | x5.m1() | A | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:108:13:108:14 | x6 | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:108:18:108:19 | S2 | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:109:9:109:33 | MacroExpr | | {EXTERNAL LOCATION} | () | -| associated_types.rs:109:18:109:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:109:18:109:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:109:18:109:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:109:18:109:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:109:18:109:32 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:109:26:109:27 | x6 | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:109:26:109:32 | x6.m2() | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:109:26:109:32 | x6.m2() | A | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:117:30:117:34 | thing | | associated_types.rs:117:19:117:27 | T | -| associated_types.rs:118:9:118:13 | thing | | associated_types.rs:117:19:117:27 | T | -| associated_types.rs:121:33:121:37 | thing | | associated_types.rs:121:22:121:30 | T | -| associated_types.rs:122:9:122:13 | thing | | associated_types.rs:121:22:121:30 | T | -| associated_types.rs:125:19:128:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:126:30:126:30 | S | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:127:33:127:33 | S | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:135:26:135:26 | x | | associated_types.rs:135:23:135:23 | T | -| associated_types.rs:138:5:140:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:139:13:139:14 | _a | | {EXTERNAL LOCATION} | char | -| associated_types.rs:139:18:139:18 | x | | associated_types.rs:135:23:135:23 | T | -| associated_types.rs:139:18:139:24 | x.get() | | {EXTERNAL LOCATION} | char | -| associated_types.rs:143:24:143:24 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:146:5:150:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:147:13:147:15 | _a1 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:147:19:147:19 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:147:19:147:25 | x.get() | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:148:13:148:15 | _a2 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:148:19:148:25 | get(...) | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:148:23:148:24 | &x | | {EXTERNAL LOCATION} | & | -| associated_types.rs:148:23:148:24 | &x | TRef | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:148:24:148:24 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:149:13:149:14 | _b | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:149:18:149:18 | x | | associated_types.rs:143:21:143:21 | T | -| associated_types.rs:149:18:149:32 | x.get_another() | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:153:23:153:23 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:157:5:161:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:158:13:158:15 | _a1 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:158:19:158:19 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:158:19:158:25 | x.get() | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:159:13:159:15 | _a2 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:159:19:159:25 | get(...) | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:159:23:159:24 | &x | | {EXTERNAL LOCATION} | & | -| associated_types.rs:159:23:159:24 | &x | TRef | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:159:24:159:24 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:160:13:160:14 | _b | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:160:18:160:18 | x | | associated_types.rs:153:20:153:20 | T | -| associated_types.rs:160:18:160:32 | x.get_another() | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:167:17:167:21 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:167:17:167:21 | SelfParam | TRef | associated_types.rs:163:5:168:5 | Self [trait AssocNameClash] | -| associated_types.rs:170:34:170:34 | x | | associated_types.rs:170:31:170:31 | T | -| associated_types.rs:174:5:177:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:175:13:175:14 | _a | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:175:18:175:18 | x | | associated_types.rs:170:31:170:31 | T | -| associated_types.rs:175:18:175:24 | x.get() | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:176:18:176:18 | x | | associated_types.rs:170:31:170:31 | T | -| associated_types.rs:187:19:187:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:187:19:187:23 | SelfParam | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:187:26:187:26 | a | | associated_types.rs:187:16:187:16 | A | -| associated_types.rs:190:23:190:27 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:190:23:190:27 | SelfParam | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:190:30:190:30 | a | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:190:36:190:36 | b | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:190:76:193:9 | { ... } | | associated_types.rs:184:9:184:52 | GenericAssociatedType[MyTraitAssoc2] | -| associated_types.rs:191:13:191:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:191:13:191:16 | self | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:191:13:191:23 | self.put(...) | | associated_types.rs:184:9:184:52 | GenericAssociatedType[MyTraitAssoc2] | -| associated_types.rs:191:22:191:22 | a | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:192:13:192:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:192:13:192:16 | self | TRef | associated_types.rs:183:5:194:5 | Self [trait MyTraitAssoc2] | -| associated_types.rs:192:13:192:23 | self.put(...) | | associated_types.rs:184:9:184:52 | GenericAssociatedType[MyTraitAssoc2] | -| associated_types.rs:192:22:192:22 | b | | associated_types.rs:190:20:190:20 | A | -| associated_types.rs:201:19:201:23 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:201:19:201:23 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:201:26:201:26 | a | | associated_types.rs:201:16:201:16 | A | -| associated_types.rs:201:46:203:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:201:46:203:9 | { ... } | A | associated_types.rs:201:16:201:16 | A | -| associated_types.rs:202:13:202:22 | Wrapper(...) | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:202:13:202:22 | Wrapper(...) | A | associated_types.rs:201:16:201:16 | A | -| associated_types.rs:202:21:202:21 | a | | associated_types.rs:201:16:201:16 | A | -| associated_types.rs:206:19:213:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:207:13:207:13 | s | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:207:17:207:17 | S | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:209:13:209:15 | _g1 | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:209:13:209:15 | _g1 | A | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:209:19:209:19 | s | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:209:19:209:29 | s.put(...) | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:209:19:209:29 | s.put(...) | A | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:209:25:209:28 | 1i32 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:212:13:212:15 | _g2 | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:212:19:212:19 | s | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:212:19:212:40 | s.put_two(...) | | associated_types.rs:1:1:2:21 | Wrapper | -| associated_types.rs:212:29:212:32 | true | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:212:35:212:39 | false | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:224:21:224:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:224:21:224:25 | SelfParam | TRef | associated_types.rs:219:5:229:5 | Self [trait TraitMultipleAssoc] | -| associated_types.rs:226:20:226:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:226:20:226:24 | SelfParam | TRef | associated_types.rs:219:5:229:5 | Self [trait TraitMultipleAssoc] | -| associated_types.rs:228:20:228:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:228:20:228:24 | SelfParam | TRef | associated_types.rs:219:5:229:5 | Self [trait TraitMultipleAssoc] | -| associated_types.rs:235:21:235:25 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:235:21:235:25 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:235:34:237:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:236:13:236:14 | S3 | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:239:20:239:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:239:20:239:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:239:43:241:9 | { ... } | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:240:13:240:13 | S | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:243:20:243:24 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:243:20:243:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:243:43:245:9 | { ... } | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:244:13:244:14 | S2 | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:248:19:252:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:249:13:249:23 | _assoc_zero | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:249:27:249:28 | S3 | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:249:27:249:39 | S3.get_zero() | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:250:13:250:22 | _assoc_one | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:250:26:250:27 | S3 | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:250:26:250:37 | S3.get_one() | | associated_types.rs:10:1:11:9 | S | -| associated_types.rs:251:13:251:22 | _assoc_two | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:251:26:251:27 | S3 | | associated_types.rs:16:1:17:10 | S3 | -| associated_types.rs:251:26:251:37 | S3.get_two() | | associated_types.rs:13:1:14:10 | S2 | -| associated_types.rs:260:24:260:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:260:24:260:28 | SelfParam | TRef | associated_types.rs:258:5:261:5 | Self [trait Subtrait] | -| associated_types.rs:269:23:269:27 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:269:23:269:27 | SelfParam | TRef | associated_types.rs:263:5:273:5 | Self [trait Subtrait2] | -| associated_types.rs:269:30:269:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:269:48:269:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:269:66:272:9 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:270:13:270:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:270:13:270:16 | self | TRef | associated_types.rs:263:5:273:5 | Self [trait Subtrait2] | -| associated_types.rs:270:13:270:24 | self.set(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:270:22:270:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:271:13:271:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:271:13:271:16 | self | TRef | associated_types.rs:263:5:273:5 | Self [trait Subtrait2] | -| associated_types.rs:271:13:271:24 | self.set(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:271:22:271:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | -| associated_types.rs:280:16:280:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:280:16:280:20 | SelfParam | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:280:16:280:20 | SelfParam | TRef.T | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:280:39:282:9 | { ... } | | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:281:13:281:16 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:281:13:281:16 | self | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:281:13:281:16 | self | TRef.T | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:281:13:281:18 | self.0 | | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:284:16:284:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:284:16:284:20 | SelfParam | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:284:16:284:20 | SelfParam | TRef.T | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:284:23:284:30 | _content | | associated_types.rs:277:10:277:16 | T | -| associated_types.rs:284:47:286:9 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:285:13:285:43 | MacroExpr | | {EXTERNAL LOCATION} | () | -| associated_types.rs:285:22:285:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | -| associated_types.rs:285:22:285:42 | "Inserting content: \\n" | TRef | {EXTERNAL LOCATION} | str | -| associated_types.rs:285:22:285:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:285:22:285:42 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:285:22:285:42 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:291:24:291:28 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:291:24:291:28 | SelfParam | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:291:24:291:28 | SelfParam | TRef.T | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:291:47:293:9 | { ... } | | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:292:13:292:19 | (...) | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:292:13:292:19 | (...) | T | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:292:13:292:21 | ... .0 | | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:292:14:292:18 | * ... | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:292:14:292:18 | * ... | T | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:292:15:292:18 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:292:15:292:18 | self | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:292:15:292:18 | self | TRef.T | associated_types.rs:289:10:289:16 | T | -| associated_types.rs:296:33:296:36 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:296:33:296:36 | item | TRef | associated_types.rs:296:20:296:30 | T | -| associated_types.rs:297:9:297:12 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:297:9:297:12 | item | TRef | associated_types.rs:296:20:296:30 | T | -| associated_types.rs:300:35:300:38 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:300:35:300:38 | item | TRef | associated_types.rs:300:21:300:32 | T | -| associated_types.rs:300:90:303:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:301:9:301:12 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:301:9:301:12 | item | TRef | associated_types.rs:300:21:300:32 | T | -| associated_types.rs:301:9:301:20 | item.set(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:302:9:302:12 | item | | {EXTERNAL LOCATION} | & | -| associated_types.rs:302:9:302:12 | item | TRef | associated_types.rs:300:21:300:32 | T | -| associated_types.rs:302:9:302:31 | item.insert_two(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:305:19:311:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:306:13:306:17 | item1 | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:306:13:306:17 | item1 | T | {EXTERNAL LOCATION} | i64 | -| associated_types.rs:306:21:306:33 | MyType(...) | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:306:21:306:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | -| associated_types.rs:306:28:306:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| associated_types.rs:307:25:307:29 | item1 | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:307:25:307:29 | item1 | T | {EXTERNAL LOCATION} | i64 | -| associated_types.rs:309:13:309:17 | item2 | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:309:13:309:17 | item2 | T | {EXTERNAL LOCATION} | bool | -| associated_types.rs:309:21:309:32 | MyType(...) | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:309:21:309:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | -| associated_types.rs:309:28:309:31 | true | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:310:37:310:42 | &item2 | | {EXTERNAL LOCATION} | & | -| associated_types.rs:310:37:310:42 | &item2 | TRef | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:310:37:310:42 | &item2 | TRef.T | {EXTERNAL LOCATION} | bool | -| associated_types.rs:310:38:310:42 | item2 | | associated_types.rs:275:5:275:24 | MyType | -| associated_types.rs:310:38:310:42 | item2 | T | {EXTERNAL LOCATION} | bool | -| associated_types.rs:324:16:324:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| associated_types.rs:324:16:324:20 | SelfParam | TRef | associated_types.rs:317:5:317:20 | ST | -| associated_types.rs:324:16:324:20 | SelfParam | TRef.T | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:324:39:326:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| associated_types.rs:324:39:326:9 | { ... } | E | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:324:39:326:9 | { ... } | T | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:325:13:325:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | -| associated_types.rs:325:13:325:22 | Ok(...) | E | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:325:13:325:22 | Ok(...) | T | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:325:16:325:19 | self | | {EXTERNAL LOCATION} | & | -| associated_types.rs:325:16:325:19 | self | TRef | associated_types.rs:317:5:317:20 | ST | -| associated_types.rs:325:16:325:19 | self | TRef.T | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:325:16:325:21 | self.0 | | associated_types.rs:319:10:319:21 | Output | -| associated_types.rs:329:19:331:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:330:13:330:14 | _y | | {EXTERNAL LOCATION} | Result | -| associated_types.rs:330:13:330:14 | _y | E | {EXTERNAL LOCATION} | bool | -| associated_types.rs:330:13:330:14 | _y | T | {EXTERNAL LOCATION} | bool | -| associated_types.rs:330:18:330:25 | ST(...) | | associated_types.rs:317:5:317:20 | ST | -| associated_types.rs:330:18:330:25 | ST(...) | T | {EXTERNAL LOCATION} | bool | -| associated_types.rs:330:18:330:31 | ... .get() | | {EXTERNAL LOCATION} | Result | -| associated_types.rs:330:18:330:31 | ... .get() | E | {EXTERNAL LOCATION} | bool | -| associated_types.rs:330:18:330:31 | ... .get() | T | {EXTERNAL LOCATION} | bool | -| associated_types.rs:330:21:330:24 | true | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:338:31:338:31 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:338:31:338:31 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:338:31:338:31 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:338:61:346:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:340:13:340:15 | _a1 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:340:19:340:22 | (...) | | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:340:19:340:22 | (...) | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:340:19:340:28 | ... .get() | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:340:20:340:21 | * ... | | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:340:20:340:21 | * ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:340:21:340:21 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:340:21:340:21 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:340:21:340:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:343:13:343:15 | _a2 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:343:19:343:19 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:343:19:343:19 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:343:19:343:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:343:19:343:25 | t.get() | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:345:13:345:15 | _a3 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:345:19:345:24 | get(...) | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:345:23:345:23 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:345:23:345:23 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | -| associated_types.rs:345:23:345:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:348:36:348:36 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:348:36:348:36 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:348:36:348:36 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:348:36:348:36 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:348:92:354:5 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:349:13:349:15 | _a1 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:349:19:349:22 | (...) | | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:349:19:349:22 | (...) | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:349:19:349:22 | (...) | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:349:19:349:28 | ... .get() | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:349:20:349:21 | * ... | | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:349:20:349:21 | * ... | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:349:20:349:21 | * ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:349:21:349:21 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:349:21:349:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:349:21:349:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:349:21:349:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:350:13:350:15 | _a2 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:350:19:350:19 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:350:19:350:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:350:19:350:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:350:19:350:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:350:19:350:25 | t.get() | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:351:13:351:15 | _a3 | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:351:19:351:24 | get(...) | | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:351:23:351:23 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:351:23:351:23 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:351:23:351:23 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:351:23:351:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:352:13:352:15 | _b1 | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:352:19:352:22 | (...) | | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:352:19:352:22 | (...) | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:352:19:352:22 | (...) | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:352:19:352:36 | ... .get_another() | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:352:20:352:21 | * ... | | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:352:20:352:21 | * ... | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:352:20:352:21 | * ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:352:21:352:21 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:352:21:352:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:352:21:352:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:352:21:352:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:353:13:353:15 | _b2 | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:353:19:353:19 | t | | {EXTERNAL LOCATION} | & | -| associated_types.rs:353:19:353:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | -| associated_types.rs:353:19:353:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | -| associated_types.rs:353:19:353:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | -| associated_types.rs:353:19:353:33 | t.get_another() | | {EXTERNAL LOCATION} | bool | -| associated_types.rs:357:15:364:1 | { ... } | | {EXTERNAL LOCATION} | () | -| associated_types.rs:358:5:358:48 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:359:5:359:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:360:5:360:35 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:361:5:361:37 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:362:5:362:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| associated_types.rs:363:5:363:46 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:63:12:63:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:63:12:63:16 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:63:12:63:16 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:63:35:65:5 | { ... } | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:64:9:64:12 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:71:12:71:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:71:12:71:16 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:71:12:71:16 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | bool | +| associated_types.rs:71:35:73:5 | { ... } | | {EXTERNAL LOCATION} | char | +| associated_types.rs:72:9:72:11 | 'a' | | {EXTERNAL LOCATION} | char | +| associated_types.rs:83:15:83:18 | SelfParam | | associated_types.rs:79:5:94:5 | Self [trait MyTrait] | +| associated_types.rs:85:15:85:18 | SelfParam | | associated_types.rs:79:5:94:5 | Self [trait MyTrait] | +| associated_types.rs:89:9:93:9 | { ... } | | associated_types.rs:80:9:80:28 | AssociatedType[MyTrait] | +| associated_types.rs:90:13:90:16 | self | | associated_types.rs:79:5:94:5 | Self [trait MyTrait] | +| associated_types.rs:90:13:90:21 | self.m1() | | associated_types.rs:80:9:80:28 | AssociatedType[MyTrait] | +| associated_types.rs:92:13:92:43 | ...::default(...) | | associated_types.rs:80:9:80:28 | AssociatedType[MyTrait] | +| associated_types.rs:100:15:100:18 | SelfParam | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:100:45:102:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:101:13:101:14 | S3 | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:109:15:109:18 | SelfParam | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:109:45:111:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:109:45:111:9 | { ... } | A | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:110:13:110:25 | Wrapper(...) | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:110:13:110:25 | Wrapper(...) | A | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:110:21:110:24 | self | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:114:19:128:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:115:13:115:14 | x1 | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:115:18:115:18 | S | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:117:9:117:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| associated_types.rs:117:18:117:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:117:18:117:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:117:18:117:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:117:18:117:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:117:18:117:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:117:26:117:27 | x1 | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:117:26:117:32 | x1.m1() | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:119:13:119:14 | x2 | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:119:18:119:18 | S | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:121:13:121:13 | y | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:121:17:121:18 | x2 | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:121:17:121:23 | x2.m2() | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:122:9:122:27 | MacroExpr | | {EXTERNAL LOCATION} | () | +| associated_types.rs:122:18:122:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:122:18:122:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:122:18:122:26 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:122:18:122:26 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:122:18:122:26 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:122:26:122:26 | y | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:124:13:124:14 | x5 | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:124:18:124:19 | S2 | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:125:9:125:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| associated_types.rs:125:18:125:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:125:18:125:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:125:18:125:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:125:18:125:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:125:18:125:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:125:26:125:27 | x5 | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:125:26:125:32 | x5.m1() | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:125:26:125:32 | x5.m1() | A | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:126:13:126:14 | x6 | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:126:18:126:19 | S2 | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:127:9:127:33 | MacroExpr | | {EXTERNAL LOCATION} | () | +| associated_types.rs:127:18:127:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:127:18:127:23 | "{:?}\\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:127:18:127:32 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:127:18:127:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:127:18:127:32 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:127:26:127:27 | x6 | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:127:26:127:32 | x6.m2() | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:127:26:127:32 | x6.m2() | A | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:135:30:135:34 | thing | | associated_types.rs:135:19:135:27 | T | +| associated_types.rs:136:9:136:13 | thing | | associated_types.rs:135:19:135:27 | T | +| associated_types.rs:139:33:139:37 | thing | | associated_types.rs:139:22:139:30 | T | +| associated_types.rs:140:9:140:13 | thing | | associated_types.rs:139:22:139:30 | T | +| associated_types.rs:143:19:146:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:144:30:144:30 | S | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:145:33:145:33 | S | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:153:26:153:26 | x | | associated_types.rs:153:23:153:23 | T | +| associated_types.rs:156:5:158:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:157:13:157:14 | _a | | {EXTERNAL LOCATION} | char | +| associated_types.rs:157:18:157:18 | x | | associated_types.rs:153:23:153:23 | T | +| associated_types.rs:157:18:157:24 | x.get() | | {EXTERNAL LOCATION} | char | +| associated_types.rs:161:24:161:24 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:164:5:168:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:165:13:165:15 | _a1 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:165:19:165:19 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:165:19:165:25 | x.get() | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:166:13:166:15 | _a2 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:166:19:166:25 | get(...) | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:166:23:166:24 | &x | | {EXTERNAL LOCATION} | & | +| associated_types.rs:166:23:166:24 | &x | TRef | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:166:24:166:24 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:167:13:167:14 | _b | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:167:18:167:18 | x | | associated_types.rs:161:21:161:21 | T | +| associated_types.rs:167:18:167:32 | x.get_another() | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:171:23:171:23 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:175:5:179:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:176:13:176:15 | _a1 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:176:19:176:19 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:176:19:176:25 | x.get() | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:177:13:177:15 | _a2 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:177:19:177:25 | get(...) | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:177:23:177:24 | &x | | {EXTERNAL LOCATION} | & | +| associated_types.rs:177:23:177:24 | &x | TRef | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:177:24:177:24 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:178:13:178:14 | _b | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:178:18:178:18 | x | | associated_types.rs:171:20:171:20 | T | +| associated_types.rs:178:18:178:32 | x.get_another() | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:185:17:185:21 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:185:17:185:21 | SelfParam | TRef | associated_types.rs:181:5:186:5 | Self [trait AssocNameClash] | +| associated_types.rs:188:34:188:34 | x | | associated_types.rs:188:31:188:31 | T | +| associated_types.rs:192:5:195:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:193:13:193:14 | _a | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:193:18:193:18 | x | | associated_types.rs:188:31:188:31 | T | +| associated_types.rs:193:18:193:24 | x.get() | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:194:18:194:18 | x | | associated_types.rs:188:31:188:31 | T | +| associated_types.rs:205:19:205:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:205:19:205:23 | SelfParam | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:205:26:205:26 | a | | associated_types.rs:205:16:205:16 | A | +| associated_types.rs:208:23:208:27 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:208:23:208:27 | SelfParam | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:208:30:208:30 | a | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:208:36:208:36 | b | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:208:76:211:9 | { ... } | | associated_types.rs:202:9:202:52 | GenericAssociatedType[MyTraitAssoc2] | +| associated_types.rs:209:13:209:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:209:13:209:16 | self | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:209:13:209:23 | self.put(...) | | associated_types.rs:202:9:202:52 | GenericAssociatedType[MyTraitAssoc2] | +| associated_types.rs:209:22:209:22 | a | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:210:13:210:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:210:13:210:16 | self | TRef | associated_types.rs:201:5:212:5 | Self [trait MyTraitAssoc2] | +| associated_types.rs:210:13:210:23 | self.put(...) | | associated_types.rs:202:9:202:52 | GenericAssociatedType[MyTraitAssoc2] | +| associated_types.rs:210:22:210:22 | b | | associated_types.rs:208:20:208:20 | A | +| associated_types.rs:219:19:219:23 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:219:19:219:23 | SelfParam | TRef | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:219:26:219:26 | a | | associated_types.rs:219:16:219:16 | A | +| associated_types.rs:219:46:221:9 | { ... } | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:219:46:221:9 | { ... } | A | associated_types.rs:219:16:219:16 | A | +| associated_types.rs:220:13:220:22 | Wrapper(...) | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:220:13:220:22 | Wrapper(...) | A | associated_types.rs:219:16:219:16 | A | +| associated_types.rs:220:21:220:21 | a | | associated_types.rs:219:16:219:16 | A | +| associated_types.rs:224:19:231:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:225:13:225:13 | s | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:225:17:225:17 | S | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:227:13:227:15 | _g1 | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:227:13:227:15 | _g1 | A | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:227:19:227:19 | s | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:227:19:227:29 | s.put(...) | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:227:19:227:29 | s.put(...) | A | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:227:25:227:28 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:230:13:230:15 | _g2 | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:230:19:230:19 | s | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:230:19:230:40 | s.put_two(...) | | associated_types.rs:1:1:2:21 | Wrapper | +| associated_types.rs:230:29:230:32 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:230:35:230:39 | false | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:242:21:242:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:242:21:242:25 | SelfParam | TRef | associated_types.rs:237:5:247:5 | Self [trait TraitMultipleAssoc] | +| associated_types.rs:244:20:244:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:244:20:244:24 | SelfParam | TRef | associated_types.rs:237:5:247:5 | Self [trait TraitMultipleAssoc] | +| associated_types.rs:246:20:246:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:246:20:246:24 | SelfParam | TRef | associated_types.rs:237:5:247:5 | Self [trait TraitMultipleAssoc] | +| associated_types.rs:253:21:253:25 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:253:21:253:25 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:253:34:255:9 | { ... } | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:254:13:254:14 | S3 | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:257:20:257:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:257:20:257:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:257:43:259:9 | { ... } | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:258:13:258:13 | S | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:261:20:261:24 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:261:20:261:24 | SelfParam | TRef | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:261:43:263:9 | { ... } | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:262:13:262:14 | S2 | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:266:19:270:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:267:13:267:23 | _assoc_zero | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:267:27:267:28 | S3 | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:267:27:267:39 | S3.get_zero() | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:268:13:268:22 | _assoc_one | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:268:26:268:27 | S3 | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:268:26:268:37 | S3.get_one() | | associated_types.rs:10:1:11:9 | S | +| associated_types.rs:269:13:269:22 | _assoc_two | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:269:26:269:27 | S3 | | associated_types.rs:16:1:17:10 | S3 | +| associated_types.rs:269:26:269:37 | S3.get_two() | | associated_types.rs:13:1:14:10 | S2 | +| associated_types.rs:278:24:278:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:278:24:278:28 | SelfParam | TRef | associated_types.rs:276:5:279:5 | Self [trait Subtrait] | +| associated_types.rs:287:23:287:27 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:287:23:287:27 | SelfParam | TRef | associated_types.rs:281:5:291:5 | Self [trait Subtrait2] | +| associated_types.rs:287:30:287:31 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:287:48:287:49 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:287:66:290:9 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:288:13:288:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:288:13:288:16 | self | TRef | associated_types.rs:281:5:291:5 | Self [trait Subtrait2] | +| associated_types.rs:288:13:288:24 | self.set(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:288:22:288:23 | c1 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:289:13:289:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:289:13:289:16 | self | TRef | associated_types.rs:281:5:291:5 | Self [trait Subtrait2] | +| associated_types.rs:289:13:289:24 | self.set(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:289:22:289:23 | c2 | | associated_types.rs:20:5:20:16 | Output[Subtrait2] | +| associated_types.rs:298:16:298:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:298:16:298:20 | SelfParam | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:298:16:298:20 | SelfParam | TRef.T | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:298:39:300:9 | { ... } | | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:299:13:299:16 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:299:13:299:16 | self | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:299:13:299:16 | self | TRef.T | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:299:13:299:18 | self.0 | | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:302:16:302:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:302:16:302:20 | SelfParam | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:302:16:302:20 | SelfParam | TRef.T | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:302:23:302:30 | _content | | associated_types.rs:295:10:295:16 | T | +| associated_types.rs:302:47:304:9 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:303:13:303:43 | MacroExpr | | {EXTERNAL LOCATION} | () | +| associated_types.rs:303:22:303:42 | "Inserting content: \\n" | | {EXTERNAL LOCATION} | & | +| associated_types.rs:303:22:303:42 | "Inserting content: \\n" | TRef | {EXTERNAL LOCATION} | str | +| associated_types.rs:303:22:303:42 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:303:22:303:42 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:303:22:303:42 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:309:24:309:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:309:24:309:28 | SelfParam | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:309:24:309:28 | SelfParam | TRef.T | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:309:47:311:9 | { ... } | | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:310:13:310:19 | (...) | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:310:13:310:19 | (...) | T | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:310:13:310:21 | ... .0 | | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:310:14:310:18 | * ... | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:310:14:310:18 | * ... | T | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:310:15:310:18 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:310:15:310:18 | self | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:310:15:310:18 | self | TRef.T | associated_types.rs:307:10:307:16 | T | +| associated_types.rs:316:24:316:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:316:24:316:28 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:316:24:316:28 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:324:24:324:28 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:324:24:324:28 | SelfParam | TRef | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:324:24:324:28 | SelfParam | TRef.OddT | {EXTERNAL LOCATION} | bool | +| associated_types.rs:329:33:329:36 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:329:33:329:36 | item | TRef | associated_types.rs:329:20:329:30 | T | +| associated_types.rs:330:9:330:12 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:330:9:330:12 | item | TRef | associated_types.rs:329:20:329:30 | T | +| associated_types.rs:333:35:333:38 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:333:35:333:38 | item | TRef | associated_types.rs:333:21:333:32 | T | +| associated_types.rs:333:90:336:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:334:9:334:12 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:334:9:334:12 | item | TRef | associated_types.rs:333:21:333:32 | T | +| associated_types.rs:334:9:334:20 | item.set(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:335:9:335:12 | item | | {EXTERNAL LOCATION} | & | +| associated_types.rs:335:9:335:12 | item | TRef | associated_types.rs:333:21:333:32 | T | +| associated_types.rs:335:9:335:31 | item.insert_two(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:338:19:347:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:339:13:339:17 | item1 | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:339:13:339:17 | item1 | T | {EXTERNAL LOCATION} | i64 | +| associated_types.rs:339:21:339:33 | MyType(...) | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:339:21:339:33 | MyType(...) | T | {EXTERNAL LOCATION} | i64 | +| associated_types.rs:339:28:339:32 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| associated_types.rs:340:25:340:29 | item1 | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:340:25:340:29 | item1 | T | {EXTERNAL LOCATION} | i64 | +| associated_types.rs:342:13:342:17 | item2 | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:342:13:342:17 | item2 | T | {EXTERNAL LOCATION} | bool | +| associated_types.rs:342:21:342:32 | MyType(...) | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:342:21:342:32 | MyType(...) | T | {EXTERNAL LOCATION} | bool | +| associated_types.rs:342:28:342:31 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:343:37:343:42 | &item2 | | {EXTERNAL LOCATION} | & | +| associated_types.rs:343:37:343:42 | &item2 | TRef | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:343:37:343:42 | &item2 | TRef.T | {EXTERNAL LOCATION} | bool | +| associated_types.rs:343:38:343:42 | item2 | | associated_types.rs:293:5:293:24 | MyType | +| associated_types.rs:343:38:343:42 | item2 | T | {EXTERNAL LOCATION} | bool | +| associated_types.rs:345:25:345:34 | Odd(...) | | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:345:25:345:34 | Odd(...) | OddT | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:345:29:345:33 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:346:25:346:33 | Odd(...) | | associated_types.rs:58:1:58:23 | Odd | +| associated_types.rs:346:25:346:33 | Odd(...) | OddT | {EXTERNAL LOCATION} | bool | +| associated_types.rs:346:29:346:32 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:360:16:360:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| associated_types.rs:360:16:360:20 | SelfParam | TRef | associated_types.rs:353:5:353:20 | ST | +| associated_types.rs:360:16:360:20 | SelfParam | TRef.T | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:360:39:362:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| associated_types.rs:360:39:362:9 | { ... } | E | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:360:39:362:9 | { ... } | T | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:361:13:361:22 | Ok(...) | | {EXTERNAL LOCATION} | Result | +| associated_types.rs:361:13:361:22 | Ok(...) | E | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:361:13:361:22 | Ok(...) | T | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:361:16:361:19 | self | | {EXTERNAL LOCATION} | & | +| associated_types.rs:361:16:361:19 | self | TRef | associated_types.rs:353:5:353:20 | ST | +| associated_types.rs:361:16:361:19 | self | TRef.T | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:361:16:361:21 | self.0 | | associated_types.rs:355:10:355:21 | Output | +| associated_types.rs:365:19:367:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:366:13:366:14 | _y | | {EXTERNAL LOCATION} | Result | +| associated_types.rs:366:13:366:14 | _y | E | {EXTERNAL LOCATION} | bool | +| associated_types.rs:366:13:366:14 | _y | T | {EXTERNAL LOCATION} | bool | +| associated_types.rs:366:18:366:25 | ST(...) | | associated_types.rs:353:5:353:20 | ST | +| associated_types.rs:366:18:366:25 | ST(...) | T | {EXTERNAL LOCATION} | bool | +| associated_types.rs:366:18:366:31 | ... .get() | | {EXTERNAL LOCATION} | Result | +| associated_types.rs:366:18:366:31 | ... .get() | E | {EXTERNAL LOCATION} | bool | +| associated_types.rs:366:18:366:31 | ... .get() | T | {EXTERNAL LOCATION} | bool | +| associated_types.rs:366:21:366:24 | true | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:374:31:374:31 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:374:31:374:31 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:374:31:374:31 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:374:61:382:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:376:13:376:15 | _a1 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:376:19:376:22 | (...) | | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:376:19:376:22 | (...) | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:376:19:376:28 | ... .get() | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:376:20:376:21 | * ... | | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:376:20:376:21 | * ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:376:21:376:21 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:376:21:376:21 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:376:21:376:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:379:13:379:15 | _a2 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:379:19:379:19 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:379:19:379:19 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:379:19:379:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:379:19:379:25 | t.get() | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:381:13:381:15 | _a3 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:381:19:381:24 | get(...) | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:381:23:381:23 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:381:23:381:23 | t | TRef | associated_types.rs:19:1:27:1 | dyn GetSet | +| associated_types.rs:381:23:381:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:384:36:384:36 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:384:36:384:36 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:384:36:384:36 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:384:36:384:36 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:384:92:390:5 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:385:13:385:15 | _a1 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:385:19:385:22 | (...) | | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:385:19:385:22 | (...) | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:385:19:385:22 | (...) | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:385:19:385:28 | ... .get() | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:385:20:385:21 | * ... | | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:385:20:385:21 | * ... | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:385:20:385:21 | * ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:385:21:385:21 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:385:21:385:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:385:21:385:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:385:21:385:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:386:13:386:15 | _a2 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:386:19:386:19 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:386:19:386:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:386:19:386:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:386:19:386:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:386:19:386:25 | t.get() | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:387:13:387:15 | _a3 | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:387:19:387:24 | get(...) | | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:387:23:387:23 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:387:23:387:23 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:387:23:387:23 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:387:23:387:23 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:388:13:388:15 | _b1 | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:388:19:388:22 | (...) | | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:388:19:388:22 | (...) | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:388:19:388:22 | (...) | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:388:19:388:36 | ... .get_another() | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:388:20:388:21 | * ... | | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:388:20:388:21 | * ... | dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:388:20:388:21 | * ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:388:21:388:21 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:388:21:388:21 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:388:21:388:21 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:388:21:388:21 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:389:13:389:15 | _b2 | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:389:19:389:19 | t | | {EXTERNAL LOCATION} | & | +| associated_types.rs:389:19:389:19 | t | TRef | associated_types.rs:33:1:38:1 | dyn AnotherGet | +| associated_types.rs:389:19:389:19 | t | TRef.dyn(AnotherOutput) | {EXTERNAL LOCATION} | bool | +| associated_types.rs:389:19:389:19 | t | TRef.dyn(Output) | {EXTERNAL LOCATION} | i32 | +| associated_types.rs:389:19:389:33 | t.get_another() | | {EXTERNAL LOCATION} | bool | +| associated_types.rs:393:15:400:1 | { ... } | | {EXTERNAL LOCATION} | () | +| associated_types.rs:394:5:394:48 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:395:5:395:45 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:396:5:396:35 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:397:5:397:37 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:398:5:398:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| associated_types.rs:399:5:399:46 | ...::test(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:15:18:15:22 | SelfParam | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:15:18:15:22 | SelfParam | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:15:42:17:9 | { ... } | | {EXTERNAL LOCATION} | & |