1
0
mirror of https://github.com/golang/go synced 2024-11-21 19:04:44 -07:00

bug212, bug213.

R=ken
http://go/go-review/1026032
This commit is contained in:
Russ Cox 2009-11-08 23:22:06 -08:00
parent b1a52ce4a3
commit 71983af4a1
7 changed files with 28 additions and 18 deletions

View File

@ -328,6 +328,13 @@ exprfmt(Fmt *f, Node *n, int prec)
}
fmtprint(f, ")");
break;
case OMAKEMAP:
fmtprint(f, "make(%#T)", n->type);
break;
case OMAPLIT:
fmtprint(f, "map literal");
}
if(prec > nprec)

View File

@ -1654,7 +1654,7 @@ iscomposite(Type *t)
int
eqtype1(Type *t1, Type *t2, int d, int names)
{
if(d >= 10)
if(d >= 20)
return 1;
if(t1 == t2)
return 1;
@ -1720,14 +1720,19 @@ eqtype1(Type *t1, Type *t2, int d, int names)
return 1;
case TARRAY:
if(t1->bound == t2->bound)
break;
return 0;
if(t1->bound != t2->bound)
return 0;
break;
case TCHAN:
if(t1->chan == t2->chan)
break;
return 0;
if(t1->chan != t2->chan)
return 0;
break;
case TMAP:
if(!eqtype1(t1->down, t2->down, d+1, names))
return 0;
break;
}
return eqtype1(t1->type, t2->type, d+1, names);
}

View File

@ -313,9 +313,13 @@ casebody(Node *sw, Node *typeswvar)
// botch - shouldnt fall thru declaration
last = stat->end->n;
if(last->op == OXFALL)
if(last->op == OXFALL) {
if(typeswvar) {
setlineno(last);
yyerror("cannot fallthrough in type switch");
}
last->op = OFALL;
else
} else
stat = list(stat, br);
}
@ -771,7 +775,7 @@ walkswitch(Node *sw)
sw->ntest = nodbool(1);
typecheck(&sw->ntest, Erv);
}
if(sw->ntest->op == OTYPESW) {
typeswitch(sw);
//dump("sw", sw);

View File

@ -51,7 +51,7 @@ func New(abbrev, aranges, frame, info, line, pubnames, ranges, str []byte) (*Dat
ranges: ranges,
str: str,
abbrevCache: make(map[uint32]abbrevTable),
typeCache: make(map[uint32]Type),
typeCache: make(map[Offset]Type),
};
// Sniff .debug_info to figure out byte order.

View File

@ -5,7 +5,7 @@
// license that can be found in the LICENSE file.
package main
type I int
type I int
type S struct { f map[I]int }
var v1 = S{ make(map[int]int) } // ERROR "cannot|illegal|incompatible|wrong"
var v2 map[I]int = map[int]int{} // ERROR "cannot|illegal|incompatible|wrong"

View File

@ -201,9 +201,3 @@ throw: interface conversion
panic PC=xxx
== bugs/
=========== bugs/bug212.go
BUG: errchk: command succeeded unexpectedly
=========== bugs/bug213.go
BUG: errchk: command succeeded unexpectedly