From da5c911b5f9c0def28662e52e47773d0438f4641 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Wed, 16 Jun 2021 16:32:42 +0200 Subject: [PATCH] Add regression test for #85955. --- .../auxiliary/same-file-in-two-crates-aux.rs | 4 ++++ .../include-macros/same-file-in-two-crates.rs | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/test/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs create mode 100644 src/test/ui/include-macros/same-file-in-two-crates.rs diff --git a/src/test/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs b/src/test/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs new file mode 100644 index 00000000000..7b680bce49e --- /dev/null +++ b/src/test/ui/include-macros/auxiliary/same-file-in-two-crates-aux.rs @@ -0,0 +1,4 @@ +#[inline] +pub fn some_function() -> u32 { + 1 +} diff --git a/src/test/ui/include-macros/same-file-in-two-crates.rs b/src/test/ui/include-macros/same-file-in-two-crates.rs new file mode 100644 index 00000000000..f49efa2cf8a --- /dev/null +++ b/src/test/ui/include-macros/same-file-in-two-crates.rs @@ -0,0 +1,21 @@ +// This test makes sure that the compiler can handle the same source file to be +// part of the local crate *and* an upstream crate. This can happen, for example, +// when there is some auto-generated code that is part of both a library and an +// accompanying integration test. +// +// The test uses include!() to include a source file that is also part of +// an upstream crate. +// +// This is a regression test for https://github.com/rust-lang/rust/issues/85955. + +// check-pass +// compile-flags: --crate-type=rlib +// aux-build:same-file-in-two-crates-aux.rs +extern crate same_file_in_two_crates_aux; + +pub fn foo() -> u32 { + same_file_in_two_crates_aux::some_function() + + some_function() +} + +include!("./auxiliary/same-file-in-two-crates-aux.rs");