aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-ast-resolve-pattern.h
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-01-07 11:57:24 +0000
committerGitHub <noreply@github.com>2022-01-07 11:57:24 +0000
commit230b55bb532338fec1a9217f9ff8808cc0043772 (patch)
treee8bf9fee6760bc117b69603a59f6a3bb2c1949ab /gcc/rust/resolve/rust-ast-resolve-pattern.h
parentbc27d113167ec6c6cc96b01c8559fc9b9219417c (diff)
parent34710b497e44d96b661ee89d50776313ef91b6b2 (diff)
downloadgcc-230b55bb532338fec1a9217f9ff8808cc0043772.zip
gcc-230b55bb532338fec1a9217f9ff8808cc0043772.tar.gz
gcc-230b55bb532338fec1a9217f9ff8808cc0043772.tar.bz2
Merge #868
868: Add support for Wildcard pattern binding r=philberty a=philberty Wildcard bindings allow us to bind expression to be unused such as: let _ = 123; They are more commonly used in destructuring of tuples such as: let my_tuple = (1,2); let (a,_) = my_tuple; This is the initial basic support for the basic form of let _ = ...; and it also allows us to ignore parameters within functions as well. Fixes #557 Co-authored-by: Philip Herron <philip.herron@embecosm.com>
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-pattern.h')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-pattern.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-pattern.h b/gcc/rust/resolve/rust-ast-resolve-pattern.h
index 57c73ba..01a0534 100644
--- a/gcc/rust/resolve/rust-ast-resolve-pattern.h
+++ b/gcc/rust/resolve/rust-ast-resolve-pattern.h
@@ -83,6 +83,17 @@ public:
pattern.get_is_mut ());
}
+ 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 ());
+ resolver->insert_new_definition (pattern.get_node_id (),
+ Definition{pattern.get_node_id (),
+ parent});
+ resolver->mark_decl_mutability (pattern.get_node_id (), false);
+ }
+
// cases in a match expression
void visit (AST::PathInExpression &pattern) override;