mirror of
https://github.com/golang/go
synced 2024-11-21 16:14:42 -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;
|
||||
|
||||
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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
== 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