From 3ec7a2e7ca45ad5971465ebe6f72be51b7577c4b Mon Sep 17 00:00:00 2001 From: ltzMaxwell Date: Mon, 30 Dec 2024 23:51:57 +0800 Subject: [PATCH] fixup --- .../r/demo/tests/crossrealm/crossrealm3.gno | 18 - .../{crossrealm5.gno => crossrealm_func.gno} | 0 .../{crossrealm9.gno => crossrealm_func2.gno} | 0 .../{crossrealm2.gno => crossrealm_iface.gno} | 0 .../{crossrealm8.gno => crossrealm_map.gno} | 0 .../{crossrealm.gno => crossrealm_p.gno} | 0 .../{crossrealm4.gno => crossrealm_slice.gno} | 0 ...{crossrealm6.gno => crossrealm_slice2.gno} | 4 +- .../tests/crossrealm/crossrealm_struct.gno | 28 + ...crossrealm7.gno => crossrealm_struct2.gno} | 0 gnovm/pkg/gnolang/ownership.go | 35 +- gnovm/pkg/gnolang/realm.go | 57 +- gnovm/pkg/gnolang/store.go | 8 +- gnovm/pkg/gnolang/values.go | 15 +- .../files/zrealm_crossrealm0_stdlibs.gno | 2 +- .../files/zrealm_crossrealm1_stdlibs.gno | 2 +- gnovm/tests/files/zrealm_crossrealm20.gno | 2 +- gnovm/tests/files/zrealm_crossrealm21a.gno | 2 +- gnovm/tests/files/zrealm_crossrealm21b.gno | 26 + gnovm/tests/files/zrealm_crossrealm22.gno | 19 - gnovm/tests/files/zrealm_crossrealm23a.gno | 122 +- gnovm/tests/files/zrealm_crossrealm23b.gno | 109 + gnovm/tests/files/zrealm_crossrealm24.gno | 204 +- gnovm/tests/files/zrealm_crossrealm24a.gno | 7 +- gnovm/tests/files/zrealm_crossrealm24b.gno | 22 + gnovm/tests/files/zrealm_crossrealm24c.gno | 23 + gnovm/tests/files/zrealm_crossrealm24d.gno | 214 + gnovm/tests/files/zrealm_crossrealm25.gno | 2 +- gnovm/tests/files/zrealm_crossrealm25b.gno | 39 + gnovm/tests/files/zrealm_crossrealm25c.gno | 2 +- gnovm/tests/files/zrealm_crossrealm25d.gno | 2 +- gnovm/tests/files/zrealm_crossrealm25e.gno | 2 +- gnovm/tests/files/zrealm_crossrealm27.gno | 211 + gnovm/tests/files/zrealm_crossrealm27a.gno | 2 +- gnovm/tests/files/zrealm_crossrealm28.gno | 16 +- gnovm/tests/files/zrealm_crossrealm28a.gno | 27 - gnovm/tests/files/zrealm_crossrealm28b.gno | 10 +- gnovm/tests/files/zrealm_crossrealm29.gno | 2 +- gnovm/tests/files/zrealm_crossrealm29a.gno | 6 +- gnovm/tests/files/zrealm_crossrealm29b.gno | 2 +- gnovm/tests/files/zrealm_crossrealm29c.gno | 19 + gnovm/tests/files/zrealm_crossrealm31.gno | 2 +- gnovm/tests/files/zrealm_crossrealm32.gno | 5438 +++++++++++++++++ gnovm/tests/files/zrealm_crossrealm34.gno | 86 + gnovm/tests/files/zrealm_crossrealm34b.gno | 2 +- gnovm/tests/files/zrealm_crossrealm35.gno | 18 - gnovm/tests/files/zrealm_crossrealm37.gno | 2 +- gnovm/tests/files/zrealm_crossrealm38.gno | 4 +- gnovm/tests/files/zrealm_crossrealm39.gno | 2 +- gnovm/tests/files/zrealm_crossrealm40.gno | 2 +- gnovm/tests/files/zrealm_crossrealm42.gno | 6 +- gnovm/tests/files/zrealm_crossrealm43.gno | 16 + .../files/zrealm_crossrealm4_stdlibs.gno | 2 +- .../files/zrealm_crossrealm5_stdlibs.gno | 2 +- 54 files changed, 6674 insertions(+), 169 deletions(-) delete mode 100644 examples/gno.land/r/demo/tests/crossrealm/crossrealm3.gno rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm5.gno => crossrealm_func.gno} (100%) rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm9.gno => crossrealm_func2.gno} (100%) rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm2.gno => crossrealm_iface.gno} (100%) rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm8.gno => crossrealm_map.gno} (100%) rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm.gno => crossrealm_p.gno} (100%) rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm4.gno => crossrealm_slice.gno} (100%) rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm6.gno => crossrealm_slice2.gno} (92%) create mode 100644 examples/gno.land/r/demo/tests/crossrealm/crossrealm_struct.gno rename examples/gno.land/r/demo/tests/crossrealm/{crossrealm7.gno => crossrealm_struct2.gno} (100%) create mode 100644 gnovm/tests/files/zrealm_crossrealm21b.gno delete mode 100644 gnovm/tests/files/zrealm_crossrealm22.gno create mode 100644 gnovm/tests/files/zrealm_crossrealm23b.gno create mode 100644 gnovm/tests/files/zrealm_crossrealm24b.gno create mode 100644 gnovm/tests/files/zrealm_crossrealm24c.gno create mode 100644 gnovm/tests/files/zrealm_crossrealm24d.gno delete mode 100644 gnovm/tests/files/zrealm_crossrealm28a.gno create mode 100644 gnovm/tests/files/zrealm_crossrealm29c.gno delete mode 100644 gnovm/tests/files/zrealm_crossrealm35.gno create mode 100644 gnovm/tests/files/zrealm_crossrealm43.gno diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm3.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm3.gno deleted file mode 100644 index 1d1c0cf6f35..00000000000 --- a/examples/gno.land/r/demo/tests/crossrealm/crossrealm3.gno +++ /dev/null @@ -1,18 +0,0 @@ -package crossrealm - -type Bar struct { - A int -} - -var bar *Bar -var Bar2 *Bar // exported - -func SetBar(b *Bar) *Bar { - bar = b - return bar -} - -func CallBar() { - bar.A += 1 - println(bar.A) -} diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm5.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_func.gno similarity index 100% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm5.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_func.gno diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm9.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_func2.gno similarity index 100% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm9.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_func2.gno diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm2.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_iface.gno similarity index 100% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm2.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_iface.gno diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm8.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_map.gno similarity index 100% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm8.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_map.gno diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_p.gno similarity index 100% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_p.gno diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm4.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_slice.gno similarity index 100% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm4.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_slice.gno diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm6.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_slice2.gno similarity index 92% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm6.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_slice2.gno index ad4cad9ebac..f74a9623d0a 100644 --- a/examples/gno.land/r/demo/tests/crossrealm/crossrealm6.gno +++ b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_slice2.gno @@ -56,8 +56,8 @@ func GetSlice5() []*XYZ { // TODO, unwrap } func GetSlice6(f func(s []*XYZ)) { - s6[1] = &XYZ{"6.1"} // the initial value is deleted, so this is not real after append - f(s6) + s6[1] = &XYZ{"6.1"} + f(s6) // not real now } func GetSlice7(f func(s [2]XYZ)) { diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm_struct.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_struct.gno new file mode 100644 index 00000000000..f3eb3f21f00 --- /dev/null +++ b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_struct.gno @@ -0,0 +1,28 @@ +package crossrealm + +type Bar struct { + A int +} + +var bar *Bar + +// TODO: deprovision this +var Bar2 *Bar = &Bar{A: 22} // exported + +func (b *Bar) String() { + println("b.A: ", b.A) +} + +func SetBar(b *Bar) *Bar { + bar = b + return bar +} + +func ChangeBar() { + Bar2.A += 1 + //println(Bar2.A) +} + +func (b *Bar) ModifyBar() { + b.A += 1 +} diff --git a/examples/gno.land/r/demo/tests/crossrealm/crossrealm7.gno b/examples/gno.land/r/demo/tests/crossrealm/crossrealm_struct2.gno similarity index 100% rename from examples/gno.land/r/demo/tests/crossrealm/crossrealm7.gno rename to examples/gno.land/r/demo/tests/crossrealm/crossrealm_struct2.gno diff --git a/gnovm/pkg/gnolang/ownership.go b/gnovm/pkg/gnolang/ownership.go index fdbe9053730..df532be6f4c 100644 --- a/gnovm/pkg/gnolang/ownership.go +++ b/gnovm/pkg/gnolang/ownership.go @@ -113,8 +113,8 @@ type Object interface { SetIsDeleted(bool, uint64) GetIsNewReal() bool SetIsNewReal(bool) - GetLastNewEscapedRealm() PkgID - SetLastNewEscapedRealm(pkgID PkgID) + GetOriginRealm() PkgID + SetOriginRealm(pkgID PkgID) GetIsRef() bool SetIsRef(bool) GetIsNewEscaped() bool @@ -256,6 +256,7 @@ func (oi *ObjectInfo) GetModTime() uint64 { } func (oi *ObjectInfo) IncRefCount() int { + fmt.Println("---IncRefCount") oi.RefCount++ return oi.RefCount } @@ -316,11 +317,11 @@ func (oi *ObjectInfo) SetIsNewReal(x bool) { oi.isNewReal = x } -func (oi *ObjectInfo) GetLastNewEscapedRealm() PkgID { +func (oi *ObjectInfo) GetOriginRealm() PkgID { return oi.lastNewRealEscapedRealm } -func (oi *ObjectInfo) SetLastNewEscapedRealm(pkgId PkgID) { +func (oi *ObjectInfo) SetOriginRealm(pkgId PkgID) { fmt.Println("---SetLastNewEscapedRealm") oi.lastNewRealEscapedRealm = pkgId } @@ -394,8 +395,12 @@ func (tv *TypedValue) GetFirstObject2(store Store) (obj Object, pkgId PkgID) { // general case if dt, ok := tv.T.(*DeclaredType); ok { fmt.Printf("---dt: %v\n", dt) - if IsRealmPath(dt.PkgPath) { - pkgId = PkgIDFromPkgPath(dt.PkgPath) + fmt.Println("---dt.base: ", dt.Base) + if _, ok := dt.Base.(*FuncType); !ok { + fmt.Println("---dt.base.PkgPath: ", dt.Base.GetPkgPath()) + if IsRealmPath(dt.Base.GetPkgPath()) { + pkgId = PkgIDFromPkgPath(dt.Base.GetPkgPath()) + } } } @@ -411,7 +416,7 @@ func (tv *TypedValue) GetFirstObject2(store Store) (obj Object, pkgId PkgID) { fmt.Println("---v: ", v) // TODO: check this if dt, ok := cv.TV.T.(*DeclaredType); ok { - //fmt.Println("---dt: ", dt) + fmt.Println("---dt: ", dt) //fmt.Println("---cv.Base: ", cv.GetBase(store), reflect.TypeOf(cv.GetBase(store))) //if _, ok := cv.GetBase(store).(*HeapItemValue); !ok { //println("---base is heap item") @@ -421,6 +426,7 @@ func (tv *TypedValue) GetFirstObject2(store Store) (obj Object, pkgId PkgID) { } //} } + fmt.Println("---pkgId; ", pkgId) } return case *ArrayValue: @@ -440,6 +446,21 @@ func (tv *TypedValue) GetFirstObject2(store Store) (obj Object, pkgId PkgID) { fmt.Println("clo...PkgPath", clo.Source.GetLocation().PkgPath) pkgId = PkgIDFromPkgPath(clo.Source.GetLocation().PkgPath) return + case *BoundMethodValue: + fmt.Println("---BoundMethodValue, recv: ", cv.Receiver) + fmt.Println("---type of T: ", reflect.TypeOf(cv.Receiver.T)) + if pv, ok := cv.Receiver.V.(PointerValue); ok { + println("---pointer value") + // TODO: check this + if dt, ok := pv.TV.T.(*DeclaredType); ok { + fmt.Println("---2, dt: ", dt) + if IsRealmPath(dt.PkgPath) { + pkgId = PkgIDFromPkgPath(dt.PkgPath) + } + } + fmt.Println("---pkgId; ", pkgId) + } + return default: return } diff --git a/gnovm/pkg/gnolang/realm.go b/gnovm/pkg/gnolang/realm.go index 742b3b27901..a4b62601a13 100644 --- a/gnovm/pkg/gnolang/realm.go +++ b/gnovm/pkg/gnolang/realm.go @@ -197,10 +197,13 @@ func (rlm *Realm) DidUpdate(po, xo, co Object) { // ref value is the derived value from co, like a slice. func (rlm *Realm) DidUpdate2(store Store, po, xo, co Object, refValue Value) { - fmt.Println("---DidUpdate2, rlm.ID: ", rlm.ID) - //fmt.Printf("---xo: %v, type of xo: %v\n", xo, reflect.TypeOf(xo)) + fmt.Printf("---DidUpdate2, po: %v, type of po: %v\n", po, reflect.TypeOf(po)) + fmt.Printf("---xo: %v, type of xo: %v\n", xo, reflect.TypeOf(xo)) fmt.Printf("---co: %v, type of co: %v\n", co, reflect.TypeOf(co)) - fmt.Printf("---po: %v, type of po: %v\n", po, reflect.TypeOf(po)) + if co != nil { + fmt.Println("co.GetOriginRealm: ", co.GetOriginRealm()) + } + fmt.Println("---rlm.ID: ", rlm.ID) if rlm == nil { return @@ -227,6 +230,7 @@ func (rlm *Realm) DidUpdate2(store Store, po, xo, co Object, refValue Value) { return // do nothing. } + // TODO: check not real external here, if po is real, association is invalid fmt.Println("---po.GetObjectID().PkgID: ", po.GetObjectID().PkgID) if po.GetObjectID().PkgID != rlm.ID { panic("cannot modify external-realm or non-realm object") @@ -252,6 +256,7 @@ func (rlm *Realm) DidUpdate2(store Store, po, xo, co Object, refValue Value) { // XXX, why packageBlock is automatically escaped? println("---already escaped, should check cross realm?") // already escaped + rlm.MarkNewEscapedCheckCrossRealm(store, co, refValue) } else { rlm.MarkNewEscapedCheckCrossRealm(store, co, refValue) } @@ -282,7 +287,7 @@ func (rlm *Realm) DidUpdate2(store Store, po, xo, co Object, refValue Value) { // XXX, oo coming here must be referenced type, since they already escaped. // XXX, so oo has been persisted, thus fillValueTV func checkCrossRealm(store Store, oo Object, refValue Value) { - fmt.Println("---checkCrossReal, oo: ", oo) + fmt.Println("---checkCrossRealm, oo: ", oo) switch v := oo.(type) { case *StructValue: fmt.Println("---StructValue...") @@ -377,21 +382,23 @@ func (rlm *Realm) MarkNewEscapedCheckCrossRealm(store Store, oo Object, refValue //fmt.Println("---oo.lastNewRealEscapedRealm: ", oo.GetLastNewEscapedRealm()) //fmt.Println("---oo.GetIsReal: ", oo.GetIsReal()) - if oo.GetLastNewEscapedRealm() == rlm.ID { + if oo.GetOriginRealm() == rlm.ID { return } - fmt.Println("---oo.GetLastNewEscapedRealm(): ", oo.GetLastNewEscapedRealm()) + fmt.Println("---oo.GetLastNewEscapedRealm(): ", oo.GetOriginRealm()) fmt.Println("---rlm.ID: ", rlm.ID) - if oo.GetLastNewEscapedRealm() != rlm.ID { // crossing realm + if oo.GetOriginRealm() != rlm.ID { // crossing realm if refValue != nil { // is reference object from external realm checkCrossRealm(store, oo, refValue) } else { - panic("should not happen while attempting to attach objects by value from external realm") + panic("cannot attach objects by value from external realm") } } - rlm.MarkNewEscaped(oo) + if !oo.GetIsEscaped() { + rlm.MarkNewEscaped(oo) + } } func (rlm *Realm) MarkNewReal(oo Object) { @@ -609,9 +616,9 @@ func (rlm *Realm) processNewCreatedMarks(store Store) { // oo must be marked new-real, and ref-count already incremented. func (rlm *Realm) incRefCreatedDescendants(store Store, oo Object) { //fmt.Println("---incRefCreatedDescendants, rlm.ID: ", rlm.ID) - //fmt.Println("---incRefCreatedDescendants oo.GetLastEscapedRealm: ", oo.GetLastNewEscapedRealm()) fmt.Println("---incRefCreatedDescendants from oo: ", oo) - //fmt.Println("---oo.GetRefCount: ", oo.GetRefCount()) + fmt.Println("---oo.GetOriginRealm: ", oo.GetOriginRealm()) + fmt.Println("---oo.GetRefCount: ", oo.GetRefCount()) //fmt.Println("---incRefCreatedDescendants, oo.GetObjectID: ", oo.GetObjectID()) if debug { @@ -626,10 +633,14 @@ func (rlm *Realm) incRefCreatedDescendants(store Store, oo Object) { // XXX, oo must be new real here, it's not escaped // if it's reference, all right fmt.Println("---oo.GetIsRef: ", oo.GetIsRef()) - if !oo.GetLastNewEscapedRealm().IsZero() && oo.GetLastNewEscapedRealm() != rlm.ID && !oo.GetIsRef() { + if !oo.GetOriginRealm().IsZero() && oo.GetOriginRealm() != rlm.ID { //fmt.Println("---oo.GetLastNewEscapedRealm: ", oo.GetLastNewEscapedRealm()) //fmt.Println("---rlm.ID: ", rlm.ID) - panic("should not happen while attempting to attach new real object from external realm") + if oo.GetIsRef() { + panic("cannot attach a reference to an unreal object from an external realm") + } else { + panic("cannot attach a value of a type defined by another realm") + } } // RECURSE GUARD @@ -661,7 +672,7 @@ func (rlm *Realm) incRefCreatedDescendants(store Store, oo Object) { } child.IncRefCount() rc := child.GetRefCount() - //fmt.Println("---rc after inc: ", rc) + fmt.Println("---rc after inc: ", rc) if rc == 1 { if child.GetIsReal() { //fmt.Println("---child is real, child: ", child) @@ -990,7 +1001,8 @@ func (rlm *Realm) saveUnsavedObjectRecursively(store Store, oo Object) { func (rlm *Realm) saveObject(store Store, oo Object) { fmt.Println("---saveObject: ", oo) oid := oo.GetObjectID() - fmt.Println("---saveObject: ", oid) + fmt.Println("---oid: ", oid) + fmt.Println("---oo.GetRefCount: ", oo.GetRefCount()) if oid.IsZero() { panic("unexpected zero object id") } @@ -1207,9 +1219,12 @@ func copyMethods(methods []TypedValue) []TypedValue { } func refOrCopyType(typ Type) Type { + fmt.Println("---refOrCopyType, typ: ", typ) if dt, ok := typ.(*DeclaredType); ok { + fmt.Println("---declared type: ", dt) return RefType{ID: dt.TypeID()} } else { + println("---else") return copyTypeWithRefs(typ) } } @@ -1230,6 +1245,7 @@ func copyFieldsWithRefs(fields []FieldType) []FieldType { // Copies type but with references to dependant types; // the result is suitable for persistence bytes serialization. func copyTypeWithRefs(typ Type) Type { + fmt.Println("---copyTypeWithRefs, typ: ", typ) switch ct := typ.(type) { case nil: panic("cannot copy nil types") @@ -1320,7 +1336,7 @@ func copyTypeWithRefs(typ Type) Type { // Also checks for integrity of immediate children -- they must already be // persistent (real), and not dirty, or else this function panics. func copyValueWithRefs(val Value) Value { - //fmt.Println("---copyValueWithRefs, val: ", val) + fmt.Println("---copyValueWithRefs, val: ", val) switch cv := val.(type) { case nil: return nil @@ -1371,6 +1387,7 @@ func copyValueWithRefs(val Value) Value { Maxcap: cv.Maxcap, } case *StructValue: + println("---struct value") fields := make([]TypedValue, len(cv.Fields)) for i, ftv := range cv.Fields { fields[i] = refOrCopyValue(ftv) @@ -1495,6 +1512,7 @@ func copyValueWithRefs(val Value) Value { // (fully) fills the type. func fillType(store Store, typ Type) Type { + fmt.Println("---fillType, typ: ", typ) switch ct := typ.(type) { case nil: return nil @@ -1570,6 +1588,7 @@ func fillType(store Store, typ Type) Type { } return ct case RefType: + println("---ref type") return store.GetType(ct.TypeID()) default: panic(fmt.Sprintf( @@ -1578,6 +1597,7 @@ func fillType(store Store, typ Type) Type { } func fillTypesTV(store Store, tv *TypedValue) { + fmt.Println("---fillTypesTV, tv: ", tv) tv.T = fillType(store, tv.T) tv.V = fillTypesOfValue(store, tv.V) } @@ -1585,6 +1605,7 @@ func fillTypesTV(store Store, tv *TypedValue) { // Partially fills loaded objects shallowly, similarly to // getUnsavedTypes. Replaces all RefTypes with corresponding types. func fillTypesOfValue(store Store, val Value) Value { + fmt.Println("---fillTypesOfValue, val: ", val) switch cv := val.(type) { case nil: // do nothing return cv @@ -1615,6 +1636,7 @@ func fillTypesOfValue(store Store, val Value) Value { fillTypesOfValue(store, cv.Base) return cv case *StructValue: + println("struct value") for i := 0; i < len(cv.Fields); i++ { ctv := &cv.Fields[i] fillTypesTV(store, ctv) @@ -1780,10 +1802,11 @@ func ensureUniq(oozz ...[]Object) { } func refOrCopyValue(tv TypedValue) TypedValue { - //fmt.Println("---refOrCopyValue:", tv) + fmt.Println("---refOrCopyValue:", tv) if tv.T != nil { tv.T = refOrCopyType(tv.T) } + fmt.Println("---Tv.T: ", tv.T) if obj, ok := tv.V.(Object); ok { tv.V = toRefValue(obj) return tv diff --git a/gnovm/pkg/gnolang/store.go b/gnovm/pkg/gnolang/store.go index 096bc2cb6dc..e2dea647ae2 100644 --- a/gnovm/pkg/gnolang/store.go +++ b/gnovm/pkg/gnolang/store.go @@ -299,6 +299,7 @@ func (ds *defaultStore) GetObjectSafe(oid ObjectID) Object { // loads and caches an object. // CONTRACT: object isn't already in the cache. func (ds *defaultStore) loadObjectSafe(oid ObjectID) Object { + fmt.Println("---loadObjectSafe, oid: ", oid) key := backendObjectKey(oid) hashbz := ds.baseStore.Get([]byte(key)) if hashbz != nil { @@ -324,11 +325,11 @@ func (ds *defaultStore) loadObjectSafe(oid ObjectID) Object { // NOTE: unlike GetObject(), SetObject() is also used to persist updated // package values. func (ds *defaultStore) SetObject(oo Object) { - //fmt.Println("---SetObject---,oo: ", oo) + fmt.Println("---SetObject: ", oo) oid := oo.GetObjectID() // replace children/fields with Ref. o2 := copyValueWithRefs(oo) - //fmt.Println("---SetObject, o2: ", o2) + fmt.Println("---o2: ", o2) // marshal to binary. bz := amino.MustMarshalAny(o2) // set hash. @@ -399,7 +400,9 @@ func (ds *defaultStore) DelObject(oo Object) { // NOTE: The implementation matches that of GetObject() in anticipation of what // the persistent type system might work like. func (ds *defaultStore) GetType(tid TypeID) Type { + fmt.Println("---GetType: ", tid) tt := ds.GetTypeSafe(tid) + fmt.Println("---tt: ", tt) if tt == nil { ds.Print() panic(fmt.Sprintf("unexpected type with id %s", tid.String())) @@ -408,6 +411,7 @@ func (ds *defaultStore) GetType(tid TypeID) Type { } func (ds *defaultStore) GetTypeSafe(tid TypeID) Type { + fmt.Println("---GetTypeSafe: ", tid) // check cache. if tt, exists := ds.cacheTypes[tid]; exists { return tt diff --git a/gnovm/pkg/gnolang/values.go b/gnovm/pkg/gnolang/values.go index ad824da0508..9951a4fb6a7 100644 --- a/gnovm/pkg/gnolang/values.go +++ b/gnovm/pkg/gnolang/values.go @@ -211,7 +211,8 @@ func (pv *PointerValue) GetBase(store Store) Object { // TODO: document as something that enables into-native assignment. // TODO: maybe consider this as entrypoint for DataByteValue too? func (pv PointerValue) Assign2(alloc *Allocator, store Store, rlm *Realm, tv2 TypedValue, cu bool) { - fmt.Println("---Assign2, tv2: ", tv2) + fmt.Println("---Assign2, pv: ", pv) + fmt.Println("---tv2: ", tv2) // Special cases. if pv.Index == PointerIndexNative { // Special case if extended object && native. @@ -298,7 +299,7 @@ func (pv PointerValue) Assign2(alloc *Allocator, store Store, rlm *Realm, tv2 Ty fmt.Println("---oo2: ", oo2) fmt.Println("---oo2 pkgId: ", pkgId) if oo2 != nil { // cross realm - oo2.SetLastNewEscapedRealm(pkgId) // attach origin package info + oo2.SetOriginRealm(pkgId) // attach origin package info } // TODO: make check happens in here? rlm.DidUpdate2(store, pv.Base.(Object), oo1, oo2, refValue) @@ -2645,20 +2646,20 @@ func typedString(s string) TypedValue { } func fillValueTV(store Store, tv *TypedValue) *TypedValue { - //fmt.Println("---fillValueTV, tv: ", tv) + fmt.Println("---fillValueTV, tv: ", tv) switch cv := tv.V.(type) { case RefValue: - //println("---tv.V RefValue") - //fmt.Println("---cv: ", cv) + println("---tv.V RefValue") + fmt.Println("---cv: ", cv) if cv.PkgPath != "" { // load package tv.V = store.GetPackage(cv.PkgPath, false) } else { // load object // XXX XXX allocate object. tv.V = store.GetObject(cv.ObjectID) - //fmt.Println("---tv.V: ", tv.V) + fmt.Println("---tv.V: ", tv.V) } case PointerValue: - //fmt.Println("---PointerValue") + fmt.Println("---PointerValue") // As a special case, cv.Base is filled // and cv.TV set appropriately. // Alternatively, could implement diff --git a/gnovm/tests/files/zrealm_crossrealm0_stdlibs.gno b/gnovm/tests/files/zrealm_crossrealm0_stdlibs.gno index ecb8037bd69..b425344615e 100644 --- a/gnovm/tests/files/zrealm_crossrealm0_stdlibs.gno +++ b/gnovm/tests/files/zrealm_crossrealm0_stdlibs.gno @@ -14,4 +14,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm1_stdlibs.gno b/gnovm/tests/files/zrealm_crossrealm1_stdlibs.gno index 34e1cc339e6..ee401bd7774 100644 --- a/gnovm/tests/files/zrealm_crossrealm1_stdlibs.gno +++ b/gnovm/tests/files/zrealm_crossrealm1_stdlibs.gno @@ -17,4 +17,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm20.gno b/gnovm/tests/files/zrealm_crossrealm20.gno index f03e3b3af66..4e0fcb57591 100644 --- a/gnovm/tests/files/zrealm_crossrealm20.gno +++ b/gnovm/tests/files/zrealm_crossrealm20.gno @@ -12,4 +12,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm21a.gno b/gnovm/tests/files/zrealm_crossrealm21a.gno index a50a6614920..6f8c7570e85 100644 --- a/gnovm/tests/files/zrealm_crossrealm21a.gno +++ b/gnovm/tests/files/zrealm_crossrealm21a.gno @@ -23,4 +23,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm21b.gno b/gnovm/tests/files/zrealm_crossrealm21b.gno new file mode 100644 index 00000000000..4e6a497a588 --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm21b.gno @@ -0,0 +1,26 @@ +// PKGPATH: gno.land/r/crossrealm_test +package crossrealm_test + +import ( + crossrealm "gno.land/r/demo/tests/crossrealm" +) + +// associate to a containing object +type Container struct { + name string + b *crossrealm.Bar +} + +var c Container + +func init() { + b0 := &crossrealm.Bar{A: 1} // this is valid association + c = Container{name: "container", b: b0} // XXX, should panic +} + +func main() { + print(".") +} + +// Error: +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm22.gno b/gnovm/tests/files/zrealm_crossrealm22.gno deleted file mode 100644 index e45db3510e0..00000000000 --- a/gnovm/tests/files/zrealm_crossrealm22.gno +++ /dev/null @@ -1,19 +0,0 @@ -// PKGPATH: gno.land/r/crossrealm_test -package crossrealm_test - -type Bar struct { - A int -} - -var b0 Bar - -func init() { - b0 = Bar{A: 1} -} - -func main() { - print(".") -} - -// Output: -// . diff --git a/gnovm/tests/files/zrealm_crossrealm23a.gno b/gnovm/tests/files/zrealm_crossrealm23a.gno index 10a2006a98b..1865874ca38 100644 --- a/gnovm/tests/files/zrealm_crossrealm23a.gno +++ b/gnovm/tests/files/zrealm_crossrealm23a.gno @@ -5,15 +5,129 @@ import "gno.land/p/demo/tests/p_crossrealm" var b0 *p_crossrealm.Container -func init() { +func main() { b0 = &p_crossrealm.Container{ A: 1, } -} - -func main() { print(".") } // Output: // . + +// Realm: +// switchrealm["gno.land/r/crossrealm_test"] +// c[f5a516808f8976c33939133293d598ce3bca4e8d:5]={ +// "Fields": [ +// { +// "N": "AQAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// }, +// {} +// ], +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:5", +// "ModTime": "0", +// "OwnerID": "f5a516808f8976c33939133293d598ce3bca4e8d:4", +// "RefCount": "1" +// } +// } +// c[f5a516808f8976c33939133293d598ce3bca4e8d:4]={ +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:4", +// "ModTime": "0", +// "OwnerID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "RefCount": "1" +// }, +// "Value": { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/p/demo/tests/p_crossrealm.Container" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "01799eb680e2f34495c1050457f9ccd79795a561", +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:5" +// } +// } +// } +// u[f5a516808f8976c33939133293d598ce3bca4e8d:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "IsEscaped": true, +// "ModTime": "3", +// "RefCount": "2" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/p/demo/tests/p_crossrealm.Container" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "49801c40c9c71898edc425edc24654efb17f7164", +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:4" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:3" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "main", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "8", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// } +// ] +// } diff --git a/gnovm/tests/files/zrealm_crossrealm23b.gno b/gnovm/tests/files/zrealm_crossrealm23b.gno new file mode 100644 index 00000000000..29b94f4cb76 --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm23b.gno @@ -0,0 +1,109 @@ +// PKGPATH: gno.land/r/crossrealm_test +package crossrealm_test + +import "gno.land/p/demo/tests/p_crossrealm" + +var b0 p_crossrealm.Container + +func main() { + b0 = p_crossrealm.Container{ + A: 1, + } + print(".") +} + +// XXX, this works attach value with type defined in p + +// Output: +// . + +// Realm: +// switchrealm["gno.land/r/crossrealm_test"] +// c[f5a516808f8976c33939133293d598ce3bca4e8d:5]={ +// "Fields": [ +// { +// "N": "AQAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// }, +// {} +// ], +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:5", +// "ModTime": "0", +// "OwnerID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "RefCount": "1" +// } +// } +// u[f5a516808f8976c33939133293d598ce3bca4e8d:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "IsEscaped": true, +// "ModTime": "4", +// "RefCount": "2" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/p/demo/tests/p_crossrealm.Container" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "9e2d3b66941a43f567a3e83c2d2df8205f433f1c", +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:5" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:4" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "main", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "8", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// } +// ] +// } +// d[f5a516808f8976c33939133293d598ce3bca4e8d:3] diff --git a/gnovm/tests/files/zrealm_crossrealm24.gno b/gnovm/tests/files/zrealm_crossrealm24.gno index 81a2b773137..a1f2ccab778 100644 --- a/gnovm/tests/files/zrealm_crossrealm24.gno +++ b/gnovm/tests/files/zrealm_crossrealm24.gno @@ -5,15 +5,211 @@ import ( crossrealm "gno.land/r/demo/tests/crossrealm" ) -var b0 *crossrealm.Bar // this is not attached, po is not real +type Ibar interface { + String() +} + +var ib Ibar + +var b0 *crossrealm.Bar func init() { - b0 = &crossrealm.Bar{A: 22} // heapItem } func main() { - print(".") + b0 = crossrealm.Bar2 + ib = crossrealm.Bar2 + println(ib) + crossrealm.ChangeBar() + println(ib) + println(b0) } // Output: -// . +// &(struct{(22 int)} gno.land/r/demo/tests/crossrealm.Bar) +// &(struct{(23 int)} gno.land/r/demo/tests/crossrealm.Bar) +// &(struct{(23 int)} gno.land/r/demo/tests/crossrealm.Bar) + +// Realm: +// switchrealm["gno.land/r/demo/tests/crossrealm"] +// u[1712ac7adcfdc8e58a67e5615e20fb312394c4df:20]={ +// "Fields": [ +// { +// "N": "FwAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:20", +// "ModTime": "44", +// "OwnerID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19", +// "RefCount": "1" +// } +// } +// switchrealm["gno.land/r/crossrealm_test"] +// u[f5a516808f8976c33939133293d598ce3bca4e8d:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "IsEscaped": true, +// "ModTime": "3", +// "RefCount": "2" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.InterfaceType", +// "Generic": "", +// "Methods": [ +// { +// "Embedded": false, +// "Name": "String", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// ], +// "PkgPath": "gno.land/r/crossrealm_test" +// }, +// "Methods": [], +// "Name": "Ibar", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:3" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "init.3", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "16", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:3" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "main", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "19", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// } +// ] +// } diff --git a/gnovm/tests/files/zrealm_crossrealm24a.gno b/gnovm/tests/files/zrealm_crossrealm24a.gno index afb7b969768..4f69450bde4 100644 --- a/gnovm/tests/files/zrealm_crossrealm24a.gno +++ b/gnovm/tests/files/zrealm_crossrealm24a.gno @@ -5,15 +5,14 @@ import ( crossrealm "gno.land/r/demo/tests/crossrealm" ) -var b0 *crossrealm.Bar = &crossrealm.Bar{A: 11} // not attached here +var b0 *crossrealm.Bar = &crossrealm.Bar{A: 11} func init() { - b0 = &crossrealm.Bar{A: 22} } func main() { print(".") } -// Output: -// . +// Error: +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm24b.gno b/gnovm/tests/files/zrealm_crossrealm24b.gno new file mode 100644 index 00000000000..53eda7705c8 --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm24b.gno @@ -0,0 +1,22 @@ +// PKGPATH: gno.land/r/crossrealm_test +package crossrealm_test + +import ( + crossrealm "gno.land/r/demo/tests/crossrealm" +) + +// TODO: +// type XX crossrealm.Bar + +var b1 *crossrealm.Bar // this is valid decl, NOT attach + +func init() { +} + +func main() { + b1 = &crossrealm.Bar{A: 22} // this should panic + println(b1) +} + +// Error: +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm24c.gno b/gnovm/tests/files/zrealm_crossrealm24c.gno new file mode 100644 index 00000000000..1360003dade --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm24c.gno @@ -0,0 +1,23 @@ +// PKGPATH: gno.land/r/crossrealm_test +package crossrealm_test + +import ( + "fmt" + crossrealm "gno.land/r/demo/tests/crossrealm" +) + +type Dt *crossrealm.Bar + +var b Dt + +func init() { +} + +func main() { + b = &crossrealm.Bar{A: 22} // this should panic + //println(b) + fmt.Println(b) +} + +// Error: +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm24d.gno b/gnovm/tests/files/zrealm_crossrealm24d.gno new file mode 100644 index 00000000000..5c5df3ee123 --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm24d.gno @@ -0,0 +1,214 @@ +// PKGPATH: gno.land/r/crossrealm_test +package crossrealm_test + +import ( + crossrealm "gno.land/r/demo/tests/crossrealm" +) + +type Ibar interface { + String() +} + +var ib Ibar + +var b0 *crossrealm.Bar // no attach + +func init() {} + +func main() { + b0 = crossrealm.Bar2 // attach by reference + ib = crossrealm.Bar2 + println(ib) + b0.ModifyBar() // call bound methond + println(ib) + println(b0) +} + +// Output: +// &(struct{(22 int)} gno.land/r/demo/tests/crossrealm.Bar) +// &(struct{(23 int)} gno.land/r/demo/tests/crossrealm.Bar) +// &(struct{(23 int)} gno.land/r/demo/tests/crossrealm.Bar) + +// Realm: +// switchrealm["gno.land/r/demo/tests/crossrealm"] +// u[1712ac7adcfdc8e58a67e5615e20fb312394c4df:20]={ +// "Fields": [ +// { +// "N": "FwAAAAAAAAA=", +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:20", +// "ModTime": "44", +// "OwnerID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19", +// "RefCount": "1" +// } +// } +// switchrealm["gno.land/r/crossrealm_test"] +// u[f5a516808f8976c33939133293d598ce3bca4e8d:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "IsEscaped": true, +// "ModTime": "3", +// "RefCount": "2" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.InterfaceType", +// "Generic": "", +// "Methods": [ +// { +// "Embedded": false, +// "Name": "String", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// ], +// "PkgPath": "gno.land/r/crossrealm_test" +// }, +// "Methods": [], +// "Name": "Ibar", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:3" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "init.3", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "16", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:3" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "main", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "18", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// } +// ] +// } diff --git a/gnovm/tests/files/zrealm_crossrealm25.gno b/gnovm/tests/files/zrealm_crossrealm25.gno index 68da79914b6..11a30a1a17e 100644 --- a/gnovm/tests/files/zrealm_crossrealm25.gno +++ b/gnovm/tests/files/zrealm_crossrealm25.gno @@ -23,4 +23,4 @@ func main() { } // Error: -// should not happen while attempting to attach objects by value from external realm +// cannot attach objects by value from external realm diff --git a/gnovm/tests/files/zrealm_crossrealm25b.gno b/gnovm/tests/files/zrealm_crossrealm25b.gno index 112b4fe599f..b5744340648 100644 --- a/gnovm/tests/files/zrealm_crossrealm25b.gno +++ b/gnovm/tests/files/zrealm_crossrealm25b.gno @@ -32,3 +32,42 @@ func main() { // Output: // . + +// Realm: +// switchrealm["gno.land/r/demo/tests/crossrealm"] +// u[1712ac7adcfdc8e58a67e5615e20fb312394c4df:8]={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/crossrealm_test.fooer" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:6" +// }, +// "Index": "1", +// "TV": null +// } +// } +// ], +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:8", +// "ModTime": "44", +// "OwnerID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:2", +// "RefCount": "1" +// } +// } +// switchrealm["gno.land/r/crossrealm_test"] diff --git a/gnovm/tests/files/zrealm_crossrealm25c.gno b/gnovm/tests/files/zrealm_crossrealm25c.gno index 74599ba2106..b70dd3aa4ea 100644 --- a/gnovm/tests/files/zrealm_crossrealm25c.gno +++ b/gnovm/tests/files/zrealm_crossrealm25c.gno @@ -30,4 +30,4 @@ func main() { } // Error: -// should not happen while attempting to attach objects by value from external realm +// cannot attach objects by value from external realm diff --git a/gnovm/tests/files/zrealm_crossrealm25d.gno b/gnovm/tests/files/zrealm_crossrealm25d.gno index 9d8af7decc1..fa05f3dfae5 100644 --- a/gnovm/tests/files/zrealm_crossrealm25d.gno +++ b/gnovm/tests/files/zrealm_crossrealm25d.gno @@ -31,4 +31,4 @@ func main() { } // Error: -// should not happen while attempting to attach objects by value from external realm +// cannot attach objects by value from external realm diff --git a/gnovm/tests/files/zrealm_crossrealm25e.gno b/gnovm/tests/files/zrealm_crossrealm25e.gno index 439839e8aa9..ce9d137c378 100644 --- a/gnovm/tests/files/zrealm_crossrealm25e.gno +++ b/gnovm/tests/files/zrealm_crossrealm25e.gno @@ -29,4 +29,4 @@ func main() { } // Error: -// should not happen while attempting to attach objects by value from external realm +// cannot attach objects by value from external realm diff --git a/gnovm/tests/files/zrealm_crossrealm27.gno b/gnovm/tests/files/zrealm_crossrealm27.gno index 9889cc194c7..fab4a6cc54b 100644 --- a/gnovm/tests/files/zrealm_crossrealm27.gno +++ b/gnovm/tests/files/zrealm_crossrealm27.gno @@ -23,3 +23,214 @@ func main() { // Output: // . + +// Realm: +// switchrealm["gno.land/r/demo/tests/crossrealm"] +// u[1712ac7adcfdc8e58a67e5615e20fb312394c4df:8]={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/crossrealm_test.fooer" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:2" +// }, +// "Index": "1", +// "TV": null +// } +// } +// ], +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:8", +// "ModTime": "44", +// "OwnerID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:2", +// "RefCount": "1" +// } +// } +// switchrealm["gno.land/r/crossrealm_test"] +// c[f5a516808f8976c33939133293d598ce3bca4e8d:5]={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "V": { +// "@type": "/gno.StringValue", +// "value": "local_fooer" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:5", +// "ModTime": "0", +// "OwnerID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "RefCount": "1" +// } +// } +// u[f5a516808f8976c33939133293d598ce3bca4e8d:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "IsEscaped": true, +// "ModTime": "4", +// "RefCount": "3" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/crossrealm_test" +// }, +// "Methods": [ +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": ".recv", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/crossrealm_test.fooer" +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "main.gno", +// "IsMethod": true, +// "Name": "Foo", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "14", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": ".recv", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/crossrealm_test.fooer" +// } +// } +// ], +// "Results": [] +// } +// } +// } +// ], +// "Name": "fooer", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/crossrealm_test.fooer" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "01b50926620ac1c9cff16ae679ccc89029394a2d", +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:5" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:4" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "main", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "18", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// } +// ] +// } +// d[f5a516808f8976c33939133293d598ce3bca4e8d:3] diff --git a/gnovm/tests/files/zrealm_crossrealm27a.gno b/gnovm/tests/files/zrealm_crossrealm27a.gno index 8eb4d4686a1..cefcf319a88 100644 --- a/gnovm/tests/files/zrealm_crossrealm27a.gno +++ b/gnovm/tests/files/zrealm_crossrealm27a.gno @@ -20,4 +20,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm28.gno b/gnovm/tests/files/zrealm_crossrealm28.gno index 73b468aaa1c..87bc87813a2 100644 --- a/gnovm/tests/files/zrealm_crossrealm28.gno +++ b/gnovm/tests/files/zrealm_crossrealm28.gno @@ -17,16 +17,16 @@ func (foo) Foo() { println("hello " + std.CurrentRealm().PkgPath()) } var fs []crossrealm.Fooer func init() { - fs = append(fs, foo{name: "1"}) - fs = append(fs, foo{name: "2"}) + //fs = append(fs, foo{name: "1"}) // type of elem is from external realm + //s1 := []crossrealm.Fooer{foo{name: "s1"}} + //r := append(fs, s1) + + r := append(fs, foo{name: "1"}) // type of elem is from external realm, but no panic since no attach + fs = r // panic while attach } func main() { - crossrealm.SetSlice(fs) - println("ok") } -// Output: -// (struct{("1" string)} gno.land/r/crossrealm_test.foo) -// (struct{("2" string)} gno.land/r/crossrealm_test.foo) -// ok +// Error: +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm28a.gno b/gnovm/tests/files/zrealm_crossrealm28a.gno deleted file mode 100644 index f386768ff5f..00000000000 --- a/gnovm/tests/files/zrealm_crossrealm28a.gno +++ /dev/null @@ -1,27 +0,0 @@ -// PKGPATH: gno.land/r/crossrealm_test -package crossrealm_test - -import ( - "std" - - crossrealm "gno.land/r/demo/tests/crossrealm" -) - -type foo struct { - name string -} - -func (foo) Foo() { println("hello " + std.CurrentRealm().PkgPath()) } - -var arr []crossrealm.Fooer - -func main() { - arr = append(arr, foo{name: "1"}) - arr = append(arr, foo{name: "2"}) - arr = append(arr, foo{name: "3"}) - - println(".") -} - -// Output: -// . diff --git a/gnovm/tests/files/zrealm_crossrealm28b.gno b/gnovm/tests/files/zrealm_crossrealm28b.gno index 1cb7685ec3d..ca89bb8ba3c 100644 --- a/gnovm/tests/files/zrealm_crossrealm28b.gno +++ b/gnovm/tests/files/zrealm_crossrealm28b.gno @@ -13,16 +13,10 @@ type foo struct { func (foo) Foo() { println("hello " + std.CurrentRealm().PkgPath()) } -var arr [2]crossrealm.Fooer // panic +var arr [2]crossrealm.Fooer // panic while attach zero value func main() { - arr[0] = foo{name: "1"} - arr[1] = foo{name: "2"} - - fs := arr[1:] - println("ok") - crossrealm.SetSlice(fs) } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm29.gno b/gnovm/tests/files/zrealm_crossrealm29.gno index cb4cbe050e1..2ca67b09cd1 100644 --- a/gnovm/tests/files/zrealm_crossrealm29.gno +++ b/gnovm/tests/files/zrealm_crossrealm29.gno @@ -17,4 +17,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm29a.gno b/gnovm/tests/files/zrealm_crossrealm29a.gno index 6688e9dd933..aaeda22503e 100644 --- a/gnovm/tests/files/zrealm_crossrealm29a.gno +++ b/gnovm/tests/files/zrealm_crossrealm29a.gno @@ -13,9 +13,9 @@ var f = func() bool { } func main() { - crossrealm.SetCallback(f) + crossrealm.SetCallback(f) // func value crossrealm.ExecuteCallback() } -// Output: -// callback +// Error: +// cannot attach objects by value from external realm diff --git a/gnovm/tests/files/zrealm_crossrealm29b.gno b/gnovm/tests/files/zrealm_crossrealm29b.gno index 62e90a9d988..c0e00f79852 100644 --- a/gnovm/tests/files/zrealm_crossrealm29b.gno +++ b/gnovm/tests/files/zrealm_crossrealm29b.gno @@ -16,4 +16,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm29c.gno b/gnovm/tests/files/zrealm_crossrealm29c.gno new file mode 100644 index 00000000000..fdd1cf278af --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm29c.gno @@ -0,0 +1,19 @@ +// PKGPATH: gno.land/r/crossrealm_test +package crossrealm_test + +type Foo struct { +} + +var a = Foo{} + +var f = func() bool { + println("callback") + return true +} + +func main() { + println("ok") +} + +// Output: +// ok diff --git a/gnovm/tests/files/zrealm_crossrealm31.gno b/gnovm/tests/files/zrealm_crossrealm31.gno index 366fafb377a..70d62fe320b 100644 --- a/gnovm/tests/files/zrealm_crossrealm31.gno +++ b/gnovm/tests/files/zrealm_crossrealm31.gno @@ -15,4 +15,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm32.gno b/gnovm/tests/files/zrealm_crossrealm32.gno index 5dd6dafbc20..a9f196ed62b 100644 --- a/gnovm/tests/files/zrealm_crossrealm32.gno +++ b/gnovm/tests/files/zrealm_crossrealm32.gno @@ -16,3 +16,5441 @@ func main() { // Output: // . + +// Realm: +// switchrealm["gno.land/r/demo/tests/crossrealm"] +// c[1712ac7adcfdc8e58a67e5615e20fb312394c4df:46]={ +// "Fields": [ +// { +// "T": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "V": { +// "@type": "/gno.StringValue", +// "value": "0" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:46", +// "ModTime": "0", +// "OwnerID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:45", +// "RefCount": "1" +// } +// } +// c[1712ac7adcfdc8e58a67e5615e20fb312394c4df:45]={ +// "Data": null, +// "List": [ +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:32" +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "2489b816b7c9cfcc07f7e853718aaa019016fced", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:46" +// } +// } +// ], +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:45", +// "ModTime": "0", +// "OwnerID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:2", +// "RefCount": "1" +// } +// } +// u[1712ac7adcfdc8e58a67e5615e20fb312394c4df:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:2", +// "IsEscaped": true, +// "ModTime": "44", +// "RefCount": "10" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "4" +// } +// } +// ] +// }, +// "Methods": [], +// "Name": "F", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.F" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ff", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.F" +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:3" +// }, +// "FileName": "crossrealm_func.gno", +// "IsMethod": false, +// "Name": "SetCallback", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func.gno", +// "Line": "7", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ff", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.F" +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:3" +// }, +// "FileName": "crossrealm_func.gno", +// "IsMethod": false, +// "Name": "ExecuteCallback", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func.gno", +// "Line": "11", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "", +// "IsMethod": false, +// "Name": "", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "10", +// "File": "crossrealm_func2.gno", +// "Line": "3", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": false, +// "Name": "GetFunc", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "8", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": false, +// "Name": "GetFunc2", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [ +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "sv", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.MyStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": true, +// "Name": "M", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "20", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "sv", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.MyStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// } +// ], +// "Name": "MyStruct", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.MyStruct" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "66606f1f6d50797bbe89640247170078dcbf0e6a", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:5" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": false, +// "Name": "GetMethod", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "30", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.InterfaceType", +// "Generic": "", +// "Methods": [ +// { +// "Embedded": false, +// "Name": "Foo", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "Fooer", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "SetFooer", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "8", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "CallFoo", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "13", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// }, +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "Container", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Container" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "a7562372e10ade1d106ae5ef9e97c170ee4b50f1", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:8" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "SetContainer", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "23", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "SetContainer2", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "27", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.MapType", +// "Key": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "Value": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "cda4bc373a1cceedd07fe9fd29410bfd5732df7c", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:25" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:9" +// }, +// "FileName": "crossrealm_map.gno", +// "IsMethod": false, +// "Name": "init.19", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_map.gno", +// "Line": "5", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.MapType", +// "Key": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "Value": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:9" +// }, +// "FileName": "crossrealm_map.gno", +// "IsMethod": false, +// "Name": "GetMap", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_map.gno", +// "Line": "10", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.MapType", +// "Key": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "Value": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "A", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [ +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ls", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.LocalStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_p.gno", +// "IsMethod": true, +// "Name": "String", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_p.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ls", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.LocalStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// } +// ], +// "Name": "LocalStruct", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.LocalStruct" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "921bae5520c2c8b9d456b47651ea80481836de4e", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:26" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:10" +// }, +// "FileName": "crossrealm_p.gno", +// "IsMethod": false, +// "Name": "init.23", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_p.gno", +// "Line": "19", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/p/demo/tests/p_crossrealm.Container" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:10" +// }, +// "FileName": "crossrealm_p.gno", +// "IsMethod": false, +// "Name": "Make1", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_p.gno", +// "Line": "24", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/p/demo/tests/p_crossrealm.Container" +// } +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// }, +// "Vrd": false +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "fs", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:11" +// }, +// "FileName": "crossrealm_slice.gno", +// "IsMethod": false, +// "Name": "SetSlice", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice.gno", +// "Line": "5", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "fs", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "XYZ", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "b3b42c06d65da2199792616887b55d65b79f075e", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:28" +// }, +// "Length": "2", +// "Maxcap": "2", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "fa5658dcf95bafce7154d3380ebf7e9211b4ab4d", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:45" +// }, +// "Length": "2", +// "Maxcap": "2", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "7c8932f1337c257a3236c79d7d8b4211812d8385", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:33" +// }, +// "Length": "1", +// "Maxcap": "1", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "dbf56198a94f3a1d98c501d1b8c58b88bfbe8bce", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:35" +// }, +// "Length": "1", +// "Maxcap": "1", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "8f5471d881fd68800170d03c52907ce7a7607d09", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:12" +// }, +// "Length": "2", +// "Maxcap": "2", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.ArrayType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Len": "2", +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "41d4fd3b5431d4cd8494803a01f437bddd45b521", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:13" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "init.34", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "13", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "28", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "b439d9527c852f481b3dcc9c4ad27fcf6b2cbc6e", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:17" +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "c3a08360b77971b3c8a35a4c9c0955f6336760c4", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:18" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice2", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "36", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice3", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "44", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice4", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "49", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice5", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "54", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice6", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "58", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.ArrayType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Len": "2", +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice7", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "63", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.ArrayType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Len": "2", +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "A", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [ +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": true, +// "Name": "String", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": true, +// "Name": "ModifyBar", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "26", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// } +// ], +// "Name": "Bar", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "eb498518bc671b8c1625ffbe54846ac1df8601a5", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:21" +// }, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": false, +// "Name": "SetBar", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "16", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:21" +// }, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": false, +// "Name": "ChangeBar", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "21", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "A", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "B", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "D", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": true, +// "Name": "A", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.A" +// } +// }, +// { +// "Embedded": true, +// "Name": "B", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.B" +// } +// }, +// { +// "Embedded": true, +// "Name": "D", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.D" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "C", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.A" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "600bc777de2ebe4f91378028f2331fdfdc891ddc", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:22" +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.B" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "78dd21cd9cef4925a96ee4fbbf182d1494f646d5", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:23" +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "c443db3ae26b6a807ae6a997f395af8ca986b3b3", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:42" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:24" +// }, +// "FileName": "crossrealm_struct2.gno", +// "IsMethod": false, +// "Name": "init.56", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct2.gno", +// "Line": "26", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "cb", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "v", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:24" +// }, +// "FileName": "crossrealm_struct2.gno", +// "IsMethod": false, +// "Name": "GetStruct", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct2.gno", +// "Line": "32", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "cb", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "v", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ] +// } +// } +// } +// ] +// } +// d[1712ac7adcfdc8e58a67e5615e20fb312394c4df:31] +// d[1712ac7adcfdc8e58a67e5615e20fb312394c4df:32] +// switchrealm["gno.land/r/crossrealm_test"] +// u[f5a516808f8976c33939133293d598ce3bca4e8d:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "IsEscaped": true, +// "ModTime": "3", +// "RefCount": "2" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:45" +// }, +// "Length": "2", +// "Maxcap": "2", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:3" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "main", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// } +// ] +// } +// u[1712ac7adcfdc8e58a67e5615e20fb312394c4df:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:2", +// "IsEscaped": true, +// "ModTime": "3", +// "RefCount": "10" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "4" +// } +// } +// ] +// }, +// "Methods": [], +// "Name": "F", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.F" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ff", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.F" +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:3" +// }, +// "FileName": "crossrealm_func.gno", +// "IsMethod": false, +// "Name": "SetCallback", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func.gno", +// "Line": "7", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ff", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.F" +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:3" +// }, +// "FileName": "crossrealm_func.gno", +// "IsMethod": false, +// "Name": "ExecuteCallback", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func.gno", +// "Line": "11", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "", +// "IsMethod": false, +// "Name": "", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "10", +// "File": "crossrealm_func2.gno", +// "Line": "3", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": false, +// "Name": "GetFunc", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "8", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": false, +// "Name": "GetFunc2", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [ +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "sv", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.MyStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": true, +// "Name": "M", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "20", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "sv", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.MyStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// } +// ], +// "Name": "MyStruct", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.MyStruct" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "66606f1f6d50797bbe89640247170078dcbf0e6a", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:5" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:4" +// }, +// "FileName": "crossrealm_func2.gno", +// "IsMethod": false, +// "Name": "GetMethod", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_func2.gno", +// "Line": "30", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.InterfaceType", +// "Generic": "", +// "Methods": [ +// { +// "Embedded": false, +// "Name": "Foo", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "Fooer", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "SetFooer", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "8", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "CallFoo", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "13", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// }, +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "Container", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Container" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "a7562372e10ade1d106ae5ef9e97c170ee4b50f1", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:8" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "SetContainer", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "23", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:7" +// }, +// "FileName": "crossrealm_iface.gno", +// "IsMethod": false, +// "Name": "SetContainer2", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_iface.gno", +// "Line": "27", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.MapType", +// "Key": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "Value": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "cda4bc373a1cceedd07fe9fd29410bfd5732df7c", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:25" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:9" +// }, +// "FileName": "crossrealm_map.gno", +// "IsMethod": false, +// "Name": "init.19", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_map.gno", +// "Line": "5", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.MapType", +// "Key": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "Value": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:9" +// }, +// "FileName": "crossrealm_map.gno", +// "IsMethod": false, +// "Name": "GetMap", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_map.gno", +// "Line": "10", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.MapType", +// "Key": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// }, +// "Value": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "A", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [ +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ls", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.LocalStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_p.gno", +// "IsMethod": true, +// "Name": "String", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_p.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "ls", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.LocalStruct" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ] +// } +// } +// } +// ], +// "Name": "LocalStruct", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.LocalStruct" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "921bae5520c2c8b9d456b47651ea80481836de4e", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:26" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:10" +// }, +// "FileName": "crossrealm_p.gno", +// "IsMethod": false, +// "Name": "init.23", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_p.gno", +// "Line": "19", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/p/demo/tests/p_crossrealm.Container" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:10" +// }, +// "FileName": "crossrealm_p.gno", +// "IsMethod": false, +// "Name": "Make1", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_p.gno", +// "Line": "24", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/p/demo/tests/p_crossrealm.Container" +// } +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// }, +// "Vrd": false +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "fs", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:11" +// }, +// "FileName": "crossrealm_slice.gno", +// "IsMethod": false, +// "Name": "SetSlice", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice.gno", +// "Line": "5", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "fs", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Fooer" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "XYZ", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "b3b42c06d65da2199792616887b55d65b79f075e", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:28" +// }, +// "Length": "2", +// "Maxcap": "2", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:45" +// }, +// "Length": "2", +// "Maxcap": "2", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "7c8932f1337c257a3236c79d7d8b4211812d8385", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:33" +// }, +// "Length": "1", +// "Maxcap": "1", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "dbf56198a94f3a1d98c501d1b8c58b88bfbe8bce", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:35" +// }, +// "Length": "1", +// "Maxcap": "1", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "8f5471d881fd68800170d03c52907ce7a7607d09", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:12" +// }, +// "Length": "2", +// "Maxcap": "2", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.ArrayType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Len": "2", +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "41d4fd3b5431d4cd8494803a01f437bddd45b521", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:13" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "init.34", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "13", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "28", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "b439d9527c852f481b3dcc9c4ad27fcf6b2cbc6e", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:17" +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "c3a08360b77971b3c8a35a4c9c0955f6336760c4", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:18" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice2", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "36", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice3", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "44", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice4", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "49", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice5", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "54", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice6", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "58", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.ArrayType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Len": "2", +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:16" +// }, +// "FileName": "crossrealm_slice2.gno", +// "IsMethod": false, +// "Name": "GetSlice7", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_slice2.gno", +// "Line": "63", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "f", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "s", +// "Tag": "", +// "Type": { +// "@type": "/gno.ArrayType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// }, +// "Len": "2", +// "Vrd": false +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "A", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "32" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [ +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": true, +// "Name": "String", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": null, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": true, +// "Name": "ModifyBar", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "26", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// } +// ], +// "Name": "Bar", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "eb498518bc671b8c1625ffbe54846ac1df8601a5", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:19" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:21" +// }, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": false, +// "Name": "SetBar", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "16", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "b", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.Bar" +// } +// } +// } +// ] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:21" +// }, +// "FileName": "crossrealm_struct.gno", +// "IsMethod": false, +// "Name": "ChangeBar", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct.gno", +// "Line": "21", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "A", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "B", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": false, +// "Name": "name", +// "Tag": "", +// "Type": { +// "@type": "/gno.PrimitiveType", +// "value": "16" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "D", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.TypeType" +// }, +// "V": { +// "@type": "/gno.TypeValue", +// "Type": { +// "@type": "/gno.DeclaredType", +// "Base": { +// "@type": "/gno.StructType", +// "Fields": [ +// { +// "Embedded": true, +// "Name": "A", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.A" +// } +// }, +// { +// "Embedded": true, +// "Name": "B", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.B" +// } +// }, +// { +// "Embedded": true, +// "Name": "D", +// "Tag": "", +// "Type": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.D" +// } +// } +// ], +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// }, +// "Methods": [], +// "Name": "C", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.A" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "600bc777de2ebe4f91378028f2331fdfdc891ddc", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:22" +// } +// }, +// { +// "T": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.B" +// }, +// "V": { +// "@type": "/gno.RefValue", +// "Hash": "78dd21cd9cef4925a96ee4fbbf182d1494f646d5", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:23" +// } +// }, +// { +// "T": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// }, +// "V": { +// "@type": "/gno.PointerValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Hash": "c443db3ae26b6a807ae6a997f395af8ca986b3b3", +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:42" +// }, +// "Index": "0", +// "TV": null +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:24" +// }, +// "FileName": "crossrealm_struct2.gno", +// "IsMethod": false, +// "Name": "init.56", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct2.gno", +// "Line": "26", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "cb", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "v", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:24" +// }, +// "FileName": "crossrealm_struct2.gno", +// "IsMethod": false, +// "Name": "GetStruct", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/demo/tests/crossrealm", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "crossrealm_struct2.gno", +// "Line": "32", +// "PkgPath": "gno.land/r/demo/tests/crossrealm" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "cb", +// "Tag": "", +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [ +// { +// "Embedded": false, +// "Name": "v", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ], +// "Results": [] +// } +// } +// ], +// "Results": [ +// { +// "Embedded": false, +// "Name": "", +// "Tag": "", +// "Type": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.C" +// } +// } +// } +// ] +// } +// } +// } +// ] +// } diff --git a/gnovm/tests/files/zrealm_crossrealm34.gno b/gnovm/tests/files/zrealm_crossrealm34.gno index 0cd5be053ff..14f51d9de75 100644 --- a/gnovm/tests/files/zrealm_crossrealm34.gno +++ b/gnovm/tests/files/zrealm_crossrealm34.gno @@ -16,3 +16,89 @@ func main() { // Output: // . + +// Realm: +// switchrealm["gno.land/r/demo/tests/crossrealm"] +// switchrealm["gno.land/r/crossrealm_test"] +// u[f5a516808f8976c33939133293d598ce3bca4e8d:2]={ +// "Blank": {}, +// "ObjectInfo": { +// "ID": "f5a516808f8976c33939133293d598ce3bca4e8d:2", +// "IsEscaped": true, +// "ModTime": "3", +// "RefCount": "2" +// }, +// "Parent": null, +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "0", +// "File": "", +// "Line": "0", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Values": [ +// { +// "T": { +// "@type": "/gno.SliceType", +// "Elt": { +// "@type": "/gno.PointerType", +// "Elt": { +// "@type": "/gno.RefType", +// "ID": "gno.land/r/demo/tests/crossrealm.XYZ" +// } +// }, +// "Vrd": false +// }, +// "V": { +// "@type": "/gno.SliceValue", +// "Base": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "1712ac7adcfdc8e58a67e5615e20fb312394c4df:35" +// }, +// "Length": "1", +// "Maxcap": "1", +// "Offset": "0" +// } +// }, +// { +// "T": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// }, +// "V": { +// "@type": "/gno.FuncValue", +// "Closure": { +// "@type": "/gno.RefValue", +// "Escaped": true, +// "ObjectID": "f5a516808f8976c33939133293d598ce3bca4e8d:3" +// }, +// "FileName": "main.gno", +// "IsMethod": false, +// "Name": "main", +// "NativeName": "", +// "NativePkg": "", +// "PkgPath": "gno.land/r/crossrealm_test", +// "Source": { +// "@type": "/gno.RefNode", +// "BlockNode": null, +// "Location": { +// "Column": "1", +// "File": "main.gno", +// "Line": "12", +// "PkgPath": "gno.land/r/crossrealm_test" +// } +// }, +// "Type": { +// "@type": "/gno.FuncType", +// "Params": [], +// "Results": [] +// } +// } +// } +// ] +// } diff --git a/gnovm/tests/files/zrealm_crossrealm34b.gno b/gnovm/tests/files/zrealm_crossrealm34b.gno index 673d2538188..ba1c8a8e398 100644 --- a/gnovm/tests/files/zrealm_crossrealm34b.gno +++ b/gnovm/tests/files/zrealm_crossrealm34b.gno @@ -19,4 +19,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm35.gno b/gnovm/tests/files/zrealm_crossrealm35.gno deleted file mode 100644 index 3a223dca545..00000000000 --- a/gnovm/tests/files/zrealm_crossrealm35.gno +++ /dev/null @@ -1,18 +0,0 @@ -// PKGPATH: gno.land/r/crossrealm_test -package crossrealm_test - -type XYZ struct{ name string } - -var S []*XYZ - -func init() { - S = append(S, &XYZ{"1"}) -} - -func main() { - a := S[0].name - println(a) -} - -// Output: -// 1 diff --git a/gnovm/tests/files/zrealm_crossrealm37.gno b/gnovm/tests/files/zrealm_crossrealm37.gno index 65dc493b100..a445dd73074 100644 --- a/gnovm/tests/files/zrealm_crossrealm37.gno +++ b/gnovm/tests/files/zrealm_crossrealm37.gno @@ -11,4 +11,4 @@ func main() { } // Error: -// should not happen while attempting to attach objects by value from external realm +// cannot attach objects by value from external realm diff --git a/gnovm/tests/files/zrealm_crossrealm38.gno b/gnovm/tests/files/zrealm_crossrealm38.gno index 3eda0c34e7e..59627cdd4bd 100644 --- a/gnovm/tests/files/zrealm_crossrealm38.gno +++ b/gnovm/tests/files/zrealm_crossrealm38.gno @@ -10,5 +10,5 @@ func main() { println(f()) } -// Output: -// a +// Error: +// cannot attach objects by value from external realm diff --git a/gnovm/tests/files/zrealm_crossrealm39.gno b/gnovm/tests/files/zrealm_crossrealm39.gno index f638eb67f4d..7cd5e0de0af 100644 --- a/gnovm/tests/files/zrealm_crossrealm39.gno +++ b/gnovm/tests/files/zrealm_crossrealm39.gno @@ -11,4 +11,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm40.gno b/gnovm/tests/files/zrealm_crossrealm40.gno index 7f5e126dc2b..dde17b0dd20 100644 --- a/gnovm/tests/files/zrealm_crossrealm40.gno +++ b/gnovm/tests/files/zrealm_crossrealm40.gno @@ -10,5 +10,5 @@ func main() { println(f) } -// XXX, fix this. // Error: +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm42.gno b/gnovm/tests/files/zrealm_crossrealm42.gno index c4ea99ff24d..28abca22cb7 100644 --- a/gnovm/tests/files/zrealm_crossrealm42.gno +++ b/gnovm/tests/files/zrealm_crossrealm42.gno @@ -2,11 +2,15 @@ package crossrealm_test import crossrealm "gno.land/r/demo/tests/crossrealm" +import "fmt" type LocalBar crossrealm.Bar var lb LocalBar func main() { - println(lb) + fmt.Println(lb) } + +// Error: +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm43.gno b/gnovm/tests/files/zrealm_crossrealm43.gno new file mode 100644 index 00000000000..2b5e5ee7b05 --- /dev/null +++ b/gnovm/tests/files/zrealm_crossrealm43.gno @@ -0,0 +1,16 @@ +// PKGPATH: gno.land/r/crossrealm_test +package crossrealm_test + +import crossrealm "gno.land/r/demo/tests/crossrealm" +import "fmt" + +type LocalBar *crossrealm.Bar // no attach + +var lb LocalBar + +func main() { + lb = &crossrealm.Bar{A: 1} +} + +// Error: +// cannot attach a reference to an unreal object from an external realm diff --git a/gnovm/tests/files/zrealm_crossrealm4_stdlibs.gno b/gnovm/tests/files/zrealm_crossrealm4_stdlibs.gno index c3dbc152930..c1ddc5157a0 100644 --- a/gnovm/tests/files/zrealm_crossrealm4_stdlibs.gno +++ b/gnovm/tests/files/zrealm_crossrealm4_stdlibs.gno @@ -19,4 +19,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm diff --git a/gnovm/tests/files/zrealm_crossrealm5_stdlibs.gno b/gnovm/tests/files/zrealm_crossrealm5_stdlibs.gno index b22fdf330c0..e0c800aa624 100644 --- a/gnovm/tests/files/zrealm_crossrealm5_stdlibs.gno +++ b/gnovm/tests/files/zrealm_crossrealm5_stdlibs.gno @@ -19,4 +19,4 @@ func main() { } // Error: -// should not happen while attempting to attach new real object from external realm +// cannot attach a value of a type defined by another realm