aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMuhammad Mahad <mahadtxt@gmail.com>2023-07-17 12:32:17 +0500
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 18:55:55 +0100
commit23aa4bd6c27a47756b10e6f3b73667f5a965b232 (patch)
treecbf63d624501ccc6a4c932cacff1d9a4d39e56f8 /gcc
parent087ed58311d5831aa32088930e7b3ae3aa5a40a7 (diff)
downloadgcc-23aa4bd6c27a47756b10e6f3b73667f5a965b232.zip
gcc-23aa4bd6c27a47756b10e6f3b73667f5a965b232.tar.gz
gcc-23aa4bd6c27a47756b10e6f3b73667f5a965b232.tar.bz2
gccrs: [E0423] expected function, tuple struct or tuple variant, found struct
Give error when an identifier was used like a function name or a value was expected and the identifier exists but it belongs to a different namespace. gcc/rust/ChangeLog: * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): called error function. gcc/testsuite/ChangeLog: * rust/compile/found_struct.rs: New test. Signed-off-by: Muhammad Mahad <mahadtxt@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/typecheck/rust-tyty-call.cc2
-rw-r--r--gcc/testsuite/rust/compile/found_struct.rs11
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/rust/typecheck/rust-tyty-call.cc b/gcc/rust/typecheck/rust-tyty-call.cc
index 8469cf8..733ba61 100644
--- a/gcc/rust/typecheck/rust-tyty-call.cc
+++ b/gcc/rust/typecheck/rust-tyty-call.cc
@@ -59,7 +59,7 @@ TypeCheckCallExpr::visit (ADTType &type)
if (variant.get_variant_type () != TyTy::VariantDef::VariantType::TUPLE)
{
rust_error_at (
- call.get_locus (),
+ call.get_locus (), ErrorCode ("E0423"),
"expected function, tuple struct or tuple variant, found struct %<%s%>",
type.get_name ().c_str ());
return;
diff --git a/gcc/testsuite/rust/compile/found_struct.rs b/gcc/testsuite/rust/compile/found_struct.rs
new file mode 100644
index 0000000..66462e6
--- /dev/null
+++ b/gcc/testsuite/rust/compile/found_struct.rs
@@ -0,0 +1,11 @@
+// https://doc.rust-lang.org/error_codes/E0423.html
+#![allow(unused)]
+fn main() {
+ struct Foo {
+ a: bool,
+ };
+
+ let f = Foo(); // { dg-error "expected function, tuple struct or tuple variant, found struct .Foo." }
+ // error: expected function, tuple struct or tuple variant, found `Foo`
+ // `Foo` is a struct name, but this expression uses it like a function name
+}