use of org.eclipse.jdt.core.dom.AST in project che by eclipse.
the class NewDefiningMethodProposal method addNewParameters.
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.ui.text.correction.proposals.AbstractMethodCorrectionProposal#addNewParameters(org.eclipse.jdt.core
* .dom.rewrite.ASTRewrite, java.util.List, java.util.List)
*/
@Override
protected void addNewParameters(ASTRewrite rewrite, List<String> takenNames, List<SingleVariableDeclaration> params) throws CoreException {
AST ast = rewrite.getAST();
ImportRewrite importRewrite = getImportRewrite();
ITypeBinding[] bindings = fMethod.getParameterTypes();
IJavaProject project = getCompilationUnit().getJavaProject();
String[][] paramNames = StubUtility.suggestArgumentNamesWithProposals(project, fParamNames);
for (int i = 0; i < bindings.length; i++) {
ITypeBinding curr = bindings[i];
String[] proposedNames = paramNames[i];
SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration();
newParam.setType(importRewrite.addImport(curr, ast));
newParam.setName(ast.newSimpleName(proposedNames[0]));
params.add(newParam);
//$NON-NLS-1$
String groupId = "arg_name_" + i;
addLinkedPosition(rewrite.track(newParam.getName()), false, groupId);
for (int k = 0; k < proposedNames.length; k++) {
addLinkedPositionProposal(groupId, proposedNames[k], null);
}
}
}
use of org.eclipse.jdt.core.dom.AST in project che by eclipse.
the class NewDefiningMethodProposal method getNewName.
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.ui.text.correction.proposals.AbstractMethodCorrectionProposal#getNewName(org.eclipse.jdt.core.dom.rewrite.ASTRewrite)
*/
@Override
protected SimpleName getNewName(ASTRewrite rewrite) {
AST ast = rewrite.getAST();
SimpleName nameNode = ast.newSimpleName(fMethod.getName());
return nameNode;
}
use of org.eclipse.jdt.core.dom.AST in project che by eclipse.
the class NewDefiningMethodProposal method addNewExceptions.
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.ui.text.correction.proposals.AbstractMethodCorrectionProposal#addNewExceptions(org.eclipse.jdt.core.dom.rewrite.ASTRewrite, java.util.List)
*/
@Override
protected void addNewExceptions(ASTRewrite rewrite, List<Type> exceptions) throws CoreException {
AST ast = rewrite.getAST();
ImportRewrite importRewrite = getImportRewrite();
ITypeBinding[] bindings = fMethod.getExceptionTypes();
for (int i = 0; i < bindings.length; i++) {
Type newType = importRewrite.addImport(bindings[i], ast);
exceptions.add(newType);
//$NON-NLS-1$
addLinkedPosition(rewrite.track(newType), false, "exc_type_" + i);
}
}
use of org.eclipse.jdt.core.dom.AST in project che by eclipse.
the class NewMethodCorrectionProposal method getNewMethodType.
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.ui.text.correction.proposals.AbstractMethodCorrectionProposal#getNewMethodType(org.eclipse.jdt.core.dom.rewrite.ASTRewrite)
*/
@Override
protected Type getNewMethodType(ASTRewrite rewrite) throws CoreException {
ASTNode node = getInvocationNode();
AST ast = rewrite.getAST();
Type newTypeNode = null;
ITypeBinding[] otherProposals = null;
ImportRewriteContext importRewriteContext = new ContextSensitiveImportRewriteContext(node, getImportRewrite());
if (node.getParent() instanceof MethodInvocation) {
MethodInvocation parent = (MethodInvocation) node.getParent();
if (parent.getExpression() == node) {
ITypeBinding[] bindings = ASTResolving.getQualifierGuess(node.getRoot(), parent.getName().getIdentifier(), parent.arguments(), getSenderBinding());
if (bindings.length > 0) {
newTypeNode = getImportRewrite().addImport(bindings[0], ast, importRewriteContext);
otherProposals = bindings;
}
}
}
if (newTypeNode == null) {
ITypeBinding binding = ASTResolving.guessBindingForReference(node);
if (binding != null && binding.isWildcardType()) {
binding = ASTResolving.normalizeWildcardType(binding, false, ast);
}
if (binding != null) {
newTypeNode = getImportRewrite().addImport(binding, ast, importRewriteContext);
} else {
ASTNode parent = node.getParent();
if (parent instanceof ExpressionStatement) {
newTypeNode = ast.newPrimitiveType(PrimitiveType.VOID);
} else {
newTypeNode = ASTResolving.guessTypeForReference(ast, node);
if (newTypeNode == null) {
//$NON-NLS-1$
newTypeNode = ast.newSimpleType(ast.newSimpleName("Object"));
}
}
}
}
addLinkedPosition(rewrite.track(newTypeNode), false, KEY_TYPE);
if (otherProposals != null) {
for (int i = 0; i < otherProposals.length; i++) {
addLinkedPositionProposal(KEY_TYPE, otherProposals[i]);
}
}
return newTypeNode;
}
use of org.eclipse.jdt.core.dom.AST in project che by eclipse.
the class NewMethodCorrectionProposal method addNewParameters.
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.ui.text.correction.proposals.AbstractMethodCorrectionProposal#addNewParameters(org.eclipse.jdt.core.dom.rewrite.ASTRewrite, java.util.List, java.util.List)
*/
@Override
protected void addNewParameters(ASTRewrite rewrite, List<String> takenNames, List<SingleVariableDeclaration> params) throws CoreException {
AST ast = rewrite.getAST();
List<Expression> arguments = fArguments;
ImportRewriteContext context = new ContextSensitiveImportRewriteContext(ASTResolving.findParentBodyDeclaration(getInvocationNode()), getImportRewrite());
for (int i = 0; i < arguments.size(); i++) {
Expression elem = arguments.get(i);
SingleVariableDeclaration param = ast.newSingleVariableDeclaration();
// argument type
//$NON-NLS-1$
String argTypeKey = "arg_type_" + i;
Type type = evaluateParameterType(ast, elem, argTypeKey, context);
param.setType(type);
// argument name
//$NON-NLS-1$
String argNameKey = "arg_name_" + i;
String name = evaluateParameterName(takenNames, elem, type, argNameKey);
param.setName(ast.newSimpleName(name));
params.add(param);
addLinkedPosition(rewrite.track(param.getType()), false, argTypeKey);
addLinkedPosition(rewrite.track(param.getName()), false, argNameKey);
}
}
Aggregations