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]