From 03c29e72c66c2a9e91e9e978c9ae59729c8778f6 Mon Sep 17 00:00:00 2001 From: Per Hallgren Date: Wed, 30 Oct 2024 07:20:25 +0100 Subject: [PATCH] fix(go): only import `reflect` when using it (#19967) The api.mustache template only uses the reflect package if there is a query parameter which `isCollectionFormatMulti`. The import for the reflect package is however added if _any_ parameter is `isCollectionFormatMulti`. If the parameter which `isCollectionFormatMulti` e.g. is in the body instead of the query, this leads to the import being part of the generated code but not used and the code does not compile. This updates reworks the import handling for the `reflect` package so that it is only added if there is a query parameter which `isCollectionFormatMulti`. Co-authored-by: Per Hallgren --- .../codegen/languages/AbstractGoCodegen.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index a0624b2544c..3bc48fb57de 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -558,12 +558,6 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege addedTimeImport = true; } - // import "reflect" package if the parameter is collectionFormat=multi - if (!addedReflectImport && param.isCollectionFormatMulti) { - imports.add(createMapping("import", "reflect")); - addedReflectImport = true; - } - // set x-exportParamName char nameFirstChar = param.paramName.charAt(0); if (Character.isUpperCase(nameFirstChar)) { @@ -577,6 +571,14 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege } } + for (CodegenParameter param : operation.queryParams) { + // import "reflect" package if the parameter is collectionFormat=multi + if (!addedReflectImport && param.isCollectionFormatMulti) { + imports.add(createMapping("import", "reflect")); + addedReflectImport = true; + } + } + setExportParameterName(operation.queryParams); setExportParameterName(operation.formParams); setExportParameterName(operation.headerParams);