From 77f74f3a034c07dd57b037a6b92fd1e161a57b2e Mon Sep 17 00:00:00 2001 From: Paul King Date: Wed, 11 Jul 2018 20:44:29 +1000 Subject: [PATCH] GROOVY-8696: TypeWrapper leaks out of DecompiledClassNode (closes #773) --- .../groovy/ast/decompiled/MemberSignatureParser.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/ast/decompiled/MemberSignatureParser.java b/src/main/java/org/codehaus/groovy/ast/decompiled/MemberSignatureParser.java index 6627c850b27..54f972f694d 100644 --- a/src/main/java/org/codehaus/groovy/ast/decompiled/MemberSignatureParser.java +++ b/src/main/java/org/codehaus/groovy/ast/decompiled/MemberSignatureParser.java @@ -117,8 +117,12 @@ void finished(ClassNode result) { result = new ConstructorNode(method.accessModifiers, parameters, exceptions, null); } else { result = new MethodNode(method.methodName, method.accessModifiers, returnType[0], parameters, exceptions, null); - if (method.annotationDefault != null) { - result.setCode(new ReturnStatement(new ConstantExpression(method.annotationDefault))); + Object annDefault = method.annotationDefault; + if (annDefault != null) { + if (annDefault instanceof TypeWrapper) { + annDefault = resolver.resolveType(Type.getType(((TypeWrapper) annDefault).desc)); + } + result.setCode(new ReturnStatement(new ConstantExpression(annDefault))); result.setAnnotationDefault(true); } else { // Seems wrong but otherwise some tests fail (e.g. TestingASTTransformsTest)