JML

org.multijava.mjc
Interface CompilerPassEnterable

All Superinterfaces:
Comparable
All Known Subinterfaces:
JClassDeclarationType, JCompilationUnitType, JInterfaceDeclarationType, JTypeDeclarationType
All Known Implementing Classes:
JClassDeclaration, JCompilationUnit, JInterfaceDeclaration, JmlClassDeclaration, JmlCompilationUnit, JmlInterfaceDeclaration, JmlTypeDeclaration, JTypeDeclaration

public interface CompilerPassEnterable
extends Comparable

This is the type of AST nodes that provide methods for handling individual passes of the compilation process.

Version:
$Revision: 1.13 $
Author:
Curtis Clifton

Method Summary
 void accept(MjcVisitor p)
           
 void checkInitializers()
          Invokes the checkInitializers method of the implementing class using previously cached arguments.
 void checkInterface()
          Invokes the checkInterface method of the implementing class using previously cached arguments.
 TokenReference getTokenReference()
           
 void preprocessDependencies()
          Invokes the preprocessDependencies method of the implementing class using previously cached arguments.
 void resolveSpecializers()
          Resolves value specializer expressions to the compile-time constants they represent.
 void resolveTopMethods()
          Finds the top method of every declared method.
 void translateMJ()
          Invokes the translateMJ method of the implementing class using previously cached arguments.
 void typecheck()
          Invokes the typecheck method of the implementing class using previously cached arguments.
 
Methods inherited from interface java.lang.Comparable
compareTo
 

Method Detail

preprocessDependencies

public void preprocessDependencies()
                                     throws PositionedError
Invokes the preprocessDependencies method of the implementing class using previously cached arguments.

 requires arePassParametersCached;
 

Throws:
PositionedError

checkInterface

public void checkInterface()
                             throws PositionedError
Invokes the checkInterface method of the implementing class using previously cached arguments.

 requires arePassParametersCached;
 

Throws:
PositionedError

checkInitializers

public void checkInitializers()
                                throws PositionedError
Invokes the checkInitializers method of the implementing class using previously cached arguments.

 requires arePassParametersCached;
 

Throws:
PositionedError

resolveSpecializers

public void resolveSpecializers()
                                  throws PositionedError
Resolves value specializer expressions to the compile-time constants they represent. Must come after the checkInitializers phase.

Throws:
PositionedError

resolveTopMethods

public void resolveTopMethods()
                                throws PositionedError
Finds the top method of every declared method. Called after the resolveSpecializers pass. This cannot be done before then because the external generic function mappings are not complete until the end of the checkInterface pass and the constant value specializers are not known until after the resolveSpecializers pass. This must be done before the typecheck pass so that all specialized argument positions for generic functions are known for ambiguity checking.

Throws:
PositionedError

typecheck

public void typecheck()
                        throws PositionedError
Invokes the typecheck method of the implementing class using previously cached arguments.

 requires arePassParametersCached;
 

Throws:
PositionedError

translateMJ

public void translateMJ()
Invokes the translateMJ method of the implementing class using previously cached arguments.

 requires arePassParametersCached;
 


getTokenReference

public TokenReference getTokenReference()

accept

public void accept(MjcVisitor p)

JML

JML is Copyright (C) 1998-2002 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This release depends on code from the MultiJava project and is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.