public void testAnonymousClassInheritsLocalClassInStaticMethod() { resolveSource( "Test", "class Test { static void test() { class LocalClass {}; new LocalClass() {}; } }"); AnonymousClassDeclaration decl = (AnonymousClassDeclaration) nodesByType.get(ASTNode.ANONYMOUS_CLASS_DECLARATION).get(0); ITypeBinding type = decl.resolveBinding(); assertFalse(OuterReferenceResolver.needsOuterParam(type)); }
private void addOuterArg( ClassInstanceCreation node, GeneratedMethodBinding binding, ITypeBinding declaringClass) { ITypeBinding type = node.getTypeBinding().getTypeDeclaration(); if (!OuterReferenceResolver.needsOuterParam(type)) { return; } Expression outerExpr = node.getExpression(); List<IVariableBinding> path = OuterReferenceResolver.getPath(node); Expression outerArg = null; if (outerExpr != null) { node.setExpression(null); outerArg = outerExpr; } else if (path != null) { outerArg = Name.newName(fixPath(path)); } else { outerArg = new ThisExpression(declaringClass); } node.getArguments().add(0, outerArg); binding.addParameter(0, declaringClass); }