From fa2787a6a98815b040401bc772d91228c4e09b46 Mon Sep 17 00:00:00 2001 From: farmerworking Date: Fri, 3 Nov 2023 15:28:27 +0800 Subject: [PATCH] Empty ListExpression#genCode will throw npe (#1063) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix and ut * change --------- Co-authored-by: 陈亚东 --- .../src/main/java/io/fury/codegen/Expression.java | 4 ++++ .../src/test/java/io/fury/codegen/ExpressionTest.java | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/java/fury-core/src/main/java/io/fury/codegen/Expression.java b/java/fury-core/src/main/java/io/fury/codegen/Expression.java index 90c300386f..f2ca150d16 100644 --- a/java/fury-core/src/main/java/io/fury/codegen/Expression.java +++ b/java/fury-core/src/main/java/io/fury/codegen/Expression.java @@ -172,6 +172,10 @@ public TypeToken type() { @Override public ExprCode doGenCode(CodegenContext ctx) { + if (last == null) { + return new ExprCode(null, null, null); + } + StringBuilder codeBuilder = new StringBuilder(); boolean hasCode = false; for (Expression expr : expressions) { diff --git a/java/fury-core/src/test/java/io/fury/codegen/ExpressionTest.java b/java/fury-core/src/test/java/io/fury/codegen/ExpressionTest.java index 72fdb4756c..730c66dff0 100644 --- a/java/fury-core/src/test/java/io/fury/codegen/ExpressionTest.java +++ b/java/fury-core/src/test/java/io/fury/codegen/ExpressionTest.java @@ -17,7 +17,9 @@ package io.fury.codegen; import static io.fury.type.TypeUtils.PRIMITIVE_SHORT_TYPE; +import static org.testng.Assert.assertNull; +import io.fury.codegen.Expression.ListExpression; import io.fury.codegen.Expression.Literal; import io.fury.codegen.Expression.Reference; import io.fury.codegen.Expression.Return; @@ -64,4 +66,13 @@ public void testIfExpression() { Assert.assertEquals(code, expected); } } + + @Test + public void testListExpression() { + { + ListExpression exp = new ListExpression(); + String code = exp.genCode(new CodegenContext()).code(); + assertNull(code); + } + } }