Example usage for org.eclipse.jdt.internal.compiler.lookup ReferenceBinding availableFields

List of usage examples for org.eclipse.jdt.internal.compiler.lookup ReferenceBinding availableFields

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.lookup ReferenceBinding availableFields.

Prototype

public FieldBinding[] availableFields() 

Source Link

Document

Return the array of resolvable fields (resilience)

Usage

From source file:com.codenvy.ide.ext.java.server.internal.codeassist.SelectionEngine.java

License:Open Source License

private void selectStaticFieldFromStaticImport(CompilationUnitDeclaration parsedUnit, char[] lastToken,
        ReferenceBinding ref) {
    int fieldLength = lastToken.length;
    FieldBinding[] fields = ref.availableFields();
    next: for (int j = 0; j < fields.length; j++) {
        FieldBinding field = fields[j];/*from ww w .  ja va2  s .  c  om*/

        if (fieldLength > field.name.length)
            continue next;

        if (field.isSynthetic())
            continue next;

        if (!field.isStatic())
            continue next;

        if (!CharOperation.equals(lastToken, field.name, true))
            continue next;

        selectFrom(field, parsedUnit, false);
    }
}

From source file:lombok.eclipse.agent.PatchDelegate.java

License:Open Source License

private static void addAllMethodBindings0(List<BindingTuple> list, TypeBinding binding, Set<String> banList,
        char[] fieldName, ASTNode responsible) throws DelegateRecursion {
    if (binding instanceof SourceTypeBinding)
        ((SourceTypeBinding) binding).scope.environment().globalOptions.storeAnnotations = true;
    if (binding == null)
        return;//from w  ww  .j a  va  2  s  .  c o m

    TypeBinding inner;

    if (binding instanceof ParameterizedTypeBinding) {
        inner = ((ParameterizedTypeBinding) binding).genericType();
    } else {
        inner = binding;
    }

    if (inner instanceof SourceTypeBinding) {
        ClassScope cs = ((SourceTypeBinding) inner).scope;
        if (cs != null) {
            try {
                Reflection.classScopeBuildFieldsAndMethodsMethod.invoke(cs);
            } catch (Exception e) {
                // See 'Reflection' class for why we ignore this exception.
            }
        }
    }

    if (binding instanceof ReferenceBinding) {
        ReferenceBinding rb = (ReferenceBinding) binding;
        MethodBinding[] availableMethods = rb.availableMethods();
        FieldBinding[] availableFields = rb.availableFields();
        failIfContainsAnnotation(binding, availableMethods);
        failIfContainsAnnotation(binding, availableFields);

        MethodBinding[] parameterizedSigs = availableMethods;
        MethodBinding[] baseSigs = parameterizedSigs;
        if (binding instanceof ParameterizedTypeBinding) {
            baseSigs = ((ParameterizedTypeBinding) binding).genericType().availableMethods();
            if (baseSigs.length != parameterizedSigs.length) {
                // The last known state of eclipse source says this can't happen, so we rely on it,
                // but if this invariant is broken, better to go with 'arg0' naming instead of crashing.
                baseSigs = parameterizedSigs;
            }
        }
        for (int i = 0; i < parameterizedSigs.length; i++) {
            MethodBinding mb = parameterizedSigs[i];
            String sig = printSig(mb);
            if (mb.isStatic())
                continue;
            if (mb.isBridge())
                continue;
            if (mb.isConstructor())
                continue;
            if (mb.isDefaultAbstract())
                continue;
            if (!mb.isPublic())
                continue;
            if (mb.isSynthetic())
                continue;
            if (!banList.add(sig))
                continue; // If add returns false, it was already in there.
            BindingTuple pair = new BindingTuple(mb, baseSigs[i], fieldName, responsible);
            list.add(pair);
        }
        addAllMethodBindings0(list, rb.superclass(), banList, fieldName, responsible);
        ReferenceBinding[] interfaces = rb.superInterfaces();
        if (interfaces != null) {
            for (ReferenceBinding iface : interfaces)
                addAllMethodBindings0(list, iface, banList, fieldName, responsible);
        }
    }
}