internal/core/adt: consider closed status for equality
Change-Id: Ie7c76352a875f295808841550cdd4b79c75f73c4
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/8102
Reviewed-by: CUE cueckoo <cueckoo@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cue/testdata/comprehensions/issue507.txtar b/cue/testdata/comprehensions/issue507.txtar
index c4b6b38..659eb8b 100644
--- a/cue/testdata/comprehensions/issue507.txtar
+++ b/cue/testdata/comprehensions/issue507.txtar
@@ -25,8 +25,9 @@
]
-- out/eval --
(struct){
- somelist: (#list){
- }
+ somelist: (list){ |(*(#list){
+ }, (list){
+ }) }
foo: (#list){
}
otherlist: (#list){
diff --git a/cue/testdata/fulleval/027_len_of_incomplete_types.txtar b/cue/testdata/fulleval/027_len_of_incomplete_types.txtar
index a2f2aeb..5b2fc83 100644
--- a/cue/testdata/fulleval/027_len_of_incomplete_types.txtar
+++ b/cue/testdata/fulleval/027_len_of_incomplete_types.txtar
@@ -34,8 +34,9 @@
<0>{args: [], v1: 0, v2: 0, v3: 0, v4: 1, v5: len ((<1>{a: 3} | <2>{a: 4})), v6: len (('sf' | 'dd')), v7: 2, v8: len (([2] | [1,2])), v9: 4, v10: 0}
-- out/eval --
(struct){
- args: (#list){
- }
+ args: (list){ |(*(#list){
+ }, (list){
+ }) }
v1: (int){ 0 }
v2: (int){ 0 }
v3: (int){ 0 }
diff --git a/cue/testdata/fulleval/053_issue312.txtar b/cue/testdata/fulleval/053_issue312.txtar
index 4b60559..85a5bf0 100644
--- a/cue/testdata/fulleval/053_issue312.txtar
+++ b/cue/testdata/fulleval/053_issue312.txtar
@@ -21,5 +21,6 @@
-- out/legacy-debug --
<0>{ <1>for _, x in [1] yield <2>{}, (*close (<3>{}) | <4>{[]: <5>(_: string)->null, })}
-- out/eval --
-(#struct){
-}
+(struct){ |(*(#struct){
+ }, (struct){
+ }) }
diff --git a/doc/tutorial/kubernetes/manual/services/cloud.cue b/doc/tutorial/kubernetes/manual/services/cloud.cue
index e16bbff..0cbebcc 100644
--- a/doc/tutorial/kubernetes/manual/services/cloud.cue
+++ b/doc/tutorial/kubernetes/manual/services/cloud.cue
@@ -26,7 +26,7 @@
port: [string]: int
arg: [string]: string
- args: [ for k, v in arg { "-\(k)=\(v)" } ] | [...string]
+ args: *[ for k, v in arg {"-\(k)=\(v)"}] | [...string]
// Environment variables
env: [string]: string
diff --git a/doc/tutorial/kubernetes/testdata/manual.out b/doc/tutorial/kubernetes/testdata/manual.out
index 9c926ab..b005d07 100644
--- a/doc/tutorial/kubernetes/testdata/manual.out
+++ b/doc/tutorial/kubernetes/testdata/manual.out
@@ -159,7 +159,7 @@
etcd: "etcd:2379"
"event-server": "events:7788"
}
- args: ["-etcd=etcd:2379", "-event-server=events:7788"] | []
+ args: ["-etcd=etcd:2379", "-event-server=events:7788"]
env: {}
label: {
app: "breaddispatcher"
@@ -255,7 +255,7 @@
containers: [{
name: "breaddispatcher"
image: "gcr.io/myproj/breaddispatcher:v0.3.24"
- args: ["-etcd=etcd:2379", "-event-server=events:7788"] | []
+ args: ["-etcd=etcd:2379", "-event-server=events:7788"]
ports: [{
name: "http"
containerPort: 7080
@@ -537,7 +537,7 @@
}
}
port: {}
- args: ["-http=:8080", "-etcd=etcd:2379"] | []
+ args: ["-http=:8080", "-etcd=etcd:2379"]
env: {}
label: {
app: "valeter"
@@ -633,7 +633,7 @@
containers: [{
name: "valeter"
image: "gcr.io/myproj/valeter:v0.0.4"
- args: ["-http=:8080", "-etcd=etcd:2379"] | []
+ args: ["-http=:8080", "-etcd=etcd:2379"]
ports: [{
name: "http"
containerPort: 8080
@@ -790,7 +790,7 @@
http: ":8080"
etcd: "etcd:2379"
}
- args: ["-http=:8080", "-etcd=etcd:2379"] | []
+ args: ["-http=:8080", "-etcd=etcd:2379"]
env: {}
label: {
app: "waterdispatcher"
@@ -886,7 +886,7 @@
containers: [{
name: "waterdispatcher"
image: "gcr.io/myproj/waterdispatcher:v0.0.48"
- args: ["-http=:8080", "-etcd=etcd:2379"] | []
+ args: ["-http=:8080", "-etcd=etcd:2379"]
ports: [{
name: "http"
containerPort: 7080
@@ -1130,7 +1130,7 @@
}
}
port: {}
- args: ["-name=$(NAME)", "-data-dir=/data/etcd3", "-initial-advertise-peer-urls=http://$(IP):2380", "-listen-peer-urls=http://$(IP):2380", "-listen-client-urls=http://$(IP):2379,http://127.0.0.1:2379", "-advertise-client-urls=http://$(IP):2379", "-discovery=https://discovery.etcd.io/xxxxxx"] | []
+ args: ["-name=$(NAME)", "-data-dir=/data/etcd3", "-initial-advertise-peer-urls=http://$(IP):2380", "-listen-peer-urls=http://$(IP):2380", "-listen-client-urls=http://$(IP):2379,http://127.0.0.1:2379", "-advertise-client-urls=http://$(IP):2379", "-discovery=https://discovery.etcd.io/xxxxxx"]
label: {
app: "etcd"
domain: "prod"
@@ -1245,7 +1245,7 @@
containers: [{
name: "etcd"
image: "quay.io/coreos/etcd:v3.3.10"
- args: ["-name=$(NAME)", "-data-dir=/data/etcd3", "-initial-advertise-peer-urls=http://$(IP):2380", "-listen-peer-urls=http://$(IP):2380", "-listen-client-urls=http://$(IP):2379,http://127.0.0.1:2379", "-advertise-client-urls=http://$(IP):2379", "-discovery=https://discovery.etcd.io/xxxxxx"] | []
+ args: ["-name=$(NAME)", "-data-dir=/data/etcd3", "-initial-advertise-peer-urls=http://$(IP):2380", "-listen-peer-urls=http://$(IP):2380", "-listen-client-urls=http://$(IP):2379,http://127.0.0.1:2379", "-advertise-client-urls=http://$(IP):2379", "-discovery=https://discovery.etcd.io/xxxxxx"]
command: ["/usr/local/bin/etcd"]
volumeMounts: [{
name: "etcd3"
@@ -1329,7 +1329,7 @@
grpc: 7788
}
}
- args: ["-cert=/etc/ssl/server.pem", "-key=/etc/ssl/server.key", "-grpc=:7788"] | []
+ args: ["-cert=/etc/ssl/server.pem", "-key=/etc/ssl/server.key", "-grpc=:7788"]
env: {}
volume: {
"secret-volume": {
@@ -1454,7 +1454,7 @@
containers: [{
name: "events"
image: "gcr.io/myproj/events:v0.1.31"
- args: ["-cert=/etc/ssl/server.pem", "-key=/etc/ssl/server.key", "-grpc=:7788"] | []
+ args: ["-cert=/etc/ssl/server.pem", "-key=/etc/ssl/server.key", "-grpc=:7788"]
volumeMounts: [{
name: v.name
mountPath: v.mountPath
@@ -1986,7 +1986,7 @@
ca: "/etc/certs/servfx.ca"
"ssh-tunnel-key": "/sslcerts/tunnel-private.pem"
}
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-key=/etc/certs/client.key", "-cert=/etc/certs/client.pem", "-ca=/etc/certs/servfx.ca", "-ssh-tunnel-key=/sslcerts/tunnel-private.pem"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-key=/etc/certs/client.key", "-cert=/etc/certs/client.pem", "-ca=/etc/certs/servfx.ca", "-ssh-tunnel-key=/sslcerts/tunnel-private.pem"]
env: {}
volume: {
"caller-disk": {
@@ -2130,7 +2130,7 @@
containers: [{
name: "caller"
image: "gcr.io/myproj/caller:v0.20.14"
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-key=/etc/certs/client.key", "-cert=/etc/certs/client.pem", "-ca=/etc/certs/servfx.ca", "-ssh-tunnel-key=/sslcerts/tunnel-private.pem"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-key=/etc/certs/client.key", "-cert=/etc/certs/client.pem", "-ca=/etc/certs/servfx.ca", "-ssh-tunnel-key=/sslcerts/tunnel-private.pem"]
livenessProbe: {
httpGet: {
path: "/debug/health"
@@ -2207,7 +2207,7 @@
"event-server": "events:7788"
"ssh-tunnel-key": "/etc/certs/tunnel-private.pem"
}
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"]
env: {}
volume: {
"secret-ssh-key": {
@@ -2351,7 +2351,7 @@
containers: [{
name: "dishwasher"
image: "gcr.io/myproj/dishwasher:v0.2.13"
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"]
livenessProbe: {
httpGet: {
path: "/debug/health"
@@ -2428,7 +2428,7 @@
"event-server": "events:7788"
"ssh-tunnel-key": "/etc/certs/tunnel-private.pem"
}
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"]
env: {}
volume: {
"expiditer-disk": {
@@ -2560,7 +2560,7 @@
containers: [{
name: "expiditer"
image: "gcr.io/myproj/expiditer:v0.5.34"
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem"]
livenessProbe: {
httpGet: {
path: "/debug/health"
@@ -2625,7 +2625,7 @@
logdir: "/logs"
"event-server": "events:7788"
}
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788"]
env: {}
volume: {
"secret-headchef": {
@@ -2757,7 +2757,7 @@
containers: [{
name: "headchef"
image: "gcr.io/myproj/headchef:v0.2.16"
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788"]
livenessProbe: {
httpGet: {
path: "/debug/health"
@@ -2826,7 +2826,7 @@
"reconnect-delay": "1h"
"-recovery-overlap": "100000"
}
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-name=linecook", "-etcd=etcd:2379", "-reconnect-delay=1h", "--recovery-overlap=100000"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-name=linecook", "-etcd=etcd:2379", "-reconnect-delay=1h", "--recovery-overlap=100000"]
env: {}
volume: {
"secret-linecook": {
@@ -2958,7 +2958,7 @@
containers: [{
name: "linecook"
image: "gcr.io/myproj/linecook:v0.1.42"
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-name=linecook", "-etcd=etcd:2379", "-reconnect-delay=1h", "--recovery-overlap=100000"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-name=linecook", "-etcd=etcd:2379", "-reconnect-delay=1h", "--recovery-overlap=100000"]
livenessProbe: {
httpGet: {
path: "/debug/health"
@@ -3027,7 +3027,7 @@
etcd: "etcd:2379"
"recovery-overlap": "10000"
}
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem", "-reconnect-delay=1m", "-etcd=etcd:2379", "-recovery-overlap=10000"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem", "-reconnect-delay=1m", "-etcd=etcd:2379", "-recovery-overlap=10000"]
env: {}
volume: {
"secret-pastrychef": {
@@ -3159,7 +3159,7 @@
containers: [{
name: "pastrychef"
image: "gcr.io/myproj/pastrychef:v0.1.15"
- args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem", "-reconnect-delay=1m", "-etcd=etcd:2379", "-recovery-overlap=10000"] | []
+ args: ["-env=prod", "-logdir=/logs", "-event-server=events:7788", "-ssh-tunnel-key=/etc/certs/tunnel-private.pem", "-reconnect-delay=1m", "-etcd=etcd:2379", "-recovery-overlap=10000"]
livenessProbe: {
httpGet: {
path: "/debug/health"
diff --git a/internal/core/adt/equality.go b/internal/core/adt/equality.go
index 6d22a73..3dbc14f 100644
--- a/internal/core/adt/equality.go
+++ b/internal/core/adt/equality.go
@@ -43,6 +43,10 @@
return false
}
+ if x.IsClosed(ctx) != y.IsClosed(ctx) {
+ return false
+ }
+
loop1:
for _, a := range x.Arcs {
for _, b := range y.Arcs {