From 8b1e1faa7f2eec13df511fa76d181337efb14f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Poulhi=C3=A8s?= Date: Wed, 12 Jul 2023 19:00:10 +0200 Subject: gccrs: better handling of incorrect file loading in include_* builtin macros MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the load_file_bytes() fails to open the file, it emits an error but returns an empty vector (as if the file is empty). Instead, return a tl::optional nullopt in case of error and an empty vector in case of an empty file. fixes #2421 gcc/rust/ChangeLog: * expand/rust-macro-builtins.cc (load_file_bytes): Return a tl::optional. (MacroBuiltin::include_byte_handler): Adjust and check file was correctly opened. (MacroBuiltin::include_str_handler): Likewise. gcc/testsuite/ChangeLog: * rust/compile/empty_file: New file. * rust/compile/issue-2421_str.rs: New test. Signed-off-by: Marc Poulhiès --- gcc/testsuite/rust/compile/empty_file | 0 gcc/testsuite/rust/compile/issue-2421_str.rs | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 gcc/testsuite/rust/compile/empty_file create mode 100644 gcc/testsuite/rust/compile/issue-2421_str.rs (limited to 'gcc/testsuite/rust/compile') diff --git a/gcc/testsuite/rust/compile/empty_file b/gcc/testsuite/rust/compile/empty_file new file mode 100644 index 0000000..e69de29 diff --git a/gcc/testsuite/rust/compile/issue-2421_str.rs b/gcc/testsuite/rust/compile/issue-2421_str.rs new file mode 100644 index 0000000..2616ccb --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2421_str.rs @@ -0,0 +1,10 @@ +#![feature(rustc_attrs)] + +#[rustc_builtin_macro] +macro_rules! include_str { + () => {{}}; +} + +fn main() { + include_str!("empty_file"); +} -- cgit v1.1