gccrs: Simplify WildcardPattern let statement handling

gcc/rust/ChangeLog:

	* backend/rust-compile-pattern.cc
	(CompilePatternLet::visit): Simplify WildcardPattern compilation for let statements.
	* backend/rust-compile-var-decl.h:
	(CompileVarDecl::visit): Remove variable declaration for WildcardPattern.
	* resolve/rust-ast-resolve-pattern.h:
	(PatternDeclaration::visit): Remove name resolution for WildcardPattern.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
This commit is contained in:
Owen Avery
2023-02-03 10:19:32 -05:00
committed by Arthur Cohen
parent 8a9886a85e
commit e81f5be60d
3 changed files with 7 additions and 44 deletions

View File

@@ -361,30 +361,14 @@ CompilePatternLet::visit (HIR::IdentifierPattern &pattern)
void
CompilePatternLet::visit (HIR::WildcardPattern &pattern)
{
Bvariable *var = nullptr;
rust_assert (
ctx->lookup_var_decl (pattern.get_pattern_mappings ().get_hirid (), &var));
tree init_stmt = NULL;
tree stmt_type = TyTyResolveCompile::compile (ctx, ty);
auto fnctx = ctx->peek_fn ();
if (ty->is_unit ())
{
ctx->add_statement (init_expr);
ctx->get_backend ()->temporary_variable (ctx->peek_fn ().fndecl, NULL_TREE,
stmt_type, init_expr, false,
pattern.get_locus (), &init_stmt);
tree stmt_type = TyTyResolveCompile::compile (ctx, ty);
auto unit_type_init_expr
= ctx->get_backend ()->constructor_expression (stmt_type, false, {}, -1,
rval_locus);
auto s = ctx->get_backend ()->init_statement (fnctx.fndecl, var,
unit_type_init_expr);
ctx->add_statement (s);
}
else
{
auto s
= ctx->get_backend ()->init_statement (fnctx.fndecl, var, init_expr);
ctx->add_statement (s);
}
ctx->add_statement (init_stmt);
}
void

View File

@@ -53,21 +53,6 @@ public:
locals.push_back (var);
}
void visit (HIR::WildcardPattern &pattern) override
{
translated_type = ctx->get_backend ()->immutable_type (translated_type);
Bvariable *var
= ctx->get_backend ()->local_variable (fndecl, "_", translated_type,
NULL /*decl_var*/,
pattern.get_locus ());
HirId stmt_id = pattern.get_pattern_mappings ().get_hirid ();
ctx->insert_var_decl (stmt_id, var);
locals.push_back (var);
}
// Empty visit for unused Pattern HIR nodes.
void visit (HIR::LiteralPattern &) override {}
void visit (HIR::PathInExpression &) override {}
@@ -78,6 +63,7 @@ public:
void visit (HIR::StructPattern &) override {}
void visit (HIR::TuplePattern &) override {}
void visit (HIR::TupleStructPattern &) override {}
void visit (HIR::WildcardPattern &) override {}
private:
CompileVarDecl (Context *ctx, tree fndecl, tree translated_type,

View File

@@ -70,13 +70,6 @@ public:
pattern.get_node_id (), pattern.get_locus (), type);
}
void visit (AST::WildcardPattern &pattern) override
{
resolver->get_name_scope ().insert (
CanonicalPath::new_seg (pattern.get_node_id (), "_"),
pattern.get_node_id (), pattern.get_locus (), type);
}
void visit (AST::GroupedPattern &pattern) override
{
pattern.get_pattern_in_parens ()->accept_vis (*this);