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
|
run: make check
|
||||||
timeout-minutes: 30
|
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:
|
wasm:
|
||||||
name: WASM
|
name: WASM
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
@@ -291,7 +304,6 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DOCKER_RUNNING: 0
|
DOCKER_RUNNING: 0
|
||||||
|
|
||||||
|
|
||||||
# Run PR metadata against Rego policies
|
# Run PR metadata against Rego policies
|
||||||
rego-check-pr:
|
rego-check-pr:
|
||||||
name: Rego PR checks
|
name: Rego PR checks
|
||||||
@@ -315,7 +327,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
curl --silent --fail --header 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' -o files.json \
|
curl --silent --fail --header 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' -o files.json \
|
||||||
https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files
|
https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files
|
||||||
|
|
||||||
opa eval -d build/policy/files.rego -d build/policy/helpers.rego --format values --input files.json \
|
opa eval -d build/policy/files.rego -d build/policy/helpers.rego --format values --input files.json \
|
||||||
--fail-defined 'data.files.deny[message]'
|
--fail-defined 'data.files.deny[message]'
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -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
|
endif
|
||||||
|
|
||||||
GOLANGCI_LINT_VERSION := v1.51.0
|
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)
|
DOCKER_RUNNING ?= $(shell docker ps >/dev/null 2>&1 && echo 1 || echo 0)
|
||||||
|
|
||||||
@@ -474,6 +476,14 @@ check-go-module:
|
|||||||
$(RELEASE_BUILD_IMAGE) \
|
$(RELEASE_BUILD_IMAGE) \
|
||||||
/bin/bash -c "git config --system --add safe.directory /src && go mod vendor -v"
|
/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
|
# Release targets
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ Requirements:
|
|||||||
- GitHub account (if you are contributing)
|
- GitHub account (if you are contributing)
|
||||||
- Go (version 1.15+ is supported though older versions are likely to work)
|
- Go (version 1.15+ is supported though older versions are likely to work)
|
||||||
- GNU Make
|
- GNU Make
|
||||||
|
- Python3, pip, yamllint (if linting YAML files manually)
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
@@ -71,6 +72,10 @@ git rebase upstream/main
|
|||||||
> Be sure to run `make check` before submitting your pull request. You
|
> 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
|
> may need to run `go fmt` on your code to make it comply with standard Go
|
||||||
> style.
|
> 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
|
### Submission
|
||||||
|
|||||||
+20
-19
@@ -1,21 +1,22 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
__local0__ = data.a
|
__local0__ = data.a
|
||||||
count(__local0__, x)
|
count(__local0__, x)
|
||||||
}
|
}
|
||||||
note: aggregates/count
|
note: aggregates/count
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+23
-22
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
__local0__ = [y | data.generated.q[y]]
|
__local0__ = [y | data.generated.q[y]]
|
||||||
count(__local0__, x)
|
count(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
x = data.a[_]
|
x = data.a[_]
|
||||||
}
|
}
|
||||||
note: aggregates/count virtual
|
note: aggregates/count virtual
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
b:
|
b:
|
||||||
v1: hello
|
v1: hello
|
||||||
v2: goodbye
|
v2: goodbye
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
__local0__ = data.b
|
__local0__ = data.b
|
||||||
count(__local0__, x)
|
count(__local0__, x)
|
||||||
}
|
}
|
||||||
note: aggregates/count keys
|
note: aggregates/count keys
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 2
|
- 2
|
||||||
|
|||||||
+21
-20
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
b:
|
b:
|
||||||
v1: hello
|
v1: hello
|
||||||
v2: goodbye
|
v2: goodbye
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
__local0__ = [k | data.generated.q[k] = _]
|
__local0__ = [k | data.generated.q[k] = _]
|
||||||
count(__local0__, x)
|
count(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[k] = v {
|
q[k] = v {
|
||||||
data.b[k] = v
|
data.b[k] = v
|
||||||
}
|
}
|
||||||
note: aggregates/count keys virtual
|
note: aggregates/count keys virtual
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 2
|
- 2
|
||||||
|
|||||||
+21
-20
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = data.generated.q
|
__local0__ = data.generated.q
|
||||||
count(__local0__, x)
|
count(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
x = data.a[_]
|
x = data.a[_]
|
||||||
}
|
}
|
||||||
note: aggregates/count set
|
note: aggregates/count set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 4
|
- x: 4
|
||||||
|
|||||||
+14
-13
@@ -1,15 +1,16 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
sum([1, 2, 3, 4], x)
|
sum([1, 2, 3, 4], x)
|
||||||
}
|
}
|
||||||
note: aggregates/sum
|
note: aggregates/sum
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 10
|
- 10
|
||||||
|
|||||||
+12
-11
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
sum({1, 2, 3, 4}, x)
|
sum({1, 2, 3, 4}, x)
|
||||||
}
|
}
|
||||||
note: aggregates/sum set
|
note: aggregates/sum set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 10
|
- x: 10
|
||||||
|
|||||||
+23
-22
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
__local0__ = [y | data.generated.q[y]]
|
__local0__ = [y | data.generated.q[y]]
|
||||||
sum(__local0__, x)
|
sum(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
data.a[_] = x
|
data.a[_] = x
|
||||||
}
|
}
|
||||||
note: aggregates/sum virtual
|
note: aggregates/sum virtual
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 10
|
- 10
|
||||||
|
|||||||
+21
-20
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = data.generated.q
|
__local0__ = data.generated.q
|
||||||
sum(__local0__, x)
|
sum(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
data.a[_] = x
|
data.a[_] = x
|
||||||
}
|
}
|
||||||
note: aggregates/sum virtual set
|
note: aggregates/sum virtual set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 10
|
- x: 10
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
sum([49649733057, 1], __local0__)
|
sum([49649733057, 1], __local0__)
|
||||||
__local0__ = 49649733058
|
__local0__ = 49649733058
|
||||||
}
|
}
|
||||||
note: aggregates/bug 2469 - precision
|
note: aggregates/bug 2469 - precision
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+12
-11
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
product([1, 2, 3, 4], 24)
|
product([1, 2, 3, 4], 24)
|
||||||
}
|
}
|
||||||
note: aggregates/product
|
note: aggregates/product
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+12
-11
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
product({1, 2, 3, 4}, x)
|
product({1, 2, 3, 4}, x)
|
||||||
}
|
}
|
||||||
note: aggregates/product set
|
note: aggregates/product set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 24
|
- x: 24
|
||||||
|
|||||||
+14
-13
@@ -1,15 +1,16 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
max([1, 2, 3, 4], x)
|
max([1, 2, 3, 4], x)
|
||||||
}
|
}
|
||||||
note: aggregates/max
|
note: aggregates/max
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+12
-11
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
max({1, 2, 3, 4}, x)
|
max({1, 2, 3, 4}, x)
|
||||||
}
|
}
|
||||||
note: aggregates/max set
|
note: aggregates/max set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 4
|
- x: 4
|
||||||
|
|||||||
+23
-22
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
__local0__ = [y | data.generated.q[y]]
|
__local0__ = [y | data.generated.q[y]]
|
||||||
max(__local0__, x)
|
max(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
data.a[_] = x
|
data.a[_] = x
|
||||||
}
|
}
|
||||||
note: aggregates/max virtual
|
note: aggregates/max virtual
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+21
-20
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = data.generated.q
|
__local0__ = data.generated.q
|
||||||
max(__local0__, x)
|
max(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
data.a[_] = x
|
data.a[_] = x
|
||||||
}
|
}
|
||||||
note: aggregates/max virtual set
|
note: aggregates/max virtual set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 4
|
- x: 4
|
||||||
|
|||||||
+14
-13
@@ -1,15 +1,16 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
min([1, 2, 3, 4], x)
|
min([1, 2, 3, 4], x)
|
||||||
}
|
}
|
||||||
note: aggregates/min
|
note: aggregates/min
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
|
|||||||
+14
-13
@@ -1,15 +1,16 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
min([1, 2, 1, 3, 4], x)
|
min([1, 2, 1, 3, 4], x)
|
||||||
}
|
}
|
||||||
note: aggregates/min dups
|
note: aggregates/min dups
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
|
|||||||
+14
-13
@@ -1,15 +1,16 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
min([3, 2, 1, 4, 6, -7, 10], x)
|
min([3, 2, 1, 4, 6, -7, 10], x)
|
||||||
}
|
}
|
||||||
note: aggregates/min out-of-order
|
note: aggregates/min out-of-order
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- -7
|
- -7
|
||||||
|
|||||||
+12
-11
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
min({1, 2, 3, 4}, x)
|
min({1, 2, 3, 4}, x)
|
||||||
}
|
}
|
||||||
note: aggregates/min set
|
note: aggregates/min set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 1
|
- x: 1
|
||||||
|
|||||||
+23
-22
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
__local0__ = [y | data.generated.q[y]]
|
__local0__ = [y | data.generated.q[y]]
|
||||||
min(__local0__, x)
|
min(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
data.a[_] = x
|
data.a[_] = x
|
||||||
}
|
}
|
||||||
note: aggregates/min virtual
|
note: aggregates/min virtual
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
|
|||||||
+21
-20
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = data.generated.q
|
__local0__ = data.generated.q
|
||||||
min(__local0__, x)
|
min(__local0__, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
q[x] {
|
q[x] {
|
||||||
data.a[_] = x
|
data.a[_] = x
|
||||||
}
|
}
|
||||||
note: aggregates/min virtual set
|
note: aggregates/min virtual set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 1
|
- x: 1
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
__local0__ = data.a[3]
|
__local0__ = data.a[3]
|
||||||
max([1, 2, 3, 4], __local0__)
|
max([1, 2, 3, 4], __local0__)
|
||||||
}
|
}
|
||||||
note: aggregates/reduce ref dest
|
note: aggregates/reduce ref dest
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
__local0__ = data.a[3]
|
__local0__ = data.a[3]
|
||||||
not max([1, 2, 3, 4, 5], __local0__)
|
not max([1, 2, 3, 4, 5], __local0__)
|
||||||
}
|
}
|
||||||
note: aggregates/reduce ref dest (2)
|
note: aggregates/reduce ref dest (2)
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+16
-15
@@ -1,17 +1,18 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
sort([4, 3, 2, 1], x)
|
sort([4, 3, 2, 1], x)
|
||||||
}
|
}
|
||||||
note: aggregates/sort
|
note: aggregates/sort
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+16
-15
@@ -1,17 +1,18 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
sort({1, 2, 3, 4}, x)
|
sort({1, 2, 3, 4}, x)
|
||||||
}
|
}
|
||||||
note: aggregates/sort set
|
note: aggregates/sort set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+21
-20
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- modules:
|
- modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
count("abcde", x)
|
count("abcde", x)
|
||||||
}
|
}
|
||||||
note: aggregates/count string
|
note: aggregates/count string
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 5
|
- x: 5
|
||||||
- modules:
|
- modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
count("åäö", x)
|
count("åäö", x)
|
||||||
}
|
}
|
||||||
note: aggregates/count string
|
note: aggregates/count string
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 3
|
- x: 3
|
||||||
|
|||||||
+27
-26
@@ -1,29 +1,30 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- modules:
|
- modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
count(input.foo, x)
|
count(input.foo, x)
|
||||||
}
|
}
|
||||||
note: aggregates/count error null
|
note: aggregates/count error null
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
input:
|
input:
|
||||||
foo: null
|
foo: null
|
||||||
strict_error: true
|
strict_error: true
|
||||||
want_error_code: eval_type_error
|
want_error_code: eval_type_error
|
||||||
want_error: 'operand 1 must be one of {array, object, set, string} but got null'
|
want_error: "operand 1 must be one of {array, object, set, string} but got null"
|
||||||
- modules:
|
- modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
count(input.foo, x)
|
count(input.foo, x)
|
||||||
}
|
}
|
||||||
note: aggregates/count error number
|
note: aggregates/count error number
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
input:
|
input:
|
||||||
foo: 5
|
foo: 5
|
||||||
strict_error: true
|
strict_error: true
|
||||||
want_error_code: eval_type_error
|
want_error_code: eval_type_error
|
||||||
want_error: 'operand 1 must be one of {array, object, set, string} but got number'
|
want_error: "operand 1 must be one of {array, object, set, string} but got number"
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p[x] {
|
p[x] {
|
||||||
x := count(base64.decode("2E84ZuPUd7zfvCZSNEchVpDEIj6PL7JfLpIqyxVG16k="))
|
x := count(base64.decode("2E84ZuPUd7zfvCZSNEchVpDEIj6PL7JfLpIqyxVG16k="))
|
||||||
}
|
}
|
||||||
note: aggregates/count with invalid utf-8 chars (0xFFFD)
|
note: aggregates/count with invalid utf-8 chars (0xFFFD)
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 30
|
- 30
|
||||||
|
|||||||
+537
-536
File diff suppressed because it is too large
Load Diff
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
all(set(), __local1__)
|
all(set(), __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: all/empty set
|
note: all/empty set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
all([], __local1__)
|
all([], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: all/empty array
|
note: all/empty array
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
all({true}, __local1__)
|
all({true}, __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: all/set success
|
note: all/set success
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
all([true, true, true], __local1__)
|
all([true, true, true], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: all/array success
|
note: all/array success
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
all({false, true}, __local1__)
|
all({false, true}, __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: all/set fail
|
note: all/set fail
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
all([false, true, true], __local1__)
|
all([false, true, true], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: all/array fail
|
note: all/array fail
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
all([{}, "", true, true, 123], __local1__)
|
all([{}, "", true, true, 123], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: all/other types
|
note: all/other types
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
any(set(), __local1__)
|
any(set(), __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: any/empty set
|
note: any/empty set
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
any([], __local1__)
|
any([], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: any/empty array
|
note: any/empty array
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
any({false, true}, __local1__)
|
any({false, true}, __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: any/set success
|
note: any/set success
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
any([true, true, true, false, false], __local1__)
|
any([true, true, true, false, false], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: any/array success
|
note: any/array success
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
any({false}, __local1__)
|
any({false}, __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: any/set fail
|
note: any/set fail
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
any([false], __local1__)
|
any([false], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: any/array fail
|
note: any/array fail
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = __local0__ {
|
p = __local0__ {
|
||||||
any([true, {}, "false"], __local1__)
|
any([true, {}, "false"], __local1__)
|
||||||
__local0__ = __local1__
|
__local0__ = __local1__
|
||||||
}
|
}
|
||||||
note: any/other types
|
note: any/other types
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+24
-23
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[y] {
|
p[y] {
|
||||||
data.a[i] = x
|
data.a[i] = x
|
||||||
__local0__ = i + x
|
__local0__ = i + x
|
||||||
y = __local0__
|
y = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/plus
|
note: arithmetic/plus
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
- 3
|
- 3
|
||||||
- 5
|
- 5
|
||||||
- 7
|
- 7
|
||||||
|
|||||||
+21
-20
@@ -1,22 +1,23 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[y] {
|
p[y] {
|
||||||
data.a[i] = x
|
data.a[i] = x
|
||||||
__local0__ = i - x
|
__local0__ = i - x
|
||||||
y = __local0__
|
y = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/minus
|
note: arithmetic/minus
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- -1
|
- -1
|
||||||
|
|||||||
+24
-23
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p[y] {
|
p[y] {
|
||||||
data.a[i] = x
|
data.a[i] = x
|
||||||
__local0__ = i * x
|
__local0__ = i * x
|
||||||
y = __local0__
|
y = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/multiply
|
note: arithmetic/multiply
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 0
|
- 0
|
||||||
- 2
|
- 2
|
||||||
- 6
|
- 6
|
||||||
- 12
|
- 12
|
||||||
|
|||||||
+22
-21
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p[z] {
|
p[z] {
|
||||||
data.a[i] = x
|
data.a[i] = x
|
||||||
y = i / x
|
y = i / x
|
||||||
round(y, z)
|
round(y, z)
|
||||||
}
|
}
|
||||||
note: arithmetic/divide+round
|
note: arithmetic/divide+round
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 0
|
- 0
|
||||||
- 1
|
- 1
|
||||||
|
|||||||
+17
-16
@@ -1,18 +1,19 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = y {
|
p = y {
|
||||||
data.a[i] = x
|
data.a[i] = x
|
||||||
__local0__ = x / i
|
__local0__ = x / i
|
||||||
y = __local0__
|
y = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/divide+error
|
note: arithmetic/divide+error
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
strict_error: true
|
strict_error: true
|
||||||
want_error: divide by zero
|
want_error: divide by zero
|
||||||
want_error_code: eval_builtin_error
|
want_error_code: eval_builtin_error
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
abs(-10, x)
|
abs(-10, x)
|
||||||
x = 10
|
x = 10
|
||||||
}
|
}
|
||||||
note: arithmetic/abs
|
note: arithmetic/abs
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 7 % 4
|
__local0__ = 7 % 4
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/remainder
|
note: arithmetic/remainder
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 3
|
- x: 3
|
||||||
|
|||||||
+14
-13
@@ -1,15 +1,16 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 7 % 0
|
__local0__ = 7 % 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/remainder+error
|
note: arithmetic/remainder+error
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_error: modulo by zero
|
want_error: modulo by zero
|
||||||
want_error_code: eval_builtin_error
|
want_error_code: eval_builtin_error
|
||||||
strict_error: true
|
strict_error: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
x = 1.1 % 1
|
x = 1.1 % 1
|
||||||
}
|
}
|
||||||
note: arithmetic/remainder+error+floating
|
note: arithmetic/remainder+error+floating
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
want_error: modulo on floating-point number
|
want_error: modulo on floating-point number
|
||||||
want_error_code: eval_builtin_error
|
want_error_code: eval_builtin_error
|
||||||
strict_error: true
|
strict_error: true
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
__local0__ = data.a[3]
|
__local0__ = data.a[3]
|
||||||
abs(-4, __local0__)
|
abs(-4, __local0__)
|
||||||
}
|
}
|
||||||
note: arithmetic/arity 1 ref dest
|
note: arithmetic/arity 1 ref dest
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
__local0__ = data.a[3]
|
__local0__ = data.a[3]
|
||||||
not abs(-5, __local0__)
|
not abs(-5, __local0__)
|
||||||
}
|
}
|
||||||
note: arithmetic/arity 1 ref dest (2)
|
note: arithmetic/arity 1 ref dest (2)
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
__local0__ = 1 + 2
|
__local0__ = 1 + 2
|
||||||
data.a[2] = __local0__
|
data.a[2] = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/arity 2 ref dest
|
note: arithmetic/arity 2 ref dest
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
a:
|
a:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
__local0__ = 2 + 3
|
__local0__ = 2 + 3
|
||||||
not data.a[2] = __local0__
|
not data.a[2] = __local0__
|
||||||
}
|
}
|
||||||
note: arithmetic/arity 2 ref dest (2)
|
note: arithmetic/arity 2 ref dest (2)
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p {
|
p {
|
||||||
__local0__ = 49649733057 + 1
|
__local0__ = 49649733057 + 1
|
||||||
__local0__ = 49649733058
|
__local0__ = 49649733058
|
||||||
}
|
}
|
||||||
note: arithmetic/bug 2469 - precision
|
note: arithmetic/bug 2469 - precision
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+56
-55
@@ -1,61 +1,62 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
ceil(1.01, x)
|
ceil(1.01, x)
|
||||||
}
|
}
|
||||||
note: ceil rounds up
|
note: ceil rounds up
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 2
|
- x: 2
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
ceil(1.5, x)
|
ceil(1.5, x)
|
||||||
}
|
}
|
||||||
note: ceil rounds up (2)
|
note: ceil rounds up (2)
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 2
|
- x: 2
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
ceil(2222.2222222222, x)
|
ceil(2222.2222222222, x)
|
||||||
}
|
}
|
||||||
note: ceil rounds up (3)
|
note: ceil rounds up (3)
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 2223
|
- x: 2223
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
ceil(1, x)
|
ceil(1, x)
|
||||||
}
|
}
|
||||||
note: ceil integer
|
note: ceil integer
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: 1
|
- x: 1
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
ceil(-1.99999, x)
|
ceil(-1.99999, x)
|
||||||
}
|
}
|
||||||
note: ceil negative
|
note: ceil negative
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: -1
|
- x: -1
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
|
|||||||
@@ -1,27 +1,28 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p {
|
p {
|
||||||
{1} - 1
|
{1} - 1
|
||||||
}
|
}
|
||||||
note: arithmetic/minus/type error
|
note: arithmetic/minus/type error
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
want_error: operand 2 must be set but got number
|
want_error: operand 2 must be set but got number
|
||||||
want_error_code: eval_type_error
|
want_error_code: eval_type_error
|
||||||
strict_error: true
|
strict_error: true
|
||||||
- data:
|
- data:
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p {
|
p {
|
||||||
1 - {1}
|
1 - {1}
|
||||||
}
|
}
|
||||||
note: arithmetic/minus/type error
|
note: arithmetic/minus/type error
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
want_error: operand 2 must be number but got set
|
want_error: operand 2 must be number but got set
|
||||||
want_error_code: eval_type_error
|
want_error_code: eval_type_error
|
||||||
strict_error: true
|
strict_error: true
|
||||||
|
|||||||
+12
-11
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p {
|
p {
|
||||||
28857836529306024611913 != 28857836529306024611912
|
28857836529306024611913 != 28857836529306024611912
|
||||||
}
|
}
|
||||||
note: arithmetic/big_int
|
note: arithmetic/big_int
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
|
|||||||
+17
-16
@@ -1,18 +1,19 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.concat([1, 2], [3, 4], __local0__)
|
array.concat([1, 2], [3, 4], __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: array/concat
|
note: array/concat
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
b:
|
b:
|
||||||
v1: hello
|
v1: hello
|
||||||
v2: goodbye
|
v2: goodbye
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local1__ = data.b
|
__local1__ = data.b
|
||||||
array.concat(__local1__, [3, 4], __local0__)
|
array.concat(__local1__, [3, 4], __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/concat: err'
|
note: "array/concat: err"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
strict_error: true
|
strict_error: true
|
||||||
want_error: 'array.concat: operand 1 must be array but got object'
|
want_error: "array.concat: operand 1 must be array but got object"
|
||||||
want_error_code: eval_type_error
|
want_error_code: eval_type_error
|
||||||
|
|||||||
+18
-17
@@ -1,19 +1,20 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
b:
|
b:
|
||||||
v1: hello
|
v1: hello
|
||||||
v2: goodbye
|
v2: goodbye
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local1__ = data.b
|
__local1__ = data.b
|
||||||
array.concat([1, 2], __local1__, __local0__)
|
array.concat([1, 2], __local1__, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/concat: err rhs'
|
note: "array/concat: err rhs"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
strict_error: true
|
strict_error: true
|
||||||
want_error: 'array.concat: operand 2 must be array but got object'
|
want_error: "array.concat: operand 2 must be array but got object"
|
||||||
want_error_code: eval_type_error
|
want_error_code: eval_type_error
|
||||||
|
|||||||
+15
-14
@@ -1,16 +1,17 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([1, 2, 3, 4, 5], 1, 3, __local0__)
|
array.slice([1, 2, 3, 4, 5], 1, 3, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: array/slice
|
note: array/slice
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([1, 2, 3], 0, 0, __local0__)
|
array.slice([1, 2, 3], 0, 0, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/slice: empty slice'
|
note: "array/slice: empty slice"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: []
|
- x: []
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([1, 2, 3, 4, 5], -4, -1, __local0__)
|
array.slice([1, 2, 3, 4, 5], -4, -1, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/slice: negative indices'
|
note: "array/slice: negative indices"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: []
|
- x: []
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([1, 2, 3, 4, 5], 4, 1, __local0__)
|
array.slice([1, 2, 3, 4, 5], 4, 1, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/slice: stopIndex < startIndex'
|
note: "array/slice: stopIndex < startIndex"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: []
|
- x: []
|
||||||
|
|||||||
+15
-14
@@ -1,16 +1,17 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([1, 2, 3, 4, 5], -1, 2, __local0__)
|
array.slice([1, 2, 3, 4, 5], -1, 2, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/slice: clamp startIndex'
|
note: "array/slice: clamp startIndex"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
|
|||||||
+15
-14
@@ -1,16 +1,17 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([1, 2, 3, 4, 5], 3, 6, __local0__)
|
array.slice([1, 2, 3, 4, 5], 3, 6, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/slice: clamp stopIndex'
|
note: "array/slice: clamp stopIndex"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 4
|
- 4
|
||||||
- 5
|
- 5
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([], 1000, 2000, __local0__)
|
array.slice([], 1000, 2000, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/slice: clamp both out of range'
|
note: "array/slice: clamp both out of range"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: []
|
- x: []
|
||||||
|
|||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
array.slice([1, 2, 3], 1000, 2000, __local0__)
|
array.slice([1, 2, 3], 1000, 2000, __local0__)
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
note: 'array/slice: clamp both out of range non-empty'
|
note: "array/slice: clamp both out of range non-empty"
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: []
|
- x: []
|
||||||
|
|||||||
+40
-39
@@ -1,43 +1,44 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
foo:
|
foo:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p := array.reverse(data.foo)
|
p := array.reverse(data.foo)
|
||||||
note: array/reverse_123
|
note: array/reverse_123
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- 3
|
- 3
|
||||||
- 2
|
- 2
|
||||||
- 1
|
- 1
|
||||||
- data:
|
- data:
|
||||||
foo: []
|
foo: []
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p := array.reverse(data.foo)
|
p := array.reverse(data.foo)
|
||||||
note: array/reverse_empty
|
note: array/reverse_empty
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: []
|
- x: []
|
||||||
- data:
|
- data:
|
||||||
foo:
|
foo:
|
||||||
bar: baz
|
bar: baz
|
||||||
baz: bar
|
baz: bar
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
p := array.reverse(data.foo)
|
p := array.reverse(data.foo)
|
||||||
note: array/reverse_object_error
|
note: array/reverse_object_error
|
||||||
query: data.test.p = x
|
query: data.test.p = x
|
||||||
strict_error: true
|
strict_error: true
|
||||||
want_error: 'array.reverse: operand 1 must be array but got object'
|
want_error: "array.reverse: operand 1 must be array but got object"
|
||||||
want_error_code: eval_type_error
|
want_error_code: eval_type_error
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- note: assignments/file-level/default_value
|
- note: assignments/file-level/default_value
|
||||||
query: data.test = x
|
query: data.test = x
|
||||||
@@ -6,43 +7,43 @@ cases:
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
default a := 1
|
default a := 1
|
||||||
want_result: [ { "x": { "a": 1 } } ]
|
want_result: [{ "x": { "a": 1 } }]
|
||||||
- note: assignments/file-level/rule
|
- note: assignments/file-level/rule
|
||||||
query: data.test = x
|
query: data.test = x
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
b := 2
|
b := 2
|
||||||
want_result: [ { "x": { "b": 2 } } ]
|
want_result: [{ "x": { "b": 2 } }]
|
||||||
- note: assignments/file-level/else_keyword
|
- note: assignments/file-level/else_keyword
|
||||||
query: data.test = x
|
query: data.test = x
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
c := 3 {
|
c := 3 {
|
||||||
false
|
false
|
||||||
} else := 4 {
|
} else := 4 {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
want_result: [ { "x": { "c": 4, } } ]
|
want_result: [{ "x": { "c": 4 } }]
|
||||||
- note: assignments/file-level/partial_rule
|
- note: assignments/file-level/partial_rule
|
||||||
query: data.test = x
|
query: data.test = x
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
d[msg] := 5 {
|
d[msg] := 5 {
|
||||||
msg = [1, 2, 3][_]
|
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
|
- note: assignments/file-level/function_return_value
|
||||||
query: data.test = x
|
query: data.test = x
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package test
|
package test
|
||||||
|
|
||||||
e := f(6)
|
e := f(6)
|
||||||
f(x) := x
|
f(x) := x
|
||||||
want_result: [ { "x": { "e": 6 } } ]
|
want_result: [{ "x": { "e": 6 } }]
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.encode("hello", x)
|
base64.encode("hello", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/encode-1
|
note: base64builtins/encode-1
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: aGVsbG8=
|
- x: aGVsbG8=
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.encode("there", x)
|
base64.encode("there", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/encode-2
|
note: base64builtins/encode-2
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: dGhlcmU=
|
- x: dGhlcmU=
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.decode("aGVsbG8=", x)
|
base64.decode("aGVsbG8=", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/decode-1
|
note: base64builtins/decode-1
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: hello
|
- x: hello
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.decode("dGhlcmU=", x)
|
base64.decode("dGhlcmU=", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/decode-2
|
note: base64builtins/decode-2
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: there
|
- x: there
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.encode("subjects?_d", x)
|
base64.encode("subjects?_d", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/encode-slash
|
note: base64builtins/encode-slash
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: c3ViamVjdHM/X2Q=
|
- x: c3ViamVjdHM/X2Q=
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.decode("c3ViamVjdHM/X2Q=", x)
|
base64.decode("c3ViamVjdHM/X2Q=", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/decode-slash
|
note: base64builtins/decode-slash
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: subjects?_d
|
- x: subjects?_d
|
||||||
|
|||||||
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.is_valid("aGVsbG8=", x)
|
base64.is_valid("aGVsbG8=", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/is_valid-true
|
note: base64builtins/is_valid-true
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: true
|
- x: true
|
||||||
- data: {}
|
- data: {}
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64.is_valid("{'not':'base64'}", x)
|
base64.is_valid("{'not':'base64'}", x)
|
||||||
}
|
}
|
||||||
note: base64builtins/is_valid-false
|
note: base64builtins/is_valid-false
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: false
|
- x: false
|
||||||
|
|||||||
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- note: base64urlbuiltins/encode-1
|
- note: base64urlbuiltins/encode-1
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64url.encode("hello", x)
|
base64url.encode("hello", x)
|
||||||
}
|
}
|
||||||
data:
|
data:
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: aGVsbG8=
|
- x: aGVsbG8=
|
||||||
- note: base64urlbuiltins/encode-2
|
- note: base64urlbuiltins/encode-2
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64url.encode("there", x)
|
base64url.encode("there", x)
|
||||||
}
|
}
|
||||||
data:
|
data:
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: dGhlcmU=
|
- x: dGhlcmU=
|
||||||
|
|||||||
@@ -1,25 +1,26 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- note: base64urlbuiltins/decode-1 padded string
|
- note: base64urlbuiltins/decode-1 padded string
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64url.decode("aGVsbG8=", x)
|
base64url.decode("aGVsbG8=", x)
|
||||||
}
|
}
|
||||||
data:
|
data:
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: hello
|
- x: hello
|
||||||
- note: base64urlbuiltins/decode-2 non-padded string
|
- note: base64urlbuiltins/decode-2 non-padded string
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
base64url.decode("aGVsbG8", x)
|
base64url.decode("aGVsbG8", x)
|
||||||
}
|
}
|
||||||
data:
|
data:
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: hello
|
- x: hello
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- note: base64urlbuiltins/encode-1 without padding
|
- note: base64urlbuiltins/encode-1 without padding
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
p = x {
|
p = x {
|
||||||
base64url.encode_no_pad("hello", x)
|
base64url.encode_no_pad("hello", x)
|
||||||
}
|
}
|
||||||
data:
|
data:
|
||||||
want_result:
|
want_result:
|
||||||
- x: aGVsbG8
|
- x: aGVsbG8
|
||||||
- note: base64urlbuiltins/encode-2 without padding
|
- note: base64urlbuiltins/encode-2 without padding
|
||||||
query: data.generated.p = x
|
query: data.generated.p = x
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package generated
|
package generated
|
||||||
p = x {
|
p = x {
|
||||||
base64url.encode_no_pad("there", x)
|
base64url.encode_no_pad("there", x)
|
||||||
}
|
}
|
||||||
data:
|
data:
|
||||||
want_result:
|
want_result:
|
||||||
- x: dGhlcmU
|
- x: dGhlcmU
|
||||||
|
|||||||
+186
-185
@@ -1,188 +1,189 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
topdown:
|
topdown:
|
||||||
a:
|
a:
|
||||||
b:
|
b:
|
||||||
c:
|
c:
|
||||||
x:
|
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
|
- 100
|
||||||
|
- - c
|
||||||
|
- x
|
||||||
|
- 1
|
||||||
- 200
|
- 200
|
||||||
y: false
|
- - c
|
||||||
z:
|
- z
|
||||||
a: b
|
- a
|
||||||
input_term: '{}'
|
- b
|
||||||
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
|
|
||||||
|
|||||||
+271
-270
@@ -1,272 +1,273 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
topdown:
|
topdown:
|
||||||
a:
|
a:
|
||||||
b:
|
b:
|
||||||
c:
|
c:
|
||||||
x:
|
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
|
- 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:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
topdown:
|
topdown:
|
||||||
a:
|
a:
|
||||||
b:
|
b:
|
||||||
c:
|
c:
|
||||||
x:
|
x:
|
||||||
- 100
|
- 100
|
||||||
- 200
|
- 200
|
||||||
y: false
|
y: false
|
||||||
z:
|
z:
|
||||||
a: b
|
a: b
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
p[["c", "x", 0, x41]] {
|
p[["c", "x", 0, x41]] {
|
||||||
data.topdown.a.b.c.x[0] = x41
|
data.topdown.a.b.c.x[0] = x41
|
||||||
}
|
}
|
||||||
|
|
||||||
p[["c", "x", 1, x41]] {
|
p[["c", "x", 1, x41]] {
|
||||||
data.topdown.a.b.c.x[1] = x41
|
data.topdown.a.b.c.x[1] = x41
|
||||||
}
|
}
|
||||||
|
|
||||||
p[["c", "z", "a", x41]] {
|
p[["c", "z", "a", x41]] {
|
||||||
data.topdown.a.b.c.z.a = x41
|
data.topdown.a.b.c.z.a = x41
|
||||||
}
|
}
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "p", 0,
|
"c", "p", 0,
|
||||||
1,
|
1,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "p", 1,
|
"c", "p", 1,
|
||||||
2,
|
2,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "q", 0,
|
"c", "q", 0,
|
||||||
3,
|
3,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "q", 1,
|
"c", "q", 1,
|
||||||
4,
|
4,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "r",
|
"c", "r",
|
||||||
"a", 1,
|
"a", 1,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "r",
|
"c", "r",
|
||||||
"b", 2,
|
"b", 2,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "s", "w",
|
"c", "s", "w",
|
||||||
{"f": 10, "g": 9.9},
|
{"f": 10, "g": 9.9},
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "undefined2", "p",
|
"c", "undefined2", "p",
|
||||||
true,
|
true,
|
||||||
]] {
|
]] {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
|
|
||||||
p[["c", "x", 0, x41]] {
|
p[["c", "x", 0, x41]] {
|
||||||
data.topdown.a.b.c.x[0] = x41
|
data.topdown.a.b.c.x[0] = x41
|
||||||
}
|
}
|
||||||
|
|
||||||
p[["c", "x", 1, x41]] {
|
p[["c", "x", 1, x41]] {
|
||||||
data.topdown.a.b.c.x[1] = x41
|
data.topdown.a.b.c.x[1] = x41
|
||||||
}
|
}
|
||||||
|
|
||||||
p[["c", "z", "a", x41]] {
|
p[["c", "z", "a", x41]] {
|
||||||
data.topdown.a.b.c.z.a = x41
|
data.topdown.a.b.c.z.a = x41
|
||||||
}
|
}
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "p", 0,
|
"c", "p", 0,
|
||||||
1,
|
1,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "p", 1,
|
"c", "p", 1,
|
||||||
2,
|
2,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "q", 0,
|
"c", "q", 0,
|
||||||
3,
|
3,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "q", 1,
|
"c", "q", 1,
|
||||||
4,
|
4,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "r",
|
"c", "r",
|
||||||
"a", 1,
|
"a", 1,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "r",
|
"c", "r",
|
||||||
"b", 2,
|
"b", 2,
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "s", "w",
|
"c", "s", "w",
|
||||||
{"f": 10, "g": 9.9},
|
{"f": 10, "g": 9.9},
|
||||||
]]
|
]]
|
||||||
|
|
||||||
p[[
|
p[[
|
||||||
"c", "undefined2", "p",
|
"c", "undefined2", "p",
|
||||||
true,
|
true,
|
||||||
]] {
|
]] {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
_result = {[
|
_result = {[
|
||||||
"c", "p",
|
"c", "p",
|
||||||
1,
|
1,
|
||||||
], [
|
], [
|
||||||
"c", "q",
|
"c", "q",
|
||||||
3,
|
3,
|
||||||
], ["c", "x", 100]}
|
], ["c", "x", 100]}
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
note: 'baseandvirtualdocs/base/virtual: prefix'
|
note: "baseandvirtualdocs/base/virtual: prefix"
|
||||||
query: data.topdown.r = x
|
query: data.topdown.r = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- - c
|
- - c
|
||||||
- empty: {}
|
- empty: {}
|
||||||
p:
|
p:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
q:
|
q:
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
r:
|
r:
|
||||||
a: 1
|
a: 1
|
||||||
b: 2
|
b: 2
|
||||||
s:
|
s:
|
||||||
w:
|
w:
|
||||||
f: 10
|
f: 10
|
||||||
g: 9.9
|
g: 9.9
|
||||||
undefined1: {}
|
undefined1: {}
|
||||||
undefined2: {}
|
undefined2: {}
|
||||||
x:
|
x:
|
||||||
- 100
|
- 100
|
||||||
- 200
|
- 200
|
||||||
y: false
|
y: false
|
||||||
z:
|
z:
|
||||||
a: b
|
a: b
|
||||||
|
|||||||
+138
-137
@@ -1,169 +1,170 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
topdown:
|
topdown:
|
||||||
set:
|
set:
|
||||||
u:
|
u:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
data.partial.topdown.r = _result
|
data.partial.topdown.r = _result
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
note: 'baseandvirtualdocs/base/virtual: set'
|
note: "baseandvirtualdocs/base/virtual: set"
|
||||||
query: data.topdown.w = x
|
query: data.topdown.w = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
u:
|
u:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
v:
|
v:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
|
|||||||
+124
-123
@@ -1,155 +1,156 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
_result = {"u": [1, 2, 3, 4], "v": {1, 2, 3, 4}}
|
_result = {"u": [1, 2, 3, 4], "v": {1, 2, 3, 4}}
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
note: 'baseandvirtualdocs/base/virtual: no base'
|
note: "baseandvirtualdocs/base/virtual: no base"
|
||||||
query: data.topdown.s = x
|
query: data.topdown.s = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
base:
|
base:
|
||||||
doc:
|
doc:
|
||||||
p: true
|
p: true
|
||||||
|
|||||||
+121
-120
@@ -1,152 +1,153 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
_result = {"base": {"doc": {"p": true}}}
|
_result = {"base": {"doc": {"p": true}}}
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
note: 'baseandvirtualdocs/base/virtual: undefined'
|
note: "baseandvirtualdocs/base/virtual: undefined"
|
||||||
query: data.topdown.t = x
|
query: data.topdown.t = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: {}
|
- x: {}
|
||||||
|
|||||||
+133
-132
@@ -1,164 +1,165 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
topdown:
|
topdown:
|
||||||
g:
|
g:
|
||||||
h:
|
h:
|
||||||
k:
|
k:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
_result = {}
|
_result = {}
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
note: 'baseandvirtualdocs/base/virtual: undefined-2'
|
note: "baseandvirtualdocs/base/virtual: undefined-2"
|
||||||
query: data.topdown.v = x
|
query: data.topdown.v = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
h:
|
h:
|
||||||
k:
|
k:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
|
|||||||
+121
-120
@@ -1,152 +1,153 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
_result = {"h": {"k": [1, 2, 3]}}
|
_result = {"h": {"k": [1, 2, 3]}}
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
note: 'baseandvirtualdocs/base/virtual: missing input value'
|
note: "baseandvirtualdocs/base/virtual: missing input value"
|
||||||
query: data.topdown.u = x
|
query: data.topdown.u = x
|
||||||
want_result:
|
want_result:
|
||||||
- x: {}
|
- x: {}
|
||||||
|
|||||||
+124
-123
@@ -1,155 +1,156 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
data.topdown.missing.input.value = _result
|
data.topdown.missing.input.value = _result
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
note: baseandvirtualdocs/iterate ground
|
note: baseandvirtualdocs/iterate ground
|
||||||
query: data.topdown.iterate_ground = x
|
query: data.topdown.iterate_ground = x
|
||||||
sort_bindings: true
|
sort_bindings: true
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
- p
|
- p
|
||||||
- r
|
- r
|
||||||
|
|||||||
+125
-124
@@ -1,156 +1,157 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data:
|
- data:
|
||||||
topdown:
|
topdown:
|
||||||
conflicts:
|
conflicts:
|
||||||
k: foo
|
k: foo
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
_result = {"p", "r"}
|
_result = {"p", "r"}
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
note: 'baseandvirtualdocs/base/virtual: conflicts'
|
note: "baseandvirtualdocs/base/virtual: conflicts"
|
||||||
query: data.topdown.conflicts = x
|
query: data.topdown.conflicts = x
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
k: foo
|
k: foo
|
||||||
|
|||||||
+126
-125
@@ -1,157 +1,158 @@
|
|||||||
|
---
|
||||||
cases:
|
cases:
|
||||||
- data: {}
|
- data: {}
|
||||||
input_term: '{}'
|
input_term: "{}"
|
||||||
modules:
|
modules:
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.s
|
package topdown.a.b.c.s
|
||||||
|
|
||||||
w = {"f": 10, "g": 9.9}
|
w = {"f": 10, "g": 9.9}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined1
|
package topdown.a.b.c.undefined1
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
q {
|
q {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.set
|
package topdown.set
|
||||||
|
|
||||||
v[__local6__] {
|
v[__local6__] {
|
||||||
true
|
true
|
||||||
__local6__ = data.topdown.set.u[_]
|
__local6__ = data.topdown.set.u[_]
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.a.b.c
|
package enum_errors.a.b.c
|
||||||
|
|
||||||
p = x {
|
p = x {
|
||||||
__local0__ = 1 / 0
|
__local0__ = 1 / 0
|
||||||
x = __local0__
|
x = __local0__
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.empty
|
package topdown.a.b.c.empty
|
||||||
- |
|
- |
|
||||||
package topdown.virtual.constants
|
package topdown.virtual.constants
|
||||||
|
|
||||||
p = 1
|
p = 1
|
||||||
|
|
||||||
q = 2
|
q = 2
|
||||||
|
|
||||||
r = 1
|
r = 1
|
||||||
- |
|
- |
|
||||||
package topdown.g.h
|
package topdown.g.h
|
||||||
|
|
||||||
p {
|
p {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package enum_errors.caller
|
package enum_errors.caller
|
||||||
|
|
||||||
p[x] = y {
|
p[x] = y {
|
||||||
data.enum_errors.a[x] = y
|
data.enum_errors.a[x] = y
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package partial.topdown
|
package partial.topdown
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
|
|
||||||
r[["c", x21]] {
|
r[["c", x21]] {
|
||||||
data.topdown.a.b.c = x21
|
data.topdown.a.b.c = x21
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.missing.input.value
|
package topdown.missing.input.value
|
||||||
|
|
||||||
p = __local7__ {
|
p = __local7__ {
|
||||||
true
|
true
|
||||||
__local7__ = input.deadbeef
|
__local7__ = input.deadbeef
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.conflicts
|
package topdown.conflicts
|
||||||
|
|
||||||
k = "bar"
|
k = "bar"
|
||||||
- |
|
- |
|
||||||
package topdown.no.base.doc
|
package topdown.no.base.doc
|
||||||
|
|
||||||
p = true
|
p = true
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c.undefined2
|
package topdown.a.b.c.undefined2
|
||||||
|
|
||||||
p {
|
p {
|
||||||
input.foo
|
input.foo
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown_test_partial
|
package topdown_test_partial
|
||||||
|
|
||||||
__result__ = _result {
|
__result__ = _result {
|
||||||
_result = {"k": "foo"}
|
_result = {"k": "foo"}
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown
|
package topdown
|
||||||
|
|
||||||
p[[x1, x2, x3, x4]] {
|
p[[x1, x2, x3, x4]] {
|
||||||
data.topdown.a.b[x1][x2][x3] = x4
|
data.topdown.a.b[x1][x2][x3] = x4
|
||||||
}
|
}
|
||||||
|
|
||||||
q[[x1, x2, x3]] {
|
q[[x1, x2, x3]] {
|
||||||
data.topdown.a.b[x1][x2][0] = x3
|
data.topdown.a.b[x1][x2][0] = x3
|
||||||
}
|
}
|
||||||
|
|
||||||
r[[x1, x2]] {
|
r[[x1, x2]] {
|
||||||
data.topdown.a.b[x1] = x2
|
data.topdown.a.b[x1] = x2
|
||||||
}
|
}
|
||||||
|
|
||||||
s = __local1__ {
|
s = __local1__ {
|
||||||
true
|
true
|
||||||
__local1__ = data.topdown.no
|
__local1__ = data.topdown.no
|
||||||
}
|
}
|
||||||
|
|
||||||
t = __local2__ {
|
t = __local2__ {
|
||||||
true
|
true
|
||||||
__local2__ = data.topdown.a.b.c.undefined1
|
__local2__ = data.topdown.a.b.c.undefined1
|
||||||
}
|
}
|
||||||
|
|
||||||
u = __local3__ {
|
u = __local3__ {
|
||||||
true
|
true
|
||||||
__local3__ = data.topdown.missing.input.value
|
__local3__ = data.topdown.missing.input.value
|
||||||
}
|
}
|
||||||
|
|
||||||
v = __local4__ {
|
v = __local4__ {
|
||||||
true
|
true
|
||||||
__local4__ = data.topdown.g
|
__local4__ = data.topdown.g
|
||||||
}
|
}
|
||||||
|
|
||||||
w = __local5__ {
|
w = __local5__ {
|
||||||
true
|
true
|
||||||
__local5__ = data.topdown.set
|
__local5__ = data.topdown.set
|
||||||
}
|
}
|
||||||
|
|
||||||
iterate_ground[x] {
|
iterate_ground[x] {
|
||||||
data.topdown.virtual.constants[x] = 1
|
data.topdown.virtual.constants[x] = 1
|
||||||
}
|
}
|
||||||
- |
|
- |
|
||||||
package topdown.a.b.c
|
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
|
r["b"] = 2
|
||||||
note: baseandvirtualdocs/enumerate virtual errors
|
note: baseandvirtualdocs/enumerate virtual errors
|
||||||
query: data.enum_errors.caller.p = x
|
query: data.enum_errors.caller.p = x
|
||||||
strict_error: true
|
strict_error: true
|
||||||
want_error: divide by zero
|
want_error: divide by zero
|
||||||
want_error_code: eval_builtin_error
|
want_error_code: eval_builtin_error
|
||||||
want_result:
|
want_result:
|
||||||
- x:
|
- x:
|
||||||
b:
|
b:
|
||||||
c: {}
|
c: {}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user