Skip to content
This repository has been archived by the owner on Nov 18, 2021. It is now read-only.

Commit

Permalink
internal/core/adt: don't eliminate incomplete disjuncts prematurely
Browse files Browse the repository at this point in the history
Fixes #782

Change-Id: I1fb63af222b44ceded352656d262c0dd29e120ad
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/8923
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
  • Loading branch information
mpvl committed Mar 7, 2021
1 parent dcf932f commit 3d926af
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
63 changes: 63 additions & 0 deletions cue/testdata/disjunctions/incomplete.txtar
Expand Up @@ -27,6 +27,29 @@ func: {
ok1: yaml.MarshalStream(s) | yaml.Marshal(s)
}

issue782: {
a: {
inner: string
interpolation: *"\(inner)" | string
interpolation: "override"
}
b: {
inner: string
interpolation: string | *"\(inner)"
interpolation: "override"
}
c: {
inner: string
interpolation: "\(inner)" | string
interpolation: "override"
}
d: {
inner: string
interpolation: string | "\(inner)"
interpolation: "override"
}
}

-- out/eval --
(struct){
issue700: (struct){
Expand Down Expand Up @@ -78,6 +101,24 @@ func: {
// ./in.cue:26:10
}
}
issue782: (struct){
a: (struct){
inner: (string){ string }
interpolation: (string){ "override" }
}
b: (struct){
inner: (string){ string }
interpolation: (string){ "override" }
}
c: (struct){
inner: (string){ string }
interpolation: (string){ "override" }
}
d: (struct){
inner: (string){ string }
interpolation: (string){ "override" }
}
}
}
-- out/compile --
--- in.cue
Expand Down Expand Up @@ -107,4 +148,26 @@ func: {
s: string
ok1: (〈import;"encoding/yaml"〉.MarshalStream(〈0;s〉)|〈import;"encoding/yaml"〉.Marshal(〈0;s〉))
}
issue782: {
a: {
inner: string
interpolation: (*"\(〈0;inner〉)"|string)
interpolation: "override"
}
b: {
inner: string
interpolation: (string|*"\(〈0;inner〉)")
interpolation: "override"
}
c: {
inner: string
interpolation: ("\(〈0;inner〉)"|string)
interpolation: "override"
}
d: {
inner: string
interpolation: (string|"\(〈0;inner〉)")
interpolation: "override"
}
}
}
3 changes: 3 additions & 0 deletions internal/core/adt/disjunct.go
Expand Up @@ -366,6 +366,9 @@ func (n *nodeContext) expandDisjuncts(
outer:
for _, d := range n.disjuncts {
for k, v := range p.disjuncts {
if !d.done() || !v.done() {
break
}
flags := CheckStructural
if last {
flags |= IgnoreOptional
Expand Down

0 comments on commit 3d926af

Please sign in to comment.