diff --git a/gnovm/pkg/gnolang/realm.go b/gnovm/pkg/gnolang/realm.go index 6577c7ced5e..1a066cffe13 100644 --- a/gnovm/pkg/gnolang/realm.go +++ b/gnovm/pkg/gnolang/realm.go @@ -750,7 +750,9 @@ func (rlm *Realm) saveUnsavedObjects(store Store) { continue } else { if !uo.GetIsDeleted() { - rlm.saveUnsavedObjectRecursively(store, uo, tids) + rlm.assertObjectIsPublic(uo, store, tids) + rlm.saveObject(store, uo) + uo.SetIsDirty(false, 0) } } } diff --git a/gnovm/tests/files/append8.gno b/gnovm/tests/files/append8.gno new file mode 100644 index 00000000000..36997e72cd2 --- /dev/null +++ b/gnovm/tests/files/append8.gno @@ -0,0 +1,29 @@ +// PKGPATH: gno.land/r/main +package main + +var bs []byte = make([]byte, 0, 10) + +func init() { + _ = append(bs, byte('a'), byte('b'), byte('c')) +} + +func main() { + println(string(bs[0:3])) + _ = append(bs, byte('a'), byte('b'), byte('c'), byte('d')) + println(string(bs[0:4])) +} + +// Output: +// abc +// abcd + +// Realm: +// finalizerealm["gno.land/r/main"] +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4](0)= +// @@ -1,5 +1,5 @@ +// { +// - "Data": "YWJjAAAAAAAAAA==", +// + "Data": "YWJjZAAAAAAAAA==", +// "List": null, +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4", diff --git a/gnovm/tests/files/append8b.gno b/gnovm/tests/files/append8b.gno new file mode 100644 index 00000000000..c7200e83702 --- /dev/null +++ b/gnovm/tests/files/append8b.gno @@ -0,0 +1,32 @@ +// PKGPATH: gno.land/r/main +package main + +import "fmt" + +var bs []int = make([]int, 0, 10) + +func init() { + _ = append(bs, 1, 2, 3) +} + +func main() { + fmt.Println(bs[0:3]) + _ = append(bs, 1, 2, 3, 4) + fmt.Println(bs[0:4]) +} + +// Output: +// [1 2 3] +// [1 2 3 4] + +// Realm: +// finalizerealm["gno.land/r/main"] +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4](0)= +// @@ -23,6 +23,7 @@ +// } +// }, +// { +// + "N": "BAAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" diff --git a/gnovm/tests/files/append8c.gno b/gnovm/tests/files/append8c.gno new file mode 100644 index 00000000000..102e5293da4 --- /dev/null +++ b/gnovm/tests/files/append8c.gno @@ -0,0 +1,157 @@ +// PKGPATH: gno.land/r/main +package main + +import "fmt" + +type S struct { + A int +} + +var bs []S = make([]S, 0, 10) + +func init() { + _ = append(bs, S{1}, S{2}, S{3}) +} + +func main() { + fmt.Println(bs[0:3]) + _ = append(bs, S{1}, S{2}, S{3}, S{4}) + fmt.Println(bs[0:4]) +} + +// Output: +// [{1} {2} {3}] +// [{1} {2} {3} {4}] + +// Realm: +// finalizerealm["gno.land/r/main"] +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:21](215)={ +// "Fields": [ +// { +// "N": "AQAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:21", +// "LastObjectSize": "215", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:22](215)={ +// "Fields": [ +// { +// "N": "AgAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:22", +// "LastObjectSize": "215", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:23](215)={ +// "Fields": [ +// { +// "N": "AwAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:23", +// "LastObjectSize": "215", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:24](215)={ +// "Fields": [ +// { +// "N": "BAAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:24", +// "LastObjectSize": "215", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4", +// "RefCount": "1" +// } +// } +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4](1)= +// @@ -8,8 +8,8 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "b64e6d66625500a1a73ad3aa83bf64a19e5ef79c", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:18" +// + "Hash": "a50095053b0560d6000a853698d2a70398b43ff0", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:21" +// } +// }, +// { +// @@ -19,8 +19,8 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "044a7cc5cdc8d198ee0de4c97b17542ba2bcc45d", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:19" +// + "Hash": "4bd56d347d1de8616331e0c7e9d24f2e660b7506", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:22" +// } +// }, +// { +// @@ -30,8 +30,8 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "c2c402289358af04b4bcc1263a34b23304591963", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:20" +// + "Hash": "0fd141d953069d60bf97cb84881f33976f022e11", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:23" +// } +// }, +// { +// @@ -41,8 +41,8 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "6f563d96f793175f993169399dc7a9b7ff7f5682", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8" +// + "Hash": "34ef9d7fdb562e442c9fef95bc3c06f7613b119b", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:24" +// } +// }, +// { +// @@ -115,7 +115,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4", +// "LastObjectSize": "1738", +// - "ModTime": "17", +// + "ModTime": "20", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:3", +// "RefCount": "1" +// } +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:18](-215) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:19](-215) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:20](-215) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8](-214) diff --git a/gnovm/tests/files/storage/struct4.gno b/gnovm/tests/files/storage/struct4.gno index 0e97e22b002..848a43c69be 100644 --- a/gnovm/tests/files/storage/struct4.gno +++ b/gnovm/tests/files/storage/struct4.gno @@ -70,25 +70,6 @@ func main() { // "OwnerID": "34f997a9ca158338c03cfc00686d77220a6cf62f:11", // "RefCount": "1" // } -// u[34f997a9ca158338c03cfc00686d77220a6cf62f:11](5)= -// @@ -2,7 +2,7 @@ -// "ObjectInfo": { -// "ID": "34f997a9ca158338c03cfc00686d77220a6cf62f:11", -// "LastObjectSize": "340", -// - "ModTime": "0", -// + "ModTime": "12", -// "OwnerID": "34f997a9ca158338c03cfc00686d77220a6cf62f:5", -// "RefCount": "1" -// }, -// @@ -13,7 +13,7 @@ -// }, -// "V": { -// "@type": "/gno.RefValue", -// - "Hash": "2b6a1dd38af88a40a05ffd55e77e7ea3b4b3a156", -// + "Hash": "6c3ebd5509617364a76aada1372a2c3f2afa0dc4", -// "ObjectID": "34f997a9ca158338c03cfc00686d77220a6cf62f:12" -// } -// } // u[34f997a9ca158338c03cfc00686d77220a6cf62f:6](135)= // @@ -2,7 +2,7 @@ // "ObjectInfo": { @@ -99,7 +80,7 @@ func main() { // "OwnerID": "34f997a9ca158338c03cfc00686d77220a6cf62f:2", // "RefCount": "1" // }, -// @@ -13,6 +13,16 @@ +// @@ -13,6 +13,15 @@ // "@type": "/gno.RefType", // "ID": "gno.land/r/storage.Foo" // } @@ -108,7 +89,6 @@ func main() { // + "@type": "/gno.PointerValue", // + "Base": { // + "@type": "/gno.RefValue", -// + "Hash": "dfbf2681f241a888fa3f782d8a6d8a42607ff63d", // + "ObjectID": "34f997a9ca158338c03cfc00686d77220a6cf62f:11" // + }, // + "Index": "0", @@ -116,6 +96,25 @@ func main() { // } // } // } +// u[34f997a9ca158338c03cfc00686d77220a6cf62f:11](5)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "34f997a9ca158338c03cfc00686d77220a6cf62f:11", +// "LastObjectSize": "340", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "34f997a9ca158338c03cfc00686d77220a6cf62f:5", +// "RefCount": "1" +// }, +// @@ -13,7 +13,7 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "2b6a1dd38af88a40a05ffd55e77e7ea3b4b3a156", +// + "Hash": "6c3ebd5509617364a76aada1372a2c3f2afa0dc4", +// "ObjectID": "34f997a9ca158338c03cfc00686d77220a6cf62f:12" +// } +// } // u[34f997a9ca158338c03cfc00686d77220a6cf62f:3](0)= // @@ -2,7 +2,7 @@ // "ObjectInfo": { diff --git a/gnovm/tests/files/struct63.gno b/gnovm/tests/files/struct63.gno new file mode 100644 index 00000000000..13084a58b51 --- /dev/null +++ b/gnovm/tests/files/struct63.gno @@ -0,0 +1,89 @@ +// PKGPATH: gno.land/r/main +package main + +type A struct { + b B +} + +type B struct { + c C +} + +type C struct { + d D +} + +type D struct { + e int +} + +var x = A{b: B{c: C{d: D{e: 1}}}} + +func main() { + x.b.c = C{d: D{e: 2}} +} + +// Realm: +// finalizerealm["gno.land/r/main"] +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:11](216)={ +// "Fields": [ +// { +// "N": "AgAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:11", +// "LastObjectSize": "216", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10](333)={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.D" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "9ecaaba55c8400d0a9b7f90804afeebeccd80a79", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:11" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10", +// "LastObjectSize": "333", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:5", +// "RefCount": "1" +// } +// } +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:5](6)= +// @@ -7,15 +7,15 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "0838a9b6bc9a600cf3efff9dd11c009eda1a6cc2", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6" +// + "Hash": "6a3c6de5e326bc3f5905a4223efd057103f1eec0", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:5", +// "LastObjectSize": "331", +// - "ModTime": "0", +// + "ModTime": "9", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:4", +// "RefCount": "1" +// } +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6](-331) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7](-214) diff --git a/gnovm/tests/files/struct63b.gno b/gnovm/tests/files/struct63b.gno new file mode 100644 index 00000000000..124abdbe406 --- /dev/null +++ b/gnovm/tests/files/struct63b.gno @@ -0,0 +1,141 @@ +// PKGPATH: gno.land/r/main +package main + +type A struct { + b *B +} + +type B struct { + c *C +} + +type C struct { + d *D +} + +type D struct { + e int +} + +var x = A{b: &B{c: &C{d: &D{e: 1}}}} + +func main() { + x.b.c = &C{} + x.b.c.d = &D{e: 2} +} + +// Realm: +// finalizerealm["gno.land/r/main"] +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:16](216)={ +// "Fields": [ +// { +// "N": "AgAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:16", +// "LastObjectSize": "216", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15](336)={ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15", +// "LastObjectSize": "336", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14", +// "RefCount": "1" +// }, +// "Value": { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.D" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "db794299f99e46ec060ee261f9f37361d4cef0dd", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:16" +// } +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14](379)={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.D" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "2380c245d37e19f8c36e3618507be17822009e95", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15" +// }, +// "Index": "0", +// "TV": null +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14", +// "LastObjectSize": "379", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13](335)={ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "LastObjectSize": "335", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "RefCount": "1" +// }, +// "Value": { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.C" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "5a14c88cc35094c1a4a1da28e8687d5a315bfa3c", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14" +// } +// } +// } +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6](6)= +// @@ -12,8 +12,8 @@ +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// - "Hash": "e9ab02374a9aeeec16cf1716ec13fa88690ebe33", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7" +// + "Hash": "46af1d33174f442a16702bf0610d934e408b5f62", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13" +// }, +// "Index": "0", +// "TV": null +// @@ -23,7 +23,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "LastObjectSize": "376", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:5", +// "RefCount": "1" +// } +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7](-333) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8](-376) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9](-334) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10](-215) diff --git a/gnovm/tests/files/struct63c.gno b/gnovm/tests/files/struct63c.gno new file mode 100644 index 00000000000..6e964e7623e --- /dev/null +++ b/gnovm/tests/files/struct63c.gno @@ -0,0 +1,140 @@ +// PKGPATH: gno.land/r/main +package main + +type A struct { + b *B +} + +type B struct { + c *C +} + +type C struct { + d *D +} + +type D struct { + e int +} + +var x = A{b: &B{c: &C{d: &D{e: 1}}}} + +func main() { + x.b.c = &C{d: &D{e: 2}} +} + +// Realm: +// finalizerealm["gno.land/r/main"] +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:16](216)={ +// "Fields": [ +// { +// "N": "AgAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:16", +// "LastObjectSize": "216", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15](336)={ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15", +// "LastObjectSize": "336", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14", +// "RefCount": "1" +// }, +// "Value": { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.D" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "db794299f99e46ec060ee261f9f37361d4cef0dd", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:16" +// } +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14](379)={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.D" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "2380c245d37e19f8c36e3618507be17822009e95", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:15" +// }, +// "Index": "0", +// "TV": null +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14", +// "LastObjectSize": "379", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13](335)={ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "LastObjectSize": "335", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "RefCount": "1" +// }, +// "Value": { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.C" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "5a14c88cc35094c1a4a1da28e8687d5a315bfa3c", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14" +// } +// } +// } +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6](6)= +// @@ -12,8 +12,8 @@ +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// - "Hash": "e9ab02374a9aeeec16cf1716ec13fa88690ebe33", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7" +// + "Hash": "46af1d33174f442a16702bf0610d934e408b5f62", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13" +// }, +// "Index": "0", +// "TV": null +// @@ -23,7 +23,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "LastObjectSize": "376", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:5", +// "RefCount": "1" +// } +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7](-333) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8](-376) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9](-334) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10](-215) diff --git a/gnovm/tests/files/struct63d.gno b/gnovm/tests/files/struct63d.gno new file mode 100644 index 00000000000..adce074f558 --- /dev/null +++ b/gnovm/tests/files/struct63d.gno @@ -0,0 +1,111 @@ +// PKGPATH: gno.land/r/main +package main + +type A struct { + b *B +} + +type B struct { + c *C +} + +type C struct { + d *D +} + +type D struct { + e int +} + +var x = A{b: &B{c: &C{d: &D{e: 1}}}} + +func main() { + d := x.b.c.d + x.b.c = &C{d: d} +} + +// Realm: +// finalizerealm["gno.land/r/main"] +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9](5)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9", +// "LastObjectSize": "334", +// - "ModTime": "0", +// + "ModTime": "14", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8", +// "RefCount": "1" +// }, +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14](378)={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.D" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "89bab966d4e4111e9325ae403d075de841a28dae", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9" +// }, +// "Index": "0", +// "TV": null +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14", +// "LastObjectSize": "378", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13](335)={ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "LastObjectSize": "335", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "RefCount": "1" +// }, +// "Value": { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.C" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "d58b6674054f460c7e570874230df8c19c4466b2", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14" +// } +// } +// } +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6](6)= +// @@ -12,8 +12,8 @@ +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// - "Hash": "e9ab02374a9aeeec16cf1716ec13fa88690ebe33", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7" +// + "Hash": "f91152997d3d07388ed6d2316ad143fdf16d4e71", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13" +// }, +// "Index": "0", +// "TV": null +// @@ -23,7 +23,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "LastObjectSize": "376", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:5", +// "RefCount": "1" +// } +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7](-333) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8](-376) diff --git a/gnovm/tests/files/struct63e.gno b/gnovm/tests/files/struct63e.gno new file mode 100644 index 00000000000..5291bdf4a98 --- /dev/null +++ b/gnovm/tests/files/struct63e.gno @@ -0,0 +1,140 @@ +// PKGPATH: gno.land/r/main +package main + +type A struct { + b *B +} + +type B struct { + c *C +} + +type C struct { + d *D +} + +type D struct { + e int +} + +var x = A{b: &B{c: &C{d: &D{e: 1}}}} + +func main() { + d := x.b.c.d + d.e = 5 + x.b.c = &C{d: d} +} + +// Realm: +// finalizerealm["gno.land/r/main"] +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10](5)= +// @@ -1,7 +1,7 @@ +// { +// "Fields": [ +// { +// - "N": "AQAAAAAAAAA=", +// + "N": "BQAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// @@ -11,7 +11,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10", +// "LastObjectSize": "215", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9", +// "RefCount": "1" +// } +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9](5)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9", +// "LastObjectSize": "334", +// - "ModTime": "0", +// + "ModTime": "14", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8", +// "RefCount": "1" +// }, +// @@ -13,7 +13,7 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "043b7f42946883ac4865fa928b4d0759526f93a0", +// + "Hash": "da0638e6b41ce900f14472a51a23c875b39cb8ea", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:10" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14](378)={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.D" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "bde13f076268783de506c156c7bca25e0987c354", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:9" +// }, +// "Index": "0", +// "TV": null +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14", +// "LastObjectSize": "378", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "RefCount": "1" +// } +// } +// c[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13](335)={ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13", +// "LastObjectSize": "335", +// "ModTime": "0", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "RefCount": "1" +// }, +// "Value": { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/main.C" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "ab90e2a3616869de1bed46b5a42a89f939681977", +// "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:14" +// } +// } +// } +// u[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6](6)= +// @@ -12,8 +12,8 @@ +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// - "Hash": "e9ab02374a9aeeec16cf1716ec13fa88690ebe33", +// - "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7" +// + "Hash": "79c4e79cd5181977340be6cfaca7dc8e5cc60a76", +// + "ObjectID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:13" +// }, +// "Index": "0", +// "TV": null +// @@ -23,7 +23,7 @@ +// "ObjectInfo": { +// "ID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:6", +// "LastObjectSize": "376", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:5", +// "RefCount": "1" +// } +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:7](-333) +// d[f9b6b63cc3f789fda754d95769bbf99bf64c5cb4:8](-376) diff --git a/gnovm/tests/files/zrealm4.gno b/gnovm/tests/files/zrealm4.gno index 01f5bb6fa25..3ca58e3be2c 100644 --- a/gnovm/tests/files/zrealm4.gno +++ b/gnovm/tests/files/zrealm4.gno @@ -42,6 +42,24 @@ func main(cur realm) { // "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", // "RefCount": "1" // } +// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:3](0)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", +// "LastObjectSize": "423", +// - "ModTime": "6", +// + "ModTime": "8", +// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:2", +// "RefCount": "1" +// }, +// @@ -18,7 +18,6 @@ +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// - "Hash": "9ca98fdf0502999046966e61b84ad729e39753e7", +// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7" +// }, +// "Index": "0", // u[a8ada09dee16d791fd406d629fe29bb0ed084a30:7](5)= // @@ -2,7 +2,7 @@ // "ObjectInfo": { @@ -61,22 +79,3 @@ func main(cur realm) { // "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8" // } // } -// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:3](0)= -// @@ -2,7 +2,7 @@ -// "ObjectInfo": { -// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", -// "LastObjectSize": "423", -// - "ModTime": "6", -// + "ModTime": "8", -// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:2", -// "RefCount": "1" -// }, -// @@ -18,7 +18,7 @@ -// "@type": "/gno.PointerValue", -// "Base": { -// "@type": "/gno.RefValue", -// - "Hash": "9ca98fdf0502999046966e61b84ad729e39753e7", -// + "Hash": "4fa20e6392426796a09b98a2f36a70a1dff01392", -// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7" -// }, -// "Index": "0", diff --git a/gnovm/tests/files/zrealm5.gno b/gnovm/tests/files/zrealm5.gno index 60d803b1199..851d2add344 100644 --- a/gnovm/tests/files/zrealm5.gno +++ b/gnovm/tests/files/zrealm5.gno @@ -134,6 +134,24 @@ func main(cur realm) { // "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", // "RefCount": "1" // } +// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:3](0)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", +// "LastObjectSize": "423", +// - "ModTime": "6", +// + "ModTime": "8", +// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:2", +// "RefCount": "1" +// }, +// @@ -18,7 +18,6 @@ +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// - "Hash": "9ca98fdf0502999046966e61b84ad729e39753e7", +// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7" +// }, +// "Index": "0", // u[a8ada09dee16d791fd406d629fe29bb0ed084a30:7](5)= // @@ -2,7 +2,7 @@ // "ObjectInfo": { @@ -153,22 +171,3 @@ func main(cur realm) { // "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8" // } // } -// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:3](0)= -// @@ -2,7 +2,7 @@ -// "ObjectInfo": { -// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", -// "LastObjectSize": "423", -// - "ModTime": "6", -// + "ModTime": "8", -// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:2", -// "RefCount": "1" -// }, -// @@ -18,7 +18,7 @@ -// "@type": "/gno.PointerValue", -// "Base": { -// "@type": "/gno.RefValue", -// - "Hash": "9ca98fdf0502999046966e61b84ad729e39753e7", -// + "Hash": "506f51c823bff8cd22a8498c7a24ccd21c0b7ece", -// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7" -// }, -// "Index": "0", diff --git a/gnovm/tests/files/zrealm6.gno b/gnovm/tests/files/zrealm6.gno index 1a3cb966815..873348d9e45 100644 --- a/gnovm/tests/files/zrealm6.gno +++ b/gnovm/tests/files/zrealm6.gno @@ -135,25 +135,6 @@ func main(cur realm) { // "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9", // "RefCount": "1" // } -// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:9](5)= -// @@ -2,7 +2,7 @@ -// "ObjectInfo": { -// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9", -// "LastObjectSize": "374", -// - "ModTime": "0", -// + "ModTime": "10", -// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8", -// "RefCount": "1" -// }, -// @@ -13,7 +13,7 @@ -// }, -// "V": { -// "@type": "/gno.RefValue", -// - "Hash": "e7ac59063098152f2e2a716cc34c412b5d3a1673", -// + "Hash": "8a9607e1ef11d8991afeb2e0004602310e63d581", -// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:10" -// } -// } // u[a8ada09dee16d791fd406d629fe29bb0ed084a30:8](5)= // @@ -21,7 +21,7 @@ // } @@ -164,16 +145,15 @@ func main(cur realm) { // "T": { // "@type": "/gno.PrimitiveType", // "value": "32" -// @@ -48,7 +48,7 @@ +// @@ -48,7 +48,6 @@ // "@type": "/gno.PointerValue", // "Base": { // "@type": "/gno.RefValue", // - "Hash": "cf4e0d844e8a0a27351c334db77c947def897a68", -// + "Hash": "f0d1121bac436bd56217628dcabb35cab7383877", // "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9" // }, // "Index": "0", -// @@ -59,7 +59,7 @@ +// @@ -59,7 +58,7 @@ // "ObjectInfo": { // "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8", // "LastObjectSize": "746", @@ -182,23 +162,23 @@ func main(cur realm) { // "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", // "RefCount": "1" // } -// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:7](5)= +// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:9](5)= // @@ -2,7 +2,7 @@ // "ObjectInfo": { -// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", -// "LastObjectSize": "373", +// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9", +// "LastObjectSize": "374", // - "ModTime": "0", // + "ModTime": "10", -// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", +// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8", // "RefCount": "1" // }, // @@ -13,7 +13,7 @@ // }, // "V": { // "@type": "/gno.RefValue", -// - "Hash": "7cfcce4b3888122b46444982a082ab0ce4ca98b3", -// + "Hash": "bd3ae8d56dd37db03235e68149388d3ba55f7c3b", -// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8" +// - "Hash": "e7ac59063098152f2e2a716cc34c412b5d3a1673", +// + "Hash": "8a9607e1ef11d8991afeb2e0004602310e63d581", +// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:10" // } // } // u[a8ada09dee16d791fd406d629fe29bb0ed084a30:3](0)= @@ -211,12 +191,30 @@ func main(cur realm) { // "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:2", // "RefCount": "1" // }, -// @@ -18,7 +18,7 @@ +// @@ -18,7 +18,6 @@ // "@type": "/gno.PointerValue", // "Base": { // "@type": "/gno.RefValue", // - "Hash": "4831ee01b39c1810a4c0047498b1d8628ea9e3e1", -// + "Hash": "7e7d6d2ac4e016f63044f3ae382da3d25c0e29a5", // "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7" // }, // "Index": "0", +// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:7](5)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", +// "LastObjectSize": "373", +// - "ModTime": "0", +// + "ModTime": "10", +// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", +// "RefCount": "1" +// }, +// @@ -13,7 +13,7 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "7cfcce4b3888122b46444982a082ab0ce4ca98b3", +// + "Hash": "1803690c8f6884915f84d0ebff3e601c862f10ed", +// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8" +// } +// } diff --git a/gnovm/tests/files/zrealm7.gno b/gnovm/tests/files/zrealm7.gno index 9b052f222fb..7837f0c8ea2 100644 --- a/gnovm/tests/files/zrealm7.gno +++ b/gnovm/tests/files/zrealm7.gno @@ -136,79 +136,6 @@ func main(cur realm) { // "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:11", // "RefCount": "1" // } -// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:8](-124)= -// @@ -21,7 +21,7 @@ -// } -// }, -// { -// - "N": "AwAAAAAAAAA=", -// + "N": "AQAAAAAAAAA=", -// "T": { -// "@type": "/gno.PrimitiveType", -// "value": "32" -// @@ -43,23 +43,13 @@ -// "@type": "/gno.RefType", -// "ID": "filetests/extern/timtadh/data_structures/tree/avl.AvlNode" -// } -// - }, -// - "V": { -// - "@type": "/gno.PointerValue", -// - "Base": { -// - "@type": "/gno.RefValue", -// - "Hash": "c188a4b77bfb4d65e43b0a7cdc52d654aca701a2", -// - "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9" -// - }, -// - "Index": "0", -// - "TV": null -// } -// } -// ], -// "ObjectInfo": { -// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8", -// "LastObjectSize": "746", -// - "ModTime": "0", -// + "ModTime": "12", -// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", -// "RefCount": "1" -// } -// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:7](5)= -// @@ -2,7 +2,7 @@ -// "ObjectInfo": { -// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", -// "LastObjectSize": "373", -// - "ModTime": "0", -// + "ModTime": "12", -// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", -// "RefCount": "1" -// }, -// @@ -13,7 +13,7 @@ -// }, -// "V": { -// "@type": "/gno.RefValue", -// - "Hash": "78a0b6e28ada4afb447c17ffd7a956a7139793f7", -// + "Hash": "1059095280e98f907857fc5204f45e523eb27912", -// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8" -// } -// } -// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:11](5)= -// @@ -2,7 +2,7 @@ -// "ObjectInfo": { -// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:11", -// "LastObjectSize": "376", -// - "ModTime": "0", -// + "ModTime": "12", -// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:10", -// "RefCount": "1" -// }, -// @@ -13,7 +13,7 @@ -// }, -// "V": { -// "@type": "/gno.RefValue", -// - "Hash": "4a17484cc93c655365dd3aca8dd7b71f98efefc6", -// + "Hash": "0e5376edc0cabc86b08996b390e8280c38346b09", -// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:12" -// } -// } // u[a8ada09dee16d791fd406d629fe29bb0ed084a30:10](134)= // @@ -21,19 +21,10 @@ // } @@ -231,12 +158,11 @@ func main(cur realm) { // } // }, // { -// @@ -48,7 +39,26 @@ +// @@ -48,7 +39,24 @@ // "@type": "/gno.PointerValue", // "Base": { // "@type": "/gno.RefValue", // - "Hash": "db040c58097327c7918fdc57b6cec8f49230814b", -// + "Hash": "b068f612f3f605c3168467bae315e8aa9d2b7d7a", // + "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7" // + }, // + "Index": "0", @@ -255,11 +181,10 @@ func main(cur realm) { // + "@type": "/gno.PointerValue", // + "Base": { // + "@type": "/gno.RefValue", -// + "Hash": "2ea7042b62a834ab635d7eda9946779427a46f1f", // "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:11" // }, // "Index": "0", -// @@ -59,7 +69,7 @@ +// @@ -59,7 +67,7 @@ // "ObjectInfo": { // "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:10", // "LastObjectSize": "748", @@ -268,6 +193,60 @@ func main(cur realm) { // "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9", // "RefCount": "1" // } +// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:11](5)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:11", +// "LastObjectSize": "376", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:10", +// "RefCount": "1" +// }, +// @@ -13,7 +13,7 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "4a17484cc93c655365dd3aca8dd7b71f98efefc6", +// + "Hash": "0e5376edc0cabc86b08996b390e8280c38346b09", +// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:12" +// } +// } +// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:8](-124)= +// @@ -21,7 +21,7 @@ +// } +// }, +// { +// - "N": "AwAAAAAAAAA=", +// + "N": "AQAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// @@ -43,23 +43,13 @@ +// "@type": "/gno.RefType", +// "ID": "filetests/extern/timtadh/data_structures/tree/avl.AvlNode" +// } +// - }, +// - "V": { +// - "@type": "/gno.PointerValue", +// - "Base": { +// - "@type": "/gno.RefValue", +// - "Hash": "c188a4b77bfb4d65e43b0a7cdc52d654aca701a2", +// - "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9" +// - }, +// - "Index": "0", +// - "TV": null +// } +// } +// ], +// "ObjectInfo": { +// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8", +// "LastObjectSize": "746", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", +// "RefCount": "1" +// } // u[a8ada09dee16d791fd406d629fe29bb0ed084a30:9](5)= // @@ -2,7 +2,7 @@ // "ObjectInfo": { @@ -283,10 +262,29 @@ func main(cur realm) { // "V": { // "@type": "/gno.RefValue", // - "Hash": "b65adb52a839f07bf1db12b5889d4bff183f5134", -// + "Hash": "33af7994c85ca6381897c6f3501b1f0be3e5700e", +// + "Hash": "7d47756e4f866b266bbc0bf2013d6356c93db10d", // "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:10" // } // } +// u[a8ada09dee16d791fd406d629fe29bb0ed084a30:7](5)= +// @@ -2,7 +2,7 @@ +// "ObjectInfo": { +// "ID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7", +// "LastObjectSize": "373", +// - "ModTime": "0", +// + "ModTime": "12", +// "OwnerID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:3", +// "RefCount": "1" +// }, +// @@ -13,7 +13,7 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "78a0b6e28ada4afb447c17ffd7a956a7139793f7", +// + "Hash": "1059095280e98f907857fc5204f45e523eb27912", +// "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:8" +// } +// } // u[a8ada09dee16d791fd406d629fe29bb0ed084a30:3](0)= // @@ -2,7 +2,7 @@ // "ObjectInfo": { @@ -303,7 +301,7 @@ func main(cur realm) { // "@type": "/gno.RefValue", // - "Hash": "b171dea0cd981edc859f2b1dea69ad0137f1c227", // - "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:7" -// + "Hash": "096c8a9bce7bd20f122bfa6339b09cb3937b4909", +// + "Hash": "e096c094d6d895e5feee9e878292f88e2977fe54", // + "ObjectID": "a8ada09dee16d791fd406d629fe29bb0ed084a30:9" // }, // "Index": "0", diff --git a/gnovm/tests/files/zrealm_crossrealm34.gno b/gnovm/tests/files/zrealm_crossrealm34.gno new file mode 100644 index 00000000000..2dedf9714c7 --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm34.gno @@ -0,0 +1,24 @@ +// PKGPATH: gno.land/r/crossrealm +// PKGPATH: gno.land/r/crossrealm +package crossrealm + +import ( + "gno.land/r/tests/vm/crossrealm_b" +) + +type S struct { + v *int +} + +var v S + +func main(cur realm) { + println("main()") + v.v = new(int) + crossrealm_b.SetObject(cross, &v) + println("done") +} + +// Output: +// main() +// done diff --git a/gnovm/tests/files/zrealm_example.gno b/gnovm/tests/files/zrealm_example.gno index 02b10cecdf4..fd96b13746d 100644 --- a/gnovm/tests/files/zrealm_example.gno +++ b/gnovm/tests/files/zrealm_example.gno @@ -197,6 +197,29 @@ func main(cur realm) { // } // } // } +// u[1ffd45e074aa1b8df562907c95ad97526b7ca187:8](5)= +// @@ -17,11 +17,11 @@ +// }, +// "V": { +// "@type": "/gno.RefValue", +// - "Hash": "5f8c7561e9dd28d3c2189bb364f0c8a2a7b7188e", +// "ObjectID": "1ffd45e074aa1b8df562907c95ad97526b7ca187:9" +// } +// }, +// { +// + "N": "AQAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// @@ -31,7 +31,7 @@ +// "ObjectInfo": { +// "ID": "1ffd45e074aa1b8df562907c95ad97526b7ca187:8", +// "LastObjectSize": "446", +// - "ModTime": "0", +// + "ModTime": "9", +// "OwnerID": "1ffd45e074aa1b8df562907c95ad97526b7ca187:7", +// "RefCount": "1" +// } // u[1ffd45e074aa1b8df562907c95ad97526b7ca187:9](135)= // @@ -7,13 +7,23 @@ // "@type": "/gno.RefType", @@ -223,27 +246,3 @@ func main(cur realm) { // "OwnerID": "1ffd45e074aa1b8df562907c95ad97526b7ca187:8", // "RefCount": "1" // } -// u[1ffd45e074aa1b8df562907c95ad97526b7ca187:8](5)= -// @@ -17,11 +17,12 @@ -// }, -// "V": { -// "@type": "/gno.RefValue", -// - "Hash": "5f8c7561e9dd28d3c2189bb364f0c8a2a7b7188e", -// + "Hash": "86290cec1339c1100bb6905585bf3ca4217ef9fa", -// "ObjectID": "1ffd45e074aa1b8df562907c95ad97526b7ca187:9" -// } -// }, -// { -// + "N": "AQAAAAAAAAA=", -// "T": { -// "@type": "/gno.PrimitiveType", -// "value": "32" -// @@ -31,7 +32,7 @@ -// "ObjectInfo": { -// "ID": "1ffd45e074aa1b8df562907c95ad97526b7ca187:8", -// "LastObjectSize": "446", -// - "ModTime": "0", -// + "ModTime": "9", -// "OwnerID": "1ffd45e074aa1b8df562907c95ad97526b7ca187:7", -// "RefCount": "1" -// }