@@ -365,6 +365,62 @@ world`},
365
365
& UnaryNode {Operator : "not" ,
366
366
Node : & IdentifierNode {Value : "in_var" }},
367
367
},
368
+ {
369
+ "-1 not in [1, 2, 3, 4]" ,
370
+ & UnaryNode {Operator : "not" ,
371
+ Node : & BinaryNode {Operator : "in" ,
372
+ Left : & UnaryNode {Operator : "-" , Node : & IntegerNode {Value : 1 }},
373
+ Right : & ArrayNode {Nodes : []Node {
374
+ & IntegerNode {Value : 1 },
375
+ & IntegerNode {Value : 2 },
376
+ & IntegerNode {Value : 3 },
377
+ & IntegerNode {Value : 4 },
378
+ }}}},
379
+ },
380
+ {
381
+ "1*8 not in [1, 2, 3, 4]" ,
382
+ & UnaryNode {Operator : "not" ,
383
+ Node : & BinaryNode {Operator : "in" ,
384
+ Left : & BinaryNode {Operator : "*" ,
385
+ Left : & IntegerNode {Value : 1 },
386
+ Right : & IntegerNode {Value : 8 },
387
+ },
388
+ Right : & ArrayNode {Nodes : []Node {
389
+ & IntegerNode {Value : 1 },
390
+ & IntegerNode {Value : 2 },
391
+ & IntegerNode {Value : 3 },
392
+ & IntegerNode {Value : 4 },
393
+ }}}},
394
+ },
395
+ {
396
+ "2==2 ? false : 3 not in [1, 2, 5]" ,
397
+ & ConditionalNode {
398
+ Cond : & BinaryNode {
399
+ Operator : "==" ,
400
+ Left : & IntegerNode {Value : 2 },
401
+ Right : & IntegerNode {Value : 2 },
402
+ },
403
+ Exp1 : & BoolNode {Value : false },
404
+ Exp2 : & UnaryNode {
405
+ Operator : "not" ,
406
+ Node : & BinaryNode {
407
+ Operator : "in" ,
408
+ Left : & IntegerNode {Value : 3 },
409
+ Right : & ArrayNode {Nodes : []Node {
410
+ & IntegerNode {Value : 1 },
411
+ & IntegerNode {Value : 2 },
412
+ & IntegerNode {Value : 5 },
413
+ }}}}},
414
+ },
415
+ {
416
+ "'foo' + 'bar' not matches 'foobar'" ,
417
+ & UnaryNode {Operator : "not" ,
418
+ Node : & BinaryNode {Operator : "matches" ,
419
+ Left : & BinaryNode {Operator : "+" ,
420
+ Left : & StringNode {Value : "foo" },
421
+ Right : & StringNode {Value : "bar" }},
422
+ Right : & StringNode {Value : "foobar" }}},
423
+ },
368
424
{
369
425
"all(Tickets, #)" ,
370
426
& BuiltinNode {
@@ -706,6 +762,11 @@ invalid float literal: strconv.ParseFloat: parsing "0o1E+1": invalid syntax (1:6
706
762
invalid float literal: strconv.ParseFloat: parsing "1E": invalid syntax (1:2)
707
763
| 1E
708
764
| .^
765
+
766
+ 1 not == [1, 2, 5]
767
+ unexpected token Operator("==") (1:7)
768
+ | 1 not == [1, 2, 5]
769
+ | ......^
709
770
`
710
771
711
772
func TestParse_error (t * testing.T ) {
0 commit comments