mirror of
https://github.com/golang/go
synced 2024-09-05 16:04:50 +00:00
![Alberto Donizetti](/assets/img/avatar_default.png)
This change adds line position tests for several yyerror calls in the typechecker that are currently not tested in any way. Untested yyerror calls were found by replacing them with yerrorl(src.NoXPos, ...) (thus destroying position information in the error), and then running the test suite. No failures means no test coverage for the relevant yyerror call. For #19683 Change-Id: Iedb3d2f02141b332e9bfa76dbf5ae930ad2fddc3 Reviewed-on: https://go-review.googlesource.com/41477 Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
42 lines
1 KiB
Go
42 lines
1 KiB
Go
// errorcheck
|
|
|
|
// 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.
|
|
|
|
// Verify that erroneous initialization expressions are caught by the compiler
|
|
// Does not compile.
|
|
|
|
package main
|
|
|
|
type S struct {
|
|
A, B, C, X, Y, Z int
|
|
}
|
|
|
|
type T struct {
|
|
S
|
|
}
|
|
|
|
var x = 1
|
|
var a1 = S { 0, X: 1 } // ERROR "mixture|undefined"
|
|
var a2 = S { Y: 3, Z: 2, Y: 3 } // ERROR "duplicate"
|
|
var a3 = T { S{}, 2, 3, 4, 5, 6 } // ERROR "convert|too many"
|
|
var a4 = [5]byte{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } // ERROR "index|too many"
|
|
var a5 = []byte { x: 2 } // ERROR "index"
|
|
var a6 = []byte{1: 1, 2: 2, 1: 3} // ERROR "duplicate index"
|
|
|
|
var ok1 = S { } // should be ok
|
|
var ok2 = T { S: ok1 } // should be ok
|
|
|
|
// These keys can be computed at compile time but they are
|
|
// not constants as defined by the spec, so they do not trigger
|
|
// compile-time errors about duplicate key values.
|
|
// See issue 4555.
|
|
|
|
type Key struct {X, Y int}
|
|
|
|
var _ = map[Key]string{
|
|
Key{1,2}: "hello",
|
|
Key{1,2}: "world",
|
|
}
|