diff options
| author | Eric Huss <eric@huss.org> | 2019-12-05 14:43:53 -0800 |
|---|---|---|
| committer | Eric Huss <eric@huss.org> | 2019-12-09 08:08:13 -0800 |
| commit | 590dd7dfef3e835756edb5f920bf31cd19eef4d0 (patch) | |
| tree | c7b2838dc38c2a331b2771f83289e0bcc26a08cf /src/test | |
| parent | a0312c156d8470179101ab71ef6a69c0b9a8dd0b (diff) | |
| download | rust-590dd7dfef3e835756edb5f920bf31cd19eef4d0.tar.gz rust-590dd7dfef3e835756edb5f920bf31cd19eef4d0.zip | |
Add options to --extern flag.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-make-fulldeps/extern-flag-noprelude/Makefile | 11 | ||||
| -rw-r--r-- | src/test/run-make-fulldeps/extern-flag-noprelude/dep.rs | 3 | ||||
| -rw-r--r-- | src/test/run-make-fulldeps/extern-flag-noprelude/foo.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/extern-flag/multiple-opts.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/extern-flag/multiple-opts.stderr | 9 | ||||
| -rw-r--r-- | src/test/ui/extern-flag/noprelude-and-prelude.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/extern-flag/public-and-private.rs | 13 | ||||
| -rw-r--r-- | src/test/ui/extern-flag/public-and-private.stderr | 14 |
8 files changed, 83 insertions, 0 deletions
diff --git a/src/test/run-make-fulldeps/extern-flag-noprelude/Makefile b/src/test/run-make-fulldeps/extern-flag-noprelude/Makefile new file mode 100644 index 00000000000..18f9d8bab60 --- /dev/null +++ b/src/test/run-make-fulldeps/extern-flag-noprelude/Makefile @@ -0,0 +1,11 @@ +-include ../tools.mk + +# Test --extern noprelude + +all: + $(RUSTC) dep.rs --crate-name=dep --crate-type=rlib + $(RUSTC) foo.rs --edition=2018 -Zunstable-options \ + --extern noprelude:dep=$(TMPDIR)/libdep.rlib 2>&1 | \ + $(CGREP) -e 'failed to resolve.*`dep`' + $(RUSTC) foo.rs --edition=2018 -Zunstable-options \ + --extern dep=$(TMPDIR)/libdep.rlib diff --git a/src/test/run-make-fulldeps/extern-flag-noprelude/dep.rs b/src/test/run-make-fulldeps/extern-flag-noprelude/dep.rs new file mode 100644 index 00000000000..dd2f373f849 --- /dev/null +++ b/src/test/run-make-fulldeps/extern-flag-noprelude/dep.rs @@ -0,0 +1,3 @@ +pub fn somefun() {} + +pub struct S; diff --git a/src/test/run-make-fulldeps/extern-flag-noprelude/foo.rs b/src/test/run-make-fulldeps/extern-flag-noprelude/foo.rs new file mode 100644 index 00000000000..9bb1b78409f --- /dev/null +++ b/src/test/run-make-fulldeps/extern-flag-noprelude/foo.rs @@ -0,0 +1,3 @@ +fn main() { + dep::somefun(); +} diff --git a/src/test/ui/extern-flag/multiple-opts.rs b/src/test/ui/extern-flag/multiple-opts.rs new file mode 100644 index 00000000000..3dc2f1d73f8 --- /dev/null +++ b/src/test/ui/extern-flag/multiple-opts.rs @@ -0,0 +1,20 @@ +// aux-crate:priv,noprelude:somedep=somedep.rs +// compile-flags: -Zunstable-options +// edition:2018 + +// Test for multiple options to --extern. Can't test for errors from both +// options at the same time, so this only checks that noprelude is honored. + +#![warn(exported_private_dependencies)] + +// Module to avoid adding to prelude. +pub mod m { + extern crate somedep; + pub struct PublicType { + pub field: somedep::S, + } +} + +fn main() { + somedep::somefun(); //~ ERROR failed to resolve +} diff --git a/src/test/ui/extern-flag/multiple-opts.stderr b/src/test/ui/extern-flag/multiple-opts.stderr new file mode 100644 index 00000000000..3bf73d11cfd --- /dev/null +++ b/src/test/ui/extern-flag/multiple-opts.stderr @@ -0,0 +1,9 @@ +error[E0433]: failed to resolve: use of undeclared type or module `somedep` + --> $DIR/multiple-opts.rs:19:5 + | +LL | somedep::somefun(); + | ^^^^^^^ use of undeclared type or module `somedep` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0433`. diff --git a/src/test/ui/extern-flag/noprelude-and-prelude.rs b/src/test/ui/extern-flag/noprelude-and-prelude.rs new file mode 100644 index 00000000000..e6a150b9e8b --- /dev/null +++ b/src/test/ui/extern-flag/noprelude-and-prelude.rs @@ -0,0 +1,10 @@ +// check-pass +// aux-crate:noprelude:somedep=somedep.rs +// compile-flags: -Zunstable-options --extern somedep +// edition:2018 + +// Having a flag with `noprelude` and one without, will add to the prelude. + +fn main() { + somedep::somefun(); +} diff --git a/src/test/ui/extern-flag/public-and-private.rs b/src/test/ui/extern-flag/public-and-private.rs new file mode 100644 index 00000000000..a3a81cbf372 --- /dev/null +++ b/src/test/ui/extern-flag/public-and-private.rs @@ -0,0 +1,13 @@ +// aux-crate:priv:somedep=somedep.rs +// compile-flags: -Zunstable-options --extern somedep +// edition:2018 + +#![deny(exported_private_dependencies)] + +// Having a flag with `priv` and one without, will remain private (it is sticky). + +pub struct PublicType { + pub field: somedep::S, //~ ERROR from private dependency +} + +fn main() {} diff --git a/src/test/ui/extern-flag/public-and-private.stderr b/src/test/ui/extern-flag/public-and-private.stderr new file mode 100644 index 00000000000..72f1bb2d26f --- /dev/null +++ b/src/test/ui/extern-flag/public-and-private.stderr @@ -0,0 +1,14 @@ +error: type `somedep::S` from private dependency 'somedep' in public interface + --> $DIR/public-and-private.rs:10:5 + | +LL | pub field: somedep::S, + | ^^^^^^^^^^^^^^^^^^^^^ + | +note: lint level defined here + --> $DIR/public-and-private.rs:5:9 + | +LL | #![deny(exported_private_dependencies)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + |
