mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
133 lines
3.0 KiB
YAML
133 lines
3.0 KiB
YAML
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
# Captures tricky cases where similar looking expressions will be
|
|
# treated as arrays or array-comprs.
|
|
cases:
|
|
- note: case1-compr
|
|
data: {}
|
|
modules:
|
|
- |
|
|
package test
|
|
x = {1}
|
|
y = {2}
|
|
# If there is one term and the term has an | operator, it will be parsed
|
|
# as a compr.
|
|
z = [ x | y ] #, 5] # in {5}, 6]
|
|
query: data.test
|
|
sort_bindings: true
|
|
want_result:
|
|
x:
|
|
set!: [1]
|
|
y:
|
|
set!: [2]
|
|
z:
|
|
- set!: [1]
|
|
|
|
- note: case2-array
|
|
data: {}
|
|
modules:
|
|
- |
|
|
package test
|
|
x = {1}
|
|
y = {2}
|
|
# If there is a comma following the expression to the right of |
|
|
# ie "y ," then enclosing expression will be parsed as array.
|
|
z = [ x | y, 5] # in {5}, 6]
|
|
query: data.test
|
|
sort_bindings: true
|
|
want_result:
|
|
x:
|
|
set!: [1]
|
|
y:
|
|
set!: [2]
|
|
z:
|
|
- set!: [2, 1]
|
|
- 5
|
|
|
|
- note: case3-compr
|
|
data: {}
|
|
modules:
|
|
- |
|
|
package test
|
|
import future.keywords.in
|
|
x = {1}
|
|
y = {2}
|
|
# In the following case, the "y, 5 in {5}" which is to the right of |
|
|
# will be parsed as a membership expression. Since this expression is not
|
|
# followed by a ",", the enclosing expression will be parsed as a compr.
|
|
z = [ x | y, 5 in {5}] #, 6]
|
|
query: data.test
|
|
sort_bindings: true
|
|
want_result:
|
|
x:
|
|
set!: [1]
|
|
y:
|
|
set!: [2]
|
|
z: []
|
|
|
|
- note: case4-array
|
|
data: {}
|
|
modules:
|
|
- |
|
|
package test
|
|
import future.keywords.in
|
|
x = {1}
|
|
y = {2}
|
|
# Unlike the previous case, the "y, 5 in {5}" is followed by a ",".
|
|
# Therefore, the enclosing expression will be parsed as an array.
|
|
z = [ x | y, 5 in {5}, 6]
|
|
query: data.test
|
|
sort_bindings: true
|
|
want_result:
|
|
x:
|
|
set!: [1]
|
|
y:
|
|
set!: [2]
|
|
z:
|
|
- set!: [2, 1]
|
|
- true
|
|
- 6
|
|
|
|
- note: case5-array
|
|
data: {}
|
|
modules:
|
|
- |
|
|
package test
|
|
import future.keywords.in
|
|
x = {1}
|
|
y = {2}
|
|
# If the first expression "x - {10}"is something higher than an in-expr
|
|
# (e.g arithexpr) then the enclosing expression will be parsed as an array.
|
|
z = [ x - {10} | y, 5 in {5}] #, 6]
|
|
query: data.test
|
|
sort_bindings: true
|
|
want_result:
|
|
x:
|
|
set!: [1]
|
|
y:
|
|
set!: [2]
|
|
z:
|
|
- set!: [2, 1]
|
|
- true
|
|
|
|
- note: case6-compr
|
|
data: {}
|
|
modules:
|
|
- |
|
|
package test
|
|
import future.keywords.in
|
|
x = {1}
|
|
y = {2}
|
|
# The way to get the previous case parsed as a compr is to enclose the first
|
|
# expression in parentheses.
|
|
z = [ (x - {10}) | y, 5 in {5}] #, 6]
|
|
query: data.test
|
|
sort_bindings: true
|
|
want_result:
|
|
x:
|
|
set!: [1]
|
|
y:
|
|
set!: [2]
|
|
z: []
|