From: Muhammad Mahad Date: Thu, 3 Aug 2023 15:46:50 +0000 (+0500) Subject: gccrs: [E0703] Use of Invalid ABI X-Git-Tag: basepoints/gcc-15~2232 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9f09284d8fc0a218e6fe936591d4ba35f716408f;p=thirdparty%2Fgcc.git gccrs: [E0703] Use of Invalid ABI Added error code support for invalid ABI. gcc/rust/ChangeLog: * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers): called error function. (ASTLoweringBase::lower_extern_block): likewise. gcc/testsuite/ChangeLog: * rust/compile/abi-options1.rs: updated comment for testcase. Signed-off-by: Muhammad Mahad --- diff --git a/gcc/rust/hir/rust-ast-lower-base.cc b/gcc/rust/hir/rust-ast-lower-base.cc index 4ff49f997f3b..da36d75bc67e 100644 --- a/gcc/rust/hir/rust-ast-lower-base.cc +++ b/gcc/rust/hir/rust-ast-lower-base.cc @@ -702,7 +702,8 @@ ASTLoweringBase::lower_qualifiers (const AST::FunctionQualifiers &qualifiers) const std::string &extern_abi = qualifiers.get_extern_abi (); abi = get_abi_from_string (extern_abi); if (has_extern && abi == ABI::UNKNOWN) - rust_error_at (qualifiers.get_locus (), "unknown ABI option"); + rust_error_at (qualifiers.get_locus (), ErrorCode::E0703, + "invalid ABI: found %qs", extern_abi.c_str ()); } return HIR::FunctionQualifiers (qualifiers.get_const_status (), unsafety, @@ -946,7 +947,8 @@ ASTLoweringBase::lower_extern_block (AST::ExternBlock &extern_block) const std::string &extern_abi = extern_block.get_abi (); abi = get_abi_from_string (extern_abi); if (abi == ABI::UNKNOWN) - rust_error_at (extern_block.get_locus (), "unknown ABI option"); + rust_error_at (extern_block.get_locus (), ErrorCode::E0703, + "invalid ABI: found %qs", extern_abi.c_str ()); } HIR::ExternBlock *hir_extern_block diff --git a/gcc/testsuite/rust/compile/abi-options1.rs b/gcc/testsuite/rust/compile/abi-options1.rs index a4b6241dc159..797dff098234 100644 --- a/gcc/testsuite/rust/compile/abi-options1.rs +++ b/gcc/testsuite/rust/compile/abi-options1.rs @@ -1,7 +1,9 @@ extern "foobar" { - // { dg-error "unknown ABI option" "" { target *-*-* } .-1 } + // { dg-error "invalid ABI: found .foobar." "" { target *-*-* } .-1 } fn printf(s: *const i8, ...); } pub extern "baz" fn test() {} -// { dg-error "unknown ABI option" "" { target *-*-* } .-1 } +// { dg-error "invalid ABI: found .baz." "" { target *-*-* } .-1 } + +// extern "Rust" fn foo() {} // OK! \ No newline at end of file