From cb76da7ffcf550c68103fe864defaa489e970eb0 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 1 Aug 2026 11:23:04 +0100 Subject: Check for long strings --- .../javatransient0/JavaTransient0Generator.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java index 2dff24b..78cbca4 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java @@ -362,13 +362,27 @@ public class JavaTransient0Generator implements Generator { NativeTypes.INT_64 )); + statements.add(new JavaIfStatement( + new JavaBinaryOperation( + JavaBinaryOperator.GREATER_THAN, + new JavaRef(bytesLengthVariableName), + new JavaStaticFieldAccess(JavaTypeRef.INT_BOXED, JavaIdentifier.of("MAX_VALUE")) + ), + new JavaBlock(List.of( + new JavaThrowStatement(new JavaNewExpression( + JavaTypeRef.IO_EXCEPTION, + List.of(new JavaStringLiteral("Strings longer than Integer.MAX_VALUE are not supported")) + )) + )), + new JavaBlock(List.of()) + )); + statements.add(new JavaLocalVariableDeclaration( Optional.empty(), bytesVariableName, Optional.of(new JavaMethodCall( new JavaRef(INPUT_STREAM_NAME), JavaIdentifier.of("readNBytes"), - // TODO: handle very long strings List.of(new JavaCast(JavaTypeRef.INT, new JavaRef(bytesLengthVariableName))) )) )); -- cgit v1.2.3