1 /*******************************************************************************
 
   2  * Copyright (c) 2000, 2003 IBM Corporation and others.
 
   3  * All rights reserved. This program and the accompanying materials 
 
   4  * are made available under the terms of the Common Public License v1.0
 
   5  * which accompanies this distribution, and is available at
 
   6  * http://www.eclipse.org/legal/cpl-v10.html
 
   9  *     IBM Corporation - initial API and implementation
 
  10  *******************************************************************************/
 
  11 package net.sourceforge.phpdt.internal.compiler.ast;
 
  13 import net.sourceforge.phpdt.internal.compiler.ASTVisitor;
 
  14 import net.sourceforge.phpdt.internal.compiler.lookup.BlockScope;
 
  15 import net.sourceforge.phpdt.internal.compiler.lookup.TypeBinding;
 
  17 public class QualifiedSuperReference extends QualifiedThisReference {
 
  19         public QualifiedSuperReference(TypeReference name, int pos, int sourceEnd) {
 
  20                 super(name, pos, sourceEnd);
 
  23         public boolean isSuper() {
 
  28         public boolean isThis() {
 
  33         public TypeBinding resolveType(BlockScope scope) {
 
  35                 if ((this.bits & ParenthesizedMASK) != 0) {
 
  36                         scope.problemReporter().invalidParenthesizedExpression(this);
 
  39                 super.resolveType(scope);
 
  40                 if (currentCompatibleType == null)
 
  41                         return null; // error case
 
  43                 if (scope.isJavaLangObject(currentCompatibleType)) {
 
  44                         scope.problemReporter().cannotUseSuperInJavaLangObject(this);
 
  47                 return this.resolvedType = currentCompatibleType.superclass();
 
  50         public String toStringExpression() {
 
  52                 return qualification.toString(0) + ".super"; //$NON-NLS-1$
 
  55         public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 
  57                 if (visitor.visit(this, blockScope)) {
 
  58                         qualification.traverse(visitor, blockScope);
 
  60                 visitor.endVisit(this, blockScope);