mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-12 19:32:48 -06:00
linters+testdata: Reformat all yaml testcases for linting. (#6511)
This commit adds a config for yamllint, mass-reformats all of the existing Yaml testcases to pass linting, and adds a Yaml linting job to the pull-request Github Actions workflow. A few careful exceptions and ignores were added to the linter's config to allow keeping our existing Yaml files with minimal reformatting. Signed-off-by: Philip Conrad <philipaconrad@gmail.com>
This commit is contained in:
@@ -128,6 +128,19 @@ jobs:
|
||||
run: make check
|
||||
timeout-minutes: 30
|
||||
|
||||
yaml-lint:
|
||||
name: YAML Lint
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: YAML Style and Lint Check
|
||||
run: make check-yaml-tests
|
||||
timeout-minutes: 30
|
||||
env:
|
||||
YAML_LINT_FORMAT: github
|
||||
|
||||
wasm:
|
||||
name: WASM
|
||||
runs-on: ubuntu-22.04
|
||||
@@ -291,7 +304,6 @@ jobs:
|
||||
env:
|
||||
DOCKER_RUNNING: 0
|
||||
|
||||
|
||||
# Run PR metadata against Rego policies
|
||||
rego-check-pr:
|
||||
name: Rego PR checks
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
# Some of our testcases end up going past the default 80 character limit.
|
||||
line-length: false
|
||||
braces:
|
||||
max-spaces-inside: 1
|
||||
comments:
|
||||
min-spaces-from-content: 1
|
||||
indentation:
|
||||
ignore:
|
||||
- test-time-*
|
||||
@@ -29,6 +29,8 @@ GO_TAGS = -tags=opa_wasm
|
||||
endif
|
||||
|
||||
GOLANGCI_LINT_VERSION := v1.51.0
|
||||
YAML_LINT_VERSION := 0.29.0
|
||||
YAML_LINT_FORMAT ?= auto
|
||||
|
||||
DOCKER_RUNNING ?= $(shell docker ps >/dev/null 2>&1 && echo 1 || echo 0)
|
||||
|
||||
@@ -474,6 +476,14 @@ check-go-module:
|
||||
$(RELEASE_BUILD_IMAGE) \
|
||||
/bin/bash -c "git config --system --add safe.directory /src && go mod vendor -v"
|
||||
|
||||
.PHONY: check-yaml-tests
|
||||
check-yaml-tests:
|
||||
ifeq ($(DOCKER_RUNNING), 1)
|
||||
docker run --rm -v $(shell pwd):/data:ro,Z -w /data pipelinecomponents/yamllint:${YAML_LINT_VERSION} yamllint -f $(YAML_LINT_FORMAT) test/cases/testdata
|
||||
else
|
||||
@echo "Docker not installed or running. Skipping yamllint run."
|
||||
endif
|
||||
|
||||
######################################################
|
||||
#
|
||||
# Release targets
|
||||
|
||||
@@ -15,6 +15,7 @@ Requirements:
|
||||
- GitHub account (if you are contributing)
|
||||
- Go (version 1.15+ is supported though older versions are likely to work)
|
||||
- GNU Make
|
||||
- Python3, pip, yamllint (if linting YAML files manually)
|
||||
|
||||
## Getting Started
|
||||
|
||||
@@ -71,6 +72,10 @@ git rebase upstream/main
|
||||
> Be sure to run `make check` before submitting your pull request. You
|
||||
> may need to run `go fmt` on your code to make it comply with standard Go
|
||||
> style.
|
||||
> For YAML files, you may need to run the `yamllint` tool on the
|
||||
> `test/cases/testdata` folder to make sure any new tests are well-formatted.
|
||||
> If you have Docker available, you can run `make check-yaml-tests` to
|
||||
> run `yamllint` on the tests without installing any Python dependencies.
|
||||
|
||||
|
||||
### Submission
|
||||
|
||||
+20
-19
@@ -1,21 +1,22 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
__local0__ = data.a
|
||||
count(__local0__, x)
|
||||
}
|
||||
note: aggregates/count
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
p[x] {
|
||||
__local0__ = data.a
|
||||
count(__local0__, x)
|
||||
}
|
||||
note: aggregates/count
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
|
||||
+23
-22
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
count(__local0__, x)
|
||||
}
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
count(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
x = data.a[_]
|
||||
}
|
||||
note: aggregates/count virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
q[x] {
|
||||
x = data.a[_]
|
||||
}
|
||||
note: aggregates/count virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
__local0__ = data.b
|
||||
count(__local0__, x)
|
||||
}
|
||||
note: aggregates/count keys
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 2
|
||||
p[x] {
|
||||
__local0__ = data.b
|
||||
count(__local0__, x)
|
||||
}
|
||||
note: aggregates/count keys
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 2
|
||||
|
||||
+21
-20
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
__local0__ = [k | data.generated.q[k] = _]
|
||||
count(__local0__, x)
|
||||
}
|
||||
p[x] {
|
||||
__local0__ = [k | data.generated.q[k] = _]
|
||||
count(__local0__, x)
|
||||
}
|
||||
|
||||
q[k] = v {
|
||||
data.b[k] = v
|
||||
}
|
||||
note: aggregates/count keys virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 2
|
||||
q[k] = v {
|
||||
data.b[k] = v
|
||||
}
|
||||
note: aggregates/count keys virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 2
|
||||
|
||||
+21
-20
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
count(__local0__, x)
|
||||
}
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
count(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
x = data.a[_]
|
||||
}
|
||||
note: aggregates/count set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 4
|
||||
q[x] {
|
||||
x = data.a[_]
|
||||
}
|
||||
note: aggregates/count set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 4
|
||||
|
||||
+14
-13
@@ -1,15 +1,16 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
sum([1, 2, 3, 4], x)
|
||||
}
|
||||
note: aggregates/sum
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 10
|
||||
p[x] {
|
||||
sum([1, 2, 3, 4], x)
|
||||
}
|
||||
note: aggregates/sum
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 10
|
||||
|
||||
+12
-11
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
sum({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/sum set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 10
|
||||
p = x {
|
||||
sum({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/sum set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 10
|
||||
|
||||
+23
-22
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
sum(__local0__, x)
|
||||
}
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
sum(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/sum virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 10
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/sum virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 10
|
||||
|
||||
+21
-20
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
sum(__local0__, x)
|
||||
}
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
sum(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/sum virtual set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 10
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/sum virtual set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 10
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
sum([49649733057, 1], __local0__)
|
||||
__local0__ = 49649733058
|
||||
}
|
||||
note: aggregates/bug 2469 - precision
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
sum([49649733057, 1], __local0__)
|
||||
__local0__ = 49649733058
|
||||
}
|
||||
note: aggregates/bug 2469 - precision
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+12
-11
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
product([1, 2, 3, 4], 24)
|
||||
}
|
||||
note: aggregates/product
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
product([1, 2, 3, 4], 24)
|
||||
}
|
||||
note: aggregates/product
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+12
-11
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
product({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/product set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 24
|
||||
p = x {
|
||||
product({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/product set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 24
|
||||
|
||||
+14
-13
@@ -1,15 +1,16 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
max([1, 2, 3, 4], x)
|
||||
}
|
||||
note: aggregates/max
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
p[x] {
|
||||
max([1, 2, 3, 4], x)
|
||||
}
|
||||
note: aggregates/max
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
|
||||
+12
-11
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
max({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/max set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 4
|
||||
p = x {
|
||||
max({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/max set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 4
|
||||
|
||||
+23
-22
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
max(__local0__, x)
|
||||
}
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
max(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/max virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/max virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
|
||||
+21
-20
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
max(__local0__, x)
|
||||
}
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
max(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/max virtual set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 4
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/max virtual set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 4
|
||||
|
||||
+14
-13
@@ -1,15 +1,16 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
min([1, 2, 3, 4], x)
|
||||
}
|
||||
note: aggregates/min
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
p[x] {
|
||||
min([1, 2, 3, 4], x)
|
||||
}
|
||||
note: aggregates/min
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
|
||||
+14
-13
@@ -1,15 +1,16 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
min([1, 2, 1, 3, 4], x)
|
||||
}
|
||||
note: aggregates/min dups
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
p[x] {
|
||||
min([1, 2, 1, 3, 4], x)
|
||||
}
|
||||
note: aggregates/min dups
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
|
||||
+14
-13
@@ -1,15 +1,16 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
min([3, 2, 1, 4, 6, -7, 10], x)
|
||||
}
|
||||
note: aggregates/min out-of-order
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- -7
|
||||
p[x] {
|
||||
min([3, 2, 1, 4, 6, -7, 10], x)
|
||||
}
|
||||
note: aggregates/min out-of-order
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- -7
|
||||
|
||||
+12
-11
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
min({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/min set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 1
|
||||
p = x {
|
||||
min({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/min set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 1
|
||||
|
||||
+23
-22
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
min(__local0__, x)
|
||||
}
|
||||
p[x] {
|
||||
__local0__ = [y | data.generated.q[y]]
|
||||
min(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/min virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/min virtual
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
|
||||
+21
-20
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
min(__local0__, x)
|
||||
}
|
||||
p = x {
|
||||
__local0__ = data.generated.q
|
||||
min(__local0__, x)
|
||||
}
|
||||
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/min virtual set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 1
|
||||
q[x] {
|
||||
data.a[_] = x
|
||||
}
|
||||
note: aggregates/min virtual set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 1
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
max([1, 2, 3, 4], __local0__)
|
||||
}
|
||||
note: aggregates/reduce ref dest
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
max([1, 2, 3, 4], __local0__)
|
||||
}
|
||||
note: aggregates/reduce ref dest
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
not max([1, 2, 3, 4, 5], __local0__)
|
||||
}
|
||||
note: aggregates/reduce ref dest (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
not max([1, 2, 3, 4, 5], __local0__)
|
||||
}
|
||||
note: aggregates/reduce ref dest (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+16
-15
@@ -1,17 +1,18 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
sort([4, 3, 2, 1], x)
|
||||
}
|
||||
note: aggregates/sort
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
p = x {
|
||||
sort([4, 3, 2, 1], x)
|
||||
}
|
||||
note: aggregates/sort
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
|
||||
+16
-15
@@ -1,17 +1,18 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
sort({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/sort set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
p = x {
|
||||
sort({1, 2, 3, 4}, x)
|
||||
}
|
||||
note: aggregates/sort set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
|
||||
+21
-20
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
count("abcde", x)
|
||||
}
|
||||
note: aggregates/count string
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 5
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
count("abcde", x)
|
||||
}
|
||||
note: aggregates/count string
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 5
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
count("åäö", x)
|
||||
}
|
||||
note: aggregates/count string
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 3
|
||||
p = x {
|
||||
count("åäö", x)
|
||||
}
|
||||
note: aggregates/count string
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 3
|
||||
|
||||
+27
-26
@@ -1,29 +1,30 @@
|
||||
---
|
||||
cases:
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
count(input.foo, x)
|
||||
}
|
||||
note: aggregates/count error null
|
||||
query: data.generated.p = x
|
||||
input:
|
||||
foo: null
|
||||
strict_error: true
|
||||
want_error_code: eval_type_error
|
||||
want_error: 'operand 1 must be one of {array, object, set, string} but got null'
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
count(input.foo, x)
|
||||
}
|
||||
note: aggregates/count error null
|
||||
query: data.generated.p = x
|
||||
input:
|
||||
foo: null
|
||||
strict_error: true
|
||||
want_error_code: eval_type_error
|
||||
want_error: "operand 1 must be one of {array, object, set, string} but got null"
|
||||
- modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
count(input.foo, x)
|
||||
}
|
||||
note: aggregates/count error number
|
||||
query: data.generated.p = x
|
||||
input:
|
||||
foo: 5
|
||||
strict_error: true
|
||||
want_error_code: eval_type_error
|
||||
want_error: 'operand 1 must be one of {array, object, set, string} but got number'
|
||||
p = x {
|
||||
count(input.foo, x)
|
||||
}
|
||||
note: aggregates/count error number
|
||||
query: data.generated.p = x
|
||||
input:
|
||||
foo: 5
|
||||
strict_error: true
|
||||
want_error_code: eval_type_error
|
||||
want_error: "operand 1 must be one of {array, object, set, string} but got number"
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p[x] {
|
||||
x := count(base64.decode("2E84ZuPUd7zfvCZSNEchVpDEIj6PL7JfLpIqyxVG16k="))
|
||||
}
|
||||
note: aggregates/count with invalid utf-8 chars (0xFFFD)
|
||||
query: data.test.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 30
|
||||
p[x] {
|
||||
x := count(base64.decode("2E84ZuPUd7zfvCZSNEchVpDEIj6PL7JfLpIqyxVG16k="))
|
||||
}
|
||||
note: aggregates/count with invalid utf-8 chars (0xFFFD)
|
||||
query: data.test.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 30
|
||||
|
||||
+537
-536
File diff suppressed because it is too large
Load Diff
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
all(set(), __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/empty set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p = __local0__ {
|
||||
all(set(), __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/empty set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
all([], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/empty array
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p = __local0__ {
|
||||
all([], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/empty array
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
all({true}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/set success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p = __local0__ {
|
||||
all({true}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/set success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
all([true, true, true], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/array success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p = __local0__ {
|
||||
all([true, true, true], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/array success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
all({false, true}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/set fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = __local0__ {
|
||||
all({false, true}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/set fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
all([false, true, true], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/array fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = __local0__ {
|
||||
all([false, true, true], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/array fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
all([{}, "", true, true, 123], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/other types
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = __local0__ {
|
||||
all([{}, "", true, true, 123], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: all/other types
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
any(set(), __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/empty set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = __local0__ {
|
||||
any(set(), __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/empty set
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
any([], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/empty array
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = __local0__ {
|
||||
any([], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/empty array
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
any({false, true}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/set success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p = __local0__ {
|
||||
any({false, true}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/set success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
any([true, true, true, false, false], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/array success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p = __local0__ {
|
||||
any([true, true, true, false, false], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/array success
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
any({false}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/set fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = __local0__ {
|
||||
any({false}, __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/set fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
any([false], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/array fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = __local0__ {
|
||||
any([false], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/array fail
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = __local0__ {
|
||||
any([true, {}, "false"], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/other types
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p = __local0__ {
|
||||
any([true, {}, "false"], __local1__)
|
||||
__local0__ = __local1__
|
||||
}
|
||||
note: any/other types
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+24
-23
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[y] {
|
||||
data.a[i] = x
|
||||
__local0__ = i + x
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/plus
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 3
|
||||
- 5
|
||||
- 7
|
||||
p[y] {
|
||||
data.a[i] = x
|
||||
__local0__ = i + x
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/plus
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 3
|
||||
- 5
|
||||
- 7
|
||||
|
||||
+21
-20
@@ -1,22 +1,23 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[y] {
|
||||
data.a[i] = x
|
||||
__local0__ = i - x
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/minus
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- -1
|
||||
p[y] {
|
||||
data.a[i] = x
|
||||
__local0__ = i - x
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/minus
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- -1
|
||||
|
||||
+24
-23
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p[y] {
|
||||
data.a[i] = x
|
||||
__local0__ = i * x
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/multiply
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 0
|
||||
- 2
|
||||
- 6
|
||||
- 12
|
||||
p[y] {
|
||||
data.a[i] = x
|
||||
__local0__ = i * x
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/multiply
|
||||
query: data.generated.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 0
|
||||
- 2
|
||||
- 6
|
||||
- 12
|
||||
|
||||
+22
-21
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p[z] {
|
||||
data.a[i] = x
|
||||
y = i / x
|
||||
round(y, z)
|
||||
}
|
||||
note: arithmetic/divide+round
|
||||
query: data.test.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 0
|
||||
- 1
|
||||
p[z] {
|
||||
data.a[i] = x
|
||||
y = i / x
|
||||
round(y, z)
|
||||
}
|
||||
note: arithmetic/divide+round
|
||||
query: data.test.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- 0
|
||||
- 1
|
||||
|
||||
+17
-16
@@ -1,18 +1,19 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = y {
|
||||
data.a[i] = x
|
||||
__local0__ = x / i
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/divide+error
|
||||
query: data.generated.p = x
|
||||
strict_error: true
|
||||
want_error: divide by zero
|
||||
want_error_code: eval_builtin_error
|
||||
p = y {
|
||||
data.a[i] = x
|
||||
__local0__ = x / i
|
||||
y = __local0__
|
||||
}
|
||||
note: arithmetic/divide+error
|
||||
query: data.generated.p = x
|
||||
strict_error: true
|
||||
want_error: divide by zero
|
||||
want_error_code: eval_builtin_error
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
abs(-10, x)
|
||||
x = 10
|
||||
}
|
||||
note: arithmetic/abs
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
abs(-10, x)
|
||||
x = 10
|
||||
}
|
||||
note: arithmetic/abs
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local0__ = 7 % 4
|
||||
x = __local0__
|
||||
}
|
||||
note: arithmetic/remainder
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 3
|
||||
p = x {
|
||||
__local0__ = 7 % 4
|
||||
x = __local0__
|
||||
}
|
||||
note: arithmetic/remainder
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 3
|
||||
|
||||
+14
-13
@@ -1,15 +1,16 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local0__ = 7 % 0
|
||||
x = __local0__
|
||||
}
|
||||
note: arithmetic/remainder+error
|
||||
query: data.generated.p = x
|
||||
want_error: modulo by zero
|
||||
want_error_code: eval_builtin_error
|
||||
strict_error: true
|
||||
p = x {
|
||||
__local0__ = 7 % 0
|
||||
x = __local0__
|
||||
}
|
||||
note: arithmetic/remainder+error
|
||||
query: data.generated.p = x
|
||||
want_error: modulo by zero
|
||||
want_error_code: eval_builtin_error
|
||||
strict_error: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p = x {
|
||||
x = 1.1 % 1
|
||||
}
|
||||
note: arithmetic/remainder+error+floating
|
||||
query: data.test.p = x
|
||||
want_error: modulo on floating-point number
|
||||
want_error_code: eval_builtin_error
|
||||
strict_error: true
|
||||
p = x {
|
||||
x = 1.1 % 1
|
||||
}
|
||||
note: arithmetic/remainder+error+floating
|
||||
query: data.test.p = x
|
||||
want_error: modulo on floating-point number
|
||||
want_error_code: eval_builtin_error
|
||||
strict_error: true
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
abs(-4, __local0__)
|
||||
}
|
||||
note: arithmetic/arity 1 ref dest
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
abs(-4, __local0__)
|
||||
}
|
||||
note: arithmetic/arity 1 ref dest
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
not abs(-5, __local0__)
|
||||
}
|
||||
note: arithmetic/arity 1 ref dest (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
__local0__ = data.a[3]
|
||||
not abs(-5, __local0__)
|
||||
}
|
||||
note: arithmetic/arity 1 ref dest (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
__local0__ = 1 + 2
|
||||
data.a[2] = __local0__
|
||||
}
|
||||
note: arithmetic/arity 2 ref dest
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
__local0__ = 1 + 2
|
||||
data.a[2] = __local0__
|
||||
}
|
||||
note: arithmetic/arity 2 ref dest
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
a:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
__local0__ = 2 + 3
|
||||
not data.a[2] = __local0__
|
||||
}
|
||||
note: arithmetic/arity 2 ref dest (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
__local0__ = 2 + 3
|
||||
not data.a[2] = __local0__
|
||||
}
|
||||
note: arithmetic/arity 2 ref dest (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p {
|
||||
__local0__ = 49649733057 + 1
|
||||
__local0__ = 49649733058
|
||||
}
|
||||
note: arithmetic/bug 2469 - precision
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
__local0__ = 49649733057 + 1
|
||||
__local0__ = 49649733058
|
||||
}
|
||||
note: arithmetic/bug 2469 - precision
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+56
-55
@@ -1,61 +1,62 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
ceil(1.01, x)
|
||||
}
|
||||
note: ceil rounds up
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 2
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
ceil(1.01, x)
|
||||
}
|
||||
note: ceil rounds up
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 2
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
ceil(1.5, x)
|
||||
}
|
||||
note: ceil rounds up (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 2
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
ceil(1.5, x)
|
||||
}
|
||||
note: ceil rounds up (2)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 2
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
ceil(2222.2222222222, x)
|
||||
}
|
||||
note: ceil rounds up (3)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 2223
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
ceil(2222.2222222222, x)
|
||||
}
|
||||
note: ceil rounds up (3)
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 2223
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
ceil(1, x)
|
||||
}
|
||||
note: ceil integer
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 1
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
ceil(1, x)
|
||||
}
|
||||
note: ceil integer
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: 1
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
ceil(-1.99999, x)
|
||||
}
|
||||
note: ceil negative
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: -1
|
||||
p = x {
|
||||
ceil(-1.99999, x)
|
||||
}
|
||||
note: ceil negative
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: -1
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
|
||||
@@ -1,27 +1,28 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p {
|
||||
{1} - 1
|
||||
}
|
||||
note: arithmetic/minus/type error
|
||||
query: data.test.p = x
|
||||
want_error: operand 2 must be set but got number
|
||||
want_error_code: eval_type_error
|
||||
strict_error: true
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
p {
|
||||
{1} - 1
|
||||
}
|
||||
note: arithmetic/minus/type error
|
||||
query: data.test.p = x
|
||||
want_error: operand 2 must be set but got number
|
||||
want_error_code: eval_type_error
|
||||
strict_error: true
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p {
|
||||
1 - {1}
|
||||
}
|
||||
note: arithmetic/minus/type error
|
||||
query: data.test.p = x
|
||||
want_error: operand 2 must be number but got set
|
||||
want_error_code: eval_type_error
|
||||
strict_error: true
|
||||
p {
|
||||
1 - {1}
|
||||
}
|
||||
note: arithmetic/minus/type error
|
||||
query: data.test.p = x
|
||||
want_error: operand 2 must be number but got set
|
||||
want_error_code: eval_type_error
|
||||
strict_error: true
|
||||
|
||||
+12
-11
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
- data:
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p {
|
||||
28857836529306024611913 != 28857836529306024611912
|
||||
}
|
||||
note: arithmetic/big_int
|
||||
query: data.test.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
p {
|
||||
28857836529306024611913 != 28857836529306024611912
|
||||
}
|
||||
note: arithmetic/big_int
|
||||
query: data.test.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
|
||||
+17
-16
@@ -1,18 +1,19 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.concat([1, 2], [3, 4], __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: array/concat
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
p = x {
|
||||
array.concat([1, 2], [3, 4], __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: array/concat
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local1__ = data.b
|
||||
array.concat(__local1__, [3, 4], __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/concat: err'
|
||||
query: data.generated.p = x
|
||||
strict_error: true
|
||||
want_error: 'array.concat: operand 1 must be array but got object'
|
||||
want_error_code: eval_type_error
|
||||
p = x {
|
||||
__local1__ = data.b
|
||||
array.concat(__local1__, [3, 4], __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/concat: err"
|
||||
query: data.generated.p = x
|
||||
strict_error: true
|
||||
want_error: "array.concat: operand 1 must be array but got object"
|
||||
want_error_code: eval_type_error
|
||||
|
||||
+18
-17
@@ -1,19 +1,20 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data:
|
||||
b:
|
||||
v1: hello
|
||||
v2: goodbye
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
__local1__ = data.b
|
||||
array.concat([1, 2], __local1__, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/concat: err rhs'
|
||||
query: data.generated.p = x
|
||||
strict_error: true
|
||||
want_error: 'array.concat: operand 2 must be array but got object'
|
||||
want_error_code: eval_type_error
|
||||
p = x {
|
||||
__local1__ = data.b
|
||||
array.concat([1, 2], __local1__, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/concat: err rhs"
|
||||
query: data.generated.p = x
|
||||
strict_error: true
|
||||
want_error: "array.concat: operand 2 must be array but got object"
|
||||
want_error_code: eval_type_error
|
||||
|
||||
+15
-14
@@ -1,16 +1,17 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], 1, 3, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: array/slice
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 2
|
||||
- 3
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], 1, 3, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: array/slice
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 2
|
||||
- 3
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([1, 2, 3], 0, 0, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/slice: empty slice'
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
p = x {
|
||||
array.slice([1, 2, 3], 0, 0, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/slice: empty slice"
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], -4, -1, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/slice: negative indices'
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], -4, -1, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/slice: negative indices"
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], 4, 1, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/slice: stopIndex < startIndex'
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], 4, 1, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/slice: stopIndex < startIndex"
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
|
||||
+15
-14
@@ -1,16 +1,17 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], -1, 2, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/slice: clamp startIndex'
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], -1, 2, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/slice: clamp startIndex"
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 1
|
||||
- 2
|
||||
|
||||
+15
-14
@@ -1,16 +1,17 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], 3, 6, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/slice: clamp stopIndex'
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
- 5
|
||||
p = x {
|
||||
array.slice([1, 2, 3, 4, 5], 3, 6, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/slice: clamp stopIndex"
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 4
|
||||
- 5
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([], 1000, 2000, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/slice: clamp both out of range'
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
p = x {
|
||||
array.slice([], 1000, 2000, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/slice: clamp both out of range"
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
|
||||
+13
-12
@@ -1,14 +1,15 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
array.slice([1, 2, 3], 1000, 2000, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: 'array/slice: clamp both out of range non-empty'
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
p = x {
|
||||
array.slice([1, 2, 3], 1000, 2000, __local0__)
|
||||
x = __local0__
|
||||
}
|
||||
note: "array/slice: clamp both out of range non-empty"
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
|
||||
+40
-39
@@ -1,43 +1,44 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
foo:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
- data:
|
||||
foo:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p := array.reverse(data.foo)
|
||||
note: array/reverse_123
|
||||
query: data.test.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 3
|
||||
- 2
|
||||
- 1
|
||||
- data:
|
||||
foo: []
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
p := array.reverse(data.foo)
|
||||
note: array/reverse_123
|
||||
query: data.test.p = x
|
||||
want_result:
|
||||
- x:
|
||||
- 3
|
||||
- 2
|
||||
- 1
|
||||
- data:
|
||||
foo: []
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p := array.reverse(data.foo)
|
||||
note: array/reverse_empty
|
||||
query: data.test.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
- data:
|
||||
foo:
|
||||
bar: baz
|
||||
baz: bar
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
p := array.reverse(data.foo)
|
||||
note: array/reverse_empty
|
||||
query: data.test.p = x
|
||||
want_result:
|
||||
- x: []
|
||||
- data:
|
||||
foo:
|
||||
bar: baz
|
||||
baz: bar
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
p := array.reverse(data.foo)
|
||||
note: array/reverse_object_error
|
||||
query: data.test.p = x
|
||||
strict_error: true
|
||||
want_error: 'array.reverse: operand 1 must be array but got object'
|
||||
want_error_code: eval_type_error
|
||||
p := array.reverse(data.foo)
|
||||
note: array/reverse_object_error
|
||||
query: data.test.p = x
|
||||
strict_error: true
|
||||
want_error: "array.reverse: operand 1 must be array but got object"
|
||||
want_error_code: eval_type_error
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
cases:
|
||||
- note: assignments/file-level/default_value
|
||||
query: data.test = x
|
||||
@@ -6,7 +7,7 @@ cases:
|
||||
package test
|
||||
|
||||
default a := 1
|
||||
want_result: [ { "x": { "a": 1 } } ]
|
||||
want_result: [{ "x": { "a": 1 } }]
|
||||
- note: assignments/file-level/rule
|
||||
query: data.test = x
|
||||
modules:
|
||||
@@ -14,7 +15,7 @@ cases:
|
||||
package test
|
||||
|
||||
b := 2
|
||||
want_result: [ { "x": { "b": 2 } } ]
|
||||
want_result: [{ "x": { "b": 2 } }]
|
||||
- note: assignments/file-level/else_keyword
|
||||
query: data.test = x
|
||||
modules:
|
||||
@@ -26,7 +27,7 @@ cases:
|
||||
} else := 4 {
|
||||
true
|
||||
}
|
||||
want_result: [ { "x": { "c": 4, } } ]
|
||||
want_result: [{ "x": { "c": 4 } }]
|
||||
- note: assignments/file-level/partial_rule
|
||||
query: data.test = x
|
||||
modules:
|
||||
@@ -36,7 +37,7 @@ cases:
|
||||
d[msg] := 5 {
|
||||
msg = [1, 2, 3][_]
|
||||
}
|
||||
want_result: [ { "x": { "d": { "1": 5, "2": 5, "3": 5 } } } ]
|
||||
want_result: [{ "x": { "d": { "1": 5, "2": 5, "3": 5 } } }]
|
||||
- note: assignments/file-level/function_return_value
|
||||
query: data.test = x
|
||||
modules:
|
||||
@@ -45,4 +46,4 @@ cases:
|
||||
|
||||
e := f(6)
|
||||
f(x) := x
|
||||
want_result: [ { "x": { "e": 6 } } ]
|
||||
want_result: [{ "x": { "e": 6 } }]
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.encode("hello", x)
|
||||
}
|
||||
note: base64builtins/encode-1
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: aGVsbG8=
|
||||
p = x {
|
||||
base64.encode("hello", x)
|
||||
}
|
||||
note: base64builtins/encode-1
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: aGVsbG8=
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.encode("there", x)
|
||||
}
|
||||
note: base64builtins/encode-2
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: dGhlcmU=
|
||||
p = x {
|
||||
base64.encode("there", x)
|
||||
}
|
||||
note: base64builtins/encode-2
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: dGhlcmU=
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.decode("aGVsbG8=", x)
|
||||
}
|
||||
note: base64builtins/decode-1
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: hello
|
||||
p = x {
|
||||
base64.decode("aGVsbG8=", x)
|
||||
}
|
||||
note: base64builtins/decode-1
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: hello
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.decode("dGhlcmU=", x)
|
||||
}
|
||||
note: base64builtins/decode-2
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: there
|
||||
p = x {
|
||||
base64.decode("dGhlcmU=", x)
|
||||
}
|
||||
note: base64builtins/decode-2
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: there
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.encode("subjects?_d", x)
|
||||
}
|
||||
note: base64builtins/encode-slash
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: c3ViamVjdHM/X2Q=
|
||||
p = x {
|
||||
base64.encode("subjects?_d", x)
|
||||
}
|
||||
note: base64builtins/encode-slash
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: c3ViamVjdHM/X2Q=
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.decode("c3ViamVjdHM/X2Q=", x)
|
||||
}
|
||||
note: base64builtins/decode-slash
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: subjects?_d
|
||||
p = x {
|
||||
base64.decode("c3ViamVjdHM/X2Q=", x)
|
||||
}
|
||||
note: base64builtins/decode-slash
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: subjects?_d
|
||||
|
||||
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.is_valid("aGVsbG8=", x)
|
||||
}
|
||||
note: base64builtins/is_valid-true
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
base64.is_valid("aGVsbG8=", x)
|
||||
}
|
||||
note: base64builtins/is_valid-true
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: true
|
||||
- data: {}
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64.is_valid("{'not':'base64'}", x)
|
||||
}
|
||||
note: base64builtins/is_valid-false
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
p = x {
|
||||
base64.is_valid("{'not':'base64'}", x)
|
||||
}
|
||||
note: base64builtins/is_valid-false
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: false
|
||||
|
||||
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- note: base64urlbuiltins/encode-1
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- note: base64urlbuiltins/encode-1
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64url.encode("hello", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: aGVsbG8=
|
||||
- note: base64urlbuiltins/encode-2
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
base64url.encode("hello", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: aGVsbG8=
|
||||
- note: base64urlbuiltins/encode-2
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64url.encode("there", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: dGhlcmU=
|
||||
p = x {
|
||||
base64url.encode("there", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: dGhlcmU=
|
||||
|
||||
@@ -1,25 +1,26 @@
|
||||
---
|
||||
cases:
|
||||
- note: base64urlbuiltins/decode-1 padded string
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
- note: base64urlbuiltins/decode-1 padded string
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64url.decode("aGVsbG8=", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: hello
|
||||
- note: base64urlbuiltins/decode-2 non-padded string
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
base64url.decode("aGVsbG8=", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: hello
|
||||
- note: base64urlbuiltins/decode-2 non-padded string
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
|
||||
p = x {
|
||||
base64url.decode("aGVsbG8", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: hello
|
||||
p = x {
|
||||
base64url.decode("aGVsbG8", x)
|
||||
}
|
||||
data:
|
||||
query: data.generated.p = x
|
||||
want_result:
|
||||
- x: hello
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
---
|
||||
cases:
|
||||
- note: base64urlbuiltins/encode-1 without padding
|
||||
query: data.generated.p = x
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
base64url.encode_no_pad("hello", x)
|
||||
}
|
||||
data:
|
||||
want_result:
|
||||
- x: aGVsbG8
|
||||
- note: base64urlbuiltins/encode-2 without padding
|
||||
query: data.generated.p = x
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
base64url.encode_no_pad("there", x)
|
||||
}
|
||||
data:
|
||||
want_result:
|
||||
- x: dGhlcmU
|
||||
- note: base64urlbuiltins/encode-1 without padding
|
||||
query: data.generated.p = x
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
base64url.encode_no_pad("hello", x)
|
||||
}
|
||||
data:
|
||||
want_result:
|
||||
- x: aGVsbG8
|
||||
- note: base64urlbuiltins/encode-2 without padding
|
||||
query: data.generated.p = x
|
||||
modules:
|
||||
- |
|
||||
package generated
|
||||
p = x {
|
||||
base64url.encode_no_pad("there", x)
|
||||
}
|
||||
data:
|
||||
want_result:
|
||||
- x: dGhlcmU
|
||||
|
||||
+186
-185
@@ -1,188 +1,189 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
topdown:
|
||||
a:
|
||||
b:
|
||||
c:
|
||||
x:
|
||||
- data:
|
||||
topdown:
|
||||
a:
|
||||
b:
|
||||
c:
|
||||
x:
|
||||
- 100
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
note: baseandvirtualdocs/base/virtual
|
||||
query: data.topdown.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- - c
|
||||
- p
|
||||
- 0
|
||||
- 1
|
||||
- - c
|
||||
- p
|
||||
- 1
|
||||
- 2
|
||||
- - c
|
||||
- q
|
||||
- 0
|
||||
- 3
|
||||
- - c
|
||||
- q
|
||||
- 1
|
||||
- 4
|
||||
- - c
|
||||
- r
|
||||
- a
|
||||
- 1
|
||||
- - c
|
||||
- r
|
||||
- b
|
||||
- 2
|
||||
- - c
|
||||
- s
|
||||
- w
|
||||
- f: 10
|
||||
g: 9.9
|
||||
- - c
|
||||
- x
|
||||
- 0
|
||||
- 100
|
||||
- - c
|
||||
- x
|
||||
- 1
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
note: baseandvirtualdocs/base/virtual
|
||||
query: data.topdown.p = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- - c
|
||||
- p
|
||||
- 0
|
||||
- 1
|
||||
- - c
|
||||
- p
|
||||
- 1
|
||||
- 2
|
||||
- - c
|
||||
- q
|
||||
- 0
|
||||
- 3
|
||||
- - c
|
||||
- q
|
||||
- 1
|
||||
- 4
|
||||
- - c
|
||||
- r
|
||||
- a
|
||||
- 1
|
||||
- - c
|
||||
- r
|
||||
- b
|
||||
- 2
|
||||
- - c
|
||||
- s
|
||||
- w
|
||||
- f: 10
|
||||
g: 9.9
|
||||
- - c
|
||||
- x
|
||||
- 0
|
||||
- 100
|
||||
- - c
|
||||
- x
|
||||
- 1
|
||||
- 200
|
||||
- - c
|
||||
- z
|
||||
- a
|
||||
- b
|
||||
- - c
|
||||
- z
|
||||
- a
|
||||
- b
|
||||
|
||||
+271
-270
@@ -1,272 +1,273 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
topdown:
|
||||
a:
|
||||
b:
|
||||
c:
|
||||
x:
|
||||
- data:
|
||||
topdown:
|
||||
a:
|
||||
b:
|
||||
c:
|
||||
x:
|
||||
- 100
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
data.partial.topdown.p = _result
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
note: "baseandvirtualdocs/base/virtual: ground key"
|
||||
query: data.topdown.q = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- - c
|
||||
- p
|
||||
- 1
|
||||
- - c
|
||||
- q
|
||||
- 3
|
||||
- - c
|
||||
- x
|
||||
- 100
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
data.partial.topdown.p = _result
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
note: 'baseandvirtualdocs/base/virtual: ground key'
|
||||
query: data.topdown.q = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- - c
|
||||
- p
|
||||
- 1
|
||||
- - c
|
||||
- q
|
||||
- 3
|
||||
- - c
|
||||
- x
|
||||
- 100
|
||||
|
||||
+241
-240
@@ -1,292 +1,293 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
topdown:
|
||||
a:
|
||||
b:
|
||||
c:
|
||||
x:
|
||||
- 100
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
- data:
|
||||
topdown:
|
||||
a:
|
||||
b:
|
||||
c:
|
||||
x:
|
||||
- 100
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package partial.topdown
|
||||
r = 1
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
p[["c", "x", 0, x41]] {
|
||||
data.topdown.a.b.c.x[0] = x41
|
||||
}
|
||||
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
p[["c", "x", 1, x41]] {
|
||||
data.topdown.a.b.c.x[1] = x41
|
||||
}
|
||||
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
p[["c", "z", "a", x41]] {
|
||||
data.topdown.a.b.c.z.a = x41
|
||||
}
|
||||
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
p[[
|
||||
"c", "p", 0,
|
||||
1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
p[[
|
||||
"c", "p", 1,
|
||||
2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
p[[
|
||||
"c", "q", 0,
|
||||
3,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
p[[
|
||||
"c", "q", 1,
|
||||
4,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
p[[
|
||||
"c", "r",
|
||||
"a", 1,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
p[[
|
||||
"c", "r",
|
||||
"b", 2,
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
p[[
|
||||
"c", "s", "w",
|
||||
{"f": 10, "g": 9.9},
|
||||
]]
|
||||
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
p[[
|
||||
"c", "undefined2", "p",
|
||||
true,
|
||||
]] {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
_result = {[
|
||||
"c", "p",
|
||||
1,
|
||||
], [
|
||||
"c", "q",
|
||||
3,
|
||||
], ["c", "x", 100]}
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
__result__ = _result {
|
||||
_result = {[
|
||||
"c", "p",
|
||||
1,
|
||||
], [
|
||||
"c", "q",
|
||||
3,
|
||||
], ["c", "x", 100]}
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.set
|
||||
p = true
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
note: 'baseandvirtualdocs/base/virtual: prefix'
|
||||
query: data.topdown.r = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- - c
|
||||
- empty: {}
|
||||
p:
|
||||
- 1
|
||||
- 2
|
||||
q:
|
||||
- 3
|
||||
- 4
|
||||
r:
|
||||
a: 1
|
||||
b: 2
|
||||
s:
|
||||
w:
|
||||
f: 10
|
||||
g: 9.9
|
||||
undefined1: {}
|
||||
undefined2: {}
|
||||
x:
|
||||
- 100
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
note: "baseandvirtualdocs/base/virtual: prefix"
|
||||
query: data.topdown.r = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- - c
|
||||
- empty: {}
|
||||
p:
|
||||
- 1
|
||||
- 2
|
||||
q:
|
||||
- 3
|
||||
- 4
|
||||
r:
|
||||
a: 1
|
||||
b: 2
|
||||
s:
|
||||
w:
|
||||
f: 10
|
||||
g: 9.9
|
||||
undefined1: {}
|
||||
undefined2: {}
|
||||
x:
|
||||
- 100
|
||||
- 200
|
||||
y: false
|
||||
z:
|
||||
a: b
|
||||
|
||||
+138
-137
@@ -1,169 +1,170 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
topdown:
|
||||
set:
|
||||
u:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
- data:
|
||||
topdown:
|
||||
set:
|
||||
u:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
data.partial.topdown.r = _result
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package partial.topdown
|
||||
__result__ = _result {
|
||||
data.partial.topdown.r = _result
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
p = true
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
note: 'baseandvirtualdocs/base/virtual: set'
|
||||
query: data.topdown.w = x
|
||||
want_result:
|
||||
- x:
|
||||
u:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
v:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
r = 1
|
||||
note: "baseandvirtualdocs/base/virtual: set"
|
||||
query: data.topdown.w = x
|
||||
want_result:
|
||||
- x:
|
||||
u:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
v:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
|
||||
+124
-123
@@ -1,155 +1,156 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package topdown.conflicts
|
||||
- data: {}
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.set
|
||||
p = true
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package enum_errors.caller
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
_result = {"u": [1, 2, 3, 4], "v": {1, 2, 3, 4}}
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
__result__ = _result {
|
||||
_result = {"u": [1, 2, 3, 4], "v": {1, 2, 3, 4}}
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
r = 1
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
note: 'baseandvirtualdocs/base/virtual: no base'
|
||||
query: data.topdown.s = x
|
||||
want_result:
|
||||
- x:
|
||||
base:
|
||||
doc:
|
||||
p: true
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
note: "baseandvirtualdocs/base/virtual: no base"
|
||||
query: data.topdown.s = x
|
||||
want_result:
|
||||
- x:
|
||||
base:
|
||||
doc:
|
||||
p: true
|
||||
|
||||
+121
-120
@@ -1,152 +1,153 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.caller
|
||||
- data: {}
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.set
|
||||
p = true
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown_test_partial
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
_result = {"base": {"doc": {"p": true}}}
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
__result__ = _result {
|
||||
_result = {"base": {"doc": {"p": true}}}
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
r = 1
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
note: 'baseandvirtualdocs/base/virtual: undefined'
|
||||
query: data.topdown.t = x
|
||||
want_result:
|
||||
- x: {}
|
||||
w = {"f": 10, "g": 9.9}
|
||||
note: "baseandvirtualdocs/base/virtual: undefined"
|
||||
query: data.topdown.t = x
|
||||
want_result:
|
||||
- x: {}
|
||||
|
||||
+133
-132
@@ -1,164 +1,165 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
topdown:
|
||||
g:
|
||||
h:
|
||||
k:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
- data:
|
||||
topdown:
|
||||
g:
|
||||
h:
|
||||
k:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown_test_partial
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
_result = {}
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
__result__ = _result {
|
||||
_result = {}
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
r = 1
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
note: 'baseandvirtualdocs/base/virtual: undefined-2'
|
||||
query: data.topdown.v = x
|
||||
want_result:
|
||||
- x:
|
||||
h:
|
||||
k:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
note: "baseandvirtualdocs/base/virtual: undefined-2"
|
||||
query: data.topdown.v = x
|
||||
want_result:
|
||||
- x:
|
||||
h:
|
||||
k:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
|
||||
+121
-120
@@ -1,152 +1,153 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
- data: {}
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package enum_errors.caller
|
||||
p = true
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.conflicts
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.set
|
||||
r = 1
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
_result = {"h": {"k": [1, 2, 3]}}
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
__result__ = _result {
|
||||
_result = {"h": {"k": [1, 2, 3]}}
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
note: 'baseandvirtualdocs/base/virtual: missing input value'
|
||||
query: data.topdown.u = x
|
||||
want_result:
|
||||
- x: {}
|
||||
r["b"] = 2
|
||||
note: "baseandvirtualdocs/base/virtual: missing input value"
|
||||
query: data.topdown.u = x
|
||||
want_result:
|
||||
- x: {}
|
||||
|
||||
+124
-123
@@ -1,155 +1,156 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
- data: {}
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package partial.topdown
|
||||
p = true
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
r = 1
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown_test_partial
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
data.topdown.missing.input.value = _result
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
__result__ = _result {
|
||||
data.topdown.missing.input.value = _result
|
||||
}
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
note: baseandvirtualdocs/iterate ground
|
||||
query: data.topdown.iterate_ground = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- p
|
||||
- r
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
note: baseandvirtualdocs/iterate ground
|
||||
query: data.topdown.iterate_ground = x
|
||||
sort_bindings: true
|
||||
want_result:
|
||||
- x:
|
||||
- p
|
||||
- r
|
||||
|
||||
+125
-124
@@ -1,156 +1,157 @@
|
||||
---
|
||||
cases:
|
||||
- data:
|
||||
topdown:
|
||||
conflicts:
|
||||
k: foo
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package topdown_test_partial
|
||||
- data:
|
||||
topdown:
|
||||
conflicts:
|
||||
k: foo
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
_result = {"p", "r"}
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
__result__ = _result {
|
||||
_result = {"p", "r"}
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package partial.topdown
|
||||
p = true
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
r["b"] = 2
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.g.h
|
||||
r = 1
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
note: 'baseandvirtualdocs/base/virtual: conflicts'
|
||||
query: data.topdown.conflicts = x
|
||||
want_result:
|
||||
- x:
|
||||
k: foo
|
||||
p {
|
||||
false
|
||||
}
|
||||
note: "baseandvirtualdocs/base/virtual: conflicts"
|
||||
query: data.topdown.conflicts = x
|
||||
want_result:
|
||||
- x:
|
||||
k: foo
|
||||
|
||||
+126
-125
@@ -1,157 +1,158 @@
|
||||
---
|
||||
cases:
|
||||
- data: {}
|
||||
input_term: '{}'
|
||||
modules:
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
- data: {}
|
||||
input_term: "{}"
|
||||
modules:
|
||||
- |
|
||||
package topdown.a.b.c.s
|
||||
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
w = {"f": 10, "g": 9.9}
|
||||
- |
|
||||
package topdown.a.b.c.undefined1
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
p {
|
||||
false
|
||||
}
|
||||
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
q {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package topdown.set
|
||||
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
v[__local6__] {
|
||||
true
|
||||
__local6__ = data.topdown.set.u[_]
|
||||
}
|
||||
- |
|
||||
package enum_errors.a.b.c
|
||||
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
p = x {
|
||||
__local0__ = 1 / 0
|
||||
x = __local0__
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c.empty
|
||||
- |
|
||||
package topdown.virtual.constants
|
||||
|
||||
p = 1
|
||||
p = 1
|
||||
|
||||
q = 2
|
||||
q = 2
|
||||
|
||||
r = 1
|
||||
- |
|
||||
package topdown.g.h
|
||||
r = 1
|
||||
- |
|
||||
package topdown.g.h
|
||||
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
p {
|
||||
false
|
||||
}
|
||||
- |
|
||||
package enum_errors.caller
|
||||
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
p[x] = y {
|
||||
data.enum_errors.a[x] = y
|
||||
}
|
||||
- |
|
||||
package partial.topdown
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
r[["c", x21]] {
|
||||
data.topdown.a.b.c = x21
|
||||
}
|
||||
- |
|
||||
package topdown.missing.input.value
|
||||
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
p = __local7__ {
|
||||
true
|
||||
__local7__ = input.deadbeef
|
||||
}
|
||||
- |
|
||||
package topdown.conflicts
|
||||
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
k = "bar"
|
||||
- |
|
||||
package topdown.no.base.doc
|
||||
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
p = true
|
||||
- |
|
||||
package topdown.a.b.c.undefined2
|
||||
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
p {
|
||||
input.foo
|
||||
}
|
||||
- |
|
||||
package topdown_test_partial
|
||||
|
||||
__result__ = _result {
|
||||
_result = {"k": "foo"}
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
__result__ = _result {
|
||||
_result = {"k": "foo"}
|
||||
}
|
||||
- |
|
||||
package topdown
|
||||
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
p[[x1, x2, x3, x4]] {
|
||||
data.topdown.a.b[x1][x2][x3] = x4
|
||||
}
|
||||
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
q[[x1, x2, x3]] {
|
||||
data.topdown.a.b[x1][x2][0] = x3
|
||||
}
|
||||
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
r[[x1, x2]] {
|
||||
data.topdown.a.b[x1] = x2
|
||||
}
|
||||
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
s = __local1__ {
|
||||
true
|
||||
__local1__ = data.topdown.no
|
||||
}
|
||||
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
t = __local2__ {
|
||||
true
|
||||
__local2__ = data.topdown.a.b.c.undefined1
|
||||
}
|
||||
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
u = __local3__ {
|
||||
true
|
||||
__local3__ = data.topdown.missing.input.value
|
||||
}
|
||||
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
v = __local4__ {
|
||||
true
|
||||
__local4__ = data.topdown.g
|
||||
}
|
||||
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
w = __local5__ {
|
||||
true
|
||||
__local5__ = data.topdown.set
|
||||
}
|
||||
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
iterate_ground[x] {
|
||||
data.topdown.virtual.constants[x] = 1
|
||||
}
|
||||
- |
|
||||
package topdown.a.b.c
|
||||
|
||||
p = [1, 2]
|
||||
p = [1, 2]
|
||||
|
||||
q = [3, 4]
|
||||
q = [3, 4]
|
||||
|
||||
r["a"] = 1
|
||||
r["a"] = 1
|
||||
|
||||
r["b"] = 2
|
||||
note: baseandvirtualdocs/enumerate virtual errors
|
||||
query: data.enum_errors.caller.p = x
|
||||
strict_error: true
|
||||
want_error: divide by zero
|
||||
want_error_code: eval_builtin_error
|
||||
want_result:
|
||||
- x:
|
||||
b:
|
||||
c: {}
|
||||
r["b"] = 2
|
||||
note: baseandvirtualdocs/enumerate virtual errors
|
||||
query: data.enum_errors.caller.p = x
|
||||
strict_error: true
|
||||
want_error: divide by zero
|
||||
want_error_code: eval_builtin_error
|
||||
want_result:
|
||||
- x:
|
||||
b:
|
||||
c: {}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user