diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-12-16 15:23:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-16 15:23:39 +0000 |
commit | a8a345642a2a150a35b68e2f19b90abf105700c5 (patch) | |
tree | cab130a5d112eac9d1490a98139831cfd8f3a717 /gcc/rust/resolve/rust-ast-resolve-pattern.cc | |
parent | e8d91e9e0825b4d1a4e46531142fdc0c83c761db (diff) | |
parent | 45edfc2b265cffab529d2cd70b37af559bd02c21 (diff) | |
download | gcc-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.cc | 10 |
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 ()); } |