This is an automated email from the ASF dual-hosted git repository.
paulk 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 d8890e9ae1 remove unchecked/style warnings
d8890e9ae1 is described below
commit d8890e9ae135715af36b036f08801442b37f0ad0
Author: Paul King <[email protected]>
AuthorDate: Thu Apr 14 12:28:30 2022 +1000
remove unchecked/style warnings
---
.../ast/visitor/AnnotationProcessorVisitor.java | 106 ++++++++++-----------
1 file changed, 52 insertions(+), 54 deletions(-)
diff --git
a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ast/visitor/AnnotationProcessorVisitor.java
b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ast/visitor/AnnotationProcessorVisitor.java
index cba9df3a61..b09df6191c 100644
---
a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ast/visitor/AnnotationProcessorVisitor.java
+++
b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ast/visitor/AnnotationProcessorVisitor.java
@@ -60,6 +60,7 @@ import static
org.codehaus.groovy.ast.ClassHelper.isPrimitiveVoid;
*/
public class AnnotationProcessorVisitor extends BaseVisitor {
+ private static final String DO_CALL = "doCall";
private ProcessingContextInformation pci;
public AnnotationProcessorVisitor(final SourceUnit sourceUnit, final
ReaderSource source, final ProcessingContextInformation pci) {
@@ -73,7 +74,7 @@ public class AnnotationProcessorVisitor extends BaseVisitor {
public void visitClass(ClassNode type) {
handleClassNode(type);
- List<MethodNode> methodNodes = new ArrayList<MethodNode>();
+ List<MethodNode> methodNodes = new ArrayList<>();
methodNodes.addAll(type.getMethods());
methodNodes.addAll(type.getDeclaredConstructors());
@@ -81,7 +82,7 @@ public class AnnotationProcessorVisitor extends BaseVisitor {
if (!CandidateChecks.isClassInvariantCandidate(type, methodNode)
&& !CandidateChecks.isPreOrPostconditionCandidate(type, methodNode))
continue;
- handleMethodNode(methodNode,
AnnotationUtils.hasMetaAnnotations(methodNode,
ContractElement.class.getName()));
+ handleMethodAnnotations(methodNode,
AnnotationUtils.hasMetaAnnotations(methodNode,
ContractElement.class.getName()));
}
// visit all interfaces of this class
@@ -94,7 +95,7 @@ public class AnnotationProcessorVisitor extends BaseVisitor {
if (!Modifier.isAbstract(superClass.getModifiers())) return;
for (ClassNode interfaceClassNode : superClass.getInterfaces()) {
- List<MethodNode> methodNodes = new
ArrayList<MethodNode>(interfaceClassNode.getMethods());
+ List<MethodNode> methodNodes = new
ArrayList<>(interfaceClassNode.getMethods());
for (MethodNode interfaceMethodNode : methodNodes) {
final List<AnnotationNode> annotationNodes =
AnnotationUtils.hasMetaAnnotations(interfaceMethodNode,
ContractElement.class.getName());
@@ -109,14 +110,14 @@ public class AnnotationProcessorVisitor extends
BaseVisitor {
MethodNode implementationInOriginClassNode =
origin.getMethod(interfaceMethodNode.getName(),
interfaceMethodNode.getParameters());
if (implementationInOriginClassNode == null) continue;
- handleMethodNode(implementationInOriginClassNode,
annotationNodes);
+ handleMethodAnnotations(implementationInOriginClassNode,
annotationNodes);
}
}
}
private void visitInterfaces(final ClassNode classNode, final ClassNode[]
interfaces) {
for (ClassNode interfaceClassNode : interfaces) {
- List<MethodNode> methodNodes = new
ArrayList<MethodNode>(interfaceClassNode.getMethods());
+ List<MethodNode> methodNodes = new
ArrayList<>(interfaceClassNode.getMethods());
// @ContractElement annotations are by now only supported on
method interfaces
for (MethodNode interfaceMethodNode : methodNodes) {
@@ -142,9 +143,9 @@ public class AnnotationProcessorVisitor extends BaseVisitor
{
MethodCallExpression doCall = callX(
ctorX(closureClassExpression.getType(),
args(VariableExpression.THIS_EXPRESSION, VariableExpression.THIS_EXPRESSION)),
- "doCall"
+ DO_CALL
);
-
doCall.setMethodTarget(closureClassExpression.getType().getMethods("doCall").get(0));
+
doCall.setMethodTarget(closureClassExpression.getType().getMethods(DO_CALL).get(0));
final BooleanExpression booleanExpression = boolX(doCall);
booleanExpression.setSourcePosition(annotationNode);
@@ -155,57 +156,59 @@ public class AnnotationProcessorVisitor extends
BaseVisitor {
}
private void handleInterfaceMethodNode(ClassNode type, MethodNode
methodNode, List<AnnotationNode> annotationNodes) {
- handleMethodNode(type.getMethod(methodNode.getName(),
methodNode.getParameters()), annotationNodes);
+ handleMethodAnnotations(type.getMethod(methodNode.getName(),
methodNode.getParameters()), annotationNodes);
}
- private void handleMethodNode(MethodNode methodNode, List<AnnotationNode>
annotationNodes) {
+ private void handleMethodAnnotations(MethodNode methodNode,
List<AnnotationNode> annotationNodes) {
if (methodNode == null) return;
-
for (AnnotationNode annotationNode : annotationNodes) {
final AnnotationProcessor annotationProcessor =
createAnnotationProcessor(annotationNode);
-
if (annotationProcessor != null &&
annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME) instanceof ClassExpression) {
- boolean isPostcondition =
AnnotationUtils.hasAnnotationOfType(annotationNode.getClassNode(),
org.apache.groovy.contracts.annotations.meta.Postcondition.class.getName());
+ handleMethodAnnotation(methodNode, annotationNode,
annotationProcessor);
+ }
+ }
+ }
- ClassExpression closureClassExpression = (ClassExpression)
annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME);
+ private void handleMethodAnnotation(MethodNode methodNode, AnnotationNode
annotationNode, AnnotationProcessor annotationProcessor) {
+ boolean isPostcondition =
AnnotationUtils.hasAnnotationOfType(annotationNode.getClassNode(),
org.apache.groovy.contracts.annotations.meta.Postcondition.class.getName());
- ArgumentListExpression closureArgumentList = new
ArgumentListExpression();
+ ClassExpression closureClassExpression = (ClassExpression)
annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME);
- for (Parameter parameter : methodNode.getParameters()) {
- closureArgumentList.addExpression(varX(parameter));
- }
+ ArgumentListExpression closureArgumentList = new
ArgumentListExpression();
- if (!isPrimitiveVoid(methodNode.getReturnType()) &&
isPostcondition && !(methodNode instanceof ConstructorNode)) {
- closureArgumentList.addExpression(localVarX("result",
methodNode.getReturnType()));
- }
+ for (Parameter parameter : methodNode.getParameters()) {
+ closureArgumentList.addExpression(varX(parameter));
+ }
- if (isPostcondition && !(methodNode instanceof
ConstructorNode)) {
- closureArgumentList.addExpression(localVarX("old", new
ClassNode(Map.class)));
- }
+ if (!isPrimitiveVoid(methodNode.getReturnType()) && isPostcondition &&
!(methodNode instanceof ConstructorNode)) {
+ closureArgumentList.addExpression(localVarX("result",
methodNode.getReturnType()));
+ }
- MethodCallExpression doCall = callX(
-
ctorX(annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME).getType(),
args(VariableExpression.THIS_EXPRESSION, VariableExpression.THIS_EXPRESSION)),
- "doCall",
- closureArgumentList
- );
- ClassNode type =
annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME).getType();
- doCall.setMethodTarget(type.getMethods("doCall").get(0));
+ if (isPostcondition && !(methodNode instanceof ConstructorNode)) {
+ closureArgumentList.addExpression(localVarX("old", new
ClassNode(Map.class)));
+ }
- final BooleanExpression booleanExpression = boolX(doCall);
- booleanExpression.setSourcePosition(annotationNode);
+ MethodCallExpression doCall = callX(
+
ctorX(annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME).getType(),
args(VariableExpression.THIS_EXPRESSION, VariableExpression.THIS_EXPRESSION)),
+ DO_CALL,
+ closureArgumentList
+ );
+ ClassNode type =
annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME).getType();
+ doCall.setMethodTarget(type.getMethods(DO_CALL).get(0));
- annotationProcessor.process(pci, pci.contract(),
methodNode.getDeclaringClass(), methodNode,
closureClassExpression.getNodeMetaData(AnnotationClosureVisitor.META_DATA_ORIGINAL_TRY_CATCH_BLOCK),
booleanExpression);
+ final BooleanExpression booleanExpression = boolX(doCall);
+ booleanExpression.setSourcePosition(annotationNode);
- // if the implementation method has no annotation, we need to
set a dummy marker in order to find parent pre/postconditions
- if (!AnnotationUtils.hasAnnotationOfType(methodNode,
annotationNode.getClassNode().getName())) {
- AnnotationNode annotationMarker = new
AnnotationNode(annotationNode.getClassNode());
- annotationMarker.setMember(CLOSURE_ATTRIBUTE_NAME,
annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME));
- annotationMarker.setRuntimeRetention(true);
- annotationMarker.setSourceRetention(false);
+ annotationProcessor.process(pci, pci.contract(),
methodNode.getDeclaringClass(), methodNode,
closureClassExpression.getNodeMetaData(AnnotationClosureVisitor.META_DATA_ORIGINAL_TRY_CATCH_BLOCK),
booleanExpression);
- methodNode.addAnnotation(annotationMarker);
- }
- }
+ // if the implementation method has no annotation, we need to set a
dummy marker in order to find parent pre/postconditions
+ if (!AnnotationUtils.hasAnnotationOfType(methodNode,
annotationNode.getClassNode().getName())) {
+ AnnotationNode annotationMarker = new
AnnotationNode(annotationNode.getClassNode());
+ annotationMarker.setMember(CLOSURE_ATTRIBUTE_NAME,
annotationNode.getMember(CLOSURE_ATTRIBUTE_NAME));
+ annotationMarker.setRuntimeRetention(true);
+ annotationMarker.setSourceRetention(false);
+
+ methodNode.addAnnotation(annotationMarker);
}
}
@@ -214,7 +217,7 @@ public class AnnotationProcessorVisitor extends BaseVisitor
{
List<AnnotationNode> annotations =
annotationNode.getClassNode().redirect().getAnnotations();
for (AnnotationNode anno : annotations) {
- Class typeClass = anno.getClassNode().getTypeClass();
+ Class<?> typeClass = anno.getClassNode().getTypeClass();
if
(typeClass.getName().equals("org.apache.groovy.contracts.annotations.meta.AnnotationProcessorImplementation"))
{
annotationProcessingAnno = (ClassExpression)
anno.getMember("value");
@@ -222,17 +225,12 @@ public class AnnotationProcessorVisitor extends
BaseVisitor {
}
}
- if (annotationProcessingAnno == null)
- throw new GroovyBugError("Annotation processing class could not be
found! This indicates a bug in groovy-contracts, please file an issue!");
-
- try {
- final Class clz =
Class.forName(annotationProcessingAnno.getType().getTypeClass().getName());
- return (AnnotationProcessor)
clz.getDeclaredConstructor().newInstance();
- } catch (InstantiationException e) {
- } catch (IllegalAccessException e) {
- } catch (ClassNotFoundException e) {
- } catch (NoSuchMethodException e) {
- } catch (InvocationTargetException e) {
+ if (annotationProcessingAnno != null) {
+ try {
+ final Class<?> clz =
Class.forName(annotationProcessingAnno.getType().getTypeClass().getName());
+ return (AnnotationProcessor)
clz.getDeclaredConstructor().newInstance();
+ } catch (InstantiationException | IllegalAccessException |
ClassNotFoundException | NoSuchMethodException | InvocationTargetException
ignore) {
+ }
}
throw new GroovyBugError("Annotation processing class could not be
instantiated! This indicates a bug in groovy-contracts, please file an issue!");