All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.pmd.lang.java.ast.ASTFieldAccess Maven / Gradle / Ivy

The newest version!
/**
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 */

package net.sourceforge.pmd.lang.java.ast;

import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;

import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken;
import net.sourceforge.pmd.lang.java.ast.ASTAssignableExpr.ASTNamedReferenceExpr;
import net.sourceforge.pmd.lang.java.symbols.JFieldSymbol;
import net.sourceforge.pmd.lang.java.types.JVariableSig.FieldSig;

/**
 * A field access expression.
 *
 * 
 *
 * FieldAccess ::= {@link ASTExpression Expression} "." <IDENTIFIER>
 *
 * 
*/ public final class ASTFieldAccess extends AbstractJavaExpr implements ASTNamedReferenceExpr, QualifiableExpression { private FieldSig typedSym; ASTFieldAccess(int id) { super(id); } /** * Promotes an ambiguous name to the LHS of this node. */ ASTFieldAccess(ASTAmbiguousName lhs, String fieldName) { super(JavaParserImplTreeConstants.JJTFIELDACCESS); assert fieldName != null; this.addChild(lhs, 0); this.setImage(fieldName); } ASTFieldAccess(ASTExpression lhs, JavaccToken identifier) { super(JavaParserImplTreeConstants.JJTFIELDACCESS); TokenUtils.expectKind(identifier, JavaTokenKinds.IDENTIFIER); this.addChild((AbstractJavaNode) lhs, 0); this.setImage(identifier.getImage()); this.setFirstToken(lhs.getFirstToken()); this.setLastToken(identifier); } @Override public @NonNull ASTExpression getQualifier() { return (ASTExpression) getChild(0); } @Override public String getName() { return getImage(); } @Override public @Nullable FieldSig getSignature() { forceTypeResolution(); return typedSym; } @Override public @Nullable JFieldSymbol getReferencedSym() { return (JFieldSymbol) ASTNamedReferenceExpr.super.getReferencedSym(); } void setTypedSym(@Nullable FieldSig sig) { this.typedSym = sig; } @Override protected R acceptVisitor(JavaVisitor visitor, P data) { return visitor.visit(this, data); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy