diff options
author | John Hodge <tpg@mutabah.net> | 2016-10-02 17:20:41 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-10-02 17:20:41 +0800 |
commit | 48dc2d149e96232a4f0546675fadf7b3f7d6eddf (patch) | |
tree | 7a4aadb3e49ad8add056766994ca993a4776fe8f /src/parse | |
parent | b5674644bdd2f2e9f1caa027632bed9e09af2f6f (diff) | |
download | mrust-48dc2d149e96232a4f0546675fadf7b3f7d6eddf.tar.gz |
AST - Store the mutability of & patterns
Diffstat (limited to 'src/parse')
-rw-r--r-- | src/parse/pattern.cpp | 12 |
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: |