diff --git a/codegen/goify.go b/codegen/goify.go index b6caae5549..b5348a0c2d 100644 --- a/codegen/goify.go +++ b/codegen/goify.go @@ -1,6 +1,8 @@ package codegen import ( + "go/doc" + "go/token" "strings" "goa.design/goa/v3/expr" @@ -54,76 +56,8 @@ func UnionValTypeName(unionName string) string { // fixReservedGo appends an underscore on to Go reserved keywords. func fixReservedGo(w string) string { - if reservedGo[w] { + if doc.IsPredeclared(w) || token.IsKeyword(w) { w += "_" } return w } - -var ( - // reserved golang keywords and package names - reservedGo = map[string]bool{ - // predeclared types - "bool": true, - "byte": true, - "complex128": true, - "complex64": true, - "float32": true, - "float64": true, - "int": true, - "int16": true, - "int32": true, - "int64": true, - "int8": true, - "rune": true, - "string": true, - "uint": true, - "uint16": true, - "uint32": true, - "uint64": true, - "uint8": true, - "uintptr": true, - - // reserved keywords - "break": true, - "case": true, - "chan": true, - "const": true, - "continue": true, - "default": true, - "defer": true, - "delete": true, - "else": true, - "fallthrough": true, - "for": true, - "func": true, - "go": true, - "goto": true, - "if": true, - "import": true, - "interface": true, - "map": true, - "package": true, - "range": true, - "return": true, - "select": true, - "struct": true, - "switch": true, - "type": true, - "var": true, - - // predeclared constants - "true": true, - "false": true, - "iota": true, - "nil": true, - - // stdlib and goa packages used by generated code - "fmt": true, - "http": true, - "json": true, - "os": true, - "url": true, - "time": true, - } -) diff --git a/http/codegen/testdata/result_decode_functions.go b/http/codegen/testdata/result_decode_functions.go index 4d91cfa90e..6e08aae07d 100644 --- a/http/codegen/testdata/result_decode_functions.go +++ b/http/codegen/testdata/result_decode_functions.go @@ -789,15 +789,15 @@ func DecodeMethodAResponse(decoder func(*http.Response) goahttp.Decoder, restore return res, nil case http.StatusBadRequest: var ( - error string + error_ string numOccur *int err error ) - errorRaw := resp.Header.Get("X-Application-Error") - if errorRaw == "" { + error_Raw := resp.Header.Get("X-Application-Error") + if error_Raw == "" { err = goa.MergeErrors(err, goa.MissingFieldError("error", "header")) } - error = errorRaw + error_ = error_Raw { numOccurRaw := resp.Header.Get("X-Occur") if numOccurRaw != "" { @@ -817,7 +817,7 @@ func DecodeMethodAResponse(decoder func(*http.Response) goahttp.Decoder, restore if err != nil { return nil, goahttp.ErrValidationError("ValidateErrorResponseType", "MethodA", err) } - return nil, NewMethodASomeError(error, numOccur) + return nil, NewMethodASomeError(error_, numOccur) default: body, _ := io.ReadAll(resp.Body) return nil, goahttp.ErrInvalidResponse("ValidateErrorResponseType", "MethodA", resp.StatusCode, string(body))