about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr2
-rw-r--r--tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr2
-rw-r--r--tests/ui/invalid-compile-flags/crate-type-flag.rs61
-rw-r--r--tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr2
4 files changed, 67 insertions, 0 deletions
diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr b/tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr
new file mode 100644
index 00000000000..0f8772024df
--- /dev/null
+++ b/tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr
@@ -0,0 +1,2 @@
+error: unknown crate type: ``
+
diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr b/tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr
new file mode 100644
index 00000000000..a4a97416996
--- /dev/null
+++ b/tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr
@@ -0,0 +1,2 @@
+error: unknown crate type: `proc_macro`
+
diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.rs b/tests/ui/invalid-compile-flags/crate-type-flag.rs
new file mode 100644
index 00000000000..42bd72cbfbf
--- /dev/null
+++ b/tests/ui/invalid-compile-flags/crate-type-flag.rs
@@ -0,0 +1,61 @@
+//! Check that `rustc`'s `--crate-type` flag accepts `--crate-type=<valid_type>` as well as the
+//! multi-value version `--crate-type=<valid_type_1>,<valid_type_2>`.
+//!
+//! This test does not try to check if the output artifacts are valid.
+
+// FIXME(#132309): add a proper `supports-crate-type` directive.
+
+// Single valid crate types should pass
+//@ revisions: lib rlib staticlib dylib cdylib bin proc_dash_macro
+
+//@[lib] compile-flags: --crate-type=lib
+//@[lib] check-pass
+
+//@[rlib] compile-flags: --crate-type=rlib
+//@[rlib] check-pass
+
+//@[staticlib] compile-flags: --crate-type=staticlib
+//@[staticlib] check-pass
+
+//@[dylib] ignore-musl (dylibs are not supported)
+//@[dylib] ignore-wasm (dylibs are not supported)
+//@[dylib] compile-flags: --crate-type=dylib
+//@[dylib] check-pass
+
+//@[cdylib] ignore-musl (cdylibs are not supported)
+//@[cdylib] compile-flags: --crate-type=cdylib
+//@[cdylib] check-pass
+
+//@[bin] compile-flags: --crate-type=bin
+//@[bin] check-pass
+
+//@[proc_dash_macro] ignore-wasm (proc-macro is not supported)
+//@[proc_dash_macro] compile-flags: --crate-type=proc-macro
+//@[proc_dash_macro] check-pass
+
+//@ revisions: multivalue multivalue_combined
+
+//@[multivalue] compile-flags: --crate-type=lib,rlib,staticlib
+//@[multivalue] check-pass
+
+//@[multivalue_combined] ignore-musl (dylibs are not supported)
+//@[multivalue_combined] ignore-wasm (dylibs are not supported)
+//@[multivalue_combined] compile-flags: --crate-type=lib,rlib,staticlib --crate-type=dylib
+//@[multivalue_combined] check-pass
+
+// `proc-macro` is accepted, but `proc_macro` is not.
+//@ revisions: proc_underscore_macro
+//@[proc_underscore_macro] compile-flags: --crate-type=proc_macro
+//@[proc_underscore_macro] error-pattern: "unknown crate type: `proc_macro`"
+
+// Empty `--crate-type` not accepted.
+//@ revisions: empty_crate_type
+//@[empty_crate_type] compile-flags: --crate-type=
+//@[empty_crate_type] error-pattern: "unknown crate type: ``"
+
+// Random unknown crate type. Also check that we can handle non-ASCII.
+//@ revisions: unknown
+//@[unknown] compile-flags: --crate-type=🤡
+//@[unknown] error-pattern: "unknown crate type: `🤡`"
+
+fn main() {}
diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr b/tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr
new file mode 100644
index 00000000000..7fb0f09a1af
--- /dev/null
+++ b/tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr
@@ -0,0 +1,2 @@
+error: unknown crate type: `🤡`
+