private static void collectRelaxingTypes(Collection<ITypeBinding> res, ITypeBinding type) { ITypeBinding[] interfaces= type.getInterfaces(); for (int i= 0; i < interfaces.length; i++) { ITypeBinding curr= interfaces[i]; if (!res.contains(curr)) { res.add(curr); } collectRelaxingTypes(res, curr); } ITypeBinding binding= type.getSuperclass(); if (binding != null) { if (!res.contains(binding)) { res.add(binding); } collectRelaxingTypes(res, binding); } }
private static void collectRelaxingTypes(Collection res, ITypeBinding type) { ITypeBinding[] interfaces= type.getInterfaces(); for (int i= 0; i < interfaces.length; i++) { ITypeBinding curr= interfaces[i]; if (!res.contains(curr)) { res.add(curr); } collectRelaxingTypes(res, curr); } ITypeBinding binding= type.getSuperclass(); if (binding != null) { if (!res.contains(binding)) { res.add(binding); } collectRelaxingTypes(res, binding); } }
public static ITypeBinding[] getRelaxingTypes(AST ast, ITypeBinding type) { ArrayList res= new ArrayList(); res.add(type); if (type.isArray()) { res.add(ast.resolveWellKnownType("java.lang.Object")); //$NON-NLS-1$ res.add(ast.resolveWellKnownType("java.io.Serializable")); //$NON-NLS-1$ res.add(ast.resolveWellKnownType("java.lang.Cloneable")); //$NON-NLS-1$ } else if (type.isPrimitive()) { Code code= PrimitiveType.toCode(type.getName()); boolean found= false; for (int i= 0; i < CODE_ORDER.length; i++) { if (found) { String typeName= CODE_ORDER[i].toString(); res.add(ast.resolveWellKnownType(typeName)); } if (code == CODE_ORDER[i]) { found= true; } } } else { collectRelaxingTypes(res, type); } return (ITypeBinding[]) res.toArray(new ITypeBinding[res.size()]); }
public static ITypeBinding[] getRelaxingTypes(AST ast, ITypeBinding type) { ArrayList<ITypeBinding> res= new ArrayList<>(); res.add(type); if (type.isArray()) { res.add(ast.resolveWellKnownType("java.lang.Object")); //$NON-NLS-1$ // The following two types are not available in some j2me implementations, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=288060 : ITypeBinding serializable= ast.resolveWellKnownType("java.io.Serializable"); //$NON-NLS-1$ if (serializable != null) res.add(serializable); ITypeBinding cloneable= ast.resolveWellKnownType("java.lang.Cloneable"); //$NON-NLS-1$ if (cloneable != null) res.add(cloneable); } else if (type.isPrimitive()) { Code code= PrimitiveType.toCode(type.getName()); boolean found= false; for (int i= 0; i < CODE_ORDER.length; i++) { if (found) { String typeName= CODE_ORDER[i].toString(); res.add(ast.resolveWellKnownType(typeName)); } if (code == CODE_ORDER[i]) { found= true; } } } else { collectRelaxingTypes(res, type); } return res.toArray(new ITypeBinding[res.size()]); }