diff --git a/lang2/macro/tests/compile_tests.rs b/lang2/macro/tests/compile_tests.rs index 51562c4ffd7dcc9aeb55fc1367b7495de423ec3b..43118b88c91dcfdbf5284c3c2b5c5d8b3c8d6685 100644 --- a/lang2/macro/tests/compile_tests.rs +++ b/lang2/macro/tests/compile_tests.rs @@ -40,4 +40,5 @@ fn compile_tests() { t.compile_fail("tests/ui/fail/14-missing-storage-struct.rs"); t.compile_fail("tests/ui/fail/15-multiple-storage-structs.rs"); t.compile_fail("tests/ui/fail/16-storage-impl-ident-conflict.rs"); + t.compile_fail("tests/ui/fail/17-conflicting-ink-markers.rs"); } diff --git a/lang2/macro/tests/ui/fail/17-conflicting-ink-markers.rs b/lang2/macro/tests/ui/fail/17-conflicting-ink-markers.rs new file mode 100644 index 0000000000000000000000000000000000000000..2f40bba25d9a976c77db1e0c55b4cd0c8c2eb83d --- /dev/null +++ b/lang2/macro/tests/ui/fail/17-conflicting-ink-markers.rs @@ -0,0 +1,20 @@ +#![feature(proc_macro_hygiene)] + +use ink_lang2 as ink; + +#[ink::contract(version = "0.1.0")] +mod noop { + #[ink(storage)] + #[ink(event)] // We cannot have #[ink(event)] if we already have #[ink(storage)] + struct Noop {} + + impl Noop { + #[ink(constructor)] + fn new(&mut self) {} + + #[ink(message)] + fn noop(&self) {} + } +} + +fn main() {} diff --git a/lang2/macro/tests/ui/fail/17-conflicting-ink-markers.stderr b/lang2/macro/tests/ui/fail/17-conflicting-ink-markers.stderr new file mode 100644 index 0000000000000000000000000000000000000000..2367c9132bfaff1d47cb20a7346dd795df5d7042 --- /dev/null +++ b/lang2/macro/tests/ui/fail/17-conflicting-ink-markers.stderr @@ -0,0 +1,5 @@ +error: invalid ink! attribute found for `#[ink(storage)]` struct + --> $DIR/17-conflicting-ink-markers.rs:8:10 + | +8 | #[ink(event)] // We cannot have #[ink(event)] if we already have #[ink(storage)] + | ^^^^^^^