mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
fix: Handle parsing corner cases (#309)
A block with a single or expression needs to be treated as a comprehension instead of a
set/array with 1 item. e.g.: {1 | 1 }, [2 | foo]
Allow successfully parsing object comprehensions as rule body
x if { 1:2 | 1 }
fixes #306, fixes #307
Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
committed by
GitHub
parent
a4a80d7fc6
commit
8003cfc5b7
45
tests/interpreter/cases/compr/tricky.yaml
Normal file
45
tests/interpreter/cases/compr/tricky.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
# Copyright (c) Microsoft Corporation.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
cases:
|
||||
- note: treat { 1 | 1 } as comprehension
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
import rego.v1
|
||||
|
||||
x if { 1 | 1 }
|
||||
y := { 1 | 1 }
|
||||
z := { (1) | 1}
|
||||
|
||||
# Parsed as a set
|
||||
a := { ({1} | {2}) }
|
||||
|
||||
b := v if { { 1 | 1 } = v }
|
||||
|
||||
query: data.test
|
||||
want_result:
|
||||
x: true
|
||||
y:
|
||||
set!: [1]
|
||||
z:
|
||||
set!: [1]
|
||||
a:
|
||||
set!:
|
||||
- set!: [1, 2]
|
||||
b:
|
||||
set!: [1]
|
||||
|
||||
- note: rule body is object comprehension
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
import future.keywords
|
||||
x if { 1:2 | some p in [1,2] }
|
||||
y := 2 if { 1:2 | some p in [1,2] }
|
||||
query: data.test
|
||||
want_result:
|
||||
x: true
|
||||
y: 2
|
||||
Reference in New Issue
Block a user