This is an automated email from the ASF dual-hosted git repository.

tkobayas pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git


The following commit(s) were added to refs/heads/main by this push:
     new 7e8114bad1 [incubator-kie-drools-6696] DRL10 rejects diamond operators 
in function body (#6697)
7e8114bad1 is described below

commit 7e8114bad15340d25ceb19e84e98ff4ecf24ba0e
Author: Toshiya Kobayashi <[email protected]>
AuthorDate: Fri May 8 10:51:02 2026 +0900

    [incubator-kie-drools-6696] DRL10 rejects diamond operators in function 
body (#6697)
---
 .../org/drools/drl/parser/antlr4/MiscDRLParserTest.java | 17 +++++++++++++++++
 .../org/drools/drl/parser/antlr4/DRL10Expressions.g4    | 16 +++++++++++++---
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git 
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
index f4ee2ae602..90cde15438 100644
--- 
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
+++ 
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java
@@ -4037,6 +4037,23 @@ class MiscDRLParserTest {
         assertThat(function.getBody()).isEqualToIgnoringWhitespace("String 
result = s + \"*\"; return result;");
     }
 
+    @Test
+    void functionWithDiamondOperatorInLocalVariableDeclaration() {
+        final String text = "function List<String> testOfGenerics(String a) 
{\n" +
+                "    List<String> results = new ArrayList<>();\n" +
+                "    return results;\n" +
+                "}";
+        PackageDescr packageDescr = parseAndGetPackageDescr(text);
+
+        FunctionDescr function = packageDescr.getFunctions().get(0);
+
+        assertThat(function.getName()).isEqualTo("testOfGenerics");
+        
assertThat(function.getReturnType()).isEqualToIgnoringWhitespace("List<String>");
+        assertThat(function.getParameterTypes().get(0)).isEqualTo("String");
+        assertThat(function.getParameterNames().get(0)).isEqualTo("a");
+        
assertThat(function.getBody()).isEqualToIgnoringWhitespace("List<String> 
results = new ArrayList<>(); return results;");
+    }
+
     @Test
     void lhsPatternAnnotation() {
         final String text = "package org.drools\n" +
diff --git 
a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRL10Expressions.g4
 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRL10Expressions.g4
index 36d71f819a..34483957e3 100644
--- 
a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRL10Expressions.g4
+++ 
b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRL10Expressions.g4
@@ -801,14 +801,14 @@ creator
     ;
 
 createdName
-    :  drlIdentifier typeArguments?
-        ( DOT drlIdentifier typeArguments?)*
+    :  drlIdentifier typeArgumentsOrDiamond?
+        ( DOT drlIdentifier typeArgumentsOrDiamond? )*
         |      primitiveType
     ;
 
 // Old parser cannot parse innerCreator with selector expression (outer.new 
InnerClass() != null) TODO: Delete this after investigation
 innerCreator
-    :  {!(helper.validateIdentifierKey(DroolsSoftKeywords.INSTANCEOF))}? 
drlIdentifier classCreatorRestExpr
+    :  {!(helper.validateIdentifierKey(DroolsSoftKeywords.INSTANCEOF))}? 
drlIdentifier nonWildcardTypeArgumentsOrDiamond? classCreatorRestExpr
     ;
 
 arrayCreatorRest
@@ -839,6 +839,16 @@ nonWildcardTypeArguments
     :  LT typeList GT
     ;
 
+typeArgumentsOrDiamond
+    : LT GT
+    | typeArguments
+    ;
+
+nonWildcardTypeArgumentsOrDiamond
+    : LT GT
+    | nonWildcardTypeArguments
+    ;
+
 explicitGenericInvocationSuffix
     :  super_key superSuffix
     |          drlIdentifier arguments


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to