]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: expand: Allow empty derive attribute
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Mon, 5 Jun 2023 11:17:22 +0000 (13:17 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:46:26 +0000 (18:46 +0100)
Changes derive macro expansion to accept empty derive attributes. This
commit also add a test to prevent future regressions.

gcc/rust/ChangeLog:

* expand/rust-expand-visitor.cc (get_traits_to_derive): Change
assertion to allow empty derive directives.

gcc/testsuite/ChangeLog:

* rust/compile/derive_empty.rs: New test.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/expand/rust-expand-visitor.cc
gcc/testsuite/rust/compile/derive_empty.rs [new file with mode: 0644]

index 927d9225049ee45d7e58457359268a03b91778a4..c7a5f573d7edfa89389a78cdd407d5cdb6d7b54c 100644 (file)
@@ -72,7 +72,7 @@ get_traits_to_derive (AST::Attribute &attr)
          = static_cast<AST::DelimTokenTree &> (input).get_token_trees ();
 
        // erase the delimiters
-       rust_assert (tokens.size () >= 3);
+       rust_assert (tokens.size () >= 2);
        tokens.erase (tokens.begin ());
        tokens.pop_back ();
 
diff --git a/gcc/testsuite/rust/compile/derive_empty.rs b/gcc/testsuite/rust/compile/derive_empty.rs
new file mode 100644 (file)
index 0000000..21c67f0
--- /dev/null
@@ -0,0 +1,6 @@
+#[derive()]
+struct UnderivedStruct;
+
+fn main() {
+    let _ = UnderivedStruct;
+}