Browse Source

Fixed a parsing issue where _args and _func was not correctly recognized as expressions.

Marco Bambini 8 years ago
parent
commit
bb66b998f7
2 changed files with 19 additions and 1 deletions
  1. 2 1
      src/compiler/gravity_token.c
  2. 17 0
      test/arg_expression.gravity

+ 2 - 1
src/compiler/gravity_token.c

@@ -275,7 +275,8 @@ bool token_isexpression_statement (gtoken_t token) {
 	// unary_operator: '+' | '-' | '!' | 'not'
 	// unary_operator: '+' | '-' | '!' | 'not'
 	// raise_expression: 'raise'
 	// raise_expression: 'raise'
 	
 	
-	return (token_isprimary_expression(token) || (token == TOK_OP_ADD) || (token == TOK_OP_SUB) || (token == TOK_OP_NOT));
+	return (token_isprimary_expression(token) || (token == TOK_OP_ADD) || (token == TOK_OP_SUB) ||
+			(token == TOK_OP_NOT) || (token == TOK_KEY_CURRARGS) || (token == TOK_KEY_CURRFUNC));
 }
 }
 
 
 bool token_islabel_statement (gtoken_t token) {
 bool token_islabel_statement (gtoken_t token) {

+ 17 - 0
test/arg_expression.gravity

@@ -0,0 +1,17 @@
+#unittest {
+	name: "_args used in expression.";
+	error: NONE;
+	result: 640;
+};
+
+func sum() {
+	var tot = 0;
+	_args.loop(func (value) {tot +=value});
+	return tot;
+}
+
+func main() {
+	var a = 10;
+	var b = 20;
+	return sum(a, b, a*(a+b+9)+(b-a), a, a*b)
+}