From 2da2efa10f3904cfb7e96058dc42681a0cc6191e Mon Sep 17 00:00:00 2001 From: Muhammad Mahad Date: Thu, 3 Aug 2023 20:46:50 +0500 Subject: 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 --- gcc/rust/hir/rust-ast-lower-base.cc | 6 ++++-- gcc/testsuite/rust/compile/abi-options1.rs | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'gcc') diff --git a/gcc/rust/hir/rust-ast-lower-base.cc b/gcc/rust/hir/rust-ast-lower-base.cc index ad8a331..3ddc751 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 a4b6241..797dff0 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 -- cgit v1.1