package main
func main() {
var x interface{};
switch x {
case 41:
case "b":
}
}
before:
x.go:5: fatal error: exprcmp
now:
x.go:5: illegal types for operand: EQ
interface { }
int
x.go:6: illegal types for operand: EQ
interface { }
string
R=ken
OCL=31217
CL=31219
n2 = c2->node->left;
ct = n1->val.ctype;
- if(ct != n2->val.ctype)
- fatal("exprcmp");
+ if(ct != n2->val.ctype) {
+ // invalid program, but return a sort
+ // order so that we can give a better
+ // error later.
+ return ct - n2->val.ctype;
+ }
// sort by constant value
n = 0;
fatal("walkcases: not case %O\n", n->op);
if(n->left != N) {
- setlineno(n->left);
+ setlineno(n);
place = call(n->left, place, arg);
}
n = listnext(&save);
Node *cas;
Node *a, *n;
Case *c;
- int i, half;
+ int i, half, lno;
cas = N;
if(ncase < Ncase) {
for(i=0; i<ncase; i++) {
n = c0->node;
+ lno = setlineno(n);
switch(arg) {
case Strue:
cas = list(cas, a);
c0 = c0->link;
+ lineno = lno;
}
return cas;
}