diff options
Diffstat (limited to 'src/parse')
-rw-r--r-- | src/parse/expr.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/parse/expr.cpp b/src/parse/expr.cpp index e74432f4..d9d42460 100644 --- a/src/parse/expr.cpp +++ b/src/parse/expr.cpp @@ -28,6 +28,15 @@ AST::Expr Parse_ExprBlock(TokenStream& lex) return AST::Expr(Parse_ExprBlockNode(lex));
}
+/// Parse a pattern
+///
+/// Examples:
+/// - `Enum::Variant(a)`
+/// - `(1, a)`
+/// - `1 ... 2`
+/// - `"string"`
+/// - `mut x`
+/// - `mut x @ 1 ... 2`
AST::Pattern Parse_Pattern(TokenStream& lex)
{
TRACE_FUNCTION;
@@ -35,6 +44,12 @@ AST::Pattern Parse_Pattern(TokenStream& lex) AST::Path path;
Token tok;
tok = lex.getToken();
+ // 1. Bind mutability
+ if( tok.type() == TOK_RWORD_MUT )
+ {
+ throw ParseError::Todo("mut bindings");
+ tok = lex.getToken();
+ }
if( tok.type() == TOK_RWORD_REF )
{
throw ParseError::Todo("ref bindings");
|