Copyright (c) 2007, 2013 IBM Corporation and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
IBM Corporation - initial API and implementation
/*******************************************************************************
* Copyright (c) 2007, 2013 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.dom;
import org.eclipse.jdt.core.IJavaElement;
This class represents the recovered binding for a variable
/**
* This class represents the recovered binding for a variable
*/
class RecoveredVariableBinding implements IVariableBinding {
private VariableDeclaration variableDeclaration;
private BindingResolver resolver;
RecoveredVariableBinding(BindingResolver resolver, VariableDeclaration variableDeclaration) {
this.resolver = resolver;
this.variableDeclaration = variableDeclaration;
}
@Override
public Object getConstantValue() {
return null;
}
@Override
public ITypeBinding getDeclaringClass() {
ASTNode parent = this.variableDeclaration.getParent();
while (parent != null && parent.getNodeType() != ASTNode.TYPE_DECLARATION) {
parent = parent.getParent();
}
if (parent != null) {
return ((TypeDeclaration) parent).resolveBinding();
}
return null;
}
@Override
public IMethodBinding getDeclaringMethod() {
ASTNode parent = this.variableDeclaration.getParent();
while (parent != null && parent.getNodeType() != ASTNode.METHOD_DECLARATION) {
parent = parent.getParent();
}
if (parent != null) {
return ((MethodDeclaration) parent).resolveBinding();
}
return null;
}
@Override
public String getName() {
return this.variableDeclaration.getName().getIdentifier();
}
@Override
public ITypeBinding getType() {
return this.resolver.getTypeBinding(this.variableDeclaration);
}
@Override
public IVariableBinding getVariableDeclaration() {
return this;
}
@Override
public int getVariableId() {
return 0;
}
@Override
public boolean isEnumConstant() {
return false;
}
@Override
public boolean isField() {
return this.variableDeclaration.getParent() instanceof FieldDeclaration;
}
@Override
public boolean isParameter() {
return this.variableDeclaration instanceof SingleVariableDeclaration;
}
@Override
public IAnnotationBinding[] getAnnotations() {
return AnnotationBinding.NoAnnotations;
}
@Override
public IJavaElement getJavaElement() {
return null;
}
@Override
public String getKey() {
StringBuffer buffer = new StringBuffer();
buffer.append("Recovered#"); //$NON-NLS-1$
if (this.variableDeclaration != null) {
buffer
.append("variableDeclaration") //$NON-NLS-1$
.append(this.variableDeclaration.getClass())
.append(this.variableDeclaration.getName().getIdentifier())
.append(this.variableDeclaration.getExtraDimensions());
}
return String.valueOf(buffer);
}
@Override
public int getKind() {
return IBinding.VARIABLE;
}
@Override
public int getModifiers() {
return 0;
}
@Override
public boolean isDeprecated() {
return false;
}
@Override
public boolean isEqualTo(IBinding binding) {
if (binding.isRecovered() && binding.getKind() == IBinding.VARIABLE) {
return getKey().equals(binding.getKey());
}
return false;
}
@Override
public boolean isRecovered() {
return true;
}
@Override
public boolean isSynthetic() {
return false;
}
@Override
public boolean isEffectivelyFinal() {
return false;
}
}