groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jamie Echlin <jamie.ech...@gmail.com>
Subject type checking bug
Date Wed, 02 Sep 2015 12:44:21 GMT
Found a bug with type checking... at least I think it's a bug. If no one
disagrees I'll raise a ticket in jira.

When I compile the following using:

         ASTTransformationCustomizer astcz = new
ASTTransformationCustomizer(
             TypeChecked)

I get an NPE, which suggests that the compilation unit hasn't been set for
one of the classes. Input code is:

import groovy.transform.TypeChecked

@TypeChecked
class TypeCheckingBug {

    void methodA() {
        // removing this or the othing makes this work
        ['a', 'b'].eachWithIndex { String value, sequence -> }
    }


    void methodB() {

        def instanceB = new ClassB()

        // removing this or the above makes this work
        instanceB.with {
            instanceC
        }
    }


    class ClassB {
        ClassC instanceC
    }

    class ClassC { }
}

Removing either of the two lines with the comments makes it work.

Any help appreciated.
cheers, jamie

Caused by: java.lang.NullPointerException
at
org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:177)
at
org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:167)
at
org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:123)
at
org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:675)
at
org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:307)
at
org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:307)
at
org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:275)
at
org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:259)
at
org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:271)
at
org.codehaus.groovy.control.ResolveVisitor.visitConstructorOrMethod(ResolveVisitor.java:196)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:123)
at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1083)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:50)
at
org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1260)
at
org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:175)
at
org.codehaus.groovy.ast.tools.GenericsUtils.resolveClassNode(GenericsUtils.java:560)
at
org.codehaus.groovy.ast.tools.GenericsUtils.parseClassNodesFromString(GenericsUtils.java:527)
at groovy.transform.stc.FromString.parseOption(FromString.java:74)
at groovy.transform.stc.FromString.getClosureSignatures(FromString.java:55)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.getSignaturesFromHint(StaticTypeCheckingVisitor.java:2588)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.doInferClosureParameterTypes(StaticTypeCheckingVisitor.java:2609)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.inferClosureParameterTypes(StaticTypeCheckingVisitor.java:2508)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallArguments(StaticTypeCheckingVisitor.java:2474)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethodCallExpression(StaticTypeCheckingVisitor.java:3109)
at
org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:64)
at
org.codehaus.groovy.ast.CodeVisitorSupport.visitExpressionStatement(CodeVisitorSupport.java:69)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitExpressionStatement(ClassCodeVisitorSupport.java:193)
at
org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
at
org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:35)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:163)
at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:101)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:112)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitConstructorOrMethod(StaticTypeCheckingVisitor.java:1969)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:123)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.startMethodInference(StaticTypeCheckingVisitor.java:2302)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethod(StaticTypeCheckingVisitor.java:2261)
at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1083)
at
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:50)
at
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitClass(StaticTypeCheckingVisitor.java:248)
at
org.codehaus.groovy.transform.StaticTypesTransformation.visit(StaticTypesTransformation.java:63)
 <+2> (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
at
org.codehaus.groovy.control.customizers.ASTTransformationCustomizer.call(ASTTransformationCustomizer.groovy:292)
at
org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1052)
... 268 more

Mime
View raw message