diff options
author | Philip Herron <philip.herron@embecosm.com> | 2022-01-06 16:57:52 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2022-01-06 16:57:52 +0000 |
commit | 34710b497e44d96b661ee89d50776313ef91b6b2 (patch) | |
tree | 63c383dfc5d672267684ae375bf4f5e6a046d121 /gcc/rust/backend/rust-compile-var-decl.h | |
parent | 69f6be3ee483c9895b4b5187a44b3e1c8be2ba63 (diff) | |
download | gcc-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-var-decl.h')
-rw-r--r-- | gcc/rust/backend/rust-compile-var-decl.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/rust/backend/rust-compile-var-decl.h b/gcc/rust/backend/rust-compile-var-decl.h index a5c736d..4b52dcd 100644 --- a/gcc/rust/backend/rust-compile-var-decl.h +++ b/gcc/rust/backend/rust-compile-var-decl.h @@ -64,6 +64,15 @@ public: address_taken, locus); } + void visit (HIR::WildcardPattern &pattern) override + { + translated_type = ctx->get_backend ()->immutable_type (translated_type); + compiled_variable + = ctx->get_backend ()->local_variable (fndecl, "_", translated_type, + NULL /*decl_var*/, address_taken, + locus); + } + private: CompileVarDecl (Context *ctx, tree fndecl) : HIRCompileBase (ctx), fndecl (fndecl), |