diff --git a/src/lib/reflect/test.go b/src/lib/reflect/test.go index 864220d4e2f..49d97a6df41 100644 --- a/src/lib/reflect/test.go +++ b/src/lib/reflect/test.go @@ -91,6 +91,7 @@ func main() { var s string; var t reflect.Type; + typedump("missing", "$missing$"); typedump("int", "int"); typedump("int8", "int8"); typedump("int16", "int16"); @@ -106,6 +107,7 @@ func main() { typedump("float64", "float64"); typedump("float80", "float80"); typedump("int8", "int8"); + typedump("whoknows.whatsthis", "$missing$"); typedump("**int8", "**int8"); typedump("**P.integer", "**P.integer"); typedump("[32]int32", "[32]int32"); diff --git a/src/lib/reflect/value.go b/src/lib/reflect/value.go index 554da2d53e7..82ceb531a55 100644 --- a/src/lib/reflect/value.go +++ b/src/lib/reflect/value.go @@ -60,6 +60,21 @@ func AddrToPtrFloat80(Addr) *float80 func AddrToPtrString(Addr) *string func AddrToPtrBool(Addr) *bool +// -- Missing + +export type MissingValue interface { + Kind() int; + Type() Type; +} + +type MissingValueStruct struct { + CommonV +} + +func MissingCreator(typ Type, addr Addr) Value { + return &MissingValueStruct{ CommonV{IntKind, typ, addr} } +} + // -- Int export type IntValue interface { @@ -676,6 +691,7 @@ var creator *map[int] Creator func init() { creator = new(map[int] Creator); + creator[MissingKind] = &MissingCreator; creator[IntKind] = &IntCreator; creator[Int8Kind] = &Int8Creator; creator[Int16Kind] = &Int16Creator;