// rewrite ...T parameter
if typ.Op == ODDD {
if !dddOk {
- yyerror("cannot use ... in receiver or result parameter list")
+ // We mark these as syntax errors to get automatic elimination
+ // of multiple such errors per line (see yyerrorl in subr.go).
+ yyerror("syntax error: cannot use ... in receiver or result parameter list")
} else if !final {
if param.Name == nil {
- yyerror("cannot use ... with non-final parameter")
+ yyerror("syntax error: cannot use ... with non-final parameter")
} else {
- p.yyerrorpos(param.Name.Pos(), "cannot use ... with non-final parameter %s", param.Name.Value)
+ p.yyerrorpos(param.Name.Pos(), "syntax error: cannot use ... with non-final parameter %s", param.Name.Value)
}
}
typ.Op = OTARRAY
package p
-func f(a, b, c, d ...int) {} // ERROR "non-final parameter a" "non-final parameter b" "non-final parameter c"
+func f(a, b, c, d ...int) {} // ERROR "non-final parameter a"
func g(a ...int, b ...int) {} // ERROR "non-final parameter a"
func h(...int, ...int, float32) {} // ERROR "non-final parameter"
type a func(...float32, ...interface{}) // ERROR "non-final parameter"
type b interface {
f(...int, ...int) // ERROR "non-final parameter"
- g(a ...int, b ...int, c float32) // ERROR "non-final parameter a" "non-final parameter b"
+ g(a ...int, b ...int, c float32) // ERROR "non-final parameter a"
valid(...int)
}