-
Notifications
You must be signed in to change notification settings - Fork 13k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
resolve: Simplify collection of traits in scope
- Loading branch information
1 parent
6526e5c
commit b7071b2
Showing
7 changed files
with
139 additions
and
161 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
// Macros with def-site hygiene still bring traits into scope. | ||
// It is not clear whether this is desirable behavior or not. | ||
// It is also not clear how to prevent it if it is not desirable. | ||
|
||
// check-pass | ||
|
||
#![feature(decl_macro)] | ||
#![feature(trait_alias)] | ||
|
||
mod traits { | ||
pub trait Trait1 { | ||
fn simple_import(&self) {} | ||
} | ||
pub trait Trait2 { | ||
fn renamed_import(&self) {} | ||
} | ||
pub trait Trait3 { | ||
fn underscore_import(&self) {} | ||
} | ||
pub trait Trait4 { | ||
fn trait_alias(&self) {} | ||
} | ||
|
||
impl Trait1 for () {} | ||
impl Trait2 for () {} | ||
impl Trait3 for () {} | ||
impl Trait4 for () {} | ||
} | ||
|
||
macro m1() { | ||
use traits::Trait1; | ||
} | ||
macro m2() { | ||
use traits::Trait2 as Alias; | ||
} | ||
macro m3() { | ||
use traits::Trait3 as _; | ||
} | ||
macro m4() { | ||
trait Alias = traits::Trait4; | ||
} | ||
|
||
fn main() { | ||
m1!(); | ||
m2!(); | ||
m3!(); | ||
m4!(); | ||
|
||
().simple_import(); | ||
().renamed_import(); | ||
().underscore_import(); | ||
().trait_alias(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.