From: Russ Cox Date: Thu, 6 Nov 2008 00:09:12 +0000 (-0800) Subject: allow any type at all in sys.unreflect; X-Git-Tag: weekly.2009-11-06~2784 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d6a7cefd1e63dcd9ae8590c36aa0574596075ab9;p=gostls13.git allow any type at all in sys.unreflect; accomodate empty type table in 6l. R=r DELTA=10 (2 added, 8 deleted, 0 changed) OCL=18601 CL=18605 --- diff --git a/src/cmd/6l/go.c b/src/cmd/6l/go.c index 19984336b3..4d2f5ec541 100644 --- a/src/cmd/6l/go.c +++ b/src/cmd/6l/go.c @@ -451,6 +451,8 @@ definetypesigs(void) prog->to.sym = all[i]; } s->value = PtrSize*n; + if(n == 0) + s->value = 1; // must have non-zero size or 6l complains // emit count s = lookup("ngotypesigs", 0); diff --git a/src/runtime/iface.c b/src/runtime/iface.c index 4a394fc888..07bd325843 100644 --- a/src/runtime/iface.c +++ b/src/runtime/iface.c @@ -449,14 +449,6 @@ fakesigt(string type) // TODO(rsc): Cache these by type string. Sigt *sigt; - // Must be pointer in order for alg, width to be right. - if(type == nil || type->len == 0 || type->str[0] != '*') { - // TODO(rsc): What to do here? - prints("bad unreflect type: "); - sys·printstring(type); - prints("\n"); - throw("unreflect"); - } sigt = mal(2*sizeof sigt[0]); sigt[0].name = mal(type->len + 1); mcpy(sigt[0].name, type->str, type->len);