aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/Phases.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-11-10 11:20:42 +0100
committerMartin Odersky <odersky@gmail.com>2016-12-01 13:55:12 +0100
commit4ae76f2164e91d6a26519304b5ac5df527ae9207 (patch)
tree30c3ae034f21d29c31930b8080d207e7130b84d4 /compiler/src/dotty/tools/dotc/core/Phases.scala
parent36f9133ff52c39660cd9fef37140f2f14531d678 (diff)
downloaddotty-4ae76f2164e91d6a26519304b5ac5df527ae9207.tar.gz
dotty-4ae76f2164e91d6a26519304b5ac5df527ae9207.tar.bz2
dotty-4ae76f2164e91d6a26519304b5ac5df527ae9207.zip
Make phasesStack more robust
Got a "next on empty iterator" exception before.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/Phases.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/core/Phases.scala5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/Phases.scala b/compiler/src/dotty/tools/dotc/core/Phases.scala
index 222e2235d..6a53e1b30 100644
--- a/compiler/src/dotty/tools/dotc/core/Phases.scala
+++ b/compiler/src/dotty/tools/dotc/core/Phases.scala
@@ -26,7 +26,10 @@ trait Phases {
def phasesStack: List[Phase] =
if ((this eq NoContext) || !phase.exists) Nil
- else phase :: outersIterator.dropWhile(_.phase == phase).next.phasesStack
+ else {
+ val rest = outersIterator.dropWhile(_.phase == phase)
+ phase :: (if (rest.hasNext) rest.next.phasesStack else Nil)
+ }
/** Execute `op` at given phase */
def atPhase[T](phase: Phase)(op: Context => T): T =