yurloc opened a new issue, #5917:
URL: https://github.com/apache/incubator-kie-drools/issues/5917
## Parent issue
- #5678
## Failing tests
- `org.drools.mvel.integrationtests.ExtendsTest#testExtendsBasic`
## Notes
Very edge case, but we should keep it working for backward compatibility
reasons. The root cause is identical to
- #5818
- #5910
Due to the usage of JavaLexer, words like `package`, `return`, etc. are no
longer `IDENTIFIER` tokens but respective keyword tokens and so they cannot be
matched in rules where `IDENTIFIER` is expected. The obvious solution is to add
`RETURN` as an alternative to the `drlIdentifier` rule. We should however think
twice and make sure this is the right approach. Another solution could be to
adapt JavaLexer and drop keywords that are not useful for DRLParser rules.
## Rule code snippet
```
when
Cheese( price < 5) from return ([c])
```
## Error output
```
### parse : ANTLR4_PARSER_ENABLED = true
line 59:32 no viable alternative at input 'from return'
14:42:29.412 [main] ERROR o.d.d.parser.antlr4.DRLParserWrapper.parse:77 -
Exception while creating PackageDescr
java.lang.IllegalStateException: ctx.lhsPattern().size() == 0 :
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhsPatternBind(DRLVisitorImpl.java:545)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhsPatternBind(DRLVisitorImpl.java:83)
at
org.drools.drl.parser.antlr4.DRLParser$LhsPatternBindContext.accept(DRLParser.java:2661)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDescrChildren(DRLVisitorImpl.java:1075)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhsUnary(DRLVisitorImpl.java:1062)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhsUnary(DRLVisitorImpl.java:83)
at
org.drools.drl.parser.antlr4.DRLParser$LhsUnaryContext.accept(DRLParser.java:2477)
at
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at
org.drools.drl.parser.antlr4.DRLParserBaseVisitor.visitLhsUnarySingle(DRLParserBaseVisitor.java:201)
at
org.drools.drl.parser.antlr4.DRLParser$LhsUnarySingleContext.accept(DRLParser.java:2110)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDescrChildren(DRLVisitorImpl.java:1075)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitLhs(DRLVisitorImpl.java:532)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitRuledef(DRLVisitorImpl.java:340)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitRuledef(DRLVisitorImpl.java:83)
at
org.drools.drl.parser.antlr4.DRLParser$RuledefContext.accept(DRLParser.java:1664)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDescrChildren(DRLVisitorImpl.java:1075)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDrlStatementdef(DRLVisitorImpl.java:166)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDrlStatementdef(DRLVisitorImpl.java:83)
at
org.drools.drl.parser.antlr4.DRLParser$DrlStatementdefContext.accept(DRLParser.java:523)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitDescrChildren(DRLVisitorImpl.java:1075)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitCompilationUnit(DRLVisitorImpl.java:102)
at
org.drools.drl.parser.antlr4.DRLVisitorImpl.visitCompilationUnit(DRLVisitorImpl.java:83)
at
org.drools.drl.parser.antlr4.DRLParser$CompilationUnitContext.accept(DRLParser.java:435)
at
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
at
org.drools.drl.parser.antlr4.DRLParserHelper.compilationUnitContext2PackageDescr(DRLParserHelper.java:91)
at
org.drools.drl.parser.antlr4.DRLParserWrapper.parse(DRLParserWrapper.java:75)
at
org.drools.drl.parser.antlr4.DRLParserWrapper.parse(DRLParserWrapper.java:55)
at org.drools.drl.parser.DrlParser.lambda$parse$2(DrlParser.java:191)
at
org.drools.drl.parser.DrlParser.compileWithAntlr4Parser(DrlParser.java:204)
at org.drools.drl.parser.DrlParser.parse(DrlParser.java:191)
at org.drools.drl.parser.DrlParser.parse(DrlParser.java:179)
at org.drools.drl.parser.DrlParser.parse(DrlParser.java:168)
at
org.drools.compiler.builder.impl.resources.DrlResourceHandler.process(DrlResourceHandler.java:55)
at
org.drools.compiler.builder.impl.PackageDescrBuilder.buildResource(PackageDescrBuilder.java:73)
at
org.drools.compiler.builder.impl.PackageDescrBuilder.build(PackageDescrBuilder.java:51)
at
org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildPackageDescr(CompositeKnowledgeBuilderImpl.java:173)
at
org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:116)
at
org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:109)
at
org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:274)
at
org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:220)
at
org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:84)
at
org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:285)
at
org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:251)
at
org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:208)
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromKieFileSystem(KieUtil.java:149)
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromKieFileSystem(KieUtil.java:134)
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromResources(KieUtil.java:121)
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromClasspathResources(KieUtil.java:187)
at
org.drools.testcoverage.common.util.KieBaseUtil.getKieBaseFromClasspathResources(KieBaseUtil.java:57)
at
org.drools.mvel.integrationtests.ExtendsTest.testExtendsBasic(ExtendsTest.java:728)
14:42:29.412 [main] ERROR
o.d.c.k.b.impl.AbstractKieProject.buildKnowledgePackages:280 - Unable to build
KieBaseModel:KieBaseModelName
[59,32]: no viable alternative at input 'from return'
[0,0]:
[0,0]: Parser returned a null Package
14:42:29.412 [main] ERROR
o.d.testcoverage.common.util.KieUtil.getKieBuilderFromKieFileSystem:165 -
KieBuilder errors: [Message [id=1, kieBase=KieBaseModelName, level=ERROR,
path=extend_rule_test.drl, line=59, column=0
text=no viable alternative at input 'from return'], Message [id=2,
kieBase=KieBaseModelName, level=ERROR, path=extend_rule_test.drl, line=0,
column=0
text=], Message [id=3, kieBase=KieBaseModelName, level=ERROR,
path=extend_rule_test.drl, line=0, column=0
text=Parser returned a null Package]]
java.lang.AssertionError: [[Message [id=1, kieBase=KieBaseModelName,
level=ERROR, path=extend_rule_test.drl, line=59, column=0
text=no viable alternative at input 'from return'], Message [id=2,
kieBase=KieBaseModelName, level=ERROR, path=extend_rule_test.drl, line=0,
column=0
text=], Message [id=3, kieBase=KieBaseModelName, level=ERROR,
path=extend_rule_test.drl, line=0, column=0
text=Parser returned a null Package]]]
Expecting empty but was: [Message [id=1, kieBase=KieBaseModelName,
level=ERROR, path=extend_rule_test.drl, line=59, column=0
text=no viable alternative at input 'from return'],
Message [id=2, kieBase=KieBaseModelName, level=ERROR,
path=extend_rule_test.drl, line=0, column=0
text=],
Message [id=3, kieBase=KieBaseModelName, level=ERROR,
path=extend_rule_test.drl, line=0, column=0
text=Parser returned a null Package]]
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromKieFileSystem(KieUtil.java:169)
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromKieFileSystem(KieUtil.java:134)
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromResources(KieUtil.java:121)
at
org.drools.testcoverage.common.util.KieUtil.getKieBuilderFromClasspathResources(KieUtil.java:187)
at
org.drools.testcoverage.common.util.KieBaseUtil.getKieBaseFromClasspathResources(KieBaseUtil.java:57)
at
org.drools.mvel.integrationtests.ExtendsTest.testExtendsBasic(ExtendsTest.java:728)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]