Skip to content

eval: regression in closedness handling with disjunctions #3706

Open
@myitcv

Description

What version of CUE are you using (cue version)?

$ cue version
cue version v0.0.0-20250128173939-870bfc2bb495

go version go1.23.2
      -buildmode exe
       -compiler gc
  DefaultGODEBUG asynctimerchan=1,gotypesalias=0,httpservecontentkeepheaders=1,tls3des=1,tlskyber=0,x509keypairleaf=0,x509negativeserial=1
     CGO_ENABLED 1
          GOARCH arm64
            GOOS linux
         GOARM64 v8.0
             vcs git
    vcs.revision 870bfc2bb495f05faed7c65ec51109b9eed1762c
        vcs.time 2025-01-28T17:39:39Z
    vcs.modified false
cue.lang.version v0.12.0

Does this issue reproduce with the latest release?

Yes

What did you do?

# evalv2
env CUE_EXPERIMENT=evalv3=0
exec cue vet -c -d '#site' schema.cue site.json

# evalv3
env CUE_EXPERIMENT=evalv3=1
exec cue vet -c -d '#site' schema.cue site.json

-- schema.cue --
package preprocessor

#site: {
	_kind: {
		kind!: string
	}

	#sanitiser:  _kind & (#patternSanitiser | #ellipsisSanitiser)
	#comparator: _kind & (#patternComparator | #unstableLineOrderComparator)

	#patternSanitiser: {
		kind:     "patternSanitiser"
		pattern?: string
	}

	#patternComparator: {
		kind:     "patternComparator"
		pattern?: string
	}

	#ellipsisSanitiser: {
		kind: "ellipsisSanitiser"
	}

	#unstableLineOrderComparator: {
		kind: "unstableLineOrderComparator"
	}

	sanitiser?:  #sanitiser
	comparator?: #comparator
}
-- site.json --
{
  "comparator": {
    "kind": "patternComparator",
    "pattern": "expr"
  },
  "sanitiser": {
    "kind": "patternSanitiser",
    "pattern": "expr"
  }
}

What did you expect to see?

Passing test.

What did you see instead?

# evalv2 (0.453s)
# evalv3 (0.451s)
> env CUE_EXPERIMENT=evalv3=1
> exec go run cuelang.org/go/cmd/cue vet -c -d '#site' schema.cue site.json
[stderr]
sanitiser: 2 errors in empty disjunction:
sanitiser.kind: conflicting values "ellipsisSanitiser" and "patternSanitiser":
    ./schema.cue:22:9
    ./site.json:7:13
sanitiser.pattern: field not allowed:
    ./site.json:8:5
exit status 1
[exit status 1]
FAIL: /tmp/testscript2499769875/repro.txtar/script.txtar:10: unexpected command failure

This bisects to 45e3256

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions