You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2021/01/26 14:22:43 UTC
[groovy] branch master updated: Validate unknown statement in GINQ
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 3f12afc Validate unknown statement in GINQ
3f12afc is described below
commit 3f12afc8c4100366415957c940986da1e4cc96d1
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue Jan 26 22:22:15 2021 +0800
Validate unknown statement in GINQ
---
.../org/apache/groovy/ginq/dsl/GinqAstBuilder.java | 10 +++++-----
.../org/apache/groovy/ginq/GinqErrorTest.groovy | 22 ++++++++++++++++++++++
2 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqAstBuilder.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqAstBuilder.java
index 47daa05..9d36427 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqAstBuilder.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqAstBuilder.java
@@ -102,14 +102,14 @@ public class GinqAstBuilder extends CodeVisitorSupport implements SyntaxErrorRep
}
astNode.visit(this);
- return getGinqExpression();
+ return getGinqExpression(astNode);
}
- public GinqExpression getGinqExpression() {
- if (null == latestGinqExpression && !ginqExpressionStack.isEmpty()) {
- GinqExpression latestGinqExpression = ginqExpressionStack.peek();
+ private GinqExpression getGinqExpression(ASTNode astNode) {
+ if (null == latestGinqExpression) {
+ ASTNode node = ginqExpressionStack.isEmpty() ? astNode : ginqExpressionStack.peek();
this.collectSyntaxError(new GinqSyntaxError("`select` clause is missing",
- latestGinqExpression.getLineNumber(), latestGinqExpression.getColumnNumber()));
+ node.getLineNumber(), node.getColumnNumber()));
}
latestGinqExpression.visit(new GinqAstBaseVisitor() {
diff --git a/subprojects/groovy-ginq/src/test/groovy/org/apache/groovy/ginq/GinqErrorTest.groovy b/subprojects/groovy-ginq/src/test/groovy/org/apache/groovy/ginq/GinqErrorTest.groovy
index 53c0200..de60e91 100644
--- a/subprojects/groovy-ginq/src/test/groovy/org/apache/groovy/ginq/GinqErrorTest.groovy
+++ b/subprojects/groovy-ginq/src/test/groovy/org/apache/groovy/ginq/GinqErrorTest.groovy
@@ -576,4 +576,26 @@ class GinqErrorTest {
assert err.toString().contains('Invalid option: zzz. (supported options: [immediate, abort]) @ line 2, column 26.')
}
+
+ @Test
+ void "testGinq - unknown statement - 1"() {
+ def err = shouldFail '''\
+ GQ {
+ hello
+ }
+ '''
+
+ assert err.toString().contains('`select` clause is missing @ line 2, column 17.')
+ }
+
+ @Test
+ void "testGinq - unknown statement - 2"() {
+ def err = shouldFail '''\
+ GQ {
+ hello world
+ }
+ '''
+
+ assert err.toString().contains('`select` clause is missing @ line 2, column 17.')
+ }
}