Example usage for org.eclipse.jdt.internal.compiler.ast SingleNameReference fieldBinding

List of usage examples for org.eclipse.jdt.internal.compiler.ast SingleNameReference fieldBinding

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.ast SingleNameReference fieldBinding.

Prototype

@Override
public FieldBinding fieldBinding() 

Source Link

Document

Use this method only when sure that the current reference is not a chain of several fields (QualifiedNameReference with more than one field).

Usage

From source file:spoon.support.builder.JDTTreeBuilder.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//from  w  w w. ja  va 2  s .c o m
public boolean visit(SingleNameReference singleNameReference, BlockScope scope) {
    CtVariableAccess<?> va = null;
    if (singleNameReference.binding instanceof FieldBinding) {
        va = factory.Core().createFieldAccess();
        va.setVariable(references.getVariableReference(singleNameReference.fieldBinding()));
    } else if (singleNameReference.binding instanceof VariableBinding) {
        va = factory.Core().createVariableAccess();
        va.setVariable(references.getVariableReference((VariableBinding) singleNameReference.binding));
    }
    if (va != null)
        context.enter(va, singleNameReference);
    return true;
}

From source file:spoon.support.compiler.jdt.JDTTreeBuilder.java

License:Open Source License

@Override
public boolean visit(SingleNameReference singleNameReference, BlockScope scope) {
    CtVariableAccess<Object> va = null;
    if (singleNameReference.binding instanceof FieldBinding) {
        if (context.stack.peek().element instanceof CtAssignment && context.assigned) {
            va = factory.Core().createFieldWrite();
        } else {/*  w  ww .j  av a2s.c  om*/
            va = factory.Core().createFieldRead();
        }
        va.setVariable(references.getVariableReference(singleNameReference.fieldBinding()));
    } else if (singleNameReference.binding instanceof VariableBinding) {
        if (context.stack.peek().element instanceof CtAssignment && context.assigned) {
            va = factory.Core().createVariableWrite();
        } else {
            va = factory.Core().createVariableRead();
        }
        va.setVariable(references.getVariableReference((VariableBinding) singleNameReference.binding));
    } else if (singleNameReference.binding instanceof TypeBinding) {
        CtTypeAccess<Object> ta = factory.Core().createTypeAccess();
        ta.setType(references.getTypeReference((TypeBinding) singleNameReference.binding));
        context.enter(ta, singleNameReference);
    } else if (singleNameReference.binding instanceof ProblemBinding) {
        if (context.stack.peek().element instanceof CtInvocation) {
            final CtTypeAccess<Object> ta = factory.Core().createTypeAccess();
            final CtTypeReference<Object> typeReference = factory.Core().createTypeReference();
            typeReference.setSimpleName(new String(singleNameReference.binding.readableName()));
            ta.setType(typeReference);
            context.enter(ta, singleNameReference);
            return true;
        } else if (context.stack.peek().element instanceof CtAssignment && context.assigned) {
            va = factory.Core().createFieldWrite();
        } else {
            va = factory.Core().createFieldRead();
        }
    }
    if (va != null) {
        context.enter(va, singleNameReference);
    }
    return true;
}

From source file:spoon.support.compiler.jdt.JDTTreeBuilderHelper.java

License:Open Source License

/**
 * Creates a field access from its single name.
 *
 * @param singleNameReference/*ww w . ja v  a  2 s  . c  om*/
 *       Used to build a variable reference and a target which will be contained in the field access.
 * @return a field access.
 */
<T> CtFieldAccess<T> createFieldAccess(SingleNameReference singleNameReference) {
    CtFieldAccess<T> va;
    if (isLhsAssignment(jdtTreeBuilder.getContextBuilder(), singleNameReference)) {
        va = jdtTreeBuilder.getFactory().Core().createFieldWrite();
    } else {
        va = jdtTreeBuilder.getFactory().Core().createFieldRead();
    }
    va.setVariable(jdtTreeBuilder.getReferencesBuilder()
            .<T>getVariableReference(singleNameReference.fieldBinding().original()));
    if (va.getVariable() != null) {
        final CtFieldReference<T> ref = va.getVariable();
        if (ref.isStatic() && !ref.getDeclaringType().isAnonymous()) {
            va.setTarget(jdtTreeBuilder.getFactory().Code().createTypeAccess(ref.getDeclaringType(), true));
        } else if (!ref.isStatic()) {
            va.setTarget(jdtTreeBuilder.getFactory().Code().createThisAccess(jdtTreeBuilder
                    .getReferencesBuilder().getTypeReference(singleNameReference.actualReceiverType), true));
        }
    }
    return va;
}