cases:
- note: basic
data: {}
modules:
- |
package test
default x = 5
a = b
default b = -6
c = d
d {
x == 3
}
d {
x == 4
}
default y = 10
z = y {
y
}
y = 20
default d = "has_default"
default object["key"] = "string"
default complex[true] = "bool_true"
default complex[false] = "bool_false"
complex["hello"] = "world"
default empty_array = []
default empty_set = set()
default empty_object = {}
default null_value = null
default true_value = true
default false_value = false
default string_value = "abc"
default composite_value = [ 1, {2}, {"a": 5}]
default array_compr = [5 | true]
default set_compr = {5 | true}
default object_compr = {"a":5 | true}
default empty_array_1 = [1 | not 1]
query: data.test
want_result:
x: 5
a: -6
b: -6
y: 20
z: 20
c: "has_default"
d: "has_default"
object:
object!:
- key: "key"
value: "string"
complex:
object!:
- key: true
value: "bool_true"
- key: false
value: "bool_false"
- key: "hello"
value: "world"
empty_array: []
empty_set:
set!: []
empty_object:
object!: []
null_value: null
true_value: true
false_value: false
string_value: "abc"
composite_value:
- 1
- set!: [2]
- a: 5
array_compr: [5]
set_compr:
set!: [5]
object_compr:
a: 5
empty_array_1: []
- note: invalid-var
data: {}
modules:
- |
package t
default a = x
query: data
error: invalid `var` in default value
- note: invalid-var-in-set-aray
data: {}
modules:
- |
package t
default a = [ {x} ]
query: data
error: invalid `var` in default value
- note: invalid-var-in-object-key
data: {}
modules:
- |
package t
default a = { x : 5 }
query: data
error: invalid `var` in default value
- note: invalid-var-in-object-value
data: {}
modules:
- |
package t
default a = { "x" : x }
query: data
error: invalid `var` in default value
- note: valid-var-in-array-compr-output
data: {}
modules:
- |
package t
x = 5
default a = [ x | 1 ]
query: data.t.a
want_result: [5]
- note: valid-var-in-array-compr-query
data: {}
modules:
- |
package t
x = 5
default a = [ 1 | true; x ]
query: data.t.a
want_result: [1]
- note: valid-var-in-set-compr-output
data: {}
modules:
- |
package t
x = 5
default a = { x | 1 }
query: data.t.a
want_result:
set!: [5]
- note: valid-var-in-array-compr-query
data: {}
modules:
- |
package t
x = 5
default a = { 1 | true; x }
query: data.t.a
want_result:
set!: [1]
- note: valid-var-in-object-compr-key
data: {}
modules:
- |
package t
x = "a"
default a = { x : 5 | true }
query: data.t.a
want_result:
a: 5
- note: valid-var-in-object-compr-value
data: {}
modules:
- |
package t
x = 5
default a = { "x" : x | true }
query: data.t.a
want_result:
x: 5
- note: valid-var-in-object-compr-query
data: {}
modules:
- |
package t
x = 5
default a = { "a" : 5 | x }
query: data.t.a
want_result:
a: 5
- note: invalid-call
data: {}
modules:
- |
package t
default a = incr(5)
query: data
error: invalid `call` in default value
- note: invalid-unaryexpr
data: {}
modules:
- |
package t
default a = -b
query: data
error: invalid `unaryexpr` in default value
- note: invalid-refdot
data: {}
modules:
- |
package t
default a = {"b" : 5}.b
query: data
error: invalid `ref` in default value
- note: invalid-refbrack
data: {}
modules:
- |
package t
default a = ["abc"][0]
query: data
error: invalid `ref` in default value
- note: invalid-binexpr
data: {}
modules:
- |
package t
default a = ({5} | {6})
query: data
error: invalid `binexpr` in default value
- note: invalid-boolexpr
data: {}
modules:
- |
package t
default a = (5 > 6)
query: data
error: invalid `boolexpr` in default value
- note: invalid-arithexpr
data: {}
modules:
- |
package t
default a = (5 + 6)
query: data
error: invalid `arithexpr` in default value
- note: invalid-assignexpr
data: {}
modules:
- |
package t
# This is rejected by parser.
default a = (x = 5)
query: data
error: expecting `)`
- note: invalid-membership
data: {}
modules:
- |
package t
import future.keywords
# Following is rejected by parser
default a = 5 in {5}
query: data
error: unexpected keyword `in`
- note: valid-some-vars
data: {}
modules:
- |
package t
default a = [5 | some a; a = 5]
query: data.t.a
want_result: [5]
- note: valid-every
data: {}
modules:
- |
package t
import future.keywords
default a = [5 | every x in [1,2,3] { true }]
query: data.t.a
want_result: [5]
skip: true
- note: valid-var-in-some-in-key
data: {}
modules:
- |
package t
import future.keywords
default a = [5 | some x in {5}]
query: data.t.a
skip: true
want_result: [5]
- note: valid-var-in-some-in-value
data: {}
modules:
- |
package t
import future.keywords
default a = [5 | some 5, x in {5}]
query: data.t.a
want_result: [5]
skip: true
- note: invalid-var-in-some-in-collection
data: {}
modules:
- |
package t
import future.keywords
default a = [5 | some 5, 5 in x]
query: data.t.a
want_result: []
skip: true
- note: valid-var-in-not-expr
data: {}
modules:
- |
package t
import future.keywords
x = true
default a = [5 | not x]
query: data.t.a
want_result: []
- note: valid-var-in-expr
data: {}
modules:
- |
package t
import future.keywords
x = true
default a = [5 | x]
query: data.t.a
want_result: [5]