mirror of
https://github.com/github/codeql.git
synced 2026-04-27 01:35:13 +02:00
Rust: Path resolution for inherited associated items
This commit is contained in:
@@ -131,14 +131,15 @@ abstract class ItemNode extends AstNode {
|
||||
result = call.(ItemNode).getASuccessorRec(name)
|
||||
)
|
||||
or
|
||||
// an inherited function, either from a trait bound or from an `impl` block
|
||||
// a trait has access to the associated items of its supertraits
|
||||
result = this.(TraitItemNode).resolveABound().getASuccessorRec(name) and
|
||||
result instanceof AssocItemNode
|
||||
or
|
||||
// items made available by an implementation where `this` is the implementing type
|
||||
exists(ItemNode node |
|
||||
result = node.(ItemNode).getASuccessorRec(name) and
|
||||
result instanceof Function
|
||||
|
|
||||
node = this.(TraitItemNode).resolveABound()
|
||||
or
|
||||
this = node.(ImplItemNode).resolveSelfTy()
|
||||
this = node.(ImplItemNode).resolveSelfTy() and
|
||||
result = node.getASuccessorRec(name) and
|
||||
result instanceof AssocItemNode
|
||||
)
|
||||
}
|
||||
|
||||
@@ -189,7 +190,10 @@ private class SourceFileItemNode extends ModuleLikeNode, SourceFile {
|
||||
override Visibility getVisibility() { none() }
|
||||
}
|
||||
|
||||
private class ConstItemNode extends ItemNode instanceof Const {
|
||||
/** An item that can occur in a trait or an `impl` block. */
|
||||
abstract private class AssocItemNode extends ItemNode { }
|
||||
|
||||
private class ConstItemNode extends AssocItemNode instanceof Const {
|
||||
override string getName() { result = Const.super.getName().getText() }
|
||||
|
||||
override Namespace getNamespace() { result.isValue() }
|
||||
@@ -215,7 +219,7 @@ private class VariantItemNode extends ItemNode instanceof Variant {
|
||||
override Visibility getVisibility() { result = Variant.super.getVisibility() }
|
||||
}
|
||||
|
||||
private class FunctionItemNode extends ItemNode instanceof Function {
|
||||
private class FunctionItemNode extends AssocItemNode instanceof Function {
|
||||
override string getName() { result = Function.super.getName().getText() }
|
||||
|
||||
override Namespace getNamespace() { result.isValue() }
|
||||
@@ -249,7 +253,7 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
|
||||
override Visibility getVisibility() { result = Impl.super.getVisibility() }
|
||||
}
|
||||
|
||||
private class MacroCallItemNode extends ItemNode instanceof MacroCall {
|
||||
private class MacroCallItemNode extends AssocItemNode instanceof MacroCall {
|
||||
override string getName() { result = "(macro call)" }
|
||||
|
||||
override Namespace getNamespace() { none() }
|
||||
@@ -293,7 +297,7 @@ class TraitItemNode extends ImplOrTraitItemNode instanceof Trait {
|
||||
override Visibility getVisibility() { result = Trait.super.getVisibility() }
|
||||
}
|
||||
|
||||
class TypeAliasItemNode extends ItemNode instanceof TypeAlias {
|
||||
class TypeAliasItemNode extends AssocItemNode instanceof TypeAlias {
|
||||
override string getName() { result = TypeAlias.super.getName().getText() }
|
||||
|
||||
override Namespace getNamespace() { result.isType() }
|
||||
|
||||
@@ -347,6 +347,93 @@ mod m15 {
|
||||
} // I75
|
||||
}
|
||||
|
||||
mod m16 {
|
||||
#[rustfmt::skip]
|
||||
trait Trait1<
|
||||
T // I84
|
||||
> {
|
||||
fn f(&self) -> T; // $ item=I84
|
||||
|
||||
fn g(&self) -> T // $ item=I84
|
||||
; // I85
|
||||
|
||||
const c: T // $ item=I84
|
||||
; // I94
|
||||
} // I86
|
||||
|
||||
#[rustfmt::skip]
|
||||
trait Trait2<
|
||||
T // I87
|
||||
> // I88
|
||||
: Trait1<
|
||||
T // $ item=I87
|
||||
> { // $ item=I86
|
||||
fn f(&self) -> T { // $ item=I87
|
||||
println!("m16::Trait2::f");
|
||||
Self::g(self); // $ item=I85
|
||||
self.g(); // $ MISSING: item=I85
|
||||
Self::c // $ item=I94
|
||||
}
|
||||
} // I89
|
||||
|
||||
struct S; // I90
|
||||
|
||||
#[rustfmt::skip]
|
||||
impl Trait1<
|
||||
S // $ item=I90
|
||||
> // $ item=I86
|
||||
for S { // $ item=I90
|
||||
fn f(&self) -> S { // $ item=I90
|
||||
println!("m16::<S as Trait1<S>>::f");
|
||||
Self::g(self); // $ item=I92
|
||||
self.g() // $ MISSING: item=I92
|
||||
} // I91
|
||||
|
||||
fn g(&self) -> S { // $ item=I90
|
||||
println!("m16::<S as Trait1<S>>::g");
|
||||
Self::c // $ item=I95
|
||||
} // I92
|
||||
|
||||
const c: S = S // $ item=I90
|
||||
; // I95
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
impl Trait2<
|
||||
S // $ item=I90
|
||||
> // $ item=I89
|
||||
for S { // $ item=I90
|
||||
fn f(&self) -> S { // $ item=I90
|
||||
println!("m16::<S as Trait2<S>>::f");
|
||||
Self::c // $ MISSING: item=I95
|
||||
} // I93
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
pub fn f() {
|
||||
println!("m16::f");
|
||||
let x = S; // $ item=I90
|
||||
<S // $ item=I90
|
||||
as Trait1<
|
||||
S // $ item=I90
|
||||
> // $ MISSING: item=I86
|
||||
>::f(&x); // $ MISSING: item=I91
|
||||
<S // $ item=I90
|
||||
as Trait2<
|
||||
S // $ item=I90
|
||||
> // MISSING: item=I89
|
||||
>::f(&x); // $ MISSING: item=I93
|
||||
S::g(&x); // $ item=I92
|
||||
x.g(); // $ MISSING: item=I92
|
||||
S::c; // $ item=I95
|
||||
<S // $ item=I90
|
||||
as Trait1<
|
||||
S // $ item=I90
|
||||
> // $ MISSING: item=I86
|
||||
>::c; // $ MISSING: item=I95
|
||||
} // I83
|
||||
}
|
||||
|
||||
fn main() {
|
||||
my::nested::nested1::nested2::f(); // $ item=I4
|
||||
my::f(); // $ item=I38
|
||||
@@ -367,4 +454,5 @@ fn main() {
|
||||
m9::f(); // $ item=I57
|
||||
m11::f(); // $ item=I63
|
||||
m15::f(); // $ item=I75
|
||||
m16::f(); // $ item=I83
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ mod
|
||||
| main.rs:279:1:292:1 | mod m13 |
|
||||
| main.rs:283:5:291:5 | mod m14 |
|
||||
| main.rs:294:1:348:1 | mod m15 |
|
||||
| main.rs:350:1:435:1 | mod m16 |
|
||||
| my2/mod.rs:1:1:1:16 | mod nested2 |
|
||||
| my2/nested2.rs:1:1:11:1 | mod nested3 |
|
||||
| my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
@@ -44,7 +45,7 @@ resolvePath
|
||||
| main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f |
|
||||
| main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f |
|
||||
| main.rs:40:9:40:13 | super | main.rs:1:1:370:2 | SourceFile |
|
||||
| main.rs:40:9:40:13 | super | main.rs:1:1:458:2 | SourceFile |
|
||||
| main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g |
|
||||
@@ -56,7 +57,7 @@ resolvePath
|
||||
| main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo |
|
||||
| main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo |
|
||||
| main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f |
|
||||
| main.rs:68:5:68:8 | self | main.rs:1:1:370:2 | SourceFile |
|
||||
| main.rs:68:5:68:8 | self | main.rs:1:1:458:2 | SourceFile |
|
||||
| main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i |
|
||||
| main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo |
|
||||
| main.rs:81:17:81:19 | Foo | main.rs:77:9:79:9 | struct Foo |
|
||||
@@ -70,7 +71,7 @@ resolvePath
|
||||
| main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
| main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro |
|
||||
| main.rs:117:13:117:17 | super | main.rs:1:1:370:2 | SourceFile |
|
||||
| main.rs:117:13:117:17 | super | main.rs:1:1:458:2 | SourceFile |
|
||||
| main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 |
|
||||
| main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f |
|
||||
| main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
|
||||
@@ -125,7 +126,7 @@ resolvePath
|
||||
| main.rs:274:16:274:16 | T | main.rs:268:7:268:7 | T |
|
||||
| main.rs:275:14:275:17 | Self | main.rs:266:5:276:5 | trait MyParamTrait |
|
||||
| main.rs:275:14:275:33 | ...::AssociatedType | main.rs:270:9:270:28 | TypeAlias |
|
||||
| main.rs:284:13:284:17 | crate | main.rs:1:1:370:2 | SourceFile |
|
||||
| main.rs:284:13:284:17 | crate | main.rs:1:1:458:2 | SourceFile |
|
||||
| main.rs:284:13:284:22 | ...::m13 | main.rs:279:1:292:1 | mod m13 |
|
||||
| main.rs:284:13:284:25 | ...::f | main.rs:280:5:280:17 | fn f |
|
||||
| main.rs:284:13:284:25 | ...::f | main.rs:280:19:281:19 | struct f |
|
||||
@@ -148,46 +149,85 @@ resolvePath
|
||||
| main.rs:342:10:342:10 | S | main.rs:311:5:311:13 | struct S |
|
||||
| main.rs:345:9:345:9 | S | main.rs:311:5:311:13 | struct S |
|
||||
| main.rs:345:9:345:12 | ...::g | main.rs:322:9:324:9 | fn g |
|
||||
| main.rs:351:5:351:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:351:5:351:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
|
||||
| main.rs:351:5:351:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
|
||||
| main.rs:351:5:351:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
|
||||
| main.rs:351:5:351:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
|
||||
| main.rs:352:5:352:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:352:5:352:9 | ...::f | my.rs:5:1:7:1 | fn f |
|
||||
| main.rs:353:5:353:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
|
||||
| main.rs:353:5:353:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
|
||||
| main.rs:353:5:353:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
| main.rs:353:5:353:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:354:5:354:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:355:5:355:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:356:5:356:9 | crate | main.rs:1:1:370:2 | SourceFile |
|
||||
| main.rs:356:5:356:12 | ...::h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:357:5:357:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:357:5:357:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:357:5:357:13 | ...::g | main.rs:23:9:27:9 | fn g |
|
||||
| main.rs:358:5:358:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:358:5:358:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:358:5:358:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
|
||||
| main.rs:358:5:358:17 | ...::h | main.rs:30:27:34:13 | fn h |
|
||||
| main.rs:359:5:359:6 | m4 | main.rs:39:1:46:1 | mod m4 |
|
||||
| main.rs:359:5:359:9 | ...::i | main.rs:42:5:45:5 | fn i |
|
||||
| main.rs:360:5:360:5 | h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:361:5:361:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:362:5:362:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:363:5:363:5 | j | main.rs:97:1:101:1 | fn j |
|
||||
| main.rs:364:5:364:6 | m6 | main.rs:109:1:120:1 | mod m6 |
|
||||
| main.rs:364:5:364:9 | ...::g | main.rs:114:5:119:5 | fn g |
|
||||
| main.rs:365:5:365:6 | m7 | main.rs:122:1:137:1 | mod m7 |
|
||||
| main.rs:365:5:365:9 | ...::f | main.rs:129:5:136:5 | fn f |
|
||||
| main.rs:366:5:366:6 | m8 | main.rs:139:1:193:1 | mod m8 |
|
||||
| main.rs:366:5:366:9 | ...::g | main.rs:177:5:192:5 | fn g |
|
||||
| main.rs:367:5:367:6 | m9 | main.rs:195:1:203:1 | mod m9 |
|
||||
| main.rs:367:5:367:9 | ...::f | main.rs:198:5:202:5 | fn f |
|
||||
| main.rs:368:5:368:7 | m11 | main.rs:226:1:263:1 | mod m11 |
|
||||
| main.rs:368:5:368:10 | ...::f | main.rs:231:5:234:5 | fn f |
|
||||
| main.rs:369:5:369:7 | m15 | main.rs:294:1:348:1 | mod m15 |
|
||||
| main.rs:369:5:369:10 | ...::f | main.rs:335:5:347:5 | fn f |
|
||||
| main.rs:355:24:355:24 | T | main.rs:353:7:353:7 | T |
|
||||
| main.rs:357:24:357:24 | T | main.rs:353:7:353:7 | T |
|
||||
| main.rs:360:18:360:18 | T | main.rs:353:7:353:7 | T |
|
||||
| main.rs:368:9:370:9 | Trait1::<...> | main.rs:351:5:362:5 | trait Trait1 |
|
||||
| main.rs:369:11:369:11 | T | main.rs:366:7:366:7 | T |
|
||||
| main.rs:371:24:371:24 | T | main.rs:366:7:366:7 | T |
|
||||
| main.rs:373:13:373:16 | Self | main.rs:364:5:377:5 | trait Trait2 |
|
||||
| main.rs:373:13:373:19 | ...::g | main.rs:357:9:358:9 | fn g |
|
||||
| main.rs:375:13:375:16 | Self | main.rs:364:5:377:5 | trait Trait2 |
|
||||
| main.rs:375:13:375:19 | ...::c | main.rs:360:9:361:9 | Const |
|
||||
| main.rs:382:10:384:5 | Trait1::<...> | main.rs:351:5:362:5 | trait Trait1 |
|
||||
| main.rs:383:7:383:7 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:385:11:385:11 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:386:24:386:24 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:388:13:388:16 | Self | main.rs:381:5:399:5 | impl Trait1::<...> for S { ... } |
|
||||
| main.rs:388:13:388:19 | ...::g | main.rs:392:9:395:9 | fn g |
|
||||
| main.rs:392:24:392:24 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:394:13:394:16 | Self | main.rs:381:5:399:5 | impl Trait1::<...> for S { ... } |
|
||||
| main.rs:394:13:394:19 | ...::c | main.rs:397:9:398:9 | Const |
|
||||
| main.rs:397:18:397:18 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:397:22:397:22 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:402:10:404:5 | Trait2::<...> | main.rs:364:5:377:5 | trait Trait2 |
|
||||
| main.rs:403:7:403:7 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:405:11:405:11 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:406:24:406:24 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:408:13:408:16 | Self | main.rs:401:5:410:5 | impl Trait2::<...> for S { ... } |
|
||||
| main.rs:415:17:415:17 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:416:10:416:10 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:416:10:416:10 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:421:10:421:10 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:421:10:421:10 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:426:9:426:9 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:426:9:426:12 | ...::g | main.rs:392:9:395:9 | fn g |
|
||||
| main.rs:428:9:428:9 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:428:9:428:12 | ...::c | main.rs:397:9:398:9 | Const |
|
||||
| main.rs:429:10:429:10 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:429:10:429:10 | S | main.rs:379:5:379:13 | struct S |
|
||||
| main.rs:438:5:438:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:438:5:438:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
|
||||
| main.rs:438:5:438:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
|
||||
| main.rs:438:5:438:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
|
||||
| main.rs:438:5:438:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
|
||||
| main.rs:439:5:439:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:439:5:439:9 | ...::f | my.rs:5:1:7:1 | fn f |
|
||||
| main.rs:440:5:440:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
|
||||
| main.rs:440:5:440:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
|
||||
| main.rs:440:5:440:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
| main.rs:440:5:440:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:441:5:441:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:442:5:442:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:443:5:443:9 | crate | main.rs:1:1:458:2 | SourceFile |
|
||||
| main.rs:443:5:443:12 | ...::h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:444:5:444:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:444:5:444:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:444:5:444:13 | ...::g | main.rs:23:9:27:9 | fn g |
|
||||
| main.rs:445:5:445:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:445:5:445:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:445:5:445:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
|
||||
| main.rs:445:5:445:17 | ...::h | main.rs:30:27:34:13 | fn h |
|
||||
| main.rs:446:5:446:6 | m4 | main.rs:39:1:46:1 | mod m4 |
|
||||
| main.rs:446:5:446:9 | ...::i | main.rs:42:5:45:5 | fn i |
|
||||
| main.rs:447:5:447:5 | h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:448:5:448:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:449:5:449:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:450:5:450:5 | j | main.rs:97:1:101:1 | fn j |
|
||||
| main.rs:451:5:451:6 | m6 | main.rs:109:1:120:1 | mod m6 |
|
||||
| main.rs:451:5:451:9 | ...::g | main.rs:114:5:119:5 | fn g |
|
||||
| main.rs:452:5:452:6 | m7 | main.rs:122:1:137:1 | mod m7 |
|
||||
| main.rs:452:5:452:9 | ...::f | main.rs:129:5:136:5 | fn f |
|
||||
| main.rs:453:5:453:6 | m8 | main.rs:139:1:193:1 | mod m8 |
|
||||
| main.rs:453:5:453:9 | ...::g | main.rs:177:5:192:5 | fn g |
|
||||
| main.rs:454:5:454:6 | m9 | main.rs:195:1:203:1 | mod m9 |
|
||||
| main.rs:454:5:454:9 | ...::f | main.rs:198:5:202:5 | fn f |
|
||||
| main.rs:455:5:455:7 | m11 | main.rs:226:1:263:1 | mod m11 |
|
||||
| main.rs:455:5:455:10 | ...::f | main.rs:231:5:234:5 | fn f |
|
||||
| main.rs:456:5:456:7 | m15 | main.rs:294:1:348:1 | mod m15 |
|
||||
| main.rs:456:5:456:10 | ...::f | main.rs:335:5:347:5 | fn f |
|
||||
| main.rs:457:5:457:7 | m16 | main.rs:350:1:435:1 | mod m16 |
|
||||
| main.rs:457:5:457:10 | ...::f | main.rs:412:5:434:5 | fn f |
|
||||
| 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 |
|
||||
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
|
||||
Reference in New Issue
Block a user