summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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)))
))
));