private boolean isDeclaringClassIgnoringExtends(final IMethodBinding binding) { ITypeBinding declaringClassBinding = binding.getDeclaringClass(); if (declaringClassBinding.isAnonymous()) return false; final ASTNode node = findDeclaringNode(declaringClassBinding); AbstractTypeDeclaration declaringClass = node instanceof AbstractTypeDeclaration ? (AbstractTypeDeclaration) node: null; return declaringClass == null ? false : isAnnotatedWith(declaringClass, SharpenAnnotations.SHARPEN_IGNORE_EXTENDS); }
private String extractDataFromMethodBinding(IMethodBinding binding) { if (binding != null) { ITypeBinding type = binding.getDeclaringClass(); if (type != null) { if( type.isAnonymous()){ return type.getDeclaringClass().getQualifiedName()+".?."; } return type.getQualifiedName(); } else { return "?."; } } }
private void handleMethod(SimpleName node, IMethodBinding binding) { ITypeBinding declaringClass= binding.getDeclaringClass(); if (Modifier.isStatic(binding.getModifiers())) { if (fFindUnqualifiedStaticMethodAccesses) { //Do not qualify static fields if defined inside an anonymous class if (declaringClass.isAnonymous()) return; fResult.add(new AddStaticQualifierOperation(declaringClass, node)); } } else { if (fFindUnqualifiedMethodAccesses) { String qualifier= getThisExpressionQualifier(declaringClass, fImportRewrite, node); if (qualifier == null) return; if (qualifier.length() == 0) qualifier= null; fResult.add(new AddThisQualifierOperation(qualifier, node)); } } } }
private void handleMethod(SimpleName node, IMethodBinding binding) { ITypeBinding declaringClass= binding.getDeclaringClass(); if (Modifier.isStatic(binding.getModifiers())) { if (fFindUnqualifiedStaticMethodAccesses) { //Do not qualify static fields if defined inside an anonymous class if (declaringClass.isAnonymous()) return; fResult.add(new AddStaticQualifierOperation(declaringClass, node)); } } else { if (fFindUnqualifiedMethodAccesses) { String qualifier= getThisExpressionQualifier(declaringClass, fImportRewrite, node); if (qualifier == null) return; if (qualifier.length() == 0) qualifier= null; fResult.add(new AddThisQualifierOperation(qualifier, node)); } } } }
private void handleMethod(SimpleName node, IMethodBinding binding) { ITypeBinding declaringClass= binding.getDeclaringClass(); if (Modifier.isStatic(binding.getModifiers())) { if (fFindUnqualifiedStaticMethodAccesses) { //Do not qualify static fields if defined inside an anonymous class if (declaringClass.isAnonymous()) return; fResult.add(new AddStaticQualifierOperation(declaringClass, node)); } } else { if (fFindUnqualifiedMethodAccesses) { String qualifier= getNonStaticQualifier(declaringClass, fImportRewrite, node); if (qualifier == null) return; fResult.add(new AddThisQualifierOperation(qualifier, node)); } } } }
private static ITypeBinding normalizeTypeBinding(ITypeBinding binding) { if (binding != null && !binding.isNullType() && !"void".equals(binding.getName())) { //$NON-NLS-1$ if (binding.isAnonymous()) { ITypeBinding[] baseBindings= binding.getInterfaces(); if (baseBindings.length > 0) { return baseBindings[0]; } return binding.getSuperclass(); } if (binding.isCapture()) { return binding.getWildcard(); } return binding; } return null; }
private static ITypeBinding normalizeTypeBinding(ITypeBinding binding) { if (binding != null && !binding.isNullType() && !"void".equals(binding.getName())) { //$NON-NLS-1$ if (binding.isAnonymous()) { ITypeBinding[] baseBindings= binding.getInterfaces(); if (baseBindings.length > 0) { return baseBindings[0]; } return binding.getSuperclass(); } if (binding.isCapture()) { return binding.getWildcard(); } return binding; } return null; }
private static ITypeBinding normalizeTypeBinding(ITypeBinding binding) { if (binding != null && !binding.isNullType() && !"void".equals(binding.getName())) { //$NON-NLS-1$ if (binding.isAnonymous()) { ITypeBinding[] baseBindings= binding.getInterfaces(); if (baseBindings.length > 0) { return baseBindings[0]; } return binding.getSuperclass(); } if (binding.isCapture()) { return binding.getWildcard(); } return binding; } return null; }
private static ITypeBinding normalizeTypeBinding(ITypeBinding binding) { if (binding != null && !binding.isNullType() && !"void".equals(binding.getName())) { //$NON-NLS-1$ if (binding.isAnonymous()) { ITypeBinding[] baseBindings= binding.getInterfaces(); if (baseBindings.length > 0) { return baseBindings[0]; } return binding.getSuperclass(); } if (binding.isCapture()) { return binding.getWildcard(); } return binding; } return null; }
private static ITypeBinding normalizeTypeBinding(ITypeBinding binding) { if (binding != null && !binding.isNullType() && !"void".equals(binding.getName())) { //$NON-NLS-1$ if (binding.isAnonymous()) { ITypeBinding[] baseBindings= binding.getInterfaces(); if (baseBindings.length > 0) { return baseBindings[0]; } return binding.getSuperclass(); } if (binding.isCapture()) { return binding.getWildcard(); } return binding; } return null; }
private static ITypeBinding normalizeTypeBinding(ITypeBinding binding) { if (binding != null && !binding.isNullType() && !"void".equals(binding.getName())) { //$NON-NLS-1$ if (binding.isAnonymous()) { ITypeBinding[] baseBindings= binding.getInterfaces(); if (baseBindings.length > 0) { return baseBindings[0]; } return binding.getSuperclass(); } if (binding.isCapture()) { return binding.getWildcard(); } return binding; } return null; }
private String getQualifiedName(ITypeBinding typeBinding) { if (typeBinding == null) return null; String qualifiedName = typeBinding.getQualifiedName(); if (StringUtils.isEmpty(qualifiedName)) { if (typeBinding.isAnonymous()) { if (typeBinding.getSuperclass() != null) qualifiedName = getQualifiedName(typeBinding.getSuperclass()); else if (typeBinding instanceof AnonymousClassDeclaration) { qualifiedName = ((AnonymousClassDeclaration) typeBinding).toString(); } } else if (StringUtils.isEmpty(qualifiedName) && typeBinding.isNested()) qualifiedName = typeBinding.getName(); } return qualifiedName; }
private static String getQualifiedName(ITypeBinding typeBinding) { if (typeBinding.isAnonymous()) return getQualifiedName(typeBinding.getSuperclass()); if (! typeBinding.isArray()) return typeBinding.getQualifiedName(); else return typeBinding.getElementType().getQualifiedName(); }
private static String getQualifiedName(ITypeBinding typeBinding) { if (typeBinding.isAnonymous()) return getQualifiedName(typeBinding.getSuperclass()); if (! typeBinding.isArray()) return typeBinding.getQualifiedName(); else return typeBinding.getElementType().getQualifiedName(); }
private static String getQualifiedName(ITypeBinding typeBinding) { if (typeBinding.isAnonymous()) return getQualifiedName(typeBinding.getSuperclass()); if (! typeBinding.isArray()) return typeBinding.getQualifiedName(); else return typeBinding.getElementType().getQualifiedName(); }
private static void createName(ITypeBinding type, boolean includePackage, List<String> list) { ITypeBinding baseType= type; if (type.isArray()) { baseType= type.getElementType(); } if (!baseType.isPrimitive() && !baseType.isNullType()) { ITypeBinding declaringType= baseType.getDeclaringClass(); if (declaringType != null) { createName(declaringType, includePackage, list); } else if (includePackage && !baseType.getPackage().isUnnamed()) { String[] components= baseType.getPackage().getNameComponents(); for (int i= 0; i < components.length; i++) { list.add(components[i]); } } } if (!baseType.isAnonymous()) { list.add(type.getName()); } else { list.add("$local$"); //$NON-NLS-1$ } }
private static void createName(ITypeBinding type, boolean includePackage, List<String> list) { ITypeBinding baseType= type; if (type.isArray()) { baseType= type.getElementType(); } if (!baseType.isPrimitive() && !baseType.isNullType()) { ITypeBinding declaringType= baseType.getDeclaringClass(); if (declaringType != null) { createName(declaringType, includePackage, list); } else if (includePackage && !baseType.getPackage().isUnnamed()) { String[] components= baseType.getPackage().getNameComponents(); for (int i= 0; i < components.length; i++) { list.add(components[i]); } } } if (!baseType.isAnonymous()) { list.add(type.getName()); } else { list.add("$local$"); //$NON-NLS-1$ } }
/** * Normalizes a type binding received from an expression to a type binding that can be used in a declaration signature. * Anonymous types are normalized, to the super class or interface. For null or void bindings * <code>null</code> is returned. * @param binding the binding to normalize * @return the normalized binding */ public static ITypeBinding normalizeTypeBinding(ITypeBinding binding) { if (binding != null && !binding.isNullType() && !isVoidType(binding)) { if (binding.isAnonymous()) { ITypeBinding[] baseBindings= binding.getInterfaces(); if (baseBindings.length > 0) { return baseBindings[0]; } return binding.getSuperclass(); } if (binding.isCapture()) { return binding.getWildcard(); } return binding; } return null; }
public String anonLocalTypeToTypeID(ITypeBinding type) { String outerTypeID = typeToTypeID(type.getDeclaringClass()); String metSelectorName; IMethodBinding metBinding = type.getDeclaringMethod(); if (metBinding == null) // anonymous class declared in initializer or static initializer (rare case...) metSelectorName = "<init>"; else metSelectorName = getMethodRef(metBinding).getSelector().toString(); String shortName = (type.isAnonymous()) ? JDT2CAstUtils.anonTypeName(type) : type.getName(); return outerTypeID + '/' + metSelectorName + '/' + shortName; }
/** * Translates the given Polyglot type to a name suitable for use in a DOMO TypeReference (i.e. a bytecode-compliant type name). */ public String typeToTypeID(ITypeBinding type) { if (type.isPrimitive()) return type.getBinaryName(); else if (type.isArray()) // arrays' binary names in JDT are like "[Ljava.lang.String;" return type.getBinaryName().replace('.', '/').replace(";", ""); else if (type.isLocal() || type.isAnonymous()) return anonLocalTypeToTypeID(type); else if (type.isClass() || type.isEnum() || type.isInterface()) // in polyglot interfaces are classes too. not in JDT // class binary names in JDT are like "java.lang.String" return 'L' + type.getBinaryName().replace('.', '/'); // TODO: else if (type.isTypeVariable()) { return typeToTypeID(JDT2CAstUtils.getTypesVariablesBase(type, fAst)); } Assertions.UNREACHABLE("typeToTypeID() encountered the type " + type + " that is neither primitive, array, nor class!"); return null; }