aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-ast-resolve-pattern.cc
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-12-16 15:23:39 +0000
committerGitHub <noreply@github.com>2021-12-16 15:23:39 +0000
commita8a345642a2a150a35b68e2f19b90abf105700c5 (patch)
treecab130a5d112eac9d1490a98139831cfd8f3a717 /gcc/rust/resolve/rust-ast-resolve-pattern.cc
parente8d91e9e0825b4d1a4e46531142fdc0c83c761db (diff)
parent45edfc2b265cffab529d2cd70b37af559bd02c21 (diff)
downloadgcc-a8a345642a2a150a35b68e2f19b90abf105700c5.zip
gcc-a8a345642a2a150a35b68e2f19b90abf105700c5.tar.gz
gcc-a8a345642a2a150a35b68e2f19b90abf105700c5.tar.bz2
Merge #839
839: Add typechecking for match-expr r=philberty a=philberty This adds in the type checking pass for the match expression including static analysis for errors such as: - error[E0532]: expected tuple struct or tuple variant, found struct variant `Foo::D` - error[E0027]: pattern does not mention fields `x`, `y` - error[E0026]: variant `Foo::D` does not have a field named `b` - error[E0532]: expected tuple struct or tuple variant, found struct variant `Foo::D` Addresses #190 Co-authored-by: Philip Herron <philip.herron@embecosm.com>
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-pattern.cc')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-pattern.cc10
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-pattern.cc b/gcc/rust/resolve/rust-ast-resolve-pattern.cc
index c97a83f..f355541 100644
--- a/gcc/rust/resolve/rust-ast-resolve-pattern.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-pattern.cc
@@ -49,7 +49,7 @@ PatternDeclaration::visit (AST::TupleStructPattern &pattern)
for (auto &inner_pattern : items_no_range.get_patterns ())
{
PatternDeclaration::go (inner_pattern.get (),
- pattern.get_node_id ());
+ inner_pattern->get_pattern_node_id ());
}
}
break;
@@ -85,10 +85,10 @@ PatternDeclaration::visit (AST::StructPattern &pattern)
resolver->get_name_scope ().insert (
CanonicalPath::new_seg (ident.get_node_id (),
ident.get_identifier ()),
- ident.get_node_id (), pattern.get_locus ());
- resolver->insert_new_definition (
- ident.get_node_id (),
- Definition{ident.get_node_id (), pattern.get_node_id ()});
+ ident.get_node_id (), ident.get_locus ());
+ resolver->insert_new_definition (ident.get_node_id (),
+ Definition{ident.get_node_id (),
+ ident.get_node_id ()});
resolver->mark_decl_mutability (ident.get_node_id (),
ident.is_mut ());
}