aboutsummaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2022-02-28 11:32:43 -0800
committerEli Schwartz <eschwartz93@gmail.com>2022-03-07 18:35:31 -0500
commitc08b6e29d9ea70d03f34e8517d74a7fcbd21bc8c (patch)
tree522f1bcfd7d5aad44a16d5e5eb495072ebdf5aaf /test cases
parent6ddba5c542a149ac090ba2fc0300131475d9769f (diff)
downloadmeson-c08b6e29d9ea70d03f34e8517d74a7fcbd21bc8c.zip
meson-c08b6e29d9ea70d03f34e8517d74a7fcbd21bc8c.tar.gz
meson-c08b6e29d9ea70d03f34e8517d74a7fcbd21bc8c.tar.bz2
Add support for rust proc-macro crates
Diffstat (limited to 'test cases')
-rw-r--r--test cases/failing/54 wrong shared crate type/test.json2
-rw-r--r--test cases/rust/18 proc-macro/meson.build19
-rw-r--r--test cases/rust/18 proc-macro/proc.rs7
-rw-r--r--test cases/rust/18 proc-macro/use.rs8
4 files changed, 35 insertions, 1 deletions
diff --git a/test cases/failing/54 wrong shared crate type/test.json b/test cases/failing/54 wrong shared crate type/test.json
index 5cced6f..a5b7961 100644
--- a/test cases/failing/54 wrong shared crate type/test.json
+++ b/test cases/failing/54 wrong shared crate type/test.json
@@ -1,7 +1,7 @@
{
"stdout": [
{
- "line": "test cases/failing/54 wrong shared crate type/meson.build:7:0: ERROR: Crate type \"staticlib\" invalid for dynamic libraries; must be \"dylib\" or \"cdylib\""
+ "line": "test cases/failing/54 wrong shared crate type/meson.build:7:0: ERROR: Crate type \"staticlib\" invalid for dynamic libraries; must be \"dylib\", \"cdylib\", or \"proc-macro\""
}
]
}
diff --git a/test cases/rust/18 proc-macro/meson.build b/test cases/rust/18 proc-macro/meson.build
new file mode 100644
index 0000000..01c4cbe
--- /dev/null
+++ b/test cases/rust/18 proc-macro/meson.build
@@ -0,0 +1,19 @@
+project('rust proc-macro', 'rust')
+
+if build_machine.system() != 'linux'
+ error('MESON_SKIP_TEST, this test only works on Linux. Patches welcome.')
+endif
+
+pm = shared_library(
+ 'proc_macro_examples',
+ 'proc.rs',
+ rust_crate_type : 'proc-macro',
+)
+
+main = executable(
+ 'main',
+ 'use.rs',
+ link_with : pm
+)
+
+test('main_test', main)
diff --git a/test cases/rust/18 proc-macro/proc.rs b/test cases/rust/18 proc-macro/proc.rs
new file mode 100644
index 0000000..53935e4
--- /dev/null
+++ b/test cases/rust/18 proc-macro/proc.rs
@@ -0,0 +1,7 @@
+extern crate proc_macro;
+use proc_macro::TokenStream;
+
+#[proc_macro]
+pub fn make_answer(_item: TokenStream) -> TokenStream {
+ "fn answer() -> u32 { 42 }".parse().unwrap()
+}
diff --git a/test cases/rust/18 proc-macro/use.rs b/test cases/rust/18 proc-macro/use.rs
new file mode 100644
index 0000000..0b6342b
--- /dev/null
+++ b/test cases/rust/18 proc-macro/use.rs
@@ -0,0 +1,8 @@
+extern crate proc_macro_examples;
+use proc_macro_examples::make_answer;
+
+make_answer!();
+
+fn main() {
+ assert_eq!(42, answer());
+}