diff --git a/src/lpython/parser/semantics.h b/src/lpython/parser/semantics.h index aeba7e46f1..856031f9d2 100644 --- a/src/lpython/parser/semantics.h +++ b/src/lpython/parser/semantics.h @@ -625,6 +625,7 @@ static inline ast_t* BOOLOP_01(Allocator &al, Location &loc, expr_t* y1 = EXPR(y); Vec v; v.reserve(al, 4); + /* if (is_a(*x1)) { BoolOp_t* tmp = down_cast(x1); if (op == tmp->m_op) { @@ -636,10 +637,9 @@ static inline ast_t* BOOLOP_01(Allocator &al, Location &loc, v.push_back(al, x1); v.push_back(al, y1); } - } else { - v.push_back(al, x1); - v.push_back(al, y1); - } + */ + v.push_back(al, x1); + v.push_back(al, y1); return make_BoolOp_t(al, loc, op, v.p, v.n); } diff --git a/tests/parser/boolOp1.py b/tests/parser/boolOp1.py index 80c777fb65..3a93702f95 100644 --- a/tests/parser/boolOp1.py +++ b/tests/parser/boolOp1.py @@ -6,5 +6,4 @@ (a and b and c or (x or (y and (z or i)) or j)) (a and (b and (c or d)) and (e and f) or x) and y -# # TODO: Make this work similar to Old Parser -# (a or b and c) or z +(a or b and c) or z diff --git a/tests/reference/ast_new-boolOp1-478328f.json b/tests/reference/ast_new-boolOp1-478328f.json index b81975ac4e..5c0b0a1b23 100644 --- a/tests/reference/ast_new-boolOp1-478328f.json +++ b/tests/reference/ast_new-boolOp1-478328f.json @@ -2,11 +2,11 @@ "basename": "ast_new-boolOp1-478328f", "cmd": "lpython --show-ast --new-parser --no-color {infile} -o {outfile}", "infile": "tests/parser/boolOp1.py", - "infile_hash": "a20fee19d7b8e6f8689f6badc2726fd618524af0aba84a7d0d0e5af5", + "infile_hash": "d3c477215f26d7a7e09c7de32d3e716585796d1674cba2ea692fe161", "outfile": null, "outfile_hash": null, "stdout": "ast_new-boolOp1-478328f.stdout", - "stdout_hash": "8b8d1514ec03d6081c0e716170ff41615cb00f9745a71e153f25179c", + "stdout_hash": "54fed9e79b839b525e9971e086295a412fabd1ccc27820e3432a83f3", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/ast_new-boolOp1-478328f.stdout b/tests/reference/ast_new-boolOp1-478328f.stdout index 4deefdc37c..0b1d2bb543 100644 --- a/tests/reference/ast_new-boolOp1-478328f.stdout +++ b/tests/reference/ast_new-boolOp1-478328f.stdout @@ -1 +1 @@ -(Module [(Expr (BoolOp And [(Name a Load) (Name b Load)])) (Expr (BoolOp Or [(BoolOp And [(Name a Load) (Name b Load)]) (Name c Load)])) (Expr (BoolOp Or [(Name a Load) (Name b Load)])) (Expr (BoolOp Or [(Name a Load) (BoolOp And [(Name b Load) (Name c Load)])])) (Expr (BoolOp Or [(BoolOp And [(Name a Load) (Name b Load) (Name c Load)]) (BoolOp Or [(Name x Load) (BoolOp And [(Name y Load) (BoolOp Or [(Name z Load) (Name i Load)])]) (Name j Load)])])) (Expr (BoolOp And [(BoolOp Or [(BoolOp And [(Name a Load) (BoolOp And [(Name b Load) (BoolOp Or [(Name c Load) (Name d Load)])]) (BoolOp And [(Name e Load) (Name f Load)])]) (Name x Load)]) (Name y Load)]))] []) +(Module [(Expr (BoolOp And [(Name a Load) (Name b Load)])) (Expr (BoolOp Or [(BoolOp And [(Name a Load) (Name b Load)]) (Name c Load)])) (Expr (BoolOp Or [(Name a Load) (Name b Load)])) (Expr (BoolOp Or [(Name a Load) (BoolOp And [(Name b Load) (Name c Load)])])) (Expr (BoolOp Or [(BoolOp And [(BoolOp And [(Name a Load) (Name b Load)]) (Name c Load)]) (BoolOp Or [(BoolOp Or [(Name x Load) (BoolOp And [(Name y Load) (BoolOp Or [(Name z Load) (Name i Load)])])]) (Name j Load)])])) (Expr (BoolOp And [(BoolOp Or [(BoolOp And [(BoolOp And [(Name a Load) (BoolOp And [(Name b Load) (BoolOp Or [(Name c Load) (Name d Load)])])]) (BoolOp And [(Name e Load) (Name f Load)])]) (Name x Load)]) (Name y Load)])) (Expr (BoolOp Or [(BoolOp Or [(Name a Load) (BoolOp And [(Name b Load) (Name c Load)])]) (Name z Load)]))] []) diff --git a/tests/reference/ast_new-if2-c3b6022.json b/tests/reference/ast_new-if2-c3b6022.json index 3bb7e063e1..a6154b1357 100644 --- a/tests/reference/ast_new-if2-c3b6022.json +++ b/tests/reference/ast_new-if2-c3b6022.json @@ -6,7 +6,7 @@ "outfile": null, "outfile_hash": null, "stdout": "ast_new-if2-c3b6022.stdout", - "stdout_hash": "6f9e04559cd53ae834aff76c5c06d87601323fc7367e54dd63251950", + "stdout_hash": "acb8fee9254dc2a1fff51fd70b7350768c8696f9740a5abf5631cf78", "stderr": null, "stderr_hash": null, "returncode": 0 diff --git a/tests/reference/ast_new-if2-c3b6022.stdout b/tests/reference/ast_new-if2-c3b6022.stdout index cf5eb52c90..bfa2df17f6 100644 --- a/tests/reference/ast_new-if2-c3b6022.stdout +++ b/tests/reference/ast_new-if2-c3b6022.stdout @@ -1 +1 @@ -(Module [(If (Compare (Call (Name type Load) [(Name x Load)] []) Is [(Name int Load)]) [(Pass)] []) (If (Compare (Compare (BinOp (BinOp (BinOp (ConstantInt 2 ()) Add (ConstantInt 3 ())) Div (ConstantInt 2 ())) Sub (ConstantInt 1 ())) Is [(ConstantInt 5 ())]) Is [(ConstantBool .true. ())]) [(Pass)] []) (If (Compare (Name x Load) IsNot [(Call (Name type Load) [(Name float Load)] [])]) [(Pass)] []) (If (Compare (Name x Load) IsNot [(Call (Name type Load) [(Name int Load)] [])]) [(Pass)] []) (Assign [(Name a Store)] (List [(ConstantInt 1 ()) (ConstantInt 2 ()) (ConstantInt 3 ())] Load) ()) (If (Compare (Name a Load) NotIn [(List [(ConstantInt 1 ()) (ConstantInt 2 ())] Load)]) [(Pass)] []) (If (Compare (Compare (Name a Load) NotIn [(List [(ConstantInt 1 ()) (ConstantInt 2 ())] Load)]) NotIn [(List [(ConstantBool .true. ()) (ConstantBool .false. ())] Load)]) [(Pass)] []) (If (Compare (Name field Load) In [(List [(ConstantStr "vararg" ()) (ConstantStr "kwarg" ())] Load)]) [(If (Compare (Name value Load) Is [(ConstantNone ())]) [(Pass)] [])] []) (If (Compare (Name a Load) In [(Name list1 Load)]) [(Pass)] []) (If (BoolOp Or [(Compare (Attribute (Name x Load) shape Load) Eq [(Tuple [] Load)]) (Compare (Attribute (Name y Load) shape Load) Eq [(Tuple [] Load)]) (Compare (Subscript (Attribute (Name x Load) shape Load) (ConstantInt 1 ()) Load) NotEq [(Subscript (Attribute (Name y Load) shape Load) (ConstantInt 0 ()) Load)])]) [(Assert (Compare (Subscript (Name arr Load) (Tuple [] Load) Load) Is [(Name ArrayLike Load)]) ()) (Pass)] []) (Assign [(Name b Store)] (IfExp (Compare (Name a Load) Eq [(ConstantInt 2 ())]) (ConstantInt 6 ()) (ConstantInt 8 ())) ()) (Expr (IfExp (ConstantBool .true. ()) (ConstantStr "true" ()) (ConstantStr "false" ()))) (Assign [(Name result Store)] (IfExp (UnaryOp Not (Compare (Name a Load) Gt [(Name b Load)])) (Name x Load) (Name y Load)) ()) (Expr (IfExp (Compare (Name a Load) Gt [(Name b Load)]) (Call (Name print Load) [(Name a Load) (ConstantStr "is greater" ())] []) (Call (Name print Load) [(Name b Load) (ConstantStr "is Greater" ())] [])))] []) +(Module [(If (Compare (Call (Name type Load) [(Name x Load)] []) Is [(Name int Load)]) [(Pass)] []) (If (Compare (Compare (BinOp (BinOp (BinOp (ConstantInt 2 ()) Add (ConstantInt 3 ())) Div (ConstantInt 2 ())) Sub (ConstantInt 1 ())) Is [(ConstantInt 5 ())]) Is [(ConstantBool .true. ())]) [(Pass)] []) (If (Compare (Name x Load) IsNot [(Call (Name type Load) [(Name float Load)] [])]) [(Pass)] []) (If (Compare (Name x Load) IsNot [(Call (Name type Load) [(Name int Load)] [])]) [(Pass)] []) (Assign [(Name a Store)] (List [(ConstantInt 1 ()) (ConstantInt 2 ()) (ConstantInt 3 ())] Load) ()) (If (Compare (Name a Load) NotIn [(List [(ConstantInt 1 ()) (ConstantInt 2 ())] Load)]) [(Pass)] []) (If (Compare (Compare (Name a Load) NotIn [(List [(ConstantInt 1 ()) (ConstantInt 2 ())] Load)]) NotIn [(List [(ConstantBool .true. ()) (ConstantBool .false. ())] Load)]) [(Pass)] []) (If (Compare (Name field Load) In [(List [(ConstantStr "vararg" ()) (ConstantStr "kwarg" ())] Load)]) [(If (Compare (Name value Load) Is [(ConstantNone ())]) [(Pass)] [])] []) (If (Compare (Name a Load) In [(Name list1 Load)]) [(Pass)] []) (If (BoolOp Or [(BoolOp Or [(Compare (Attribute (Name x Load) shape Load) Eq [(Tuple [] Load)]) (Compare (Attribute (Name y Load) shape Load) Eq [(Tuple [] Load)])]) (Compare (Subscript (Attribute (Name x Load) shape Load) (ConstantInt 1 ()) Load) NotEq [(Subscript (Attribute (Name y Load) shape Load) (ConstantInt 0 ()) Load)])]) [(Assert (Compare (Subscript (Name arr Load) (Tuple [] Load) Load) Is [(Name ArrayLike Load)]) ()) (Pass)] []) (Assign [(Name b Store)] (IfExp (Compare (Name a Load) Eq [(ConstantInt 2 ())]) (ConstantInt 6 ()) (ConstantInt 8 ())) ()) (Expr (IfExp (ConstantBool .true. ()) (ConstantStr "true" ()) (ConstantStr "false" ()))) (Assign [(Name result Store)] (IfExp (UnaryOp Not (Compare (Name a Load) Gt [(Name b Load)])) (Name x Load) (Name y Load)) ()) (Expr (IfExp (Compare (Name a Load) Gt [(Name b Load)]) (Call (Name print Load) [(Name a Load) (ConstantStr "is greater" ())] []) (Call (Name print Load) [(Name b Load) (ConstantStr "is Greater" ())] [])))] [])