mirror of
https://github.com/golang/go
synced 2024-11-21 21:14:47 -07:00
gc: bug238
Fixes #471. R=ken2 CC=golang-dev https://golang.org/cl/181184
This commit is contained in:
parent
1b1f39eb86
commit
307a899d5b
@ -186,6 +186,10 @@ convlit1(Node **np, Type *t, int explicit)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
bad:
|
bad:
|
||||||
|
if(!n->diag) {
|
||||||
|
yyerror("cannot convert %#N to type %T", n, t);
|
||||||
|
n->diag = 1;
|
||||||
|
}
|
||||||
if(isideal(n->type)) {
|
if(isideal(n->type)) {
|
||||||
defaultlit(&n, T);
|
defaultlit(&n, T);
|
||||||
*np = n;
|
*np = n;
|
||||||
|
@ -180,8 +180,11 @@ walkdef(Node *n)
|
|||||||
goto ret;
|
goto ret;
|
||||||
}
|
}
|
||||||
t = n->type;
|
t = n->type;
|
||||||
if(t != T)
|
if(t != T) {
|
||||||
convlit(&e, 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->val = e->val;
|
||||||
n->type = e->type;
|
n->type = e->type;
|
||||||
break;
|
break;
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
// errchk $G -e $D/$F.go
|
|
||||||
|
|
||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// Test case for issue 471. This file shouldn't compile.
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
const a *int = 1 // ERROR "wrong|incompatible"
|
|
||||||
const b [2]int = 2 // ERROR "wrong|incompatible"
|
|
||||||
const c map[int]int = 3 // ERROR "wrong|incompatible"
|
|
||||||
const d chan int = 4 // ERROR "wrong|incompatible"
|
|
||||||
const e func() = 5 // ERROR "wrong|incompatible"
|
|
||||||
const f struct{} = 6 // ERROR "wrong|incompatible"
|
|
||||||
const g interface{} = 7 // ERROR "wrong|incompatible"
|
|
||||||
|
|
||||||
func main() { println(a, b, c, d, e, f, g) }
|
|
19
test/fixedbugs/bug238.go
Normal file
19
test/fixedbugs/bug238.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// errchk $G -e $D/$F.go
|
||||||
|
|
||||||
|
// Copyright 2009 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Test case for issue 471. This file shouldn't compile.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
const a *int = 1 // ERROR "convert|wrong|incompatible"
|
||||||
|
const b [2]int = 2 // ERROR "convert|wrong|incompatible"
|
||||||
|
const c map[int]int = 3 // ERROR "convert|wrong|incompatible"
|
||||||
|
const d chan int = 4 // ERROR "convert|wrong|incompatible"
|
||||||
|
const e func() = 5 // ERROR "convert|wrong|incompatible"
|
||||||
|
const f struct{} = 6 // ERROR "convert|wrong|incompatible"
|
||||||
|
const g interface{} = 7 // ERROR "constant|wrong|incompatible"
|
||||||
|
|
||||||
|
func main() { println(a, b, c, d, e, f, g) }
|
@ -144,18 +144,3 @@ throw: interface conversion
|
|||||||
panic PC=xxx
|
panic PC=xxx
|
||||||
|
|
||||||
== bugs/
|
== bugs/
|
||||||
|
|
||||||
=========== bugs/bug219.go
|
|
||||||
bugs/bug219.go:16: syntax error near if
|
|
||||||
BUG: bug219
|
|
||||||
|
|
||||||
=========== bugs/bug238.go
|
|
||||||
BUG: errchk: command succeeded unexpectedly
|
|
||||||
|
|
||||||
=========== bugs/bug239.go
|
|
||||||
bugs/bug239.go:11: imported and not used: unsafe
|
|
||||||
bugs/bug239.go:15: undefined: Sizeof
|
|
||||||
BUG: bug239
|
|
||||||
|
|
||||||
=========== bugs/bug240.go
|
|
||||||
BUG: errchk: command succeeded unexpectedly
|
|
||||||
|
Loading…
Reference in New Issue
Block a user