diff options
author | Russ Cox <rsc@golang.org> | 2010-01-08 00:01:03 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-01-08 00:01:03 -0800 |
commit | ae4521437ec67ddf414d2d3638af5ce6a2a5078c (patch) | |
tree | a97d9d80fc2eb2866d9b801e53e41935c9e00318 /src | |
parent | da95e27cdba1b714ae6bd6559bf003745b097cae (diff) | |
download | golang-ae4521437ec67ddf414d2d3638af5ce6a2a5078c.tar.gz |
gc: bug238
Fixes issue 471.
R=ken2
CC=golang-dev
http://codereview.appspot.com/181184
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/gc/const.c | 4 | ||||
-rw-r--r-- | src/cmd/gc/walk.c | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/cmd/gc/const.c b/src/cmd/gc/const.c index 4575ff6da..895f26431 100644 --- a/src/cmd/gc/const.c +++ b/src/cmd/gc/const.c @@ -186,6 +186,10 @@ convlit1(Node **np, Type *t, int explicit) return; bad: + if(!n->diag) { + yyerror("cannot convert %#N to type %T", n, t); + n->diag = 1; + } if(isideal(n->type)) { defaultlit(&n, T); *np = n; diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index 587119c96..211efaec9 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -180,8 +180,11 @@ walkdef(Node *n) goto ret; } t = n->type; - if(t != T) + if(t != T) { convlit(&e, t); + if(!isint[t->etype] && !isfloat[t->etype] && t->etype != TSTRING) + yyerror("invalid constant type %T", t); + } n->val = e->val; n->type = e->type; break; |