summaryrefslogtreecommitdiff
path: root/src/parse
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-10-02 17:20:41 +0800
committerJohn Hodge <tpg@mutabah.net>2016-10-02 17:20:41 +0800
commit48dc2d149e96232a4f0546675fadf7b3f7d6eddf (patch)
tree7a4aadb3e49ad8add056766994ca993a4776fe8f /src/parse
parentb5674644bdd2f2e9f1caa027632bed9e09af2f6f (diff)
downloadmrust-48dc2d149e96232a4f0546675fadf7b3f7d6eddf.tar.gz
AST - Store the mutability of & patterns
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/pattern.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/parse/pattern.cpp b/src/parse/pattern.cpp
index f0b15ffe..3adce90d 100644
--- a/src/parse/pattern.cpp
+++ b/src/parse/pattern.cpp
@@ -182,14 +182,16 @@ AST::Pattern Parse_PatternReal1(TokenStream& lex, bool is_refutable)
return AST::Pattern( AST::Pattern::TagBox(), Parse_Pattern(lex, is_refutable) );
case TOK_DOUBLE_AMP:
lex.putback(TOK_AMP);
- case TOK_AMP:
+ case TOK_AMP: {
DEBUG("Ref");
// NOTE: Falls back into "Pattern" not "PatternReal" to handle MaybeBind again
+ bool is_mut = false;
if( GET_TOK(tok, lex) == TOK_RWORD_MUT )
- // TODO: Actually use mutability
- return AST::Pattern( AST::Pattern::TagReference(), Parse_Pattern(lex, is_refutable) );
- PUTBACK(tok, lex);
- return AST::Pattern( AST::Pattern::TagReference(), Parse_Pattern(lex, is_refutable) );
+ is_mut = true;
+ else
+ PUTBACK(tok, lex);
+ return AST::Pattern( AST::Pattern::TagReference(), is_mut, Parse_Pattern(lex, is_refutable) );
+ }
case TOK_RWORD_SELF:
case TOK_RWORD_SUPER:
case TOK_IDENT: