<s> package org . eclipse . jdt . internal . compiler . ast ; import org . eclipse . jdt . internal . compiler . ASTVisitor ; import org . eclipse . jdt . internal . compiler . impl . Constant ; import org . eclipse . jdt . internal . compiler . lookup . * ; public class JavadocImplicitTypeReference extends TypeReference { public char [ ] token ; public JavadocImplicitTypeReference ( char [ ] name , int pos ) { super ( ) ; this . token = name ; this . sourceStart = pos ; this . sourceEnd = pos ; } public TypeReference copyDims ( int dim ) { return null ; } protected TypeBinding getTypeBinding ( Scope scope ) { this . constant = Constant . NotAConstant ; return this . resolvedType = scope . enclosingReceiverType ( ) ; } public char [ ] getLastToken ( ) { return this . token ; } public char [ ] [ ] getTypeName ( ) { if ( this . token != null ) { char [ ] [ ] tokens = { this . token } ; return tokens ; } return null ; } public boolean isThis ( ) { return true ; } protected TypeBinding internalResolveType ( Scope scope ) { this . constant = Constant . NotAConstant ; if ( this . resolvedType != null ) { if ( this . resolvedType . isValidBinding ( ) ) { return this . resolvedType ; } else { switch ( this . resolvedType . problemId ( ) ) { case ProblemReasons . NotFound : case ProblemReasons . NotVisible : TypeBinding type = this . resolvedType . closestMatch ( ) ; return type ; default : return null ; } } } boolean hasError ; TypeBinding type = this . resolvedType = getTypeBinding ( scope ) ; if ( type == null ) { return null ; } else if ( ( hasError = ! type . isValidBinding ( ) ) == true ) { reportInvalidType ( scope ) ; switch ( type . problemId ( ) ) { case ProblemReasons . NotFound : case ProblemReasons . NotVisible : type = type . closestMatch ( ) ; if ( type == null ) return null ; break ; default : return null ; } } if ( type . isArrayType ( ) && ( ( ArrayBinding ) type ) . leafComponentType == TypeBinding . VOID ) { scope . problemReporter ( ) . cannotAllocateVoidArray ( this ) ; return null ; } if ( isTypeUseDeprecated ( type , scope ) ) { reportDeprecatedType ( type , scope ) ; } if ( type . isGenericType ( ) || type . isParameterizedType ( ) ) { type = scope . environment ( ) . convertToRawType ( type , true ) ; } if ( hasError ) { return type ; } return this . resolvedType = type ; } protected void reportInvalidType ( Scope scope ) { scope . problemReporter ( ) . javadocInvalidType ( this , this . resolvedType , scope . getDeclarationModifiers ( ) ) ; } protected void reportDeprecatedType ( TypeBinding type , Scope scope ) { scope . problemReporter ( ) . javadocDeprecatedType ( type , this , scope . getDeclarationModifiers ( ) ) ; } public void traverse ( ASTVisitor visitor , BlockScope scope ) { visitor . visit ( this , scope ) ; visitor . endVisit ( this , scope ) ; } public void traverse ( ASTVisitor visitor , ClassScope scope ) { visitor . visit ( this , scope ) ; visitor . endVisit ( this , scope ) ; } public StringBuffer printExpression ( int indent , StringBuffer output ) { return new StringBuffer ( ) ; } } </s>