From 48dc2d149e96232a4f0546675fadf7b3f7d6eddf Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 2 Oct 2016 17:20:41 +0800 Subject: AST - Store the mutability of & patterns --- src/parse/pattern.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/parse') 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: -- cgit v1.2.3