swagger-api / swagger-api/swagger-codegen
[GO] Generator creates identifiers starting with a number
Nobody has claimed this yet.
- Dominant language
- Mustache
- Stars
- 17.8k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
Description
When calling the code generation with my yaml, identifiers are created that start with a number. However, the go compiler interprets them wrongly.
Example code:
/*
* API Documentation
*
* Source of truth and network automation platform
*
* API version: 2.2.5 (2.2)
* Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
*/
package nautobot
type PortTypeChoices string
// List of PortTypeChoices
const (
8P8C__PortTypeChoices PortTypeChoices = "8p8c"
8P6C__PortTypeChoices PortTypeChoices = "8p6c"
8P4C__PortTypeChoices PortTypeChoices = "8p4c"
8P2C__PortTypeChoices PortTypeChoices = "8p2c"
6P6C__PortTypeChoices PortTypeChoices = "6p6c"
6P4C__PortTypeChoices PortTypeChoices = "6p4c"
6P2C__PortTypeChoices PortTypeChoices = "6p2c"
4P4C__PortTypeChoices PortTypeChoices = "4p4c"
4P2C__PortTypeChoices PortTypeChoices = "4p2c"
GG45_PortTypeChoices PortTypeChoices = "gg45"
TERA_4P_PortTypeChoices PortTypeChoices = "tera-4p"
TERA_2P_PortTypeChoices PortTypeChoices = "tera-2p"
TERA_1P_PortTypeChoices PortTypeChoices = "tera-1p"
110PUNCH__PortTypeChoices PortTypeChoices = "110-punch"
BNC_PortTypeChoices PortTypeChoices = "bnc"
F_PortTypeChoices PortTypeChoices = "f"
N_PortTypeChoices PortTypeChoices = "n"
MRJ21_PortTypeChoices PortTypeChoices = "mrj21"
FC_PortTypeChoices PortTypeChoices = "fc"
LC_PortTypeChoices PortTypeChoices = "lc"
LC_PC_PortTypeChoices PortTypeChoices = "lc-pc"
LC_UPC_PortTypeChoices PortTypeChoices = "lc-upc"
LC_APC_PortTypeChoices PortTypeChoices = "lc-apc"
LSH_PortTypeChoices PortTypeChoices = "lsh"
LSH_PC_PortTypeChoices PortTypeChoices = "lsh-pc"
LSH_UPC_PortTypeChoices PortTypeChoices = "lsh-upc"
LSH_APC_PortTypeChoices PortTypeChoices = "lsh-apc"
LX5_PortTypeChoices PortTypeChoices = "lx5"
LX5_PC_PortTypeChoices PortTypeChoices = "lx5-pc"
LX5_UPC_PortTypeChoices PortTypeChoices = "lx5-upc"
LX5_APC_PortTypeChoices PortTypeChoices = "lx5-apc"
MPO_PortTypeChoices PortTypeChoices = "mpo"
MTRJ_PortTypeChoices PortTypeChoices = "mtrj"
SC_PortTypeChoices PortTypeChoices = "sc"
SC_PC_PortTypeChoices PortTypeChoices = "sc-pc"
SC_UPC_PortTypeChoices PortTypeChoices = "sc-upc"
SC_APC_PortTypeChoices PortTypeChoices = "sc-apc"
ST_PortTypeChoices PortTypeChoices = "st"
CS_PortTypeChoices PortTypeChoices = "cs"
SN_PortTypeChoices PortTypeChoices = "sn"
SMA_905_PortTypeChoices PortTypeChoices = "sma-905"
SMA_906_PortTypeChoices PortTypeChoices = "sma-906"
URM_P2_PortTypeChoices PortTypeChoices = "urm-p2"
URM_P4_PortTypeChoices PortTypeChoices = "urm-p4"
URM_P8_PortTypeChoices PortTypeChoices = "urm-p8"
SPLICE_PortTypeChoices PortTypeChoices = "splice"
OTHER_PortTypeChoices PortTypeChoices = "other"
)
E.g. the 8P is interpreted as exponent, even though it's the type.
These are the errors I see with this file:
oapi-1 | ./model_port_type_choices.go:15:2: syntax error: unexpected literal 8P8, expected name
oapi-1 | ./model_port_type_choices.go:15:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:16:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:17:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:18:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:19:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:20:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:21:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:22:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:23:3: 'P' exponent requires hexadecimal mantissa
oapi-1 | ./model_port_type_choices.go:28:5: 'P' exponent requires hexadecimal mantissa
Swagger-codegen version
3.0.58
Command line used for generation
java -jar swagger-codegen-cli.jar generate -i swagger.yaml -l go -o /client -DpackageName=nautobot
Steps to reproduce
clone this repo/go to this branch:
https://github.com/TobiPeterG/go-nautobot/tree/switch-swagger-generator
find swagger.yaml in api folder
generate code using swagger
Suggest a fix/enhancement
Identifiers starting with a number could be prefixed.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with api/swagger.yaml in the linked reproduction branch, generate the Go client with the documented Swagger Codegen command, and inspect model_port_type_choices.go. Done means identifiers derived from numeric-leading values are valid Go identifiers and the generated file compiles without the reported syntax errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, java
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100