| package org.eclipse.jdt.internal.compiler.ast; |
| |
| /* |
| * (c) Copyright IBM Corp. 2000, 2001. |
| * All Rights Reserved. |
| */ |
| import org.eclipse.jdt.internal.compiler.IAbstractSyntaxTreeVisitor; |
| import org.eclipse.jdt.internal.compiler.lookup.*; |
| |
| public class SingleTypeReference extends TypeReference { |
| public char[] token; |
| |
| |
| public SingleTypeReference(char[] source, long pos) { |
| token = source; |
| sourceStart = (int) (pos>>>32) ; |
| sourceEnd = (int) (pos & 0x00000000FFFFFFFFL) ; |
| |
| } |
| public SingleTypeReference(char[] source ,TypeBinding tb, long pos) { |
| this(source, pos) ; |
| binding = tb ; |
| } |
| public TypeReference copyDims(int dim){ |
| //return a type reference copy of me with some dimensions |
| //warning : the new type ref has a null binding |
| |
| return new ArrayTypeReference(token,null,dim,(((long)sourceStart)<<32)+sourceEnd) ; |
| } |
| public TypeBinding getTypeBinding(Scope scope) { |
| if (binding != null) |
| return binding; |
| return scope.getType(token); |
| } |
| public char [][] getTypeName() { |
| return new char[][] { token }; |
| } |
| public TypeBinding resolveTypeEnclosing(BlockScope scope, ReferenceBinding enclosingType) { |
| ReferenceBinding memberTb = scope.getMemberType(token, enclosingType); |
| if (!memberTb.isValidBinding()) { |
| scope.problemReporter().invalidEnclosingType(this, memberTb, enclosingType); |
| return null; |
| } |
| if (isTypeUseDeprecated(memberTb, scope)) |
| scope.problemReporter().deprecatedType(memberTb, this); |
| return binding = memberTb; |
| } |
| public String toStringExpression(int tab){ |
| return new String(token) ; |
| } |
| public void traverse(IAbstractSyntaxTreeVisitor visitor, BlockScope scope) { |
| visitor.visit(this, scope); |
| visitor.endVisit(this, scope); |
| } |
| public void traverse(IAbstractSyntaxTreeVisitor visitor, ClassScope scope) { |
| visitor.visit(this, scope); |
| visitor.endVisit(this, scope); |
| } |
| } |