From 467e93a3364f27fdf87529de57855a42368734d5 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 25 Aug 2025 13:06:55 +0200 Subject: [PATCH] [jOOQ/jOOQ#18910] KotlinGenerator produces bad code when sequences reference Long.MIN_VALUE with their flags --- .../main/java/org/jooq/codegen/JavaGenerator.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index 7d22bac39d..9501f74a12 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -9343,17 +9343,26 @@ public class JavaGenerator extends AbstractGenerator { if (bitLength > Long.SIZE - 1) return "new java.math.BigInteger(\"" + bi.toString() + "\")"; else if (bitLength > Integer.SIZE - 1) - return Long.toString(n.longValue()) + 'L'; + return longLiteral(n.longValue()); else return Integer.toString(n.intValue()); } else if (n instanceof Integer || n instanceof Short || n instanceof Byte) return Integer.toString(n.intValue()); else if (n != null) - return Long.toString(n.longValue()) + 'L'; + return longLiteral(n.longValue()); return "null"; } + private String longLiteral(long n) { + + // [#18910] Work around a Kotlin compiler bug ("design flaw") + if (kotlin && n == Long.MIN_VALUE) + return "Long.MIN_VALUE"; + else + return Long.toString(n) + 'L'; + } + protected void generateGlobalObjectNames(Definition container, Class objectType) { final List children = children(container, objectType);