@Override public boolean isVarargs() { return originalBinding.isVarargs(); }
private static ITypeBinding getParameterTypeBinding(ASTNode node, List args, IMethodBinding binding) { ITypeBinding[] paramTypes= binding.getParameterTypes(); int index= args.indexOf(node); if (binding.isVarargs() && index >= paramTypes.length - 1) { return paramTypes[paramTypes.length - 1].getComponentType(); } if (index >= 0 && index < paramTypes.length) { return paramTypes[index]; } return null; }
public static ITypeBinding getParameterTypeBinding(IMethodBinding methodBinding, int argumentIndex) { ITypeBinding[] paramTypes= methodBinding.getParameterTypes(); if (methodBinding.isVarargs() && argumentIndex >= paramTypes.length - 1) { return paramTypes[paramTypes.length - 1].getComponentType(); } if (argumentIndex >= 0 && argumentIndex < paramTypes.length) { return paramTypes[argumentIndex]; } return null; }
public static ITypeBinding getParameterTypeBinding(IMethodBinding methodBinding, int argumentIndex) { ITypeBinding[] paramTypes= methodBinding.getParameterTypes(); if (methodBinding.isVarargs() && argumentIndex >= paramTypes.length - 1) { return paramTypes[paramTypes.length - 1].getComponentType(); } if (argumentIndex >= 0 && argumentIndex < paramTypes.length) { return paramTypes[argumentIndex]; } return null; }
private void copyArguments(CompilationUnitRewrite rewrite, ClassInstanceCreation newClassCreation) { Iterator<Expression> iter= ((ClassInstanceCreation) fAnonymousInnerClassNode.getParent()).arguments().iterator(); if (!iter.hasNext()) return; IMethodBinding superConstructorBinding= getSuperConstructorBinding(); ITypeBinding[] parameterTypes= superConstructorBinding.getParameterTypes(); List<Expression> arguments= newClassCreation.arguments(); ASTRewrite astRewrite= rewrite.getASTRewrite(); int last= parameterTypes.length - 1; for (int i= 0; i < last; i++) { arguments.add((Expression) astRewrite.createCopyTarget(iter.next())); } if (superConstructorBinding.isVarargs()) { AST ast= astRewrite.getAST(); ArrayCreation arrayCreation= ast.newArrayCreation(); arrayCreation.setType((ArrayType) rewrite.getImportRewrite().addImport(parameterTypes[last], ast)); ArrayInitializer initializer= ast.newArrayInitializer(); arrayCreation.setInitializer(initializer); arguments.add(arrayCreation); arguments= initializer.expressions(); } while (iter.hasNext()) { arguments.add((Expression) astRewrite.createCopyTarget(iter.next())); } }
private void copyArguments(CompilationUnitRewrite rewrite, ClassInstanceCreation newClassCreation) { Iterator<Expression> iter= ((ClassInstanceCreation) fAnonymousInnerClassNode.getParent()).arguments().iterator(); if (!iter.hasNext()) return; IMethodBinding superConstructorBinding= getSuperConstructorBinding(); ITypeBinding[] parameterTypes= superConstructorBinding.getParameterTypes(); List<Expression> arguments= newClassCreation.arguments(); ASTRewrite astRewrite= rewrite.getASTRewrite(); int last= parameterTypes.length - 1; for (int i= 0; i < last; i++) { arguments.add((Expression) astRewrite.createCopyTarget(iter.next())); } if (superConstructorBinding.isVarargs()) { AST ast= astRewrite.getAST(); ArrayCreation arrayCreation= ast.newArrayCreation(); arrayCreation.setType((ArrayType) rewrite.getImportRewrite().addImport(parameterTypes[last], ast)); ArrayInitializer initializer= ast.newArrayInitializer(); arrayCreation.setInitializer(initializer); arguments.add(arrayCreation); arguments= initializer.expressions(); } while (iter.hasNext()) { arguments.add((Expression) astRewrite.createCopyTarget(iter.next())); } }
&& (!methodBinding.isVarargs() || lastArgType == null || lastArgType .isSubTypeCompatible(methodBinding.getParameterTypes()[nFormals - 1]))) { int i = 2; children[i++] = (arg instanceof CAstNode) ? ((CAstNode) arg) : visitNode((Expression) arg, context); } else { assert nActuals >= (nFormals - 1) && methodBinding.isVarargs() : "Invalid number of parameters for constructor call"; for (int i = 0; i < nFormals - 1; i++) { Object arg = arguments.get(i);
private static List createParameters(ICompilationUnit unit, ImportRewrite imports, AST ast, IMethodBinding binding, MethodDeclaration decl, ImportRewriteContext context) { List parameters= decl.parameters(); ITypeBinding[] params= binding.getParameterTypes(); String[] paramNames= StubUtility.suggestArgumentNames(unit.getJavaProject(), binding); for (int i= 0; i < params.length; i++) { SingleVariableDeclaration var= ast.newSingleVariableDeclaration(); if (binding.isVarargs() && params[i].isArray() && i == params.length - 1) { StringBuffer buffer= new StringBuffer(imports.addImport(params[i].getElementType(), context)); for (int dim= 1; dim < params[i].getDimensions(); dim++) buffer.append("[]"); //$NON-NLS-1$ var.setType(ASTNodeFactory.newType(ast, buffer.toString())); var.setVarargs(true); } else var.setType(imports.addImport(params[i], ast, context)); var.setName(ast.newSimpleName(paramNames[i])); parameters.add(var); } return parameters; }
private static List createParameters(ICompilationUnit unit, ImportRewrite imports, AST ast, IMethodBinding binding, MethodDeclaration decl) { List parameters= decl.parameters(); ITypeBinding[] params= binding.getParameterTypes(); String[] paramNames= StubUtility.suggestArgumentNames(unit.getJavaProject(), binding); for (int i= 0; i < params.length; i++) { SingleVariableDeclaration var= ast.newSingleVariableDeclaration(); if (binding.isVarargs() && params[i].isArray() && i == params.length - 1) { final ITypeBinding elementType= params[i].getElementType(); StringBuffer buffer= new StringBuffer(imports != null ? imports.addImport(elementType) : elementType.getQualifiedName()); for (int dim= 1; dim < params[i].getDimensions(); dim++) buffer.append("[]"); //$NON-NLS-1$ var.setType(ASTNodeFactory.newType(ast, buffer.toString())); var.setVarargs(true); } else var.setType(createTypeNode(imports, params[i], ast)); var.setName(ast.newSimpleName(paramNames[i])); parameters.add(var); } return parameters; }
public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException { try { pm.beginTask(RefactoringCoreMessages.IntroduceFactory_checking_preconditions, 1); RefactoringStatus result= new RefactoringStatus(); if (fFactoryClassName != null) result.merge(setFactoryClass(fFactoryClassName)); if (result.hasFatalError()) return result; fArgTypes= fCtorBinding.getParameterTypes(); fCtorIsVarArgs= fCtorBinding.isVarargs(); fAllCallsTo= findAllCallsTo(fCtorBinding, pm, result); fFormalArgNames= findCtorArgNames(); ICompilationUnit[] affectedFiles= collectAffectedUnits(fAllCallsTo); result.merge(Checks.validateModifiesFiles(ResourceUtil.getFiles(affectedFiles), getValidationContext())); if (fCallSitesInBinaryUnits) result.merge(RefactoringStatus.createWarningStatus(RefactoringCoreMessages.IntroduceFactory_callSitesInBinaryClass)); return result; } finally { pm.done(); } }
private void copyArguments(MethodDeclaration intermediary, CompilationUnitRewrite rew, ImportRewriteContext context) throws JavaModelException { String[] names= fTargetMethod.getParameterNames(); ITypeBinding[] types= fTargetMethodBinding.getParameterTypes(); for (int i= 0; i < names.length; i++) { ITypeBinding typeBinding= types[i]; SingleVariableDeclaration newElement= rew.getAST().newSingleVariableDeclaration(); newElement.setName(rew.getAST().newSimpleName(names[i])); if (i == (names.length - 1) && fTargetMethodBinding.isVarargs()) { newElement.setVarargs(true); if (typeBinding.isArray()) typeBinding= typeBinding.getComponentType(); } newElement.setType(rew.getImportRewrite().addImport(typeBinding, rew.getAST(), context)); intermediary.parameters().add(newElement); } }
private void copyArguments(MethodDeclaration intermediary, CompilationUnitRewrite rew, ImportRewriteContext context) throws JavaModelException { String[] names= fTargetMethod.getParameterNames(); ITypeBinding[] types= fTargetMethodBinding.getParameterTypes(); for (int i= 0; i < names.length; i++) { ITypeBinding typeBinding= types[i]; SingleVariableDeclaration newElement= rew.getAST().newSingleVariableDeclaration(); newElement.setName(rew.getAST().newSimpleName(names[i])); if (i == (names.length - 1) && fTargetMethodBinding.isVarargs()) { newElement.setVarargs(true); if (typeBinding.isArray()) typeBinding= typeBinding.getComponentType(); } newElement.setType(rew.getImportRewrite().addImport(typeBinding, rew.getAST(), context, TypeLocation.PARAMETER)); intermediary.parameters().add(newElement); } }
private void copyArguments(MethodDeclaration intermediary, CompilationUnitRewrite rew) throws JavaModelException { String[] names= fTargetMethod.getParameterNames(); ITypeBinding[] types= fTargetMethodBinding.getParameterTypes(); for (int i= 0; i < names.length; i++) { ITypeBinding typeBinding= types[i]; SingleVariableDeclaration newElement= rew.getAST().newSingleVariableDeclaration(); newElement.setName(rew.getAST().newSimpleName(names[i])); if (i == (names.length - 1) && fTargetMethodBinding.isVarargs()) { newElement.setVarargs(true); if (typeBinding.isArray()) typeBinding= typeBinding.getComponentType(); } newElement.setType(rew.getImportRewrite().addImport(typeBinding, rew.getAST())); intermediary.parameters().add(newElement); } }
@Override public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException { try { pm.beginTask(RefactoringCoreMessages.IntroduceFactory_checking_preconditions, 1); RefactoringStatus result= new RefactoringStatus(); if (fFactoryClassName != null) result.merge(setFactoryClass(fFactoryClassName)); if (result.hasFatalError()) return result; fArgTypes= fCtorBinding.getParameterTypes(); fCtorIsVarArgs= fCtorBinding.isVarargs(); fAllCallsTo= findAllCallsTo(fCtorBinding, pm, result); fFormalArgNames= findCtorArgNames(); ICompilationUnit[] affectedFiles= collectAffectedUnits(fAllCallsTo); result.merge(Checks.validateModifiesFiles(ResourceUtil.getFiles(affectedFiles), getValidationContext())); if (fCallSitesInBinaryUnits) result.merge(RefactoringStatus.createWarningStatus(RefactoringCoreMessages.IntroduceFactory_callSitesInBinaryClass)); if(Modifier.isAbstract(fCtorBinding.getDeclaringClass().getModifiers())){ result.merge(RefactoringStatus.createWarningStatus(RefactoringCoreMessages.IntroduceFactory_abstractClass)); } return result; } finally { pm.done(); } }
@Override public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException { try { pm.beginTask(RefactoringCoreMessages.IntroduceFactory_checking_preconditions, 1); RefactoringStatus result= new RefactoringStatus(); if (fFactoryClassName != null) result.merge(setFactoryClass(fFactoryClassName)); if (result.hasFatalError()) return result; fArgTypes= fCtorBinding.getParameterTypes(); fCtorIsVarArgs= fCtorBinding.isVarargs(); fAllCallsTo= findAllCallsTo(fCtorBinding, pm, result); fFormalArgNames= findCtorArgNames(); ICompilationUnit[] affectedFiles= collectAffectedUnits(fAllCallsTo); result.merge(Checks.validateModifiesFiles(ResourceUtil.getFiles(affectedFiles), getValidationContext())); if (fCallSitesInBinaryUnits) result.merge(RefactoringStatus.createWarningStatus(RefactoringCoreMessages.IntroduceFactory_callSitesInBinaryClass)); if(Modifier.isAbstract(fCtorBinding.getDeclaringClass().getModifiers())){ result.merge(RefactoringStatus.createWarningStatus(RefactoringCoreMessages.IntroduceFactory_abstractClass)); } return result; } finally { pm.done(); } }
if (method.isVarargs() && argumentIndex >= parameters.length - 1) { argumentIndex= parameters.length - 1; parameterType= parameterType.createArrayType(1);
names[offset]= string; else { if (binding.isVarargs() && bindings[offset].isArray() && offset == names.length - 1) names[offset]= Bindings.getFullyQualifiedName(bindings[offset].getElementType()); else
public final ASTNode getArgumentNode(final IVariableBinding binding, final boolean last) throws JavaModelException { Assert.isNotNull(binding); final SingleVariableDeclaration variable= ast.newSingleVariableDeclaration(); final ITypeBinding type= binding.getType(); adjustTypeVisibility(type); variable.setName(ast.newSimpleName(binding.getName())); variable.modifiers().addAll(ast.newModifiers(binding.getModifiers())); final IMethodBinding method= binding.getDeclaringMethod(); if (last && method != null && method.isVarargs()) { variable.setVarargs(true); String name= null; if (type.isArray()) { name= type.getElementType().getName(); if (PrimitiveType.toCode(name) != null) variable.setType(ast.newPrimitiveType(PrimitiveType.toCode(name))); else variable.setType(ast.newSimpleType(ast.newSimpleName(name))); } else { name= type.getName(); if (PrimitiveType.toCode(name) != null) variable.setType(ast.newPrimitiveType(PrimitiveType.toCode(name))); else variable.setType(ast.newSimpleType(ast.newSimpleName(name))); } } else variable.setType(rewriter.getImportRewrite().addImport(type, ast)); return variable; }
@Override public final ASTNode getArgumentNode(final IVariableBinding binding, final boolean last) throws JavaModelException { Assert.isNotNull(binding); final SingleVariableDeclaration variable= ast.newSingleVariableDeclaration(); final ITypeBinding type= binding.getType(); adjustTypeVisibility(type); variable.setName(ast.newSimpleName(binding.getName())); variable.modifiers().addAll(ast.newModifiers(binding.getModifiers())); final IMethodBinding method= binding.getDeclaringMethod(); if (last && method != null && method.isVarargs()) { variable.setVarargs(true); String name= null; if (type.isArray()) { name= type.getElementType().getName(); if (PrimitiveType.toCode(name) != null) variable.setType(ast.newPrimitiveType(PrimitiveType.toCode(name))); else variable.setType(ast.newSimpleType(ast.newSimpleName(name))); } else { name= type.getName(); if (PrimitiveType.toCode(name) != null) variable.setType(ast.newPrimitiveType(PrimitiveType.toCode(name))); else variable.setType(ast.newSimpleType(ast.newSimpleName(name))); } } else variable.setType(rewriter.getImportRewrite().addImport(type, ast)); return variable; }
@Override public final ASTNode getArgumentNode(final IVariableBinding binding, final boolean last) throws JavaModelException { Assert.isNotNull(binding); final SingleVariableDeclaration variable= ast.newSingleVariableDeclaration(); final ITypeBinding type= binding.getType(); adjustTypeVisibility(type); variable.setName(ast.newSimpleName(binding.getName())); variable.modifiers().addAll(ast.newModifiers(binding.getModifiers())); final IMethodBinding method= binding.getDeclaringMethod(); if (last && method != null && method.isVarargs()) { variable.setVarargs(true); String name= null; if (type.isArray()) { name= type.getElementType().getName(); if (PrimitiveType.toCode(name) != null) variable.setType(ast.newPrimitiveType(PrimitiveType.toCode(name))); else variable.setType(ast.newSimpleType(ast.newSimpleName(name))); } else { name= type.getName(); if (PrimitiveType.toCode(name) != null) variable.setType(ast.newPrimitiveType(PrimitiveType.toCode(name))); else variable.setType(ast.newSimpleType(ast.newSimpleName(name))); } } else variable.setType(rewriter.getImportRewrite().addImport(type, ast)); return variable; }