|
Scala example source code file (Phase.scala)
The Phase.scala Scala example source code/* NSC -- new Scala compiler * Copyright 2005-2013 LAMP/EPFL * @author Martin Odersky */ package scala package reflect package internal abstract class Phase(val prev: Phase) { if ((prev ne null) && (prev ne NoPhase)) prev.nx = this type Id = Int val id: Id = if (prev eq null) 0 else prev.id + 1 /** New flags visible after this phase has completed */ def nextFlags: Long = 0l /** New flags visible once this phase has started */ def newFlags: Long = 0l val fmask = ( if (prev eq null) Flags.InitialFlags else prev.flagMask | prev.nextFlags | newFlags ) def flagMask: Long = fmask private var nx: Phase = NoPhase // does anyone rely on next == this for terminus? def next: Phase = if (nx eq NoPhase) this else nx def hasNext = next != this // this definition excludes the terminal phase //def iterator = Iterator.iterate(this)(_.nx) takeWhile (p => p.next != p) def iterator = Iterator.iterate(this)(_.nx) takeWhile (_ ne NoPhase) def name: String def description: String = name // Will running with -Ycheck:name work? def checkable: Boolean = true def specialized: Boolean = false def erasedTypes: Boolean = false def flatClasses: Boolean = false def refChecked: Boolean = false /** This is used only in unsafeTypeParams, and at this writing is * overridden to false in parser, namer, typer, and erasure. (And NoPhase.) */ def keepsTypeParams = true def run(): Unit override def toString() = name override def hashCode = id.## + name.## override def equals(other: Any) = other match { case x: Phase => id == x.id && name == x.name case _ => false } } object NoPhase extends Phase(null) { def name = "<no phase>" override def keepsTypeParams = false def run() { throw new Error("NoPhase.run") } } object SomePhase extends Phase(NoPhase) { def name = "<some phase>" def run() { throw new Error("SomePhase.run") } } Other Scala source code examplesHere is a short list of links related to this Scala Phase.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.