@Override public void run(final AstNode compilationUnit) { final PhaseOneVisitor phaseOneVisitor = new PhaseOneVisitor(context); compilationUnit.acceptVisitor(phaseOneVisitor, null); super.run(compilationUnit); for (final TypeReference localType : _localTypes.keySet()) { final TypeDeclaration declaration = _localTypes.get(localType); final List<ObjectCreationExpression> instantiations = _instantiations.get(localType); LocalClassHelper.replaceClosureMembers( context, declaration, instantiations != null ? instantiations : Collections.<ObjectCreationExpression>emptyList() ); } }
@Override public void run(final AstNode compilationUnit) { final PhaseOneVisitor phaseOneVisitor = new PhaseOneVisitor(context); compilationUnit.acceptVisitor(phaseOneVisitor, null); super.run(compilationUnit); for (final TypeReference localType : _localTypes.keySet()) { final TypeDeclaration declaration = _localTypes.get(localType); final List<ObjectCreationExpression> instantiations = _instantiations.get(localType); LocalClassHelper.replaceClosureMembers( context, declaration, instantiations != null ? instantiations : Collections.<ObjectCreationExpression>emptyList() ); } }
@Override public void run(final AstNode compilationUnit) { final PhaseOneVisitor phaseOneVisitor = new PhaseOneVisitor(context); compilationUnit.acceptVisitor(phaseOneVisitor, null); super.run(compilationUnit); for (final TypeReference localType : _localTypes.keySet()) { final TypeDeclaration declaration = _localTypes.get(localType); final List<ObjectCreationExpression> instantiations = _instantiations.get(localType); LocalClassHelper.replaceClosureMembers( context, declaration, instantiations != null ? instantiations : Collections.<ObjectCreationExpression>emptyList() ); } }
public static void replaceClosureMembers( final DecompilerContext context, final TypeDeclaration declaration, final List<? extends ObjectCreationExpression> instantiations) { VerifyArgument.notNull(context, "context"); VerifyArgument.notNull(declaration, "declaration"); VerifyArgument.notNull(instantiations, "instantiations"); final Map<String, Expression> initializers = new HashMap<>(); final Map<String, Expression> replacements = new HashMap<>(); final List<AstNode> nodesToRemove = new ArrayList<>(); final List<ParameterDefinition> parametersToRemove = new ArrayList<>(); final List<Expression> originalArguments; if (instantiations.isEmpty()) { originalArguments = Collections.emptyList(); } else { originalArguments = new ArrayList<>(instantiations.get(0).getArguments()); } new ClosureRewriterPhaseOneVisitor(context, originalArguments, replacements, initializers, parametersToRemove, nodesToRemove).run(declaration); rewriteThisReferences(context, declaration, initializers); new ClosureRewriterPhaseTwoVisitor(context, replacements, initializers).run(declaration); for (final ObjectCreationExpression instantiation : instantiations) { for (final ParameterDefinition p : parametersToRemove) {
public static void replaceClosureMembers( final DecompilerContext context, final TypeDeclaration declaration, final List<? extends ObjectCreationExpression> instantiations) { VerifyArgument.notNull(context, "context"); VerifyArgument.notNull(declaration, "declaration"); VerifyArgument.notNull(instantiations, "instantiations"); final Map<String, Expression> initializers = new HashMap<>(); final Map<String, Expression> replacements = new HashMap<>(); final List<AstNode> nodesToRemove = new ArrayList<>(); final List<ParameterDefinition> parametersToRemove = new ArrayList<>(); final List<Expression> originalArguments; if (instantiations.isEmpty()) { originalArguments = Collections.emptyList(); } else { originalArguments = new ArrayList<>(instantiations.get(0).getArguments()); } new ClosureRewriterPhaseOneVisitor(context, originalArguments, replacements, initializers, parametersToRemove, nodesToRemove).run(declaration); rewriteThisReferences(context, declaration, initializers); new ClosureRewriterPhaseTwoVisitor(context, replacements, initializers).run(declaration); for (final ObjectCreationExpression instantiation : instantiations) { for (final ParameterDefinition p : parametersToRemove) {
public static void replaceClosureMembers( final DecompilerContext context, final TypeDeclaration declaration, final List<? extends ObjectCreationExpression> instantiations) { VerifyArgument.notNull(context, "context"); VerifyArgument.notNull(declaration, "declaration"); VerifyArgument.notNull(instantiations, "instantiations"); final Map<String, Expression> initializers = new HashMap<>(); final Map<String, Expression> replacements = new HashMap<>(); final List<AstNode> nodesToRemove = new ArrayList<>(); final List<ParameterDefinition> parametersToRemove = new ArrayList<>(); final List<Expression> originalArguments; if (instantiations.isEmpty()) { originalArguments = Collections.emptyList(); } else { originalArguments = new ArrayList<>(instantiations.get(0).getArguments()); } new ClosureRewriterPhaseOneVisitor(context, originalArguments, replacements, initializers, parametersToRemove, nodesToRemove).run(declaration); rewriteThisReferences(context, declaration, initializers); new ClosureRewriterPhaseTwoVisitor(context, replacements, initializers).run(declaration); for (final ObjectCreationExpression instantiation : instantiations) { for (final ParameterDefinition p : parametersToRemove) {