summaryrefslogblamecommitdiff
path: root/src/compiler/scala/tools/nsc/Phase.scala
blob: 679c7c88234ce4d45c4f3f960092f56f826f7afb (plain) (tree)
1
2
3
4
5
6
7
8
9
                            
                                


                          
 


                       
 
                                       
 
               
 
                                                   
 

                           
                                                                      
                            
 
                              
                                  
 
                      
 

                                


                                  
 
                                


 
/* NSC -- new Scala compiler
 * Copyright 2005-2007 LAMP/EPFL
 * @author  Martin Odersky
 */
// $Id$

package scala.tools.nsc

import symtab.Flags

abstract class Phase(val prev: Phase) {

  type Id = Int

  val id: Id = if (prev eq null) 0 else prev.id + 1

  def newFlags: Long = 0l
  private var fmask: Long =
    if (prev eq null) Flags.InitialFlags else prev.flagMask | newFlags
  def flagMask: Long = fmask

  private var nx: Phase = this
  if (prev ne null) prev.nx = this

  def next: Phase = nx

  def name: String
  def description: String = name
  def erasedTypes: Boolean = false
  def flatClasses: Boolean = false
  def run: Unit

  override def toString() = name
}