mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-30 19:09:34 -06:00
NomDL: Remove $type from struct impl
The implementation of structs is a Map and we used to reserve a key with the name "$type" for the TypeRef. This is no longer needed since the TypeRef is a constant per struct and needs no storage. Fixes #450
This commit is contained in:
@@ -7,7 +7,6 @@ type {{.Name}} struct {
|
||||
|
||||
func New{{.Name}}() {{.Name}} {
|
||||
return {{.Name}}{types.NewMap(
|
||||
types.NewString("$type"), types.MakeTypeRef(__{{.PackageName}}PackageInFile_{{.FileID}}_CachedRef, {{.Ordinal}}),
|
||||
{{range .Fields}}{{if (not .Optional)}}types.NewString("{{.Name}}"), {{valueZero .T}},
|
||||
{{end}}{{end}}{{if .HasUnion}}types.NewString("$unionIndex"), types.UInt32(0),
|
||||
types.NewString("$unionValue"), {{valueZero .UnionZeroType}},{{end}}
|
||||
@@ -24,7 +23,6 @@ func New{{.Name}}() {{.Name}} {
|
||||
func (def {{.Name}}Def) New() {{.Name}} {
|
||||
return {{.Name}}{
|
||||
types.NewMap(
|
||||
types.NewString("$type"), types.MakeTypeRef(__{{.PackageName}}PackageInFile_{{.FileID}}_CachedRef, {{.Ordinal}}),
|
||||
{{range .Fields}}types.NewString("{{.Name}}"), {{defToValue (print "def." (title .Name)) .T}},
|
||||
{{end}}{{if .HasUnion}}types.NewString("$unionIndex"), types.UInt32(def.__unionIndex),
|
||||
types.NewString("$unionValue"), def.__unionDefToValue(),
|
||||
|
||||
@@ -343,8 +343,7 @@ func (r *jsonArrayReader) readStruct(typeDef, typeRef TypeRef, pkg *Package) Val
|
||||
|
||||
// We've read `[StructKind, sha1, name` at this point
|
||||
desc := typeDef.Desc.(StructDesc)
|
||||
m := NewMap(
|
||||
NewString("$type"), typeRef)
|
||||
m := NewMap()
|
||||
|
||||
for _, f := range desc.Fields {
|
||||
if f.Optional {
|
||||
|
||||
@@ -222,7 +222,6 @@ func TestReadStruct(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
assert.True(v.Get(NewString("x")).Equals(Int16(42)))
|
||||
assert.True(v.Get(NewString("s")).Equals(NewString("hi")))
|
||||
assert.True(v.Get(NewString("b")).Equals(Bool(true)))
|
||||
@@ -251,7 +250,6 @@ func TestReadStructUnion(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
assert.True(v.Get(NewString("x")).Equals(Float32(42)))
|
||||
assert.False(v.Has(NewString("b")))
|
||||
assert.False(v.Has(NewString("s")))
|
||||
@@ -281,7 +279,6 @@ func TestReadStructOptional(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
assert.True(v.Get(NewString("x")).Equals(Float32(42)))
|
||||
assert.False(v.Has(NewString("s")))
|
||||
assert.True(v.Get(NewString("b")).Equals(Bool(false)))
|
||||
@@ -320,7 +317,6 @@ func TestReadStructWithList(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
assert.True(v.Get(NewString("b")).Equals(Bool(true)))
|
||||
assert.True(v.Get(NewString("l")).Equals(NewList(Int32(0), Int32(1), Int32(2))))
|
||||
assert.True(v.Get(NewString("s")).Equals(NewString("hi")))
|
||||
@@ -354,7 +350,6 @@ func TestReadStructWithValue(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
assert.True(v.Get(NewString("b")).Equals(Bool(true)))
|
||||
assert.True(v.Get(NewString("v")).Equals(UInt8(42)))
|
||||
assert.True(v.Get(NewString("s")).Equals(NewString("hi")))
|
||||
@@ -388,7 +383,6 @@ func TestReadValueStruct(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
assert.True(v.Get(NewString("x")).Equals(Int16(42)))
|
||||
assert.True(v.Get(NewString("s")).Equals(NewString("hi")))
|
||||
assert.True(v.Get(NewString("b")).Equals(Bool(true)))
|
||||
@@ -497,7 +491,6 @@ func TestReadStructWithEnum(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
assert.True(v.Get(NewString("x")).Equals(Int16(42)))
|
||||
assert.True(v.Get(NewString("e")).Equals(UInt32(1)))
|
||||
assert.True(v.Get(NewString("b")).Equals(Bool(true)))
|
||||
@@ -527,7 +520,6 @@ func TestReadStructWithBlob(t *testing.T) {
|
||||
|
||||
v := r.readTopLevelValue().(Map)
|
||||
|
||||
assert.True(v.Get(NewString("$type")).Equals(structTr))
|
||||
blob, err := NewBlob(bytes.NewBuffer([]byte{0x00, 0x01}))
|
||||
assert.NoError(err)
|
||||
assert.True(v.Get(NewString("b")).Equals(blob))
|
||||
|
||||
@@ -370,7 +370,7 @@ func TestWriteListOfValueWithStruct(t *testing.T) {
|
||||
|
||||
tref := MakeCompoundTypeRef("", ListKind, MakePrimitiveTypeRef(ValueKind))
|
||||
st := MakeTypeRef(pkgRef, 0)
|
||||
v := NewList(NewMap(NewString("$type"), st, NewString("x"), Int32(42)))
|
||||
v := NewList(testMap{Map: NewMap(NewString("x"), Int32(42)), t: st})
|
||||
|
||||
w := newJsonArrayWriter()
|
||||
w.writeTopLevelValue(testList{List: v, t: tref})
|
||||
|
||||
@@ -148,10 +148,6 @@ func (fm Map) Chunks() (futures []Future) {
|
||||
var mapTypeRef = MakeCompoundTypeRef("", MapKind, MakePrimitiveTypeRef(ValueKind), MakePrimitiveTypeRef(ValueKind))
|
||||
|
||||
func (fm Map) TypeRef() TypeRef {
|
||||
// TODO: remove $type fields. BUG 450
|
||||
if v, ok := fm.MaybeGet(NewString("$type")); ok {
|
||||
return v.(TypeRef)
|
||||
}
|
||||
return mapTypeRef
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user