gccrs: Add multiple tests for non root proc macro

Add multiple tests to prevent regressions on procedural macros errors
when one is declared outside of the crate's top level.

gcc/testsuite/ChangeLog:

	* rust/compile/proc_macro_attribute_non_root_function.rs: New test.
	* rust/compile/proc_macro_attribute_non_root_method.rs: New test.
	* rust/compile/proc_macro_attribute_non_root_module.rs: New test.
	* rust/compile/proc_macro_derive_non_root_function.rs: New test.
	* rust/compile/proc_macro_derive_non_root_method.rs: New test.
	* rust/compile/proc_macro_derive_non_root_module.rs: New test.
	* rust/compile/proc_macro_non_root_function.rs: New test.
	* rust/compile/proc_macro_non_root_method.rs: New test.
	* rust/compile/proc_macro_non_root_module.rs: New test.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
This commit is contained in:
Pierre-Emmanuel Patry 2023-07-26 12:47:57 +02:00 committed by Arthur Cohen
parent b05d874fc5
commit ce7f0df47e
9 changed files with 68 additions and 0 deletions

View file

@ -0,0 +1,6 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
fn outer_function() {
#[proc_macro_attribute]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro_attribute.. must currently reside in the root of the crate" }
}

View file

@ -0,0 +1,10 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
struct DummyStruct;
impl DummyStruct {
pub fn method(self) {
#[proc_macro_attribute]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro_attribute.. must currently reside in the root of the crate" }
}
}

View file

@ -0,0 +1,6 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
mod test_module {
#[proc_macro_attribute]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro_attribute.. must currently reside in the root of the crate" }
}

View file

@ -0,0 +1,6 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
fn outer_function() {
#[proc_macro_derive(SomeTrait)]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro_derive.. must currently reside in the root of the crate" }
}

View file

@ -0,0 +1,12 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
trait SomeTrait {}
struct DummyStruct;
impl DummyStruct {
pub fn method(self) {
#[proc_macro_derive(SomeTrait)]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro_derive.. must currently reside in the root of the crate" }
}
}

View file

@ -0,0 +1,6 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
mod test_module {
#[proc_macro_derive(SomeTrait)]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro_derive.. must currently reside in the root of the crate" }
}

View file

@ -0,0 +1,6 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
fn outer_function() {
#[proc_macro]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro.. must currently reside in the root of the crate" }
}

View file

@ -0,0 +1,10 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
struct DummyStruct;
impl DummyStruct {
pub fn method(self) {
#[proc_macro]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro.. must currently reside in the root of the crate" }
}
}

View file

@ -0,0 +1,6 @@
// { dg-additional-options "-frust-crate-type=proc-macro" }
mod test_module {
#[proc_macro]
pub fn non_root_function() {} // { dg-error "functions tagged with .#.proc_macro.. must currently reside in the root of the crate" }
}