From c5b6e533a1c2912a1b8a6993a413f9377a2762e0 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Patry Date: Mon, 29 Jul 2024 14:20:01 +0200 Subject: gccrs: Move builtin macro tests to their own directory We need a finer grain to filter tests and organise them. gcc/testsuite/ChangeLog: * rust/compile/builtin_macro_compile_error.rs: Move to... * rust/compile/macros/builtin/compile_error.rs: ...here. * rust/compile/builtin_macro_concat.rs: Move to... * rust/compile/macros/builtin/concat.rs: ...here. * rust/compile/builtin_macro_eager1.rs: Move to... * rust/compile/macros/builtin/eager1.rs: ...here. * rust/compile/builtin_macro_eager2.rs: Move to... * rust/compile/macros/builtin/eager2.rs: ...here. * rust/compile/builtin_macro_eager3.rs: Move to... * rust/compile/macros/builtin/eager3.rs: ...here. * rust/compile/builtin_macro_env.rs: Move to... * rust/compile/macros/builtin/env.rs: ...here. * rust/compile/builtin_macro_include_bytes.rs: Move to... * rust/compile/macros/builtin/include_bytes.rs: ...here. * rust/compile/builtin_macro_include_bytes_location_info.rs: Move to... * rust/compile/macros/builtin/include_bytes_location_info.rs: ...here. * rust/compile/builtin_macro_include_str.rs: Move to... * rust/compile/macros/builtin/include_str.rs: ...here. * rust/compile/builtin_macro_include_str_location_info.rs: Move to... * rust/compile/macros/builtin/include_str_location_info.rs: ...here. * rust/compile/builtin_macro_not_found.rs: Move to... * rust/compile/macros/builtin/not_found.rs: ...here. * rust/compile/builtin_macro_recurse2.rs: Move to... * rust/compile/macros/builtin/recurse2.rs: ...here. * rust/compile/macros/builtin/builtin_macro.exp: New test. * rust/compile/invalid_utf8: Move invalid-utf8 data to... * rust/compile/macros/builtin/invalid_utf8: ...here. Signed-off-by: Pierre-Emmanuel Patry --- .../rust/compile/builtin_macro_compile_error.rs | 15 ---------- gcc/testsuite/rust/compile/builtin_macro_concat.rs | 19 ------------ gcc/testsuite/rust/compile/builtin_macro_eager1.rs | 22 -------------- gcc/testsuite/rust/compile/builtin_macro_eager2.rs | 18 ----------- gcc/testsuite/rust/compile/builtin_macro_eager3.rs | 16 ---------- gcc/testsuite/rust/compile/builtin_macro_env.rs | 22 -------------- .../rust/compile/builtin_macro_include_bytes.rs | 15 ---------- .../builtin_macro_include_bytes_location_info.rs | 10 ------- .../rust/compile/builtin_macro_include_str.rs | 16 ---------- .../builtin_macro_include_str_location_info.rs | 10 ------- .../rust/compile/builtin_macro_not_found.rs | 6 ---- .../rust/compile/builtin_macro_recurse2.rs | 21 ------------- gcc/testsuite/rust/compile/invalid_utf8 | 1 - .../rust/compile/macros/builtin/builtin_macro.exp | 35 ++++++++++++++++++++++ .../rust/compile/macros/builtin/compile_error.rs | 15 ++++++++++ .../rust/compile/macros/builtin/concat.rs | 19 ++++++++++++ .../rust/compile/macros/builtin/eager1.rs | 22 ++++++++++++++ .../rust/compile/macros/builtin/eager2.rs | 18 +++++++++++ .../rust/compile/macros/builtin/eager3.rs | 16 ++++++++++ gcc/testsuite/rust/compile/macros/builtin/env.rs | 22 ++++++++++++++ .../rust/compile/macros/builtin/include_bytes.rs | 15 ++++++++++ .../macros/builtin/include_bytes_location_info.rs | 10 +++++++ .../rust/compile/macros/builtin/include_str.rs | 16 ++++++++++ .../macros/builtin/include_str_location_info.rs | 10 +++++++ .../rust/compile/macros/builtin/invalid_utf8 | 1 + .../rust/compile/macros/builtin/not_found.rs | 6 ++++ .../rust/compile/macros/builtin/recurse2.rs | 21 +++++++++++++ 27 files changed, 226 insertions(+), 191 deletions(-) delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_compile_error.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_concat.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_eager1.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_eager2.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_eager3.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_env.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_include_bytes.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_include_bytes_location_info.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_include_str.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_include_str_location_info.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_not_found.rs delete mode 100644 gcc/testsuite/rust/compile/builtin_macro_recurse2.rs delete mode 100644 gcc/testsuite/rust/compile/invalid_utf8 create mode 100644 gcc/testsuite/rust/compile/macros/builtin/builtin_macro.exp create mode 100644 gcc/testsuite/rust/compile/macros/builtin/compile_error.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/concat.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/eager1.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/eager2.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/eager3.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/env.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/include_bytes.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/include_bytes_location_info.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/include_str.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/include_str_location_info.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/invalid_utf8 create mode 100644 gcc/testsuite/rust/compile/macros/builtin/not_found.rs create mode 100644 gcc/testsuite/rust/compile/macros/builtin/recurse2.rs (limited to 'gcc/testsuite/rust/compile') diff --git a/gcc/testsuite/rust/compile/builtin_macro_compile_error.rs b/gcc/testsuite/rust/compile/builtin_macro_compile_error.rs deleted file mode 100644 index b08f67f..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_compile_error.rs +++ /dev/null @@ -1,15 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! compile_error { - () => {{}}; -} - -fn main () { - let message = "error message"; - compile_error! (message); // { dg-error "argument must be a string literal" "" } - compile_error! (); // { dg-error "macro takes 1 argument" "" } - compile_error! ("a", "b"); // { dg-error "macro takes 1 argument" "" } - compile_error! ("expected error message"); // { dg-error "expected error message" } - compile_error! ("expected error message",); // { dg-error "expected error message" } -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_concat.rs b/gcc/testsuite/rust/compile/builtin_macro_concat.rs deleted file mode 100644 index 28c8424..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_concat.rs +++ /dev/null @@ -1,19 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! concat { - () => {{}}; -} - -fn main() { - let not_literal = "identifier"; - concat!(); - concat! (,); // { dg-error "expected expression, found .,." } - concat!(not_literal); // { dg-error "expected a literal" } - concat!("message"); - concat!("message",); - concat!("message", 1, true, false, 1.0, 10usize, 2000u64); - concat!("message", 1, true, false, 1.0, 10usize, 2000u64,); - concat! ("m", not_literal); // { dg-error "expected a literal" } - concat!(not_literal invalid 'm' !!,); // { dg-error "expected token: .,." } -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_eager1.rs b/gcc/testsuite/rust/compile/builtin_macro_eager1.rs deleted file mode 100644 index 65a80fd..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_eager1.rs +++ /dev/null @@ -1,22 +0,0 @@ -// { dg-additional-options "-fdump-tree-gimple" } -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! concat { - () => {{}}; -} - -macro_rules! a { - () => { "test" }; -} - -macro_rules! b { - () => { "canary" }; -} - -fn main() { - // { dg-final { scan-tree-dump-times {"test1canary"} 1 gimple } } - let _ = concat!(a!(), 1, b!()); - // should not error - concat!(a!(), true, b!(),); -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_eager2.rs b/gcc/testsuite/rust/compile/builtin_macro_eager2.rs deleted file mode 100644 index 70a92d5..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_eager2.rs +++ /dev/null @@ -1,18 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! env { - () => {}; -} - -macro_rules! a { - () => { - "__undefined__" - }; -} - -fn main() { - let _ = env!(a!()); // { dg-error "environment variable .__undefined__. not defined" } - let _ = env!(a!(), "custom"); // { dg-error "custom" } - let _ = env!(a!(), a!()); // { dg-error "__undefined__" } -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_eager3.rs b/gcc/testsuite/rust/compile/builtin_macro_eager3.rs deleted file mode 100644 index 3b62cfe..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_eager3.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! include_str { - () => {{}}; -} - -macro_rules! file1 { - () => { - "builtin_macro_include_str.rs" - }; -} - -fn main () { - include_str!(file1!()); // ok -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_env.rs b/gcc/testsuite/rust/compile/builtin_macro_env.rs deleted file mode 100644 index 83d3c2d..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_env.rs +++ /dev/null @@ -1,22 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! env { - () => {{}}; -} - -fn main () { - let message = "error message"; - env! (message); // { dg-error "argument must be a string literal" "" } - env! (); // { dg-error "env! takes 1 or 2 arguments" "" } - env! (,); // { dg-error "expected expression, found .,." "" } - env! (1); // { dg-error "argument must be a string literal" "" } - env! ("NOT_DEFINED"); // { dg-error "environment variable 'NOT_DEFINED' not defined" "" } - env! ("NOT_DEFINED",); // { dg-error "environment variable 'NOT_DEFINED' not defined" "" } - env! ("NOT_DEFINED", 1); // { dg-error "argument must be a string literal" "" } - env! ("NOT_DEFINED", "two", "three"); // { dg-error "env! takes 1 or 2 arguments" "" } - env! ("NOT_DEFINED" "expected error message"); // { dg-error "expected token: .,." "" } - env! ("NOT_DEFINED", "expected error message"); // { dg-error "expected error message" "" } - env! ("NOT_DEFINED", "expected error message",); // { dg-error "expected error message" "" } - env! (1, "two"); // { dg-error "argument must be a string literal" "" } -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_include_bytes.rs b/gcc/testsuite/rust/compile/builtin_macro_include_bytes.rs deleted file mode 100644 index 9972c10..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_include_bytes.rs +++ /dev/null @@ -1,15 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! include_bytes { - () => {{}}; -} - -fn main () { - let file = "include.txt"; - include_bytes! (file); // { dg-error "argument must be a string literal" "" } - include_bytes! (); // { dg-error "macro takes 1 argument" "" } - include_bytes! ("foo.txt", "bar.txt"); // { dg-error "macro takes 1 argument" "" } - include_bytes! ("builtin_macro_include_bytes.rs"); // ok - include_bytes! ("builtin_macro_include_bytes.rs",); // trailing comma ok -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_include_bytes_location_info.rs b/gcc/testsuite/rust/compile/builtin_macro_include_bytes_location_info.rs deleted file mode 100644 index 98bf53b..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_include_bytes_location_info.rs +++ /dev/null @@ -1,10 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! include_bytes { - () => {{}}; -} - -fn main() { - include_bytes!("nonexistent.txt"); // { dg-error "cannot open filename (.*?)nonexistent.txt: No such file or directory" } -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_include_str.rs b/gcc/testsuite/rust/compile/builtin_macro_include_str.rs deleted file mode 100644 index d6d7a76..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_include_str.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! include_str { - () => {{}}; -} - -fn main () { - let file = "include.txt"; - include_str! (file); // { dg-error "argument must be a string literal" "" } - include_str! (); // { dg-error "macro takes 1 argument" "" } - include_str! ("foo.txt", "bar.txt"); // { dg-error "macro takes 1 argument" "" } - include_str! ("builtin_macro_include_str.rs"); // ok - include_str! ("builtin_macro_include_str.rs",); // trailing comma ok - include_str! ("invalid_utf8"); // { dg-error "invalid_utf8 was not a valid utf-8 file" "" } -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_include_str_location_info.rs b/gcc/testsuite/rust/compile/builtin_macro_include_str_location_info.rs deleted file mode 100644 index a946033..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_include_str_location_info.rs +++ /dev/null @@ -1,10 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! include_str { - () => {{}}; -} - -fn main() { - include_str!("nonexistent.txt"); // { dg-error "cannot open filename (.*?)nonexistent.txt: No such file or directory" } -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_not_found.rs b/gcc/testsuite/rust/compile/builtin_macro_not_found.rs deleted file mode 100644 index 5ba7fc0..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_not_found.rs +++ /dev/null @@ -1,6 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! crabby_crab_carb { // { dg-error "cannot find a built-in macro with name .crabby_crab_carb." } - () => {{}}; -} diff --git a/gcc/testsuite/rust/compile/builtin_macro_recurse2.rs b/gcc/testsuite/rust/compile/builtin_macro_recurse2.rs deleted file mode 100644 index 2e73ab5..0000000 --- a/gcc/testsuite/rust/compile/builtin_macro_recurse2.rs +++ /dev/null @@ -1,21 +0,0 @@ -// { dg-additional-options "-fdump-tree-gimple" } -#![feature(rustc_attrs)] - -#[rustc_builtin_macro] -macro_rules! concat { - () => {}; -} - -macro_rules! a { - () => { - "hey" - }; - ($($t:tt)*) => { - "ho" - }; -} - -fn main() { - // { dg-final { scan-tree-dump-times {"abheyho"} 1 gimple } } - let _ = concat!("a", 'b', a!(), a!(b c d e f a!()), '\0'); -} diff --git a/gcc/testsuite/rust/compile/invalid_utf8 b/gcc/testsuite/rust/compile/invalid_utf8 deleted file mode 100644 index 29e181e..0000000 --- a/gcc/testsuite/rust/compile/invalid_utf8 +++ /dev/null @@ -1 +0,0 @@ -ÿ diff --git a/gcc/testsuite/rust/compile/macros/builtin/builtin_macro.exp b/gcc/testsuite/rust/compile/macros/builtin/builtin_macro.exp new file mode 100644 index 0000000..ac891db --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/builtin_macro.exp @@ -0,0 +1,35 @@ +# Copyright (C) 2021-2024 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# Compile tests, no torture testing. +# +# These tests raise errors in the front end; torture testing doesn't apply. + +# Load support procs. +load_lib rust-dg.exp + +# Initialize `dg'. +dg-init + +# Main loop. +set saved-dg-do-what-default ${dg-do-what-default} + +set dg-do-what-default "compile" +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.rs]] "" "" +set dg-do-what-default ${saved-dg-do-what-default} + +# All done. +dg-finish diff --git a/gcc/testsuite/rust/compile/macros/builtin/compile_error.rs b/gcc/testsuite/rust/compile/macros/builtin/compile_error.rs new file mode 100644 index 0000000..b08f67f --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/compile_error.rs @@ -0,0 +1,15 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! compile_error { + () => {{}}; +} + +fn main () { + let message = "error message"; + compile_error! (message); // { dg-error "argument must be a string literal" "" } + compile_error! (); // { dg-error "macro takes 1 argument" "" } + compile_error! ("a", "b"); // { dg-error "macro takes 1 argument" "" } + compile_error! ("expected error message"); // { dg-error "expected error message" } + compile_error! ("expected error message",); // { dg-error "expected error message" } +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/concat.rs b/gcc/testsuite/rust/compile/macros/builtin/concat.rs new file mode 100644 index 0000000..28c8424 --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/concat.rs @@ -0,0 +1,19 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! concat { + () => {{}}; +} + +fn main() { + let not_literal = "identifier"; + concat!(); + concat! (,); // { dg-error "expected expression, found .,." } + concat!(not_literal); // { dg-error "expected a literal" } + concat!("message"); + concat!("message",); + concat!("message", 1, true, false, 1.0, 10usize, 2000u64); + concat!("message", 1, true, false, 1.0, 10usize, 2000u64,); + concat! ("m", not_literal); // { dg-error "expected a literal" } + concat!(not_literal invalid 'm' !!,); // { dg-error "expected token: .,." } +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/eager1.rs b/gcc/testsuite/rust/compile/macros/builtin/eager1.rs new file mode 100644 index 0000000..65a80fd --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/eager1.rs @@ -0,0 +1,22 @@ +// { dg-additional-options "-fdump-tree-gimple" } +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! concat { + () => {{}}; +} + +macro_rules! a { + () => { "test" }; +} + +macro_rules! b { + () => { "canary" }; +} + +fn main() { + // { dg-final { scan-tree-dump-times {"test1canary"} 1 gimple } } + let _ = concat!(a!(), 1, b!()); + // should not error + concat!(a!(), true, b!(),); +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/eager2.rs b/gcc/testsuite/rust/compile/macros/builtin/eager2.rs new file mode 100644 index 0000000..70a92d5 --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/eager2.rs @@ -0,0 +1,18 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! env { + () => {}; +} + +macro_rules! a { + () => { + "__undefined__" + }; +} + +fn main() { + let _ = env!(a!()); // { dg-error "environment variable .__undefined__. not defined" } + let _ = env!(a!(), "custom"); // { dg-error "custom" } + let _ = env!(a!(), a!()); // { dg-error "__undefined__" } +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/eager3.rs b/gcc/testsuite/rust/compile/macros/builtin/eager3.rs new file mode 100644 index 0000000..3b62cfe --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/eager3.rs @@ -0,0 +1,16 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! include_str { + () => {{}}; +} + +macro_rules! file1 { + () => { + "builtin_macro_include_str.rs" + }; +} + +fn main () { + include_str!(file1!()); // ok +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/env.rs b/gcc/testsuite/rust/compile/macros/builtin/env.rs new file mode 100644 index 0000000..83d3c2d --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/env.rs @@ -0,0 +1,22 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! env { + () => {{}}; +} + +fn main () { + let message = "error message"; + env! (message); // { dg-error "argument must be a string literal" "" } + env! (); // { dg-error "env! takes 1 or 2 arguments" "" } + env! (,); // { dg-error "expected expression, found .,." "" } + env! (1); // { dg-error "argument must be a string literal" "" } + env! ("NOT_DEFINED"); // { dg-error "environment variable 'NOT_DEFINED' not defined" "" } + env! ("NOT_DEFINED",); // { dg-error "environment variable 'NOT_DEFINED' not defined" "" } + env! ("NOT_DEFINED", 1); // { dg-error "argument must be a string literal" "" } + env! ("NOT_DEFINED", "two", "three"); // { dg-error "env! takes 1 or 2 arguments" "" } + env! ("NOT_DEFINED" "expected error message"); // { dg-error "expected token: .,." "" } + env! ("NOT_DEFINED", "expected error message"); // { dg-error "expected error message" "" } + env! ("NOT_DEFINED", "expected error message",); // { dg-error "expected error message" "" } + env! (1, "two"); // { dg-error "argument must be a string literal" "" } +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/include_bytes.rs b/gcc/testsuite/rust/compile/macros/builtin/include_bytes.rs new file mode 100644 index 0000000..88ceaf1 --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/include_bytes.rs @@ -0,0 +1,15 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! include_bytes { + () => {{}}; +} + +fn main() { + let file = "include.txt"; + include_bytes!(file); // { dg-error "argument must be a string literal" "" } + include_bytes!(); // { dg-error "macro takes 1 argument" "" } + include_bytes!("foo.txt", "bar.txt"); // { dg-error "macro takes 1 argument" "" } + include_bytes!("include_bytes.rs"); // ok + include_bytes!("include_bytes.rs",); // trailing comma ok +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/include_bytes_location_info.rs b/gcc/testsuite/rust/compile/macros/builtin/include_bytes_location_info.rs new file mode 100644 index 0000000..98bf53b --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/include_bytes_location_info.rs @@ -0,0 +1,10 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! include_bytes { + () => {{}}; +} + +fn main() { + include_bytes!("nonexistent.txt"); // { dg-error "cannot open filename (.*?)nonexistent.txt: No such file or directory" } +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/include_str.rs b/gcc/testsuite/rust/compile/macros/builtin/include_str.rs new file mode 100644 index 0000000..37a7218 --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/include_str.rs @@ -0,0 +1,16 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! include_str { + () => {{}}; +} + +fn main() { + let file = "include.txt"; + include_str!(file); // { dg-error "argument must be a string literal" "" } + include_str!(); // { dg-error "macro takes 1 argument" "" } + include_str!("foo.txt", "bar.txt"); // { dg-error "macro takes 1 argument" "" } + include_str!("include_str.rs"); // ok + include_str!("include_str.rs",); // trailing comma ok + include_str!("invalid_utf8"); // { dg-error "invalid_utf8 was not a valid utf-8 file" "" } +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/include_str_location_info.rs b/gcc/testsuite/rust/compile/macros/builtin/include_str_location_info.rs new file mode 100644 index 0000000..a946033 --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/include_str_location_info.rs @@ -0,0 +1,10 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! include_str { + () => {{}}; +} + +fn main() { + include_str!("nonexistent.txt"); // { dg-error "cannot open filename (.*?)nonexistent.txt: No such file or directory" } +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/invalid_utf8 b/gcc/testsuite/rust/compile/macros/builtin/invalid_utf8 new file mode 100644 index 0000000..29e181e --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/invalid_utf8 @@ -0,0 +1 @@ +ÿ diff --git a/gcc/testsuite/rust/compile/macros/builtin/not_found.rs b/gcc/testsuite/rust/compile/macros/builtin/not_found.rs new file mode 100644 index 0000000..5ba7fc0 --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/not_found.rs @@ -0,0 +1,6 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! crabby_crab_carb { // { dg-error "cannot find a built-in macro with name .crabby_crab_carb." } + () => {{}}; +} diff --git a/gcc/testsuite/rust/compile/macros/builtin/recurse2.rs b/gcc/testsuite/rust/compile/macros/builtin/recurse2.rs new file mode 100644 index 0000000..2e73ab5 --- /dev/null +++ b/gcc/testsuite/rust/compile/macros/builtin/recurse2.rs @@ -0,0 +1,21 @@ +// { dg-additional-options "-fdump-tree-gimple" } +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! concat { + () => {}; +} + +macro_rules! a { + () => { + "hey" + }; + ($($t:tt)*) => { + "ho" + }; +} + +fn main() { + // { dg-final { scan-tree-dump-times {"abheyho"} 1 gimple } } + let _ = concat!("a", 'b', a!(), a!(b c d e f a!()), '\0'); +} -- cgit v1.1