Files
regorus/tests/interpreter/cases/compr/array-vs-compr-tricky.yaml
Ming-Wei Shih c0972ad2ba Update license to MIT
Signed-off-by: Ming-Wei Shih <mishih@microsoft.com>
2023-02-09 19:40:35 +00:00

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: []