Java 类org.eclipse.jdt.core.dom.SingleVariableDeclaration 实例源码
项目:eclipse.jdt.ls
文件:NecessaryParenthesesChecker.java
private static boolean locationNeedsParentheses(StructuralPropertyDescriptor locationInParent) {
if (locationInParent instanceof ChildListPropertyDescriptor && locationInParent != InfixExpression.EXTENDED_OPERANDS_PROPERTY) {
// e.g. argument lists of MethodInvocation, ClassInstanceCreation, dimensions of ArrayCreation ...
return false;
}
if (locationInParent == VariableDeclarationFragment.INITIALIZER_PROPERTY
|| locationInParent == SingleVariableDeclaration.INITIALIZER_PROPERTY
|| locationInParent == ReturnStatement.EXPRESSION_PROPERTY
|| locationInParent == EnhancedForStatement.EXPRESSION_PROPERTY
|| locationInParent == ForStatement.EXPRESSION_PROPERTY
|| locationInParent == WhileStatement.EXPRESSION_PROPERTY
|| locationInParent == DoStatement.EXPRESSION_PROPERTY
|| locationInParent == AssertStatement.EXPRESSION_PROPERTY
|| locationInParent == AssertStatement.MESSAGE_PROPERTY
|| locationInParent == IfStatement.EXPRESSION_PROPERTY
|| locationInParent == SwitchStatement.EXPRESSION_PROPERTY
|| locationInParent == SwitchCase.EXPRESSION_PROPERTY
|| locationInParent == ArrayAccess.INDEX_PROPERTY
|| locationInParent == ThrowStatement.EXPRESSION_PROPERTY
|| locationInParent == SynchronizedStatement.EXPRESSION_PROPERTY
|| locationInParent == ParenthesizedExpression.EXPRESSION_PROPERTY) {
return false;
}
return true;
}
项目:jdt2famix
文件:InJavaImporter.java
public Parameter ensureParameterFromSingleVariableDeclaration(SingleVariableDeclaration variableDeclaration,
Method method) {
String name = variableDeclaration.getName().toString();
String qualifiedName = Famix.qualifiedNameOf(method) + NAME_SEPARATOR + name;
if (parameters.has(qualifiedName))
return parameters.named(qualifiedName);
Parameter parameter = new Parameter();
parameters.add(qualifiedName, parameter);
parameter.setName(name);
parameter.setParentBehaviouralEntity(method);
parameter.setDeclaredType(ensureTypeFromDomType(variableDeclaration.getType()));
IVariableBinding binding = variableDeclaration.resolveBinding();
if (binding != null) {
createAnnotationInstancesToEntityFromAnnotationBinding(parameter, binding.getAnnotations());
//We only recover the final modifier
if (Modifier.isFinal(binding.getModifiers())) parameter.addModifiers("final");
}
return parameter;
}
项目:junit2spock
文件:ClosureHelper.java
public static Optional<GroovyClosure> asClosure(ASTNodeFactory nodeFactory, GroovyClosureBuilder groovyClosureBuilder,
Expression expression, String methodName) {
if (expression instanceof ClassInstanceCreation) {
ClassInstanceCreation classInstanceCreation = (ClassInstanceCreation) expression;
if (classInstanceCreation.getAnonymousClassDeclaration() != null) {
AnonymousClassDeclaration classDeclaration = classInstanceCreation.getAnonymousClassDeclaration();
if (classDeclaration.bodyDeclarations().size() == 1 &&
classDeclaration.bodyDeclarations().get(0) instanceof MethodDeclaration &&
((MethodDeclaration) classDeclaration.bodyDeclarations().get(0))
.getName().getIdentifier().equals(methodName)) {
MethodDeclaration methodDeclaration = (MethodDeclaration) classDeclaration.bodyDeclarations().get(0);
List<Statement> statements = nodeFactory.clone(methodDeclaration.getBody()).statements();
GroovyClosure closure = groovyClosureBuilder.aClosure()
.withBodyStatements(statements)
.withTypeLiteral(nodeFactory.typeLiteral(type(nodeFactory, classInstanceCreation)))
.withArgument(nodeFactory.clone((SingleVariableDeclaration) methodDeclaration.parameters().get(0)))
.build();
return Optional.of(closure);
}
}
}
return empty();
}
项目:RefDiff
文件:AstUtils.java
public static String getSignatureFromMethodDeclaration(MethodDeclaration methodDeclaration) {
String methodName = methodDeclaration.isConstructor() ? "" : methodDeclaration.getName().getIdentifier();
// if (methodName.equals("allObjectsSorted")) {
// System.out.println();
// }
StringBuilder sb = new StringBuilder();
sb.append(methodName);
sb.append('(');
@SuppressWarnings("unchecked")
Iterator<SingleVariableDeclaration> parameters = methodDeclaration.parameters().iterator();
while (parameters.hasNext()) {
SingleVariableDeclaration parameter = parameters.next();
Type parameterType = parameter.getType();
String typeName = normalizeTypeName(parameterType, parameter.getExtraDimensions(), parameter.isVarargs());
sb.append(typeName);
if (parameters.hasNext()) {
sb.append(", ");
}
}
sb.append(')');
String methodSignature = sb.toString();
return methodSignature;
}
项目:RefDiff
文件:AstUtils.java
public static String getSignatureFromMethodDeclaration(MethodDeclaration methodDeclaration) {
String methodName = methodDeclaration.isConstructor() ? "" : methodDeclaration.getName().getIdentifier();
// if (methodName.equals("allObjectsSorted")) {
// System.out.println();
// }
StringBuilder sb = new StringBuilder();
sb.append(methodName);
sb.append('(');
@SuppressWarnings("unchecked")
Iterator<SingleVariableDeclaration> parameters = methodDeclaration.parameters().iterator();
while (parameters.hasNext()) {
SingleVariableDeclaration parameter = parameters.next();
Type parameterType = parameter.getType();
String typeName = normalizeTypeName(parameterType, parameter.getExtraDimensions(), parameter.isVarargs());
sb.append(typeName);
if (parameters.hasNext()) {
sb.append(", ");
}
}
sb.append(')');
String methodSignature = sb.toString();
return methodSignature;
}
项目:SparkBuilderGenerator
文件:RegularBuilderWithMethodAdderFragment.java
private MethodDeclaration createNewWithMethod(AST ast, String fieldName, Block newBlock,
SingleVariableDeclaration methodParameterDeclaration, TypeDeclaration builderType,
BuilderField builderField) {
MethodDeclaration builderMethod = ast.newMethodDeclaration();
builderMethod.setName(ast.newSimpleName(builderClassMethodNameGeneratorService.build(fieldName)));
builderMethod.setReturnType2(ast.newSimpleType(
ast.newName(builderType.getName().getIdentifier())));
builderMethod.setBody(newBlock);
builderMethod.parameters().add(methodParameterDeclaration);
javadocAdder.addJavadocForWithMethod(ast, fieldName, builderMethod);
if (preferencesManager.getPreferenceValue(ADD_NONNULL_ON_RETURN)) {
markerAnnotationAttacher.attachNonNull(ast, builderMethod);
}
builderMethod.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));
return builderMethod;
}
项目:SparkBuilderGenerator
文件:PrivateConstructorMethodDefinitionCreationFragment.java
@SuppressWarnings("unchecked")
public MethodDeclaration createPrivateConstructorDefinition(AST ast, TypeDeclaration originalType, TypeDeclaration builderType,
List<BuilderField> builderFields) {
MethodDeclaration method = ast.newMethodDeclaration();
method.setConstructor(true);
method.setName(ast.newSimpleName(originalType.getName().toString()));
if (preferencesManager.getPreferenceValue(ADD_GENERATED_ANNOTATION)) {
generatedAnnotationPopulator.addGeneratedAnnotation(ast, method);
}
method.modifiers().add(ast.newModifier(ModifierKeyword.PRIVATE_KEYWORD));
SingleVariableDeclaration methodParameterDeclaration = ast.newSingleVariableDeclaration();
methodParameterDeclaration.setType(ast.newSimpleType(ast.newName(builderType.getName().toString())));
methodParameterDeclaration.setName(ast.newSimpleName(camelCaseConverter.toLowerCamelCase(builderType.getName().toString())));
method.parameters().add(methodParameterDeclaration);
return method;
}
项目:eclipse.jdt.ls
文件:ASTNodes.java
/**
* Returns the type node for the given declaration.
*
* @param declaration the declaration
* @return the type node or <code>null</code> if the given declaration represents a type
* inferred parameter in lambda expression
*/
public static Type getType(VariableDeclaration declaration) {
if (declaration instanceof SingleVariableDeclaration) {
return ((SingleVariableDeclaration)declaration).getType();
} else if (declaration instanceof VariableDeclarationFragment) {
ASTNode parent= ((VariableDeclarationFragment)declaration).getParent();
if (parent instanceof VariableDeclarationExpression) {
return ((VariableDeclarationExpression)parent).getType();
} else if (parent instanceof VariableDeclarationStatement) {
return ((VariableDeclarationStatement)parent).getType();
} else if (parent instanceof FieldDeclaration) {
return ((FieldDeclaration)parent).getType();
} else if (parent instanceof LambdaExpression) {
return null;
}
}
Assert.isTrue(false, "Unknown VariableDeclaration"); //$NON-NLS-1$
return null;
}
项目:eclipse.jdt.ls
文件:FlowContext.java
boolean isExceptionCaught(ITypeBinding excpetionType) {
for (Iterator<List<CatchClause>> exceptions= fExceptionStack.iterator(); exceptions.hasNext(); ) {
for (Iterator<CatchClause> catchClauses= exceptions.next().iterator(); catchClauses.hasNext(); ) {
SingleVariableDeclaration caughtException= catchClauses.next().getException();
IVariableBinding binding= caughtException.resolveBinding();
if (binding == null) {
continue;
}
ITypeBinding caughtype= binding.getType();
while (caughtype != null) {
if (caughtype == excpetionType) {
return true;
}
caughtype= caughtype.getSuperclass();
}
}
}
return false;
}
项目:eclipse.jdt.ls
文件:ExtractMethodRefactoring.java
private void initializeParameterInfos() {
IVariableBinding[] arguments = fAnalyzer.getArguments();
fParameterInfos = new ArrayList<>(arguments.length);
ASTNode root = fAnalyzer.getEnclosingBodyDeclaration();
ParameterInfo vararg = null;
for (int i = 0; i < arguments.length; i++) {
IVariableBinding argument = arguments[i];
if (argument == null) {
continue;
}
VariableDeclaration declaration = ASTNodes.findVariableDeclaration(argument, root);
boolean isVarargs = declaration instanceof SingleVariableDeclaration ? ((SingleVariableDeclaration) declaration).isVarargs() : false;
ParameterInfo info = new ParameterInfo(argument, getType(declaration, isVarargs), argument.getName(), i);
if (isVarargs) {
vararg = info;
} else {
fParameterInfos.add(info);
}
}
if (vararg != null) {
fParameterInfos.add(vararg);
}
}
项目:eclipse.jdt.ls
文件:UnresolvedElementsSubProcessor.java
private static void addEnhancedForWithoutTypeProposals(ICompilationUnit cu, ASTNode selectedNode,
Collection<CUCorrectionProposal> proposals) {
if (selectedNode instanceof SimpleName && (selectedNode.getLocationInParent() == SimpleType.NAME_PROPERTY || selectedNode.getLocationInParent() == NameQualifiedType.NAME_PROPERTY)) {
ASTNode type= selectedNode.getParent();
if (type.getLocationInParent() == SingleVariableDeclaration.TYPE_PROPERTY) {
SingleVariableDeclaration svd= (SingleVariableDeclaration) type.getParent();
if (svd.getLocationInParent() == EnhancedForStatement.PARAMETER_PROPERTY) {
if (svd.getName().getLength() == 0) {
SimpleName simpleName= (SimpleName) selectedNode;
String name= simpleName.getIdentifier();
int relevance= StubUtility.hasLocalVariableName(cu.getJavaProject(), name) ? 10 : 7;
String label= Messages.format(CorrectionMessages.UnresolvedElementsSubProcessor_create_loop_variable_description, BasicElementLabels.getJavaElementName(name));
proposals.add(new NewVariableCorrectionProposal(label, cu, NewVariableCorrectionProposal.LOCAL,
simpleName, null, relevance));
}
}
}
}
}
项目:eclipse.jdt.ls
文件:NewMethodCorrectionProposal.java
@Override
protected void addNewParameters(ASTRewrite rewrite, List<String> takenNames, List<SingleVariableDeclaration> params, ImportRewriteContext context) throws CoreException {
AST ast= rewrite.getAST();
List<Expression> arguments= fArguments;
for (int i= 0; i < arguments.size(); i++) {
Expression elem= arguments.get(i);
SingleVariableDeclaration param= ast.newSingleVariableDeclaration();
// argument type
String argTypeKey= "arg_type_" + i; //$NON-NLS-1$
Type type= evaluateParameterType(ast, elem, argTypeKey, context);
param.setType(type);
// argument name
String argNameKey= "arg_name_" + i; //$NON-NLS-1$
String name= evaluateParameterName(takenNames, elem, type, argNameKey);
param.setName(ast.newSimpleName(name));
params.add(param);
}
}
项目:code
文件:PushIntoOwnedTransferFunctions.java
private void extractParametersFromSource(List<Variable> parametersVarList,
IMethod javaElement) {
Option<MethodDeclaration> mDecl = WorkspaceUtilities.getMethodDeclFromModel(javaElement);
MethodDeclaration mmDecl = mDecl.unwrap();
List<SingleVariableDeclaration> parameters = mmDecl.parameters();
for (SingleVariableDeclaration param : parameters) {
IVariableBinding paramBinding = param.resolveBinding();
if(!paramBinding.getType().isPrimitive()){
Variable paramVariable = this.tm.getVariableFromBindingKey(paramBinding.getKey());
if(paramVariable!=null){
parametersVarList.add(paramVariable);
}
}
}
}
项目:code
文件:SummaryView.java
private String getFieldName(org.eclipse.jdt.core.dom.FieldDeclaration fieldDeclaration) {
String name = null;
List fragments = fieldDeclaration.fragments();
Iterator iterator = fragments.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
if (next instanceof SingleVariableDeclaration) {
SingleVariableDeclaration svdecl = (SingleVariableDeclaration) next;
name = svdecl.getName().getIdentifier();
break;
}
else if (next instanceof VariableDeclarationFragment) {
VariableDeclarationFragment vdf = (VariableDeclarationFragment) next;
name = vdf.getName().getIdentifier();
break;
}
}
return name;
}
项目:code
文件:TraceabilityFactory.java
/**
* returns the method Parameters as a list of ast.VariableDeclarataion
* */
public static List<ast.VariableDeclaration> getMethodParameters(MethodDeclaration md) {
List<ast.VariableDeclaration> params = new ArrayList<ast.VariableDeclaration>();
IMethodBinding methodBinding = md.resolveBinding();
if(methodBinding != null ) {
ITypeBinding[] typeParameters = methodBinding.getTypeParameters();
List<SingleVariableDeclaration> svdList = md.parameters();
for (SingleVariableDeclaration svd : svdList) {
ast.Type type = getType(svd.getType().resolveBinding());
ast.VariableDeclaration vd = VariableDeclaration.createFrom(svd);
vd.varType = type;
vd.varName = svd.getName().getFullyQualifiedName();
params.add(vd);
}
}
return params;
}
项目:Sparrow
文件:OutCodeVisitor.java
private List<IType> getParameters(List list) {
List<IType> params = new ArrayList<IType>();
for (Object elem : list) {
if (elem instanceof SingleVariableDeclaration) {
SingleVariableDeclaration param = (SingleVariableDeclaration) elem;
Type type = param.getType();
if (type != null && type.resolveBinding() != null && type.resolveBinding().getJavaElement() instanceof IType) {
params.add((IType) type.resolveBinding().getJavaElement());
} else {
if (type.resolveBinding() != null && type.isPrimitiveType()) {
params.add(new PrimitiveTypeHack(type.resolveBinding().getName()));
}
}
}
}
return params;
}
项目:Migrate-Skeletal-Implementation-to-Interface-Refactoring
文件:MigrateSkeletalImplementationToInterfaceRefactoringProcessor.java
private void changeTargetMethodParametersToMatchSource(MethodDeclaration sourceMethodDeclaration,
MethodDeclaration targetMethodDeclaration, ASTRewrite destinationRewrite) {
Assert.isLegal(sourceMethodDeclaration.parameters().size() == targetMethodDeclaration.parameters().size());
// iterate over the source method parameters.
for (int i = 0; i < sourceMethodDeclaration.parameters().size(); i++) {
// get the parameter for the source method.
SingleVariableDeclaration sourceParameter = (SingleVariableDeclaration) sourceMethodDeclaration.parameters()
.get(i);
// get the corresponding target method parameter.
SingleVariableDeclaration targetParameter = (SingleVariableDeclaration) targetMethodDeclaration.parameters()
.get(i);
// if the names don't match.
if (!sourceParameter.getName().equals(targetParameter.getName())) {
// change the target method parameter to match it since that is
// what the body will use.
ASTNode sourceParameterNameCopy = ASTNode.copySubtree(destinationRewrite.getAST(),
sourceParameter.getName());
destinationRewrite.replace(targetParameter.getName(), sourceParameterNameCopy, null);
}
}
}
项目:jdt2famix
文件:AstVisitor.java
@SuppressWarnings("unchecked")
@Override
public boolean visit(MethodDeclaration node) {
IMethodBinding binding = node.resolveBinding();
Method method;
if (binding != null) {
method = importer.ensureMethodFromMethodBindingToCurrentContainer(binding);
Arrays.stream(binding.getExceptionTypes()).forEach(e -> importer.createDeclaredExceptionFromTypeBinding(e, method));
}
else {
logNullBinding("method declaration", node.getName(), ((CompilationUnit) node.getRoot()).getLineNumber(node.getStartPosition()));
method = importer.ensureMethodFromMethodDeclaration(node);
}
method.setIsStub(false);
importer.pushOnContainerStack(method);
node.parameters().
stream().
forEach(p ->
importer.ensureParameterFromSingleVariableDeclaration((SingleVariableDeclaration) p, method));
importer.createSourceAnchor(method, node, (CompilationUnit) node.getRoot());
importer.ensureCommentFromBodyDeclaration(method, node);
return true;
}
项目:Slicer
文件:BDDVisitor.java
/**
* This is a data dependency if this is a declaration and the
* variable being declared is in the right hand side of the
* seed assignment expression.
*/
public boolean visit(SingleVariableDeclaration node){
IBinding binding = node.resolveBinding();
if(binding == null){
if(this.aliases.contains((node.getName().getFullyQualifiedName())))
this.result = true;
}
else if(binding instanceof IVariableBinding){
/* If this variable is in the alias list, then this statement
* is a data dependency. */
if(this.aliases.contains(binding.getKey())){
this.result = true;
}
}
return false;
}
项目:che
文件:NecessaryParenthesesChecker.java
private static boolean locationNeedsParentheses(StructuralPropertyDescriptor locationInParent) {
if (locationInParent instanceof ChildListPropertyDescriptor
&& locationInParent != InfixExpression.EXTENDED_OPERANDS_PROPERTY) {
// e.g. argument lists of MethodInvocation, ClassInstanceCreation, dimensions of ArrayCreation
// ...
return false;
}
if (locationInParent == VariableDeclarationFragment.INITIALIZER_PROPERTY
|| locationInParent == SingleVariableDeclaration.INITIALIZER_PROPERTY
|| locationInParent == ReturnStatement.EXPRESSION_PROPERTY
|| locationInParent == EnhancedForStatement.EXPRESSION_PROPERTY
|| locationInParent == ForStatement.EXPRESSION_PROPERTY
|| locationInParent == WhileStatement.EXPRESSION_PROPERTY
|| locationInParent == DoStatement.EXPRESSION_PROPERTY
|| locationInParent == AssertStatement.EXPRESSION_PROPERTY
|| locationInParent == AssertStatement.MESSAGE_PROPERTY
|| locationInParent == IfStatement.EXPRESSION_PROPERTY
|| locationInParent == SwitchStatement.EXPRESSION_PROPERTY
|| locationInParent == SwitchCase.EXPRESSION_PROPERTY
|| locationInParent == ArrayAccess.INDEX_PROPERTY
|| locationInParent == ThrowStatement.EXPRESSION_PROPERTY
|| locationInParent == SynchronizedStatement.EXPRESSION_PROPERTY
|| locationInParent == ParenthesizedExpression.EXPRESSION_PROPERTY) {
return false;
}
return true;
}
项目:che
文件:VariableDeclarationFix.java
/** {@inheritDoc} */
@Override
public boolean visit(SimpleName node) {
if (node.getParent() instanceof VariableDeclarationFragment) return super.visit(node);
if (node.getParent() instanceof SingleVariableDeclaration) return super.visit(node);
IBinding binding = node.resolveBinding();
if (!(binding instanceof IVariableBinding)) return super.visit(node);
binding = ((IVariableBinding) binding).getVariableDeclaration();
if (ASTResolving.isWriteAccess(node)) {
List<SimpleName> list;
if (fResult.containsKey(binding)) {
list = fResult.get(binding);
} else {
list = new ArrayList<SimpleName>();
}
list.add(node);
fResult.put(binding, list);
}
return super.visit(node);
}
项目:che
文件:NullAnnotationsRewriteOperations.java
ParameterAnnotationRewriteOperation(
CompilationUnit unit,
MethodDeclaration method,
String annotationToAdd,
String annotationToRemove,
int paramIdx,
boolean allowRemove,
String message) {
fUnit = unit;
fKey = method.resolveBinding().getKey();
fAnnotationToAdd = annotationToAdd;
fAnnotationToRemove = annotationToRemove;
fAllowRemove = allowRemove;
fArgument = (SingleVariableDeclaration) method.parameters().get(paramIdx);
fKey += fArgument.getName().getIdentifier();
fMessage = message;
}
项目:che
文件:NullAnnotationsRewriteOperations.java
@Override
public void rewriteAST(CompilationUnitRewrite cuRewrite, LinkedProposalModel linkedModel)
throws CoreException {
AST ast = cuRewrite.getRoot().getAST();
ListRewrite listRewrite =
cuRewrite
.getASTRewrite()
.getListRewrite(fArgument, SingleVariableDeclaration.MODIFIERS2_PROPERTY);
TextEditGroup group = createTextEditGroup(fMessage, cuRewrite);
if (!checkExisting(fArgument.modifiers(), listRewrite, group)) return;
Annotation newAnnotation = ast.newMarkerAnnotation();
ImportRewrite importRewrite = cuRewrite.getImportRewrite();
String resolvableName = importRewrite.addImport(fAnnotationToAdd);
newAnnotation.setTypeName(ast.newName(resolvableName));
listRewrite.insertLast(
newAnnotation, group); // null annotation is last modifier, directly preceding the type
}
项目:che
文件:ChangeSignatureProcessor.java
@Override
protected void changeParamgumentType(ParameterInfo info) {
VariableDeclaration oldParam = getParameter(info.getOldIndex());
if (oldParam instanceof SingleVariableDeclaration) {
getASTRewrite()
.set(
oldParam,
SingleVariableDeclaration.VARARGS_PROPERTY,
Boolean.valueOf(info.isNewVarargs()),
fDescription);
SingleVariableDeclaration oldSVDParam = (SingleVariableDeclaration) oldParam;
replaceTypeNode(
oldSVDParam.getType(),
ParameterInfo.stripEllipsis(info.getNewTypeName()),
info.getNewTypeBinding());
removeExtraDimensions(oldSVDParam);
}
}
项目:che
文件:ChangeSignatureProcessor.java
@Override
protected VariableDeclaration createNewParamgument(
ParameterInfo info, List<ParameterInfo> parameterInfos, List<VariableDeclaration> nodes) {
List<VariableDeclaration> parameters = fLambdaDecl.parameters();
if (!parameters.isEmpty() && parameters.get(0) instanceof SingleVariableDeclaration) {
return createNewSingleVariableDeclaration(info);
}
VariableDeclarationFragment newP = getASTRewrite().getAST().newVariableDeclarationFragment();
newP.setName(getASTRewrite().getAST().newSimpleName(info.getNewName()));
return newP;
}
项目:che
文件:SourceAnalyzer.java
@Override
public boolean visit(SimpleName node) {
addReferencesToName(node);
IBinding binding = node.resolveBinding();
if (binding instanceof ITypeBinding) {
ITypeBinding type = (ITypeBinding) binding;
if (type.isTypeVariable()) {
addTypeVariableReference(type, node);
}
} else if (binding instanceof IVariableBinding) {
IVariableBinding vb = (IVariableBinding) binding;
if (vb.isField() && !isStaticallyImported(node)) {
Name topName = ASTNodes.getTopMostName(node);
if (node == topName || node == ASTNodes.getLeftMostSimpleName(topName)) {
StructuralPropertyDescriptor location = node.getLocationInParent();
if (location != SingleVariableDeclaration.NAME_PROPERTY
&& location != VariableDeclarationFragment.NAME_PROPERTY) {
fImplicitReceivers.add(node);
}
}
} else if (!vb.isField()) {
// we have a local. Check if it is a parameter.
ParameterData data = fParameters.get(binding);
if (data != null) {
ASTNode parent = node.getParent();
if (parent instanceof Expression) {
int precedence = OperatorPrecedence.getExpressionPrecedence((Expression) parent);
if (precedence != Integer.MAX_VALUE) {
data.setOperatorPrecedence(precedence);
}
}
}
}
}
return true;
}
项目:che
文件:FlowContext.java
boolean isExceptionCaught(ITypeBinding excpetionType) {
for (Iterator<List<CatchClause>> exceptions = fExceptionStack.iterator();
exceptions.hasNext(); ) {
for (Iterator<CatchClause> catchClauses = exceptions.next().iterator();
catchClauses.hasNext(); ) {
SingleVariableDeclaration caughtException = catchClauses.next().getException();
IVariableBinding binding = caughtException.resolveBinding();
if (binding == null) continue;
ITypeBinding caughtype = binding.getType();
while (caughtype != null) {
if (caughtype == excpetionType) return true;
caughtype = caughtype.getSuperclass();
}
}
}
return false;
}
项目:che
文件:IntroduceIndirectionRefactoring.java
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);
}
}
项目:che
文件:ExtractMethodRefactoring.java
private void initializeParameterInfos() {
IVariableBinding[] arguments = fAnalyzer.getArguments();
fParameterInfos = new ArrayList<ParameterInfo>(arguments.length);
ASTNode root = fAnalyzer.getEnclosingBodyDeclaration();
ParameterInfo vararg = null;
for (int i = 0; i < arguments.length; i++) {
IVariableBinding argument = arguments[i];
if (argument == null) continue;
VariableDeclaration declaration = ASTNodes.findVariableDeclaration(argument, root);
boolean isVarargs =
declaration instanceof SingleVariableDeclaration
? ((SingleVariableDeclaration) declaration).isVarargs()
: false;
ParameterInfo info =
new ParameterInfo(argument, getType(declaration, isVarargs), argument.getName(), i);
if (isVarargs) {
vararg = info;
} else {
fParameterInfos.add(info);
}
}
if (vararg != null) {
fParameterInfos.add(vararg);
}
}
项目:che
文件:FullConstraintCreator.java
@Override
public ITypeConstraint[] create(CatchClause node) {
SingleVariableDeclaration exception = node.getException();
ConstraintVariable nameVariable =
fConstraintVariableFactory.makeExpressionOrTypeVariable(exception.getName(), getContext());
ITypeConstraint[] defines =
fTypeConstraintFactory.createDefinesConstraint(
nameVariable, fConstraintVariableFactory.makeTypeVariable(exception.getType()));
ITypeBinding throwable =
node.getAST().resolveWellKnownType("java.lang.Throwable"); // $NON-NLS-1$
ITypeConstraint[] catchBound =
fTypeConstraintFactory.createSubtypeConstraint(
nameVariable, fConstraintVariableFactory.makeRawBindingVariable(throwable));
ArrayList<ITypeConstraint> result = new ArrayList<ITypeConstraint>();
result.addAll(Arrays.asList(defines));
result.addAll(Arrays.asList(catchBound));
return result.toArray(new ITypeConstraint[result.size()]);
}
项目:che
文件:FullConstraintCreator.java
@Override
public ITypeConstraint[] create(SingleVariableDeclaration svd) {
ITypeConstraint[] defines =
fTypeConstraintFactory.createDefinesConstraint(
fConstraintVariableFactory.makeExpressionOrTypeVariable(svd.getName(), getContext()),
fConstraintVariableFactory.makeTypeVariable(svd.getType()));
if (svd.getInitializer() == null) return defines;
ITypeConstraint[] constraints =
fTypeConstraintFactory.createSubtypeConstraint(
fConstraintVariableFactory.makeExpressionOrTypeVariable(
svd.getInitializer(), getContext()),
fConstraintVariableFactory.makeExpressionOrTypeVariable(svd.getName(), getContext()));
if (defines.length == 0 && constraints.length == 0) {
return new ITypeConstraint[0];
} else if (defines.length == 0) {
return constraints;
} else if (constraints.length == 0) {
return defines;
} else {
List<ITypeConstraint> all = new ArrayList<ITypeConstraint>();
all.addAll(Arrays.asList(defines));
all.addAll(Arrays.asList(constraints));
return (ITypeConstraint[]) all.toArray();
}
}
项目:che
文件:JavadocUtil.java
/**
* Adds a "param" javadoc tag for a new last parameter if necessary.
*
* @param parameterName
* @param methodDeclaration
* @param astRewrite
* @param javaProject
* @param groupDescription
*/
public static void addParamJavadoc(
String parameterName,
MethodDeclaration methodDeclaration,
ASTRewrite astRewrite,
IJavaProject javaProject,
TextEditGroup groupDescription) {
if (!shouldAddParamJavadoc(methodDeclaration)) return;
ListRewrite tagsRewrite =
astRewrite.getListRewrite(methodDeclaration.getJavadoc(), Javadoc.TAGS_PROPERTY);
HashSet<String> leadingNames = new HashSet<String>();
for (Iterator<SingleVariableDeclaration> iter = methodDeclaration.parameters().iterator();
iter.hasNext(); ) {
SingleVariableDeclaration curr = iter.next();
leadingNames.add(curr.getName().getIdentifier());
}
TagElement parameterTag = createParamTag(parameterName, astRewrite.getAST(), javaProject);
JavadocTagsSubProcessor.insertTag(tagsRewrite, parameterTag, leadingNames, groupDescription);
}
项目:che
文件:AssignToVariableAssistProposal.java
public AssignToVariableAssistProposal(
ICompilationUnit cu,
SingleVariableDeclaration parameter,
VariableDeclarationFragment existingFragment,
ITypeBinding typeBinding,
int relevance) {
super("", cu, null, relevance, null); // $NON-NLS-1$
fVariableKind = FIELD;
fNodeToAssign = parameter;
fTypeBinding = typeBinding;
fExistingFragment = existingFragment;
if (existingFragment == null) {
setDisplayName(
CorrectionMessages.AssignToVariableAssistProposal_assignparamtofield_description);
} else {
setDisplayName(
Messages.format(
CorrectionMessages.AssignToVariableAssistProposal_assigntoexistingfield_description,
BasicElementLabels.getJavaElementName(existingFragment.getName().getIdentifier())));
}
setImage(JavaPluginImages.get(JavaPluginImages.IMG_FIELD_PRIVATE));
}
项目:che
文件:SemanticHighlightings.java
@Override
public boolean consumes(SemanticToken token) {
SimpleName node = token.getNode();
StructuralPropertyDescriptor location = node.getLocationInParent();
if (location == VariableDeclarationFragment.NAME_PROPERTY
|| location == SingleVariableDeclaration.NAME_PROPERTY) {
ASTNode parent = node.getParent();
if (parent instanceof VariableDeclaration) {
parent = parent.getParent();
return parent == null || !(parent instanceof FieldDeclaration);
}
}
return false;
}
项目:petablox
文件:PetabloxAdapterNew.java
public static String sigFor(MethodDeclaration node) {
StringBuilder builder = new StringBuilder();
// buidling the method declaration
if(node.getReturnType2()!=null) {
builder.append(node.getReturnType2().resolveBinding().getName() + " ");
}
String mname = node.getName().getIdentifier();
builder.append(mname);
builder.append("(");
List params = node.parameters();
int psize = params.size();
for(int i = 0; i < psize; i++){
SingleVariableDeclaration p = (SingleVariableDeclaration) params.get(i);
builder.append(p.getType().resolveBinding().getName());
if(i < psize-1)
builder.append(",");
}
builder.append(")");
return builder.toString();
}
项目:gwt-eclipse-plugin
文件:CreateAsyncMethodProposal.java
@SuppressWarnings("unchecked")
private void addAsyncParameters(AST ast, MethodDeclaration asyncMethodDecl) {
List<SingleVariableDeclaration> asyncMethodParams = asyncMethodDecl.parameters();
// Clone all the existing sync method parameters
asyncMethodParams.addAll(JavaASTUtils.cloneParameters(ast,
getSyncMethodDeclaration().parameters(), getImportRewrite()));
List<String> existingParamNames = new ArrayList<String>();
for (SingleVariableDeclaration param : asyncMethodParams) {
existingParamNames.add(param.getName().getIdentifier());
}
String callbackParameterName = StringUtilities.computeUniqueName(
existingParamNames.toArray(new String[0]), "callback");
// Add the AsyncCallback parameter to the end
asyncMethodParams.add(Util.createAsyncCallbackParameter(ast,
getSyncMethodDeclaration().getReturnType2(), callbackParameterName,
getImportRewrite()));
}
项目:gwt-eclipse-plugin
文件:UpdateAsyncSignatureProposal.java
@Override
protected List<SingleVariableDeclaration> computeParams(AST ast,
MethodDeclaration srcMethod, MethodDeclaration dstMethod,
ImportRewrite imports) {
// Clone the sync method parameters
List<SingleVariableDeclaration> params = new ArrayList<SingleVariableDeclaration>();
params.addAll(JavaASTUtils.cloneParameters(ast, adjustSrcParams(srcMethod),
imports));
// Append an AsyncCallback
params.add(Util.createAsyncCallbackParameter(ast,
srcMethod.getReturnType2(), computeCallBackName(dstMethod), imports));
return params;
}
项目:gwt-eclipse-plugin
文件:AbstractUpdateSignatureProposal.java
/**
* Generates a sync/async method declaration based on the associated
* async/sync method signature.
*/
private MethodDeclaration computeMethodSignature(AST ast, RpcPair rpcPair,
MethodDeclaration dstMethod) {
MethodDeclaration method = ast.newMethodDeclaration();
// New method has same name as original
String methodName = rpcPair.srcMethod.getName().getIdentifier();
method.setName(ast.newSimpleName(methodName));
// Update the parameters
@SuppressWarnings("unchecked")
List<SingleVariableDeclaration> params = method.parameters();
params.addAll(computeParams(ast, rpcPair.srcMethod, dstMethod,
getImportRewrite()));
// Update the return type
method.setReturnType2(computeReturnType(ast, rpcPair.srcMethod, dstMethod,
getImportRewrite()));
return method;
}
项目:gwt-eclipse-plugin
文件:AbstractUpdateSignatureProposal.java
/**
* Finds the best signature update candidate method in the peer type (smallest
* edit distance between the argument lists).
*/
private MethodDeclaration findBestUpdateMatch(RpcPair rpcPair) {
int minDistance = 0;
String name = rpcPair.srcMethod.getName().getIdentifier();
List<SingleVariableDeclaration> params = adjustSrcParams(rpcPair.srcMethod);
// Scan the target's methods and pick the smallest edit distance candidate
for (MethodDeclaration dstMethod : rpcPair.dstType.getMethods()) {
if (name.equals(dstMethod.getName().getIdentifier())) {
List<SingleVariableDeclaration> targetParams = adjustDstParams(dstMethod);
int distance = JavaASTUtils.editDistance(params, targetParams);
if ((rpcPair.dstMethod == null) || (distance < minDistance)) {
rpcPair.dstMethod = dstMethod;
minDistance = distance;
}
}
}
return rpcPair.dstMethod;
}
项目:BUILD_file_generator
文件:JavaSourceFileParser.java
/**
* Returns true iff 'methodDeclaration' represents a void static method named 'main' that takes a
* single String[] parameter.
*/
private static boolean isMainMethod(MethodDeclaration methodDeclaration) {
// Is it static?
if ((methodDeclaration.getModifiers() & Modifier.STATIC) == 0) {
return false;
}
// Does it return void?
Type returnType = methodDeclaration.getReturnType2();
if (!returnType.isPrimitiveType()) {
return false;
}
if (((PrimitiveType) returnType).getPrimitiveTypeCode() != PrimitiveType.VOID) {
return false;
}
// Is it called 'main'?
if (!"main".equals(methodDeclaration.getName().getIdentifier())) {
return false;
}
// Does it have a single parameter?
if (methodDeclaration.parameters().size() != 1) {
return false;
}
// Is the parameter's type String[]?
SingleVariableDeclaration pt =
getOnlyElement((List<SingleVariableDeclaration>) methodDeclaration.parameters());
IVariableBinding vb = pt.resolveBinding();
if (vb == null) {
return false;
}
ITypeBinding tb = vb.getType();
return tb != null && "java.lang.String[]".equals(tb.getQualifiedName());
}