summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-01 11:23:04 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-01 11:23:04 +0100
commitcb76da7ffcf550c68103fe864defaa489e970eb0 (patch)
treec3acf296c7f384c5a04bcbeb226b9ee51e41fde1 /src
parent2a69c9d95420784198251ab23a4828775e901f44 (diff)
Check for long strings
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java16
1 files changed, 15 insertions, 1 deletions
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)))
))
));