From 734441c1ae5f0766842d37db68f606a1bca49836 Mon Sep 17 00:00:00 2001 From: David Wood Date: Tue, 4 Aug 2020 10:47:07 +0100 Subject: [PATCH] tests: add test for #61019's current behaviour This commit adds a test for #61019 where a extern crate is imported as `std` which results in name resolution to fail due to the uses of `std` types introduced from lowering. Signed-off-by: David Wood --- src/test/ui/hygiene/hir-res-hygiene.rs | 41 ++++++++++++++++++ src/test/ui/hygiene/hir-res-hygiene.stderr | 49 ++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 src/test/ui/hygiene/hir-res-hygiene.rs create mode 100644 src/test/ui/hygiene/hir-res-hygiene.stderr diff --git a/src/test/ui/hygiene/hir-res-hygiene.rs b/src/test/ui/hygiene/hir-res-hygiene.rs new file mode 100644 index 0000000000000..e5af1000dd53e --- /dev/null +++ b/src/test/ui/hygiene/hir-res-hygiene.rs @@ -0,0 +1,41 @@ +//~ ERROR failed to resolve: could not find `future` in `std` [E0433] +//~^ ERROR failed to resolve: could not find `pin` in `std` [E0433] +//~^^ ERROR failed to resolve: could not find `future` in `std` [E0433] +//~^^^ ERROR failed to resolve: could not find `future` in `std` [E0433] +//~^^^^ ERROR failed to resolve: could not find `task` in `std` [E0433] +//~^^^^^ ERROR failed to resolve: could not find `task` in `std` [E0433] +//~^^^^^^ ERROR failed to resolve: could not find `future` in `std` [E0433] +//~^^^^^^^ ERROR failed to resolve: could not find `future` in `std` [E0433] +//~^^^^^^^^ ERROR failed to resolve: could not find `ops` in `std` [E0433] +//~^^^^^^^^^ ERROR failed to resolve: could not find `option` in `std` [E0433] +//~^^^^^^^^^^ ERROR failed to resolve: could not find `option` in `std` [E0433] +//~^^^^^^^^^^^ ERROR failed to resolve: could not find `iter` in `std` [E0433] +//~^^^^^^^^^^^^ ERROR failed to resolve: could not find `iter` in `std` [E0433] +//~^^^^^^^^^^^^^ ERROR failed to resolve: could not find `ops` in `std` [E0433] +//~^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `option` in `std` [E0433] +//~^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `option` in `std` [E0433] +//~^^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `iter` in `std` [E0433] +//~^^^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `iter` in `std` [E0433] +//~^^^^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `ops` in `std` [E0433] +//~^^^^^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `result` in `std` [E0433] +//~^^^^^^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `convert` in `std` [E0433] +//~^^^^^^^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `ops` in `std` [E0433] +//~^^^^^^^^^^^^^^^^^^^^^^ ERROR failed to resolve: could not find `result` in `std` [E0433] + +// edition:2018 +// aux-build:not-libstd.rs + +// Check that paths created in HIR are not affected by in scope names. + +extern crate not_libstd as std; + +async fn the_future() { + async {}.await; +} + +fn main() -> Result<(), ()> { + for i in 0..10 {} + for j in 0..=10 {} + Ok(())?; + Ok(()) +} diff --git a/src/test/ui/hygiene/hir-res-hygiene.stderr b/src/test/ui/hygiene/hir-res-hygiene.stderr new file mode 100644 index 0000000000000..73a1bd5c62632 --- /dev/null +++ b/src/test/ui/hygiene/hir-res-hygiene.stderr @@ -0,0 +1,49 @@ +error[E0433]: failed to resolve: could not find `future` in `std` + +error[E0433]: failed to resolve: could not find `pin` in `std` + +error[E0433]: failed to resolve: could not find `future` in `std` + +error[E0433]: failed to resolve: could not find `future` in `std` + +error[E0433]: failed to resolve: could not find `task` in `std` + +error[E0433]: failed to resolve: could not find `task` in `std` + +error[E0433]: failed to resolve: could not find `future` in `std` + +error[E0433]: failed to resolve: could not find `future` in `std` + +error[E0433]: failed to resolve: could not find `ops` in `std` + +error[E0433]: failed to resolve: could not find `option` in `std` + +error[E0433]: failed to resolve: could not find `option` in `std` + +error[E0433]: failed to resolve: could not find `iter` in `std` + +error[E0433]: failed to resolve: could not find `iter` in `std` + +error[E0433]: failed to resolve: could not find `ops` in `std` + +error[E0433]: failed to resolve: could not find `option` in `std` + +error[E0433]: failed to resolve: could not find `option` in `std` + +error[E0433]: failed to resolve: could not find `iter` in `std` + +error[E0433]: failed to resolve: could not find `iter` in `std` + +error[E0433]: failed to resolve: could not find `ops` in `std` + +error[E0433]: failed to resolve: could not find `result` in `std` + +error[E0433]: failed to resolve: could not find `convert` in `std` + +error[E0433]: failed to resolve: could not find `ops` in `std` + +error[E0433]: failed to resolve: could not find `result` in `std` + +error: aborting due to 23 previous errors + +For more information about this error, try `rustc --explain E0433`.