1
0
mirror of https://github.com/golang/go synced 2024-11-26 02:27:56 -07:00

disallow ordinary-type.(T), as in spec.

R=ken
OCL=25705
CL=25705
This commit is contained in:
Russ Cox 2009-03-04 14:50:25 -08:00
parent 461dd9126c
commit 955638e2fb
2 changed files with 5 additions and 1 deletions

View File

@ -2851,6 +2851,9 @@ ifaceas1(Type *dst, Type *src, int explicit)
if(src == T || dst == T)
return Inone;
if(explicit && !isinter(src))
yyerror("cannot use .(T) on non-interface type %T", src);
if(isinter(dst)) {
if(isinter(src)) {
if(eqtype(dst, src, 0))

View File

@ -107,7 +107,8 @@ func newBasicType(name string, kind int, size int) Type {
// Prebuilt basic types
var (
Missing = newBasicType(missingString, MissingKind, 1);
DotDotDot = newBasicType(dotDotDotString, DotDotDotKind, unsafe.Sizeof(true.(interface{})));
empty interface{};
DotDotDot = newBasicType(dotDotDotString, DotDotDotKind, unsafe.Sizeof(empty));
Bool = newBasicType("bool", BoolKind, unsafe.Sizeof(true));
Int = newBasicType("int", IntKind, unsafe.Sizeof(int(0)));
Int8 = newBasicType("int8", Int8Kind, 1);