public static IMethodBinding resolveBinding(ASTNode invocation) { switch (invocation.getNodeType()) { case ASTNode.METHOD_INVOCATION: return ((MethodInvocation)invocation).resolveMethodBinding(); case ASTNode.SUPER_METHOD_INVOCATION: return ((SuperMethodInvocation)invocation).resolveMethodBinding(); case ASTNode.CONSTRUCTOR_INVOCATION: return ((ConstructorInvocation)invocation).resolveConstructorBinding(); case ASTNode.SUPER_CONSTRUCTOR_INVOCATION: return ((SuperConstructorInvocation)invocation).resolveConstructorBinding(); case ASTNode.CLASS_INSTANCE_CREATION: return ((ClassInstanceCreation)invocation).resolveConstructorBinding(); case ASTNode.ENUM_CONSTANT_DECLARATION: return ((EnumConstantDeclaration)invocation).resolveConstructorBinding(); default: throw new IllegalArgumentException(invocation.toString()); } }
public static IMethodBinding resolveBinding(ASTNode invocation) { switch (invocation.getNodeType()) { case ASTNode.METHOD_INVOCATION: return ((MethodInvocation)invocation).resolveMethodBinding(); case ASTNode.SUPER_METHOD_INVOCATION: return ((SuperMethodInvocation)invocation).resolveMethodBinding(); case ASTNode.CONSTRUCTOR_INVOCATION: return ((ConstructorInvocation)invocation).resolveConstructorBinding(); case ASTNode.SUPER_CONSTRUCTOR_INVOCATION: return ((SuperConstructorInvocation)invocation).resolveConstructorBinding(); case ASTNode.CLASS_INSTANCE_CREATION: return ((ClassInstanceCreation)invocation).resolveConstructorBinding(); case ASTNode.ENUM_CONSTANT_DECLARATION: return ((EnumConstantDeclaration)invocation).resolveConstructorBinding(); default: throw new IllegalArgumentException(invocation.toString()); } }
/** * Called only from visitFieldInitNode(node,context) */ private CAstNode createEnumConstantDeclarationInit(EnumConstantDeclaration node, WalkContext context) { String hiddenVariableName = (String) node.getProperty("com.ibm.wala.cast.java.translator.jdt.fakeValuesDeclName"); if (hiddenVariableName == null) { FieldReference fieldRef = fIdentityMapper.getFieldRef(node.resolveVariable()); // We use null to indicate an OBJECT_REF to a static field CAstNode lhsNode = makeNode(context, fFactory, node, CAstNode.OBJECT_REF, makeNode(context, fFactory, null, CAstNode.VOID), fFactory.makeConstant(fieldRef)); // CONSTRUCT ARGUMENTS & "new MyEnum(...)" statement ArrayList<Object> arguments = new ArrayList<>(); arguments.add(fFactory.makeConstant(node.getName().getIdentifier())); // name of constant arguments.add(fFactory.makeConstant(node.resolveVariable().getVariableId())); // id arguments.addAll(node.arguments()); CAstNode rhsNode = createClassInstanceCreation(node, arguments, node.resolveConstructorBinding(), null, node .getAnonymousClassDeclaration(), context); CAstNode assNode = makeNode(context, fFactory, node, CAstNode.ASSIGN, lhsNode, rhsNode); return assNode; // their naming, not mine } else { // String[] x = (new Direction[] { // NORTH, EAST, SOUTH, WEST, $VALUES, $VALUES$ // }); return null; } }
} else if (locationInParent == EnumConstantDeclaration.ARGUMENTS_PROPERTY) { EnumConstantDeclaration enumConstantDecl= (EnumConstantDeclaration) parent; methodBinding= enumConstantDecl.resolveConstructorBinding(); argumentIndex= enumConstantDecl.arguments().indexOf(expression); argumentCount= enumConstantDecl.arguments().size();
} else if (locationInParent == EnumConstantDeclaration.ARGUMENTS_PROPERTY) { EnumConstantDeclaration enumConstantDecl= (EnumConstantDeclaration) parent; methodBinding= enumConstantDecl.resolveConstructorBinding(); argumentIndex= enumConstantDecl.arguments().indexOf(expression); argumentCount= enumConstantDecl.arguments().size();
Configuration.MemberMapping mappedConstructor = effectiveMappingFor(node.resolveConstructorBinding()); if (null == mappedConstructor) { initializer = new CSConstructorInvocationExpression(mappedTypeReference(fieldType));
break; case ASTNode.ENUM_CONSTANT_DECLARATION: IMethodBinding methodBinding= ((EnumConstantDeclaration) node.getParent()).resolveConstructorBinding(); if (methodBinding != null) { binding= methodBinding.getDeclaringClass();
IMethodBinding enumConstructorBinding= enumConstantDecl.resolveConstructorBinding(); if (enumConstructorBinding != null) { return getParameterTypeBinding(expression, enumConstantDecl.arguments(), enumConstructorBinding);
IMethodBinding enumConstructorBinding= enumConstantDecl.resolveConstructorBinding(); if (enumConstructorBinding != null) { return getParameterTypeBinding(expression, enumConstantDecl.arguments(), enumConstructorBinding);