From cd067503a7546eaee904a9b5c6ae30eb0175d376 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 8 Nov 2021 18:06:56 +0000 Subject: [rust] Macros --- rust/macros/tests/invalid/Cargo.toml | 55 +++++++++++++++++++++++++++ rust/macros/tests/invalid/comma-sep.rs | 7 ++++ rust/macros/tests/invalid/double-commas.rs | 7 ++++ rust/macros/tests/invalid/leading-comma.rs | 7 ++++ rust/macros/tests/invalid/missing-argument.rs | 7 ++++ rust/macros/tests/invalid/no-comma.rs | 7 ++++ rust/macros/tests/invalid/only-arrow.rs | 7 ++++ rust/macros/tests/invalid/only-comma.rs | 7 ++++ rust/macros/tests/invalid/single-argument.rs | 7 ++++ rust/macros/tests/invalid/triple-arguments.rs | 7 ++++ rust/macros/tests/invalid/two-arrows.rs | 7 ++++ 11 files changed, 125 insertions(+) create mode 100644 rust/macros/tests/invalid/Cargo.toml create mode 100644 rust/macros/tests/invalid/comma-sep.rs create mode 100644 rust/macros/tests/invalid/double-commas.rs create mode 100644 rust/macros/tests/invalid/leading-comma.rs create mode 100644 rust/macros/tests/invalid/missing-argument.rs create mode 100644 rust/macros/tests/invalid/no-comma.rs create mode 100644 rust/macros/tests/invalid/only-arrow.rs create mode 100644 rust/macros/tests/invalid/only-comma.rs create mode 100644 rust/macros/tests/invalid/single-argument.rs create mode 100644 rust/macros/tests/invalid/triple-arguments.rs create mode 100644 rust/macros/tests/invalid/two-arrows.rs (limited to 'rust/macros/tests/invalid') diff --git a/rust/macros/tests/invalid/Cargo.toml b/rust/macros/tests/invalid/Cargo.toml new file mode 100644 index 0000000..b096d99 --- /dev/null +++ b/rust/macros/tests/invalid/Cargo.toml @@ -0,0 +1,55 @@ +# +# This Cargo.toml file is used by the simple-trybuild module. +# When adding a new file, please name the [[bin]] name to match the file +# it is used to produce an error message +# + +[package] +name = "macros-tests" +version = "0.0.0" +edition = "2018" +publish = false + +[dependencies.macros] +path = "../../" +default-features = false + +[[bin]] +name = "comma-sep-rs" +path = "comma-sep.rs" + +[[bin]] +name = "double-commas-rs" +path = "double-commas.rs" + +[[bin]] +name = "only-arrow-rs" +path = "only-arrow.rs" + +[[bin]] +name = "only-comma-rs" +path = "only-comma.rs" + +[[bin]] +name = "single-argument-rs" +path = "single-argument.rs" + +[[bin]] +name = "triple-arguments-rs" +path = "triple-arguments.rs" + +[[bin]] +name = "two-arrows-rs" +path = "two-arrows.rs" + +[[bin]] +name = "leading-comma-rs" +path = "leading-comma.rs" + +[[bin]] +name = "no-comma-rs" +path = "no-comma.rs" + +[[bin]] +name = "missing-argument-rs" +path = "missing-argument.rs" diff --git a/rust/macros/tests/invalid/comma-sep.rs b/rust/macros/tests/invalid/comma-sep.rs new file mode 100644 index 0000000..c9b6f44 --- /dev/null +++ b/rust/macros/tests/invalid/comma-sep.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // using only commas is invalid + let _hm: HashMap<_, _> = hashmap!('a', 1); +} diff --git a/rust/macros/tests/invalid/double-commas.rs b/rust/macros/tests/invalid/double-commas.rs new file mode 100644 index 0000000..d52dec6 --- /dev/null +++ b/rust/macros/tests/invalid/double-commas.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // a single trailing comma is okay, but two is not + let _hm: HashMap<_, _> = hashmap!('a' => 2, ,); +} diff --git a/rust/macros/tests/invalid/leading-comma.rs b/rust/macros/tests/invalid/leading-comma.rs new file mode 100644 index 0000000..bc03666 --- /dev/null +++ b/rust/macros/tests/invalid/leading-comma.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // leading commas are not valid + let _hm: HashMap<_, _> = hashmap!(, 'a' => 2); +} diff --git a/rust/macros/tests/invalid/missing-argument.rs b/rust/macros/tests/invalid/missing-argument.rs new file mode 100644 index 0000000..893d609 --- /dev/null +++ b/rust/macros/tests/invalid/missing-argument.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // an argument should come between each pair of commas + let _hm: HashMap<_, _> = hashmap!('a' => 1, , 'b' => 2); +} diff --git a/rust/macros/tests/invalid/no-comma.rs b/rust/macros/tests/invalid/no-comma.rs new file mode 100644 index 0000000..c4e6a92 --- /dev/null +++ b/rust/macros/tests/invalid/no-comma.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // Key value pairs must be separated by commas + let _hm: HashMap<_, _> = hashmap!('a' => 1 'b' => 2); +} diff --git a/rust/macros/tests/invalid/only-arrow.rs b/rust/macros/tests/invalid/only-arrow.rs new file mode 100644 index 0000000..7f7d730 --- /dev/null +++ b/rust/macros/tests/invalid/only-arrow.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // a single random arrow is not valid + let _hm: HashMap<(), ()> = hashmap!(=>); +} diff --git a/rust/macros/tests/invalid/only-comma.rs b/rust/macros/tests/invalid/only-comma.rs new file mode 100644 index 0000000..3b863b3 --- /dev/null +++ b/rust/macros/tests/invalid/only-comma.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // a single random comma is not valid + let _hm: HashMap<(), ()> = hashmap!(,); +} diff --git a/rust/macros/tests/invalid/single-argument.rs b/rust/macros/tests/invalid/single-argument.rs new file mode 100644 index 0000000..f8ac092 --- /dev/null +++ b/rust/macros/tests/invalid/single-argument.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // a single argument is invalid + let _hm: HashMap<_, _> = hashmap!('a'); +} diff --git a/rust/macros/tests/invalid/triple-arguments.rs b/rust/macros/tests/invalid/triple-arguments.rs new file mode 100644 index 0000000..54351ae --- /dev/null +++ b/rust/macros/tests/invalid/triple-arguments.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // three arguments are invalid + hashmap!('a' => 1, 'b'); +} diff --git a/rust/macros/tests/invalid/two-arrows.rs b/rust/macros/tests/invalid/two-arrows.rs new file mode 100644 index 0000000..254a82e --- /dev/null +++ b/rust/macros/tests/invalid/two-arrows.rs @@ -0,0 +1,7 @@ +use macros::hashmap; +use std::collections::HashMap; + +fn main() { + // a trailing => isn't valid either + hashmap!('a' => 2, =>); +} -- cgit v1.2.3