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/11/14 16:21:40 UTC
[groovy] branch master updated: Attach `@CompileStatic` to some transformation classes
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 31965a1 Attach `@CompileStatic` to some transformation classes
31965a1 is described below
commit 31965a1d2f460a188e7b0d5bc8229f2b3e4894a3
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Nov 15 00:21:12 2021 +0800
Attach `@CompileStatic` to some transformation classes
---
.../ConditionalInterruptibleASTTransformation.groovy | 4 +++-
.../TimedInterruptibleASTTransformation.groovy | 18 +++++++++++-------
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/main/groovy/org/codehaus/groovy/transform/ConditionalInterruptibleASTTransformation.groovy b/src/main/groovy/org/codehaus/groovy/transform/ConditionalInterruptibleASTTransformation.groovy
index dd97512..187ed93 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/ConditionalInterruptibleASTTransformation.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/ConditionalInterruptibleASTTransformation.groovy
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.transform
+import groovy.transform.CompileStatic
import groovy.transform.ConditionalInterrupt
import org.codehaus.groovy.ast.AnnotatedNode
import org.codehaus.groovy.ast.AnnotationNode
@@ -42,6 +43,7 @@ import org.codehaus.groovy.control.CompilePhase
*
* @see groovy.transform.ConditionalInterrupt* @since 1.8.0
*/
+@CompileStatic
@GroovyASTTransformation(phase = CompilePhase.CANONICALIZATION)
class ConditionalInterruptibleASTTransformation extends AbstractInterruptibleASTTransformation {
@@ -59,7 +61,7 @@ class ConditionalInterruptibleASTTransformation extends AbstractInterruptibleAST
@SuppressWarnings('Instanceof')
protected void setupTransform(AnnotationNode node) {
super.setupTransform(node)
- def member = node.getMember('value')
+ ClosureExpression member = (ClosureExpression) node.getMember('value')
if (!member || !(member instanceof ClosureExpression)) internalError("Expected closure value for annotation parameter 'value'. Found $member")
conditionNode = member
conditionMethod = 'conditionalTransform' + node.hashCode() + '$condition'
diff --git a/src/main/groovy/org/codehaus/groovy/transform/TimedInterruptibleASTTransformation.groovy b/src/main/groovy/org/codehaus/groovy/transform/TimedInterruptibleASTTransformation.groovy
index 4cf9168..592d9e6 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/TimedInterruptibleASTTransformation.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/TimedInterruptibleASTTransformation.groovy
@@ -19,6 +19,7 @@
package org.codehaus.groovy.transform
import groovy.transform.AutoFinal
+import groovy.transform.CompileStatic
import groovy.transform.TimedInterrupt
import org.codehaus.groovy.ast.ASTNode
import org.codehaus.groovy.ast.AnnotatedNode
@@ -36,6 +37,7 @@ import org.codehaus.groovy.ast.expr.Expression
import org.codehaus.groovy.ast.stmt.BlockStatement
import org.codehaus.groovy.ast.stmt.DoWhileStatement
import org.codehaus.groovy.ast.stmt.ForStatement
+import org.codehaus.groovy.ast.stmt.LoopingStatement
import org.codehaus.groovy.ast.stmt.Statement
import org.codehaus.groovy.ast.stmt.WhileStatement
import org.codehaus.groovy.control.CompilePhase
@@ -68,7 +70,9 @@ import static org.objectweb.asm.Opcodes.ACC_PRIVATE
* @see groovy.transform.ThreadInterrupt
* @since 1.8.0
*/
-@AutoFinal @GroovyASTTransformation(phase = CompilePhase.CANONICALIZATION)
+@CompileStatic
+@AutoFinal
+@GroovyASTTransformation(phase = CompilePhase.CANONICALIZATION)
class TimedInterruptibleASTTransformation extends AbstractASTTransformation {
private static final ClassNode MY_TYPE = make(TimedInterrupt)
@@ -80,8 +84,8 @@ class TimedInterruptibleASTTransformation extends AbstractASTTransformation {
@SuppressWarnings('Instanceof')
void visit(ASTNode[] nodes, SourceUnit source) {
init(nodes, source)
- AnnotationNode node = nodes[0]
- AnnotatedNode annotatedNode = nodes[1]
+ AnnotationNode node = (AnnotationNode) nodes[0]
+ AnnotatedNode annotatedNode = (AnnotatedNode) nodes[1]
if (!MY_TYPE.equals(node.classNode)) {
internalError("Transformation called from wrong annotation: $node.classNode.name")
}
@@ -167,7 +171,7 @@ class TimedInterruptibleASTTransformation extends AbstractASTTransformation {
private final String basename
@SuppressWarnings('ParameterCount')
- TimedInterruptionVisitor(SourceUnit source, checkOnMethodStart, applyToAllClasses, applyToAllMembers, maximum, unit, thrown, hash) {
+ TimedInterruptionVisitor(SourceUnit source, checkOnMethodStart, applyToAllClasses, applyToAllMembers, maximum, Expression unit, ClassNode thrown, hash) {
this.sourceUnit = source
this.checkOnMethodStart = checkOnMethodStart
this.applyToAllClasses = applyToAllClasses
@@ -213,7 +217,7 @@ class TimedInterruptibleASTTransformation extends AbstractASTTransformation {
* @return a {@link BlockStatement block statement} which first element is for checking interruption, and the
* second one the statement to be wrapped.
*/
- private wrapBlock(statement) {
+ private BlockStatement wrapBlock(Statement statement) {
block().tap {
addStatement(createInterruptStatement())
addStatement(statement)
@@ -286,8 +290,8 @@ class TimedInterruptibleASTTransformation extends AbstractASTTransformation {
* Shortcut method which avoids duplicating code for every type of loop.
* Actually wraps the loopBlock of different types of loop statements.
*/
- private visitLoop(loopStatement) {
- def statement = loopStatement.loopBlock
+ private visitLoop(LoopingStatement loopStatement) {
+ Statement statement = loopStatement.loopBlock
loopStatement.loopBlock = wrapBlock(statement)
}