Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2007, 2011 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 
 package org.eclipse.jdt.core.dom;
 
 import java.util.List;
 
This class represents the recovered binding for a type
 
 class RecoveredTypeBinding implements ITypeBinding {
 
 	private Type currentType;
 	private int dimensions;
 
 	RecoveredTypeBinding(BindingResolver resolverVariableDeclaration variableDeclaration) {
 		this. = variableDeclaration;
 		this. = resolver;
 		this. = getType();
 		this. = variableDeclaration.getExtraDimensions();
 		if (this..isArrayType()) {
 		}
 	}
 
 		this. = resolver;
 		this. = typeBinding.dimensions();
 		this. = typeBinding;
 	}
 
 		this. = type;
 		this. = resolver;
 		this. = 0;
 		if (type.isArrayType()) {
 			this. += ((ArrayTypetype).getDimensions();
 		}
 	}
 
 	RecoveredTypeBinding(BindingResolver resolverRecoveredTypeBinding typeBindingint dimensions) {
 		this. = typeBinding;
 		this. = typeBinding.getDimensions() + dimensions;
 		this. = resolver;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ITypeBinding#createArrayType(int)
 	 */
 	public ITypeBinding createArrayType(int dims) {
 		return this..getTypeBinding(thisdims);
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getBinaryName()
 	 */
 	public String getBinaryName() {
 		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getBound()
 	 */
 	public ITypeBinding getBound() {
 		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getGenericTypeOfWildcardType()
 	 */
 		return null;
 	}
 	
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getRank()
	 */
	public int getRank() {
		return -1;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getComponentType()
	 */
		if (this. == 0) return null;
		return this..getTypeBinding(this, -1);
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredFields()
	 */
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredMethods()
	 */
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredModifiers()
	 */
	public int getDeclaredModifiers() {
		return 0;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredTypes()
	 */
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getDeclaringClass()
	 */
		return null;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getDeclaringMethod()
	 */
		return null;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getDimensions()
	 */
	public int getDimensions() {
		return this.;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getElementType()
	 */
		if (this. != null) {
			if (this..isArrayType()) {
				ArrayBinding arrayBinding = (ArrayBindingthis.;
				return new RecoveredTypeBinding(this.arrayBinding.leafComponentType);
else {
				return new RecoveredTypeBinding(this.this.);
			}
		}
		if (this. != null) {
		}
		if (this.!= null && this..isArrayType()) {
		}
		if (this. != null && this..getExtraDimensions() != 0) {
		}
		return null;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getErasure()
	 */
		return this;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getInterfaces()
	 */
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getModifiers()
	 */
	public int getModifiers() {
		return .;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getName()
	 */
	public String getName() {
		char[] brackets = new char[this. * 2];
		for (int i = this. * 2 - 1; i >= 0; i -= 2) {
			brackets[i] = ']';
			brackets[i - 1] = '[';
		}
		buffer.append(brackets);
		return String.valueOf(buffer);
	}
	private String getInternalName() {
		if (this. != null) {
		}
		ReferenceBinding referenceBinding = getReferenceBinding();
		if (referenceBinding != null) {
			return new String(referenceBinding.compoundName[referenceBinding.compoundName.length - 1]);
		}
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getPackage()
	 */
		if (this. != null) {
			switch (this..kind()) {
				case . : // includes capture scenario
					return null;
			}
			if (packageBinding != nullreturn packageBinding;
		}
		if (this. != null && this. > 0) {
			return null;
		}
		if (scope != null) {
		}
		return null;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getQualifiedName()
	 */
		ReferenceBinding referenceBinding = getReferenceBinding();
		if (referenceBinding != null) {
			StringBuffer buffer = new StringBuffer();
			char[] brackets = new char[this. * 2];
			for (int i = this. * 2 - 1; i >= 0; i -= 2) {
				brackets[i] = ']';
				brackets[i - 1] = '[';
			}
			buffer.append(CharOperation.toString(referenceBinding.compoundName));
			buffer.append(brackets);
			return String.valueOf(buffer);
else {
			return getName();
		}
	}
		if (this. != null) {
			if (this..isArrayType()) {
				ArrayBinding arrayBinding = (ArrayBindingthis.;
				if (arrayBinding.leafComponentType instanceof ReferenceBinding) {
					return (ReferenceBindingarrayBinding.leafComponentType;
				}
else if (this. instanceof ReferenceBinding) {
				return (ReferenceBindingthis.;
			}
else if (this. != null) {
		}
		return null;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getSuperclass()
	 */
		if (getQualifiedName().equals("java.lang.Object")) {	//$NON-NLS-1$
			return null;
		}
		return this..resolveWellKnownType("java.lang.Object"); //$NON-NLS-1$
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getTypeArguments()
	 */
		if (this. != null) {
		}
		if (this. != null) {
			return this.;
		}
		if (this. != null) {
		}
			ParameterizedType parameterizedType = (ParameterizedTypethis.;
			List typeArgumentsList = parameterizedType.typeArguments();
			int size = typeArgumentsList.size();
			ITypeBinding[] temp = new ITypeBinding[size];
			for (int i = 0; i < sizei++) {
				ITypeBinding currentTypeBinding = ((TypetypeArgumentsList.get(i)).resolveBinding();
				if (currentTypeBinding == null) {
				}
				temp[i] = currentTypeBinding;
			}
			return this. = temp;
		}
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getTypeBounds()
	 */
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getTypeDeclaration()
	 */
		return this;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getTypeParameters()
	 */
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#getWildcard()
	 */
		return null;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isAnnotation()
	 */
	public boolean isAnnotation() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isAnonymous()
	 */
	public boolean isAnonymous() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isArray()
	 */
	public boolean isArray() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isAssignmentCompatible(org.eclipse.jdt.core.dom.ITypeBinding)
	 */
	public boolean isAssignmentCompatible(ITypeBinding typeBinding) {
		if ("java.lang.Object".equals(typeBinding.getQualifiedName())) { //$NON-NLS-1$
			return true;
		}
		// since recovered binding are not unique isEqualTo is required
		return isEqualTo(typeBinding);
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isCapture()
	 */
	public boolean isCapture() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isCastCompatible(org.eclipse.jdt.core.dom.ITypeBinding)
	 */
	public boolean isCastCompatible(ITypeBinding typeBinding) {
		if ("java.lang.Object".equals(typeBinding.getQualifiedName())) { //$NON-NLS-1$
			return true;
		}
		// since recovered binding are not unique isEqualTo is required
		return isEqualTo(typeBinding);
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isClass()
	 */
	public boolean isClass() {
		return true;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isEnum()
	 */
	public boolean isEnum() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isFromSource()
	 */
	public boolean isFromSource() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isGenericType()
	 */
	public boolean isGenericType() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isInterface()
	 */
	public boolean isInterface() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isLocal()
	 */
	public boolean isLocal() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isMember()
	 */
	public boolean isMember() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isNested()
	 */
	public boolean isNested() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isNullType()
	 */
	public boolean isNullType() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isParameterizedType()
	 */
	public boolean isParameterizedType() {
		if (this. != null) {
		}
		if (this. != null) {
		}
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isPrimitive()
	 */
	public boolean isPrimitive() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isRawType()
	 */
	public boolean isRawType() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isSubTypeCompatible(org.eclipse.jdt.core.dom.ITypeBinding)
	 */
	public boolean isSubTypeCompatible(ITypeBinding typeBinding) {
		if ("java.lang.Object".equals(typeBinding.getQualifiedName())) { //$NON-NLS-1$
			return true;
		}
		// since recovered binding are not unique isEqualTo is required
		return isEqualTo(typeBinding);
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isTopLevel()
	 */
	public boolean isTopLevel() {
		return true;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isTypeVariable()
	 */
	public boolean isTypeVariable() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isUpperbound()
	 */
	public boolean isUpperbound() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.ITypeBinding#isWildcardType()
	 */
	public boolean isWildcardType() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#getAnnotations()
	 */
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#getJavaElement()
	 */
		IPackageBinding packageBinding = getPackage();
		if (packageBinding != null) {
			final IJavaElement javaElement = packageBinding.getJavaElement();
			if (javaElement != null && javaElement.getElementType() == .) {
				// best effort: we don't know if the recovered binding is a binary or source binding, so go with a simple source type
			}
		}
		return null;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#getKey()
	 */
	public String getKey() {
		StringBuffer buffer = new StringBuffer();
		buffer.append("Recovered#"); //$NON-NLS-1$
		if (this. != null) {
			buffer.append("innerTypeBinding"//$NON-NLS-1$
			      .append(this..getKey());
else if (this. != null) {
			buffer.append("currentType"//$NON-NLS-1$
			      .append(this..toString());
else if (this. != null) {
			buffer.append("typeBinding"//$NON-NLS-1$
else if (this. != null) {
			buffer
				.append("variableDeclaration"//$NON-NLS-1$
		}
		if (this. != null) {
			buffer.append('<');
			for (int i = 0, max = this..lengthi < maxi++) {
				if (i != 0) {
					buffer.append(',');
				}
				buffer.append(this.[i].getKey());
			}
			buffer.append('>');
		}
		return String.valueOf(buffer);
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#getKind()
	 */
	public int getKind() {
		return .;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#isDeprecated()
	 */
	public boolean isDeprecated() {
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#isEqualTo(org.eclipse.jdt.core.dom.IBinding)
	 */
	public boolean isEqualTo(IBinding other) {
		if (!other.isRecovered() || other.getKind() != .return false;
		return getKey().equals(other.getKey());
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#isRecovered()
	 */
	public boolean isRecovered() {
		return true;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jdt.core.dom.IBinding#isSynthetic()
	 */
	public boolean isSynthetic() {
		return false;
	}
	private String getTypeNameFrom(Type type) {
		if (type == nullreturn .;
		switch(type.getNodeType0()) {
				ArrayType arrayType = (ArrayTypetype;
				type = arrayType.getElementType();
				return getTypeNameFrom(type);
				ParameterizedType parameterizedType = (ParameterizedTypetype;
				StringBuffer buffer = new StringBuffer(getTypeNameFrom(parameterizedType.getType()));
				ITypeBinding[] tArguments = getTypeArguments();
				final int typeArgumentsLength = tArguments.length;
				if (typeArgumentsLength != 0) {
					buffer.append('<');
					for (int i = 0; i < typeArgumentsLengthi++) {
						if (i > 0) {
							buffer.append(',');
						}
						buffer.append(tArguments[i].getName());
					}
					buffer.append('>');
				}
				return String.valueOf(buffer);
				PrimitiveType primitiveType = (PrimitiveTypetype;
				return primitiveType.getPrimitiveTypeCode().toString();
				QualifiedType qualifiedType = (QualifiedTypetype;
				return qualifiedType.getName().getIdentifier();
				SimpleType simpleType = (SimpleTypetype;
				Name name = simpleType.getName();
				if (name.isQualifiedName()) {
					QualifiedName qualifiedName = (QualifiedNamename;
					return qualifiedName.getName().getIdentifier();
				}
				return ((SimpleNamename).getIdentifier();
		}
	}
	private Type getType() {
		if (this. != null) {
			return this.;
		}
		if (this. == nullreturn null;
				return singleVariableDeclaration.getType();
			default :
				// this is a variable declaration fragment
				switch(parent.getNodeType()) {
						VariableDeclarationExpression variableDeclarationExpression = (VariableDeclarationExpressionparent;
						return variableDeclarationExpression.getType();
						return statement.getType();
						FieldDeclaration fieldDeclaration  = (FieldDeclarationparent;
						return fieldDeclaration.getType();
				}
		}
		return null// should not happen
	}
New to GrepCode? Check out our FAQ X