Skip to content

Commit 297735f

Browse files
committed
Add tests
1 parent 119a8df commit 297735f

File tree

5 files changed

+175
-1
lines changed

5 files changed

+175
-1
lines changed

compiler/rustc_ast_lowering/src/delegation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
285285
}
286286
}
287287

288-
// Def id is either None or is from non-local crate, fallback to the original routine.
288+
// DefId is either None or is from non-local crate, fallback to the original routine.
289289
return self.def_id_or_guaranteed_err(def_id, node_id, span);
290290
}
291291
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#![feature(fn_delegation)]
2+
#![allow(incomplete_features)]
3+
4+
fn foo() {
5+
6+
}
7+
8+
reuse foo as bar;
9+
pub reuse bar as goo;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#![feature(fn_delegation)]
2+
#![allow(incomplete_features)]
3+
#![allow(dead_code)]
4+
#![allow(unused_variables)]
5+
6+
7+
mod first_mod {
8+
reuse foo;
9+
//~^ ERROR failed to resolve delegation callee
10+
}
11+
12+
mod second_mod {
13+
reuse foo as bar;
14+
//~^ ERROR failed to resolve delegation callee
15+
reuse bar as foo;
16+
//~^ ERROR failed to resolve delegation callee
17+
18+
}
19+
20+
mod third_mod {
21+
reuse foo as foo1;
22+
//~^ ERROR failed to resolve delegation callee
23+
reuse foo1 as foo2;
24+
//~^ ERROR failed to resolve delegation callee
25+
reuse foo2 as foo3;
26+
//~^ ERROR failed to resolve delegation callee
27+
reuse foo3 as foo4;
28+
//~^ ERROR failed to resolve delegation callee
29+
reuse foo4 as foo5;
30+
//~^ ERROR failed to resolve delegation callee
31+
reuse foo5 as foo;
32+
//~^ ERROR failed to resolve delegation callee
33+
}
34+
35+
mod fourth_mod {
36+
trait Trait {
37+
reuse Trait::foo as bar;
38+
//~^ ERROR failed to resolve delegation callee
39+
reuse Trait::bar as foo;
40+
//~^ ERROR failed to resolve delegation callee
41+
}
42+
}
43+
44+
fn main() {}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
error: failed to resolve delegation callee
2+
--> $DIR/recursive_delegation_errors.rs:8:11
3+
|
4+
LL | reuse foo;
5+
| ^^^
6+
7+
error: failed to resolve delegation callee
8+
--> $DIR/recursive_delegation_errors.rs:13:11
9+
|
10+
LL | reuse foo as bar;
11+
| ^^^
12+
13+
error: failed to resolve delegation callee
14+
--> $DIR/recursive_delegation_errors.rs:15:11
15+
|
16+
LL | reuse bar as foo;
17+
| ^^^
18+
19+
error: failed to resolve delegation callee
20+
--> $DIR/recursive_delegation_errors.rs:21:11
21+
|
22+
LL | reuse foo as foo1;
23+
| ^^^
24+
25+
error: failed to resolve delegation callee
26+
--> $DIR/recursive_delegation_errors.rs:23:11
27+
|
28+
LL | reuse foo1 as foo2;
29+
| ^^^^
30+
31+
error: failed to resolve delegation callee
32+
--> $DIR/recursive_delegation_errors.rs:25:11
33+
|
34+
LL | reuse foo2 as foo3;
35+
| ^^^^
36+
37+
error: failed to resolve delegation callee
38+
--> $DIR/recursive_delegation_errors.rs:27:11
39+
|
40+
LL | reuse foo3 as foo4;
41+
| ^^^^
42+
43+
error: failed to resolve delegation callee
44+
--> $DIR/recursive_delegation_errors.rs:29:11
45+
|
46+
LL | reuse foo4 as foo5;
47+
| ^^^^
48+
49+
error: failed to resolve delegation callee
50+
--> $DIR/recursive_delegation_errors.rs:31:11
51+
|
52+
LL | reuse foo5 as foo;
53+
| ^^^^
54+
55+
error: failed to resolve delegation callee
56+
--> $DIR/recursive_delegation_errors.rs:37:22
57+
|
58+
LL | reuse Trait::foo as bar;
59+
| ^^^
60+
61+
error: failed to resolve delegation callee
62+
--> $DIR/recursive_delegation_errors.rs:39:22
63+
|
64+
LL | reuse Trait::bar as foo;
65+
| ^^^
66+
67+
error: aborting due to 11 previous errors
68+
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//@ run-pass
2+
//@ edition:2018
3+
//@ aux-crate:recursive_delegation_aux=recursive-delegation-aux.rs
4+
5+
#![feature(fn_delegation)]
6+
#![allow(incomplete_features)]
7+
#![allow(dead_code)]
8+
#![allow(unused_variables)]
9+
10+
extern crate recursive_delegation_aux;
11+
12+
mod first_mod {
13+
pub mod to_reuse {
14+
pub fn foo(x: usize) -> usize {
15+
x + 1
16+
}
17+
}
18+
19+
reuse to_reuse::foo;
20+
reuse foo as bar;
21+
reuse foo as bar1;
22+
reuse bar as goo;
23+
reuse goo as koo;
24+
reuse koo as too;
25+
}
26+
27+
mod second_mod {
28+
trait T {
29+
fn foo(&self);
30+
reuse T::foo as bar;
31+
reuse T::bar as goo;
32+
reuse T::goo as poo;
33+
}
34+
}
35+
36+
mod third_mod {
37+
reuse crate::first_mod::to_reuse::foo {
38+
reuse foo as bar {
39+
reuse bar as goo {
40+
bar(123)
41+
}
42+
43+
goo(123)
44+
}(123)
45+
}
46+
}
47+
48+
mod fourth_mod {
49+
reuse recursive_delegation_aux::goo as bar;
50+
reuse bar as foo;
51+
}
52+
53+
fn main() {}

0 commit comments

Comments
 (0)