aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend/rust-compile-fnparam.h
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2022-01-06 16:57:52 +0000
committerPhilip Herron <philip.herron@embecosm.com>2022-01-06 16:57:52 +0000
commit34710b497e44d96b661ee89d50776313ef91b6b2 (patch)
tree63c383dfc5d672267684ae375bf4f5e6a046d121 /gcc/rust/backend/rust-compile-fnparam.h
parent69f6be3ee483c9895b4b5187a44b3e1c8be2ba63 (diff)
downloadgcc-34710b497e44d96b661ee89d50776313ef91b6b2.zip
gcc-34710b497e44d96b661ee89d50776313ef91b6b2.tar.gz
gcc-34710b497e44d96b661ee89d50776313ef91b6b2.tar.bz2
Add support for Wildcard pattern binding
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
Diffstat (limited to 'gcc/rust/backend/rust-compile-fnparam.h')
-rw-r--r--gcc/rust/backend/rust-compile-fnparam.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/rust/backend/rust-compile-fnparam.h b/gcc/rust/backend/rust-compile-fnparam.h
index 92a7357..a7bf52a 100644
--- a/gcc/rust/backend/rust-compile-fnparam.h
+++ b/gcc/rust/backend/rust-compile-fnparam.h
@@ -52,6 +52,16 @@ public:
fndecl, pattern.get_identifier (), decl_type, address_taken, locus);
}
+ void visit (HIR::WildcardPattern &pattern) override
+ {
+ decl_type = ctx->get_backend ()->immutable_type (decl_type);
+
+ bool address_taken = false;
+ compiled_param
+ = ctx->get_backend ()->parameter_variable (fndecl, "_", decl_type,
+ address_taken, locus);
+ }
+
private:
CompileFnParam (Context *ctx, tree fndecl, tree decl_type, Location locus,
const HIR::FunctionParam &param)