diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index f75f86587a6..66570fe92a8 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -268,7 +268,7 @@ func (p *parser) syntaxErrorAt(pos Pos, msg string) { var tok string switch p.tok { case _Name: - tok = "`" + p.lit + "'" + tok = "name " + p.lit case _Semi: tok = p.lit case _Literal: diff --git a/src/cmd/compile/internal/syntax/testdata/issue20789.go b/src/cmd/compile/internal/syntax/testdata/issue20789.go index 8a6db6d2ee0..846da836946 100644 --- a/src/cmd/compile/internal/syntax/testdata/issue20789.go +++ b/src/cmd/compile/internal/syntax/testdata/issue20789.go @@ -6,4 +6,4 @@ // Line 9 must end in EOF for this test (no newline). package e -func([<-chan<-[func /* ERROR unexpected `u' */ u){go \ No newline at end of file +func([<-chan<-[func /* ERROR unexpected name u */ u){go \ No newline at end of file diff --git a/src/cmd/compile/internal/syntax/testdata/issue47704.go b/src/cmd/compile/internal/syntax/testdata/issue47704.go index aab37905607..e490130db0b 100644 --- a/src/cmd/compile/internal/syntax/testdata/issue47704.go +++ b/src/cmd/compile/internal/syntax/testdata/issue47704.go @@ -7,7 +7,7 @@ package p func _() { _ = m[] // ERROR expected operand _ = m[x,] - _ = m[x /* ERROR unexpected `a' */ a b c d] + _ = m[x /* ERROR unexpected name a */ a b c d] } // test case from the issue diff --git a/src/cmd/compile/internal/syntax/testdata/issue49205.go b/src/cmd/compile/internal/syntax/testdata/issue49205.go index 9b6c7697038..891a6eeb831 100644 --- a/src/cmd/compile/internal/syntax/testdata/issue49205.go +++ b/src/cmd/compile/internal/syntax/testdata/issue49205.go @@ -7,7 +7,7 @@ package p // test case from issue type _ interface{ - m /* ERROR unexpected `int' in interface type; possibly missing semicolon or newline or } */ int + m /* ERROR unexpected name int in interface type; possibly missing semicolon or newline or } */ int } // other cases where the fix for this issue affects the error message @@ -16,12 +16,12 @@ const ( x int = 10 /* ERROR unexpected literal "foo" in grouped declaration; possibly missing semicolon or newline or \) */ "foo" ) -var _ = []int{1, 2, 3 /* ERROR unexpected `int' in composite literal; possibly missing comma or } */ int } +var _ = []int{1, 2, 3 /* ERROR unexpected name int in composite literal; possibly missing comma or } */ int } type _ struct { x y /* ERROR syntax error: unexpected comma in struct type; possibly missing semicolon or newline or } */ , } -func f(a, b c /* ERROR unexpected `d' in parameter list; possibly missing comma or \) */ d) { - f(a, b, c /* ERROR unexpected `d' in argument list; possibly missing comma or \) */ d) +func f(a, b c /* ERROR unexpected name d in parameter list; possibly missing comma or \) */ d) { + f(a, b, c /* ERROR unexpected name d in argument list; possibly missing comma or \) */ d) } diff --git a/src/cmd/compile/internal/syntax/testdata/issue52391.go b/src/cmd/compile/internal/syntax/testdata/issue52391.go index 42b71cc83a3..85c080c9e6c 100644 --- a/src/cmd/compile/internal/syntax/testdata/issue52391.go +++ b/src/cmd/compile/internal/syntax/testdata/issue52391.go @@ -13,5 +13,5 @@ type _ interface { (int) | (string) (int) | ~(string) (/* ERROR unexpected ~ */ ~int) - (int /* ERROR unexpected \| */ | /* ERROR unexpected `string' */ string /* ERROR unexpected \) */ ) + (int /* ERROR unexpected \| */ | /* ERROR unexpected name string */ string /* ERROR unexpected \) */ ) } diff --git a/src/cmd/compile/internal/syntax/testdata/issue65790.go b/src/cmd/compile/internal/syntax/testdata/issue65790.go index 07ffd126784..9e079423ab6 100644 --- a/src/cmd/compile/internal/syntax/testdata/issue65790.go +++ b/src/cmd/compile/internal/syntax/testdata/issue65790.go @@ -9,6 +9,6 @@ import ( ) func f() { - int status // ERROR syntax error: unexpected `status' at end of statement + int status // ERROR syntax error: unexpected name status at end of statement fmt.Println(status) } diff --git a/src/cmd/compile/internal/types2/builtins.go b/src/cmd/compile/internal/types2/builtins.go index d176cf0967c..808d39fd242 100644 --- a/src/cmd/compile/internal/types2/builtins.go +++ b/src/cmd/compile/internal/types2/builtins.go @@ -25,7 +25,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) ( if hasDots(call) && id != _Append { check.errorf(dddErrPos(call), InvalidDotDotDot, - invalidOp+"invalid use of ... with built-in %s", quote(bin.name)) + invalidOp+"invalid use of ... with built-in %s", bin.name) check.use(argList...) return } @@ -210,7 +210,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) ( if id == _Len { code = InvalidLen } - check.errorf(x, code, invalidArg+"%s for %s", x, quote(bin.name)) + check.errorf(x, code, invalidArg+"%s for built-in %s", x, bin.name) } return } @@ -533,7 +533,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) ( case _Max, _Min: // max(x, ...) // min(x, ...) - check.verifyVersionf(call.Fun, go1_21, "%s", quote(bin.name)) + check.verifyVersionf(call.Fun, go1_21, "built-in %s", bin.name) op := token.LSS if id == _Max { @@ -576,7 +576,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) ( if x.mode != constant_ { x.mode = value // A value must not be untyped. - check.assignment(x, &emptyInterface, "argument to "+quote(bin.name)) + check.assignment(x, &emptyInterface, "argument to built-in "+bin.name) if x.mode == invalid { return } @@ -641,7 +641,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) ( if nargs > 0 { params = make([]Type, nargs) for i, a := range args { - check.assignment(a, nil, "argument to "+quote(predeclaredFuncs[id].name)) + check.assignment(a, nil, "argument to built-in"+predeclaredFuncs[id].name) if a.mode == invalid { return } @@ -992,7 +992,7 @@ func (check *Checker) applyTypeFunc(f func(Type) Type, x *operand, id builtinId) default: panic("unreachable") } - check.softErrorf(x, code, "%s not supported as argument to %s for go1.18 (see go.dev/issue/50937)", x, quote(predeclaredFuncs[id].name)) + check.softErrorf(x, code, "%s not supported as argument to built-in %s for go1.18 (see go.dev/issue/50937)", x, predeclaredFuncs[id].name) // Construct a suitable new type parameter for the result type. // The type parameter is placed in the current package so export/import diff --git a/src/cmd/compile/internal/types2/call.go b/src/cmd/compile/internal/types2/call.go index ca9772ff41d..7df4e8250e4 100644 --- a/src/cmd/compile/internal/types2/call.go +++ b/src/cmd/compile/internal/types2/call.go @@ -719,7 +719,7 @@ func (check *Checker) selector(x *operand, e *syntax.SelectorExpr, def *TypeName goto Error } if !exp.Exported() { - check.errorf(e.Sel, UnexportedName, "%s not exported by package %s", quote(sel), quote(pkg.name)) + check.errorf(e.Sel, UnexportedName, "name %s not exported by package %s", sel, pkg.name) // ok to continue } } diff --git a/src/cmd/compile/internal/types2/check.go b/src/cmd/compile/internal/types2/check.go index 3bb28b46b4e..91ad474e9df 100644 --- a/src/cmd/compile/internal/types2/check.go +++ b/src/cmd/compile/internal/types2/check.go @@ -310,7 +310,7 @@ func (check *Checker) initFiles(files []*syntax.File) { check.files = append(check.files, file) default: - check.errorf(file, MismatchedPkgName, "package %s; expected %s", quote(name), quote(pkg.name)) + check.errorf(file, MismatchedPkgName, "package %s; expected package %s", name, pkg.name) // ignore this file } } diff --git a/src/cmd/compile/internal/types2/decl.go b/src/cmd/compile/internal/types2/decl.go index 08c186ed0ab..6a266de7fd9 100644 --- a/src/cmd/compile/internal/types2/decl.go +++ b/src/cmd/compile/internal/types2/decl.go @@ -743,7 +743,7 @@ func (check *Checker) checkFieldUniqueness(base *Named) { // For historical consistency, we report the primary error on the // method, and the alt decl on the field. err := check.newError(DuplicateFieldAndMethod) - err.addf(alt, "field and method with the same name %s", quote(fld.name)) + err.addf(alt, "field and method with the same name %s", fld.name) err.addAltDecl(fld) err.report() } diff --git a/src/cmd/compile/internal/types2/format.go b/src/cmd/compile/internal/types2/format.go index 1b9cf606b77..442d219d1af 100644 --- a/src/cmd/compile/internal/types2/format.go +++ b/src/cmd/compile/internal/types2/format.go @@ -14,39 +14,6 @@ import ( "strings" ) -// quote encloses s in `' quotes, as in `foo', except for _, -// which is left alone. -// -// Use to prevent confusion when user supplied names alter the -// meaning of an error message. -// -// For instance, report -// -// duplicate method `wanted' -// -// rather than -// -// duplicate method wanted -// -// Exceptions: -// -// - don't quote _: -// `_' is ugly and not necessary -// - don't quote after a ":" as there's no need for it: -// undefined name: foo -// - don't quote if the name is used correctly in a statement: -// goto L jumps over variable declaration -// -// quote encloses s in `' quotes, as in `foo', -// except for _ which is left alone. -func quote(s string) string { - if s == "_" { - // `_' is ugly and not necessary - return s - } - return "`" + s + "'" -} - func sprintf(qf Qualifier, tpSubscripts bool, format string, args ...any) string { for i, arg := range args { switch a := arg.(type) { diff --git a/src/cmd/compile/internal/types2/issues_test.go b/src/cmd/compile/internal/types2/issues_test.go index 3d500811d4a..b4da3c0b915 100644 --- a/src/cmd/compile/internal/types2/issues_test.go +++ b/src/cmd/compile/internal/types2/issues_test.go @@ -258,11 +258,11 @@ func TestIssue22525(t *testing.T) { conf := Config{Error: func(err error) { got += err.Error() + "\n" }} typecheck(src, &conf, nil) // do not crash want := "\n" + - "p:1:27: `a' declared and not used\n" + - "p:1:30: `b' declared and not used\n" + - "p:1:33: `c' declared and not used\n" + - "p:1:36: `d' declared and not used\n" + - "p:1:39: `e' declared and not used\n" + "p:1:27: declared and not used: a\n" + + "p:1:30: declared and not used: b\n" + + "p:1:33: declared and not used: c\n" + + "p:1:36: declared and not used: d\n" + + "p:1:39: declared and not used: e\n" if got != want { t.Errorf("got: %swant: %s", got, want) } diff --git a/src/cmd/compile/internal/types2/labels.go b/src/cmd/compile/internal/types2/labels.go index 61b3ca7511e..548df7925b1 100644 --- a/src/cmd/compile/internal/types2/labels.go +++ b/src/cmd/compile/internal/types2/labels.go @@ -26,13 +26,11 @@ func (check *Checker) labels(body *syntax.BlockStmt) { name := jmp.Label.Value if alt := all.Lookup(name); alt != nil { msg = "goto %s jumps into block" - alt.(*Label).used = true // avoid another error code = JumpIntoBlock - // don't quote name here because "goto L" matches the code + alt.(*Label).used = true // avoid another error } else { msg = "label %s not declared" code = UndeclaredLabel - name = quote(name) } check.errorf(jmp.Label, code, msg, name) } @@ -41,7 +39,7 @@ func (check *Checker) labels(body *syntax.BlockStmt) { for name, obj := range all.elems { obj = resolve(name, obj) if lbl := obj.(*Label); !lbl.used { - check.softErrorf(lbl.pos, UnusedLabel, "label %s declared and not used", quote(lbl.name)) + check.softErrorf(lbl.pos, UnusedLabel, "label %s declared and not used", lbl.name) } } } @@ -137,7 +135,7 @@ func (check *Checker) blockBranches(all *Scope, parent *block, lstmt *syntax.Lab if alt := all.Insert(lbl); alt != nil { err := check.newError(DuplicateLabel) err.soft = true - err.addf(lbl.pos, "label %s already declared", quote(name)) + err.addf(lbl.pos, "label %s already declared", name) err.addAltDecl(alt) err.report() // ok to continue @@ -193,7 +191,7 @@ func (check *Checker) blockBranches(all *Scope, parent *block, lstmt *syntax.Lab } } if !valid { - check.errorf(s.Label, MisplacedLabel, "invalid break label %s", quote(name)) + check.errorf(s.Label, MisplacedLabel, "invalid break label %s", name) return } @@ -208,7 +206,7 @@ func (check *Checker) blockBranches(all *Scope, parent *block, lstmt *syntax.Lab } } if !valid { - check.errorf(s.Label, MisplacedLabel, "invalid continue label %s", quote(name)) + check.errorf(s.Label, MisplacedLabel, "invalid continue label %s", name) return } diff --git a/src/cmd/compile/internal/types2/stmt.go b/src/cmd/compile/internal/types2/stmt.go index 655d072171c..656f0e2eb2b 100644 --- a/src/cmd/compile/internal/types2/stmt.go +++ b/src/cmd/compile/internal/types2/stmt.go @@ -64,7 +64,7 @@ func (check *Checker) usage(scope *Scope) { return cmpPos(unused[i].pos, unused[j].pos) < 0 }) for _, v := range unused { - check.softErrorf(v.pos, UnusedVar, "%s declared and not used", quote(v.name)) + check.softErrorf(v.pos, UnusedVar, "declared and not used: %s", v.name) } for _, scope := range scope.children { @@ -496,7 +496,7 @@ func (check *Checker) stmt(ctxt stmtContext, s syntax.Stmt) { for _, obj := range res.vars { if alt := check.lookup(obj.name); alt != nil && alt != obj { err := check.newError(OutOfScopeResult) - err.addf(s, "result parameter %s not in scope at return", quote(obj.name)) + err.addf(s, "result parameter %s not in scope at return", obj.name) err.addf(alt, "inner declaration of %s", obj) err.report() // ok to continue diff --git a/src/cmd/compile/internal/types2/typeset.go b/src/cmd/compile/internal/types2/typeset.go index 2ce586e7a7e..0457502e393 100644 --- a/src/cmd/compile/internal/types2/typeset.go +++ b/src/cmd/compile/internal/types2/typeset.go @@ -226,8 +226,8 @@ func computeInterfaceTypeSet(check *Checker, pos syntax.Pos, ityp *Interface) *_ case explicit: if check != nil { err := check.newError(DuplicateDecl) - err.addf(atPos(pos), "duplicate method %s", quote(m.name)) - err.addf(atPos(mpos[other.(*Func)]), "other declaration of %s", quote(m.name)) + err.addf(atPos(pos), "duplicate method %s", m.name) + err.addf(atPos(mpos[other.(*Func)]), "other declaration of method %s", m.name) err.report() } default: @@ -240,8 +240,8 @@ func computeInterfaceTypeSet(check *Checker, pos syntax.Pos, ityp *Interface) *_ check.later(func() { if pos.IsKnown() && !check.allowVersion(atPos(pos), go1_14) || !Identical(m.typ, other.Type()) { err := check.newError(DuplicateDecl) - err.addf(atPos(pos), "duplicate method %s", quote(m.name)) - err.addf(atPos(mpos[other.(*Func)]), "other declaration of %s", quote(m.name)) + err.addf(atPos(pos), "duplicate method %s", m.name) + err.addf(atPos(mpos[other.(*Func)]), "other declaration of method %s", m.name) err.report() } }).describef(atPos(pos), "duplicate method check for %s", m.name) diff --git a/src/cmd/compile/internal/types2/typexpr.go b/src/cmd/compile/internal/types2/typexpr.go index eca60ada7b7..6c121ae0545 100644 --- a/src/cmd/compile/internal/types2/typexpr.go +++ b/src/cmd/compile/internal/types2/typexpr.go @@ -95,7 +95,7 @@ func (check *Checker) ident(x *operand, e *syntax.Name, def *TypeName, wantType switch obj := obj.(type) { case *PkgName: - check.errorf(e, InvalidPkgUse, "use of package %s not in selector", quote(obj.name)) + check.errorf(e, InvalidPkgUse, "use of package %s not in selector", obj.name) return case *Const: @@ -117,7 +117,7 @@ func (check *Checker) ident(x *operand, e *syntax.Name, def *TypeName, wantType case *TypeName: if !check.conf.EnableAlias && check.isBrokenAlias(obj) { - check.errorf(e, InvalidDeclCycle, "invalid use of type alias %s in recursive type (see go.dev/issue/50729)", quote(obj.name)) + check.errorf(e, InvalidDeclCycle, "invalid use of type alias %s in recursive type (see go.dev/issue/50729)", obj.name) return } x.mode = typexpr diff --git a/src/go/types/builtins.go b/src/go/types/builtins.go index 4761fbd6ef4..d92a4279f86 100644 --- a/src/go/types/builtins.go +++ b/src/go/types/builtins.go @@ -28,7 +28,7 @@ func (check *Checker) builtin(x *operand, call *ast.CallExpr, id builtinId) (_ b if hasDots(call) && id != _Append { check.errorf(dddErrPos(call), InvalidDotDotDot, - invalidOp+"invalid use of ... with built-in %s", quote(bin.name)) + invalidOp+"invalid use of ... with built-in %s", bin.name) check.use(argList...) return } @@ -213,7 +213,7 @@ func (check *Checker) builtin(x *operand, call *ast.CallExpr, id builtinId) (_ b if id == _Len { code = InvalidLen } - check.errorf(x, code, invalidArg+"%s for %s", x, quote(bin.name)) + check.errorf(x, code, invalidArg+"%s for built-in %s", x, bin.name) } return } @@ -536,7 +536,7 @@ func (check *Checker) builtin(x *operand, call *ast.CallExpr, id builtinId) (_ b case _Max, _Min: // max(x, ...) // min(x, ...) - check.verifyVersionf(call.Fun, go1_21, "%s", quote(bin.name)) + check.verifyVersionf(call.Fun, go1_21, "built-in %s", bin.name) op := token.LSS if id == _Max { @@ -579,7 +579,7 @@ func (check *Checker) builtin(x *operand, call *ast.CallExpr, id builtinId) (_ b if x.mode != constant_ { x.mode = value // A value must not be untyped. - check.assignment(x, &emptyInterface, "argument to "+quote(bin.name)) + check.assignment(x, &emptyInterface, "argument to built-in "+bin.name) if x.mode == invalid { return } @@ -644,7 +644,7 @@ func (check *Checker) builtin(x *operand, call *ast.CallExpr, id builtinId) (_ b if nargs > 0 { params = make([]Type, nargs) for i, a := range args { - check.assignment(a, nil, "argument to "+quote(predeclaredFuncs[id].name)) + check.assignment(a, nil, "argument to built-in"+predeclaredFuncs[id].name) if a.mode == invalid { return } @@ -995,7 +995,7 @@ func (check *Checker) applyTypeFunc(f func(Type) Type, x *operand, id builtinId) default: panic("unreachable") } - check.softErrorf(x, code, "%s not supported as argument to %s for go1.18 (see go.dev/issue/50937)", x, quote(predeclaredFuncs[id].name)) + check.softErrorf(x, code, "%s not supported as argument to built-in %s for go1.18 (see go.dev/issue/50937)", x, predeclaredFuncs[id].name) // Construct a suitable new type parameter for the result type. // The type parameter is placed in the current package so export/import diff --git a/src/go/types/call.go b/src/go/types/call.go index bee97a182b3..8f02ffc3972 100644 --- a/src/go/types/call.go +++ b/src/go/types/call.go @@ -722,7 +722,7 @@ func (check *Checker) selector(x *operand, e *ast.SelectorExpr, def *TypeName, w goto Error } if !exp.Exported() { - check.errorf(e.Sel, UnexportedName, "%s not exported by package %s", quote(sel), quote(pkg.name)) + check.errorf(e.Sel, UnexportedName, "name %s not exported by package %s", sel, pkg.name) // ok to continue } } diff --git a/src/go/types/check.go b/src/go/types/check.go index 789c130e1ce..1a5a41a3bb4 100644 --- a/src/go/types/check.go +++ b/src/go/types/check.go @@ -332,7 +332,7 @@ func (check *Checker) initFiles(files []*ast.File) { check.files = append(check.files, file) default: - check.errorf(atPos(file.Package), MismatchedPkgName, "package %s; expected %s", quote(name), quote(pkg.name)) + check.errorf(atPos(file.Package), MismatchedPkgName, "package %s; expected package %s", name, pkg.name) // ignore this file } } diff --git a/src/go/types/decl.go b/src/go/types/decl.go index 17dd1d41549..e9bf802cb8b 100644 --- a/src/go/types/decl.go +++ b/src/go/types/decl.go @@ -842,7 +842,7 @@ func (check *Checker) checkFieldUniqueness(base *Named) { // For historical consistency, we report the primary error on the // method, and the alt decl on the field. err := check.newError(DuplicateFieldAndMethod) - err.addf(alt, "field and method with the same name %s", quote(fld.name)) + err.addf(alt, "field and method with the same name %s", fld.name) err.addAltDecl(fld) err.report() } diff --git a/src/go/types/format.go b/src/go/types/format.go index f5edb014497..09e599c3c33 100644 --- a/src/go/types/format.go +++ b/src/go/types/format.go @@ -15,39 +15,6 @@ import ( "strings" ) -// quote encloses s in `' quotes, as in `foo', except for _, -// which is left alone. -// -// Use to prevent confusion when user supplied names alter the -// meaning of an error message. -// -// For instance, report -// -// duplicate method `wanted' -// -// rather than -// -// duplicate method wanted -// -// Exceptions: -// -// - don't quote _: -// `_' is ugly and not necessary -// - don't quote after a ":" as there's no need for it: -// undefined name: foo -// - don't quote if the name is used correctly in a statement: -// goto L jumps over variable declaration -// -// quote encloses s in `' quotes, as in `foo', -// except for _ which is left alone. -func quote(s string) string { - if s == "_" { - // `_' is ugly and not necessary - return s - } - return "`" + s + "'" -} - func sprintf(fset *token.FileSet, qf Qualifier, tpSubscripts bool, format string, args ...any) string { for i, arg := range args { switch a := arg.(type) { diff --git a/src/go/types/issues_test.go b/src/go/types/issues_test.go index 3b014787230..c99c9a9550d 100644 --- a/src/go/types/issues_test.go +++ b/src/go/types/issues_test.go @@ -266,11 +266,11 @@ func TestIssue22525(t *testing.T) { conf := Config{Error: func(err error) { got += err.Error() + "\n" }} typecheck(src, &conf, nil) // do not crash want := "\n" + - "p:1:27: `a' declared and not used\n" + - "p:1:30: `b' declared and not used\n" + - "p:1:33: `c' declared and not used\n" + - "p:1:36: `d' declared and not used\n" + - "p:1:39: `e' declared and not used\n" + "p:1:27: declared and not used: a\n" + + "p:1:30: declared and not used: b\n" + + "p:1:33: declared and not used: c\n" + + "p:1:36: declared and not used: d\n" + + "p:1:39: declared and not used: e\n" if got != want { t.Errorf("got: %swant: %s", got, want) } diff --git a/src/go/types/labels.go b/src/go/types/labels.go index c3fd437c14d..2f7f7bd20c0 100644 --- a/src/go/types/labels.go +++ b/src/go/types/labels.go @@ -27,13 +27,11 @@ func (check *Checker) labels(body *ast.BlockStmt) { name := jmp.Label.Name if alt := all.Lookup(name); alt != nil { msg = "goto %s jumps into block" - alt.(*Label).used = true // avoid another error code = JumpIntoBlock - // don't quote name here because "goto L" matches the code + alt.(*Label).used = true // avoid another error } else { msg = "label %s not declared" code = UndeclaredLabel - name = quote(name) } check.errorf(jmp.Label, code, msg, name) } @@ -42,7 +40,7 @@ func (check *Checker) labels(body *ast.BlockStmt) { for name, obj := range all.elems { obj = resolve(name, obj) if lbl := obj.(*Label); !lbl.used { - check.softErrorf(lbl, UnusedLabel, "label %s declared and not used", quote(lbl.name)) + check.softErrorf(lbl, UnusedLabel, "label %s declared and not used", lbl.name) } } } @@ -142,7 +140,7 @@ func (check *Checker) blockBranches(all *Scope, parent *block, lstmt *ast.Labele if alt := all.Insert(lbl); alt != nil { err := check.newError(DuplicateLabel) err.soft = true - err.addf(lbl, "label %s already declared", quote(name)) + err.addf(lbl, "label %s already declared", name) err.addAltDecl(alt) err.report() // ok to continue @@ -198,7 +196,7 @@ func (check *Checker) blockBranches(all *Scope, parent *block, lstmt *ast.Labele } } if !valid { - check.errorf(s.Label, MisplacedLabel, "invalid break label %s", quote(name)) + check.errorf(s.Label, MisplacedLabel, "invalid break label %s", name) return } @@ -213,7 +211,7 @@ func (check *Checker) blockBranches(all *Scope, parent *block, lstmt *ast.Labele } } if !valid { - check.errorf(s.Label, MisplacedLabel, "invalid continue label %s", quote(name)) + check.errorf(s.Label, MisplacedLabel, "invalid continue label %s", name) return } diff --git a/src/go/types/stmt.go b/src/go/types/stmt.go index 258ad1d3275..f9a733fc3a3 100644 --- a/src/go/types/stmt.go +++ b/src/go/types/stmt.go @@ -65,7 +65,7 @@ func (check *Checker) usage(scope *Scope) { return cmpPos(unused[i].pos, unused[j].pos) < 0 }) for _, v := range unused { - check.softErrorf(v, UnusedVar, "%s declared and not used", quote(v.name)) + check.softErrorf(v, UnusedVar, "declared and not used: %s", v.name) } for _, scope := range scope.children { @@ -515,7 +515,7 @@ func (check *Checker) stmt(ctxt stmtContext, s ast.Stmt) { for _, obj := range res.vars { if alt := check.lookup(obj.name); alt != nil && alt != obj { err := check.newError(OutOfScopeResult) - err.addf(s, "result parameter %s not in scope at return", quote(obj.name)) + err.addf(s, "result parameter %s not in scope at return", obj.name) err.addf(alt, "inner declaration of %s", obj) err.report() // ok to continue diff --git a/src/go/types/typeset.go b/src/go/types/typeset.go index eb37de849ab..d280bf2f5ff 100644 --- a/src/go/types/typeset.go +++ b/src/go/types/typeset.go @@ -229,8 +229,8 @@ func computeInterfaceTypeSet(check *Checker, pos token.Pos, ityp *Interface) *_T case explicit: if check != nil { err := check.newError(DuplicateDecl) - err.addf(atPos(pos), "duplicate method %s", quote(m.name)) - err.addf(atPos(mpos[other.(*Func)]), "other declaration of %s", quote(m.name)) + err.addf(atPos(pos), "duplicate method %s", m.name) + err.addf(atPos(mpos[other.(*Func)]), "other declaration of method %s", m.name) err.report() } default: @@ -243,8 +243,8 @@ func computeInterfaceTypeSet(check *Checker, pos token.Pos, ityp *Interface) *_T check.later(func() { if pos.IsValid() && !check.allowVersion(atPos(pos), go1_14) || !Identical(m.typ, other.Type()) { err := check.newError(DuplicateDecl) - err.addf(atPos(pos), "duplicate method %s", quote(m.name)) - err.addf(atPos(mpos[other.(*Func)]), "other declaration of %s", quote(m.name)) + err.addf(atPos(pos), "duplicate method %s", m.name) + err.addf(atPos(mpos[other.(*Func)]), "other declaration of method %s", m.name) err.report() } }).describef(atPos(pos), "duplicate method check for %s", m.name) diff --git a/src/go/types/typexpr.go b/src/go/types/typexpr.go index dea6d319975..b6b6881089d 100644 --- a/src/go/types/typexpr.go +++ b/src/go/types/typexpr.go @@ -95,7 +95,7 @@ func (check *Checker) ident(x *operand, e *ast.Ident, def *TypeName, wantType bo switch obj := obj.(type) { case *PkgName: - check.errorf(e, InvalidPkgUse, "use of package %s not in selector", quote(obj.name)) + check.errorf(e, InvalidPkgUse, "use of package %s not in selector", obj.name) return case *Const: @@ -117,7 +117,7 @@ func (check *Checker) ident(x *operand, e *ast.Ident, def *TypeName, wantType bo case *TypeName: if !check.conf._EnableAlias && check.isBrokenAlias(obj) { - check.errorf(e, InvalidDeclCycle, "invalid use of type alias %s in recursive type (see go.dev/issue/50729)", quote(obj.name)) + check.errorf(e, InvalidDeclCycle, "invalid use of type alias %s in recursive type (see go.dev/issue/50729)", obj.name) return } x.mode = typexpr diff --git a/src/internal/types/testdata/check/builtins0.go b/src/internal/types/testdata/check/builtins0.go index 2bfece824ea..1c0e69200eb 100644 --- a/src/internal/types/testdata/check/builtins0.go +++ b/src/internal/types/testdata/check/builtins0.go @@ -100,10 +100,10 @@ func cap1() { var s [][]byte _ = cap(s) - _ = cap(s... /* ERROR "invalid use of ... with built-in `cap'" */ ) + _ = cap(s... /* ERROR "invalid use of ... with built-in cap" */ ) var x int - _ = cap(x /* ERROR "invalid argument: x (variable of type int) for `cap'" */ ) + _ = cap(x /* ERROR "invalid argument: x (variable of type int) for built-in cap" */ ) } func cap2() { diff --git a/src/internal/types/testdata/check/decls0.go b/src/internal/types/testdata/check/decls0.go index bec2b17ada9..f9b0849dad7 100644 --- a/src/internal/types/testdata/check/decls0.go +++ b/src/internal/types/testdata/check/decls0.go @@ -137,7 +137,7 @@ type ( } I3 interface { m1() - m1 /* ERROR "duplicate method `m1'" */ () + m1 /* ERROR "duplicate method m1" */ () } I4 interface { m1(x, y, x /* ERROR "redeclared" */ float32) diff --git a/src/internal/types/testdata/check/decls2/decls2a.go b/src/internal/types/testdata/check/decls2/decls2a.go index f14b709dcf2..2362bb96ff1 100644 --- a/src/internal/types/testdata/check/decls2/decls2a.go +++ b/src/internal/types/testdata/check/decls2/decls2a.go @@ -16,7 +16,7 @@ type T1 struct{ func (T1) m() {} func (T1) m /* ERROR "already declared" */ () {} -func (x *T1) f /* ERROR "field and method with the same name `f'" */ () {} +func (x *T1) f /* ERROR "field and method with the same name f" */ () {} // Conflict between embedded field and method name, // with the embedded field being a basic type. @@ -30,7 +30,7 @@ type T1c struct { time.Time } -func (T1c) Time /* ERROR "field and method with the same name `Time'" */ () int { return 0 } +func (T1c) Time /* ERROR "field and method with the same name Time" */ () int { return 0 } // Disabled for now: LookupFieldOrMethod will find Pointer even though // it's double-declared (it would cost extra in the common case to verify diff --git a/src/internal/types/testdata/check/go1_13.go b/src/internal/types/testdata/check/go1_13.go index 3340124cfaa..cc7861d6161 100644 --- a/src/internal/types/testdata/check/go1_13.go +++ b/src/internal/types/testdata/check/go1_13.go @@ -14,10 +14,10 @@ type I interface { m() } type _ interface { m() - I // ERROR "duplicate method `m'" + I // ERROR "duplicate method m" } type _ interface { I - I // ERROR "duplicate method `m'" + I // ERROR "duplicate method m" } diff --git a/src/internal/types/testdata/check/importdecl0/importdecl0a.go b/src/internal/types/testdata/check/importdecl0/importdecl0a.go index b255c193753..4bfb61e5b4e 100644 --- a/src/internal/types/testdata/check/importdecl0/importdecl0a.go +++ b/src/internal/types/testdata/check/importdecl0/importdecl0a.go @@ -32,7 +32,7 @@ import f2 "fmt" // reflect.flag must not be visible in this package type flag int -type _ reflect.flag /* ERROR "`flag' not exported by package `reflect'" */ +type _ reflect.flag /* ERROR "name flag not exported by package reflect" */ // imported package name may conflict with local objects type reflect /* ERROR "reflect already declared" */ int diff --git a/src/internal/types/testdata/check/labels.go b/src/internal/types/testdata/check/labels.go index 0a59e9e2dc9..5948952fbe5 100644 --- a/src/internal/types/testdata/check/labels.go +++ b/src/internal/types/testdata/check/labels.go @@ -10,23 +10,23 @@ package labels var x int func f0() { -L1 /* ERROR "label `L1' declared and not used" */ : +L1 /* ERROR "label L1 declared and not used" */ : for { } -L2 /* ERROR "label `L2' declared and not used" */ : +L2 /* ERROR "label L2 declared and not used" */ : select { } -L3 /* ERROR "label `L3' declared and not used" */ : +L3 /* ERROR "label L3 declared and not used" */ : switch { } -L4 /* ERROR "label `L4' declared and not used" */ : +L4 /* ERROR "label L4 declared and not used" */ : if true { } -L5 /* ERROR "label `L5' declared and not used" */ : +L5 /* ERROR "label L5 declared and not used" */ : f0() L6: f0() -L6 /* ERROR "label `L6' already declared" */ : +L6 /* ERROR "label L6 already declared" */ : f0() if x == 20 { goto L6 @@ -35,7 +35,7 @@ L6 /* ERROR "label `L6' already declared" */ : L7: for { break L7 - break L8 /* ERROR "invalid break label `L8'" */ + break L8 /* ERROR "invalid break label L8" */ } // A label must be directly associated with a switch, select, or @@ -43,8 +43,8 @@ L7: L7a /* ERROR "declared and not used" */ : L7b: for { - break L7a /* ERROR "invalid break label `L7a'" */ - continue L7a /* ERROR "invalid continue label `L7a'" */ + break L7a /* ERROR "invalid break label L7a" */ + continue L7a /* ERROR "invalid continue label L7a" */ continue L7b } @@ -52,7 +52,7 @@ L8: for { if x == 21 { continue L8 - continue L7 /* ERROR "invalid continue label `L7'" */ + continue L7 /* ERROR "invalid continue label L7" */ } } @@ -60,23 +60,23 @@ L9: switch { case true: break L9 - defalt /* ERROR "label `defalt' declared and not used" */ : + defalt /* ERROR "label defalt declared and not used" */ : } L10: select { default: break L10 - break L9 /* ERROR "invalid break label `L9'" */ + break L9 /* ERROR "invalid break label L9" */ } goto L10a L10a: L10b: select { default: - break L10a /* ERROR "invalid break label `L10a'" */ + break L10a /* ERROR "invalid break label L10a" */ break L10b - continue L10b /* ERROR "invalid continue label `L10b'" */ + continue L10b /* ERROR "invalid continue label L10b" */ } } @@ -99,7 +99,7 @@ L2: break L2 } if x == 1 { - continue L2 /* ERROR "invalid continue label `L2'" */ + continue L2 /* ERROR "invalid continue label L2" */ } goto L2 } @@ -111,7 +111,7 @@ L3: break L3 } if x == 12 { - continue L3 /* ERROR "invalid continue label `L3'" */ + continue L3 /* ERROR "invalid continue label L3" */ } goto L3 } @@ -119,10 +119,10 @@ L3: L4: if true { if x == 13 { - break L4 /* ERROR "invalid break label `L4'" */ + break L4 /* ERROR "invalid break label L4" */ } if x == 14 { - continue L4 /* ERROR "invalid continue label `L4'" */ + continue L4 /* ERROR "invalid continue label L4" */ } if x == 15 { goto L4 @@ -132,10 +132,10 @@ L4: L5: f1() if x == 16 { - break L5 /* ERROR "invalid break label `L5'" */ + break L5 /* ERROR "invalid break label L5" */ } if x == 17 { - continue L5 /* ERROR "invalid continue label `L5'" */ + continue L5 /* ERROR "invalid continue label L5" */ } if x == 18 { goto L5 @@ -143,10 +143,10 @@ L5: for { if x == 19 { - break L1 /* ERROR "invalid break label `L1'" */ + break L1 /* ERROR "invalid break label L1" */ } if x == 20 { - continue L1 /* ERROR "invalid continue label `L1'" */ + continue L1 /* ERROR "invalid continue label L1" */ } if x == 21 { goto L1 @@ -157,10 +157,10 @@ L5: // Additional tests not in the original files. func f2() { -L1 /* ERROR "label `L1' declared and not used" */ : +L1 /* ERROR "label L1 declared and not used" */ : if x == 0 { for { - continue L1 /* ERROR "invalid continue label `L1'" */ + continue L1 /* ERROR "invalid continue label L1" */ } } } @@ -170,11 +170,11 @@ L1: L2: L3: for { - break L1 /* ERROR "invalid break label `L1'" */ - break L2 /* ERROR "invalid break label `L2'" */ + break L1 /* ERROR "invalid break label L1" */ + break L2 /* ERROR "invalid break label L2" */ break L3 - continue L1 /* ERROR "invalid continue label `L1'" */ - continue L2 /* ERROR "invalid continue label `L2'" */ + continue L1 /* ERROR "invalid continue label L1" */ + continue L2 /* ERROR "invalid continue label L2" */ continue L3 goto L1 goto L2 diff --git a/src/internal/types/testdata/check/stmt0.go b/src/internal/types/testdata/check/stmt0.go index ea161279c65..e17dd650cda 100644 --- a/src/internal/types/testdata/check/stmt0.go +++ b/src/internal/types/testdata/check/stmt0.go @@ -222,7 +222,7 @@ func selects() { ch2 := make(chan int) select { case <-ch1: - var ch2 /* ERROR "`ch2' declared and not used" */ chan bool + var ch2 /* ERROR "declared and not used: ch2" */ chan bool case i := <-ch2: print(i + 1) } @@ -394,7 +394,7 @@ func returns2() (a, b int) { { type a int return 1, 2 - return /* ERROR "`a' not in scope at return" */ + return /* ERROR "result parameter a not in scope at return" */ } } diff --git a/src/internal/types/testdata/fixedbugs/issue50779.go b/src/internal/types/testdata/fixedbugs/issue50779.go index a0a126dff01..59c0f2d6a01 100644 --- a/src/internal/types/testdata/fixedbugs/issue50779.go +++ b/src/internal/types/testdata/fixedbugs/issue50779.go @@ -17,7 +17,7 @@ type R[S any, P any] struct{} type SR = R[SS, ST] type SS interface { - NSR(any) *SR // ERROR "invalid use of type alias `SR' in recursive type" + NSR(any) *SR // ERROR "invalid use of type alias SR in recursive type" } type C interface { diff --git a/src/internal/types/testdata/fixedbugs/issue66285.go b/src/internal/types/testdata/fixedbugs/issue66285.go index 2e8bb59508f..9811fec3f35 100644 --- a/src/internal/types/testdata/fixedbugs/issue66285.go +++ b/src/internal/types/testdata/fixedbugs/issue66285.go @@ -19,7 +19,7 @@ import "io" type _ interface { Reader - Reader // ERROR "duplicate method `Read'" + Reader // ERROR "duplicate method Read" } type Reader interface { @@ -28,10 +28,10 @@ type Reader interface { type _ interface { io.Reader - Reader // ERROR "duplicate method `Read'" + Reader // ERROR "duplicate method Read" } type _ interface { io.Reader - io /* ERROR "duplicate method `Read'" */ .Reader + io /* ERROR "duplicate method Read" */ .Reader } diff --git a/test/fixedbugs/issue11361.go b/test/fixedbugs/issue11361.go index 84e71c73e60..1ef8735a525 100644 --- a/test/fixedbugs/issue11361.go +++ b/test/fixedbugs/issue11361.go @@ -8,4 +8,4 @@ package a import "fmt" // GC_ERROR "imported and not used" -const n = fmt // ERROR "fmt without selector|unexpected reference to package|use of package `fmt' not in selector" +const n = fmt // ERROR "fmt without selector|unexpected reference to package|use of package fmt not in selector" diff --git a/test/fixedbugs/issue20789.go b/test/fixedbugs/issue20789.go index cba12909577..6a0b7961f37 100644 --- a/test/fixedbugs/issue20789.go +++ b/test/fixedbugs/issue20789.go @@ -10,4 +10,4 @@ // there yet, so put it here for now. See also #20800.) package e -func([<-chan<-[func u){go // ERROR "unexpected `u'" \ No newline at end of file +func([<-chan<-[func u){go // ERROR "unexpected name u" \ No newline at end of file diff --git a/test/fixedbugs/issue21317.go b/test/fixedbugs/issue21317.go index d525f12a58a..8162548151a 100644 --- a/test/fixedbugs/issue21317.go +++ b/test/fixedbugs/issue21317.go @@ -45,8 +45,8 @@ func main() { log.Fatalf("expected cmd/compile to fail") } wantErrs := []string{ - "7:9: `n' declared and not used", - "7:12: `err' declared and not used", + "7:9: declared and not used: n", + "7:12: declared and not used: err", } outStr := string(out) for _, want := range wantErrs { diff --git a/test/fixedbugs/issue23664.go b/test/fixedbugs/issue23664.go index fe171c27d04..3b54f3cf1e9 100644 --- a/test/fixedbugs/issue23664.go +++ b/test/fixedbugs/issue23664.go @@ -9,9 +9,9 @@ package p func f() { - if f() true { // ERROR "unexpected `true', expected {" + if f() true { // ERROR "unexpected name true, expected {" } - - switch f() true { // ERROR "unexpected `true', expected {" + + switch f() true { // ERROR "unexpected name true, expected {" } } diff --git a/test/fixedbugs/issue28268.go b/test/fixedbugs/issue28268.go index b04e42555fe..263b2d1b425 100644 --- a/test/fixedbugs/issue28268.go +++ b/test/fixedbugs/issue28268.go @@ -16,8 +16,8 @@ type T struct { type E struct{} -func (T) b() {} // ERROR "field and method named b|redeclares struct field name|field and method with the same name `b'" -func (*T) E() {} // ERROR "field and method named E|redeclares struct field name|field and method with the same name `E'" +func (T) b() {} // ERROR "field and method named b|redeclares struct field name|field and method with the same name b" +func (*T) E() {} // ERROR "field and method named E|redeclares struct field name|field and method with the same name E" func _() { var x T diff --git a/test/fixedbugs/issue29870b.go b/test/fixedbugs/issue29870b.go index c7cdd8c8c77..df50b0522d6 100644 --- a/test/fixedbugs/issue29870b.go +++ b/test/fixedbugs/issue29870b.go @@ -10,5 +10,5 @@ package main func _() { - x := 7 // ERROR ".*x.* declared and not used" + x := 7 // ERROR "declared and not used" } diff --git a/test/fixedbugs/issue34329.go b/test/fixedbugs/issue34329.go index 585770d87a4..21f952cefdb 100644 --- a/test/fixedbugs/issue34329.go +++ b/test/fixedbugs/issue34329.go @@ -6,9 +6,9 @@ package p -type I interface { M() } +type I interface{ M() } type _ interface { I - I // ERROR "duplicate method `M'" + I // ERROR "duplicate method M" }