@@ -365,6 +365,62 @@ world`},
365365 & UnaryNode {Operator : "not" ,
366366 Node : & IdentifierNode {Value : "in_var" }},
367367 },
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+ },
368424 {
369425 "all(Tickets, #)" ,
370426 & BuiltinNode {
@@ -706,6 +762,11 @@ invalid float literal: strconv.ParseFloat: parsing "0o1E+1": invalid syntax (1:6
706762invalid float literal: strconv.ParseFloat: parsing "1E": invalid syntax (1:2)
707763 | 1E
708764 | .^
765+
766+ 1 not == [1, 2, 5]
767+ unexpected token Operator("==") (1:7)
768+ | 1 not == [1, 2, 5]
769+ | ......^
709770`
710771
711772func TestParse_error (t * testing.T ) {
0 commit comments