From 9e1972bb1d3a4f1e3f47c87613f4050feada0146 Mon Sep 17 00:00:00 2001 From: Julian G <23147553+JulianGmp@users.noreply.github.com> Date: Mon, 7 Feb 2022 05:21:11 +0100 Subject: [PATCH] fix float literals in C++ Pistache codegen (#11483) --- .../codegen/languages/CppPistacheServerCodegen.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index 4ab177e21a3..886060e702c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -408,7 +408,15 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { } else if (ModelUtils.isNumberSchema(p)) { if (ModelUtils.isFloatSchema(p)) { // float if (p.getDefault() != null) { - return p.getDefault().toString() + "f"; + // We have to ensure that our default value has a decimal point, + // because in C++ the 'f' suffix is not valid on integer literals + // i.e. 374.0f is a valid float but 374 isn't. + String defaultStr = p.getDefault().toString(); + if (defaultStr.indexOf('.') < 0) { + return defaultStr + ".0f"; + } else { + return defaultStr + "f"; + } } else { return "0.0f"; }