From 09777a69afc66fbc102bf462a9a3d6855801e817 Mon Sep 17 00:00:00 2001 From: Muhammad Mahad Date: Thu, 29 Jun 2023 19:24:00 +0500 Subject: gccrs: refactored field error function Refactored field error function into one funciton Fixes #2336 gcc/rust/ChangeLog: * typecheck/rust-hir-type-check-pattern.cc (emit_invalid_field_error): Refactored Field Error Function (TypeCheckPattern::visit): called emit_invalid_field_error function Signed-off-by: Muhammad Mahad --- gcc/rust/typecheck/rust-hir-type-check-pattern.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'gcc') diff --git a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc index 7854780..a740805 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-pattern.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-pattern.cc @@ -140,6 +140,15 @@ TypeCheckPattern::visit (HIR::TupleStructPattern &pattern) } void +emit_invalid_field_error (Location loc, Rust::TyTy::VariantDef *variant, + const std::string &name) +{ + rust_error_at (loc, ErrorCode ("E0026"), + "variant %s does not have a field named %s", + variant->get_identifier ().c_str (), name.c_str ()); +} + +void TypeCheckPattern::visit (HIR::StructPattern &pattern) { TyTy::BaseType *pattern_ty = TypeCheckExpr::Resolve (&pattern.get_path ()); @@ -204,10 +213,8 @@ TypeCheckPattern::visit (HIR::StructPattern &pattern) if (!variant->lookup_field (ident.get_identifier ().as_string (), &field, nullptr)) { - rust_error_at (ident.get_locus (), ErrorCode ("E0026"), - "variant %s does not have a field named %s", - variant->get_identifier ().c_str (), - ident.get_identifier ().as_string ().c_str ()); + emit_invalid_field_error (ident.get_locus (), variant, + ident.get_identifier ().as_string ()); break; } named_fields.push_back (ident.get_identifier ().as_string ()); @@ -225,10 +232,8 @@ TypeCheckPattern::visit (HIR::StructPattern &pattern) if (!variant->lookup_field (ident.get_identifier ().as_string (), &field, nullptr)) { - rust_error_at (ident.get_locus (), ErrorCode ("E0026"), - "variant %s does not have a field named %s", - variant->get_identifier ().c_str (), - ident.get_identifier ().as_string ().c_str ()); + emit_invalid_field_error (ident.get_locus (), variant, + ident.get_identifier ().as_string ()); break; } named_fields.push_back (ident.get_identifier ().as_string ()); -- cgit v1.1