Commit c4f5a00253

Andrew Kelley <superjoe30@gmail.com>
2016-02-07 03:28:11
rhs of ?? and %% can be any expression
1 parent 73727bd
Changed files (2)
doc/langref.md
@@ -67,9 +67,9 @@ AsmClobbers= ":" list("String", ",")
 
 UnwrapExpression = BoolOrExpression (UnwrapMaybe | UnwrapError) | BoolOrExpression
 
-UnwrapMaybe = "??" BoolOrExpression
+UnwrapMaybe = "??" Expression
 
-UnwrapError = "%%" option("|" "Symbol" "|") BoolOrExpression
+UnwrapError = "%%" option("|" "Symbol" "|") Expression
 
 AssignmentExpression = UnwrapExpression AssignmentOperator UnwrapExpression | UnwrapExpression
 
src/parser.cpp
@@ -2048,7 +2048,7 @@ static AstNode *ast_parse_unwrap_expr(ParseContext *pc, int *token_index, bool m
     if (token->id == TokenIdDoubleQuestion) {
         *token_index += 1;
 
-        AstNode *rhs = ast_parse_bool_or_expr(pc, token_index, true);
+        AstNode *rhs = ast_parse_expression(pc, token_index, true);
 
         AstNode *node = ast_create_node(pc, NodeTypeBinOpExpr, token);
         node->data.bin_op_expr.op1 = lhs;