Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.10: compiler crash with -optimize, Iterator, Array #6177

Closed
scabug opened this issue Aug 4, 2012 · 1 comment
Closed

2.10: compiler crash with -optimize, Iterator, Array #6177

scabug opened this issue Aug 4, 2012 · 1 comment
Assignees

Comments

@scabug
Copy link

scabug commented Aug 4, 2012

2.9 and 2.10.0-M2 are OK but in M3/4/5/6 with -optimize:

% scala210 -optimize -Yinline-warnings
Welcome to Scala version 2.10.0-M6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_33).

scala> Iterator[String]().map(_.split("x"))
error: 
     while compiling: <console>
        during phase: mixin
     library version: version 2.10.0-M6
    compiler version: version 2.10.0-M6
  reconstructed args: -Ydead-code -optimise -deprecation -Yinline -Yclosure-elim -Yinline-warnings -Yinline-handlers -unchecked -Xnojline

  last tree to typer: Apply(method map)
              symbol: method map in trait Iterator (flags: <method> <triedcooking>)
   symbol definition: def map(f: Function1): Iterator
                 tpe: Iterator
       symbol owners: method map -> trait Iterator -> package collection
      context owners: anonymous class $read$$anonfun$1 -> package $line3

== Enclosing template or block ==

Template( // val <local $anonfun>: <notype>, tree.tpe=$anonfun$1
  "scala.runtime.AbstractFunction1", "scala.Serializable" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 3 statements
  DefDef( // final def apply(x$1: String): Array[String]
    <method> final <triedcooking>
    "apply"
    []
    // 1 parameter list
    ValDef( // x$1: String
      <param> <synthetic> <triedcooking>
      "x$1"
      <tpt> // tree.tpe=String
      <empty>
    )
    <tpt> // tree.tpe=Array[String]
    Apply( // def split(x$1: String): Array[String] in class String, tree.tpe=Array[String]
      "x$1"."split" // def split(x$1: String): Array[String] in class String, tree.tpe=(x$1: String)Array[String]
      "x"
    )
  )
  DefDef( // final def apply(v1: Object): Object
    <method> final <bridge>
    "apply"
    []
    // 1 parameter list
    ValDef( // v1: Object
      <param> <triedcooking>
      "v1"
      <tpt> // tree.tpe=Object
      <empty>
    )
    <tpt> // tree.tpe=Object
    Apply( // final def apply(x$1: String): Array[String], tree.tpe=Array[String]
      $read$$anonfun$1.this."apply" // final def apply(x$1: String): Array[String], tree.tpe=(x$1: String)Array[String]
      Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=String
        TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()String
          "v1"."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0
          <tpt> // tree.tpe=String
        )
        Nil
      )
    )
  )
  DefDef( // def <init>(): $anonfun$1
    <method> <triedcooking>
    "<init>"
    []
    List(Nil)
    <tpt> // tree.tpe=$anonfun$1
    Block( // tree.tpe=Unit
      Apply( // def <init>(): scala.runtime.AbstractFunction1 in class AbstractFunction1, tree.tpe=scala.runtime.AbstractFunction1
        $read$$anonfun$1.super."<init>" // def <init>(): scala.runtime.AbstractFunction1 in class AbstractFunction1, tree.tpe=()scala.runtime.AbstractFunction1
        Nil
      )
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(TypeSymbol(abstract trait Iterator extends TraversableOnce))

uncaught exception during compilation: java.lang.AssertionError
java.lang.AssertionError: assertion failed: 
     while compiling: <console>
        during phase: mixin
     library version: version 2.10.0-M6
    compiler version: version 2.10.0-M6
  reconstructed args: -Ydead-code -optimise -deprecation -Yinline -Yclosure-elim -Yinline-warnings -Yinline-handlers -unchecked -Xnojline

  last tree to typer: Apply(method map)
              symbol: method map in trait Iterator (flags: <method> <triedcooking>)
   symbol definition: def map(f: Function1): Iterator
                 tpe: Iterator
       symbol owners: method map -> trait Iterator -> package collection
      context owners: anonymous class $read$$iw$$iw$$anonfun$1 -> package $line3

== Enclosing template or block ==

Template( // val <local $anonfun>: <notype>, tree.tpe=$line3.$read$$iw$$iw$$anonfun$1
  "scala.runtime.AbstractFunction1", "scala.Serializable" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 3 statements
  DefDef( // final def apply(x$1: String): Array[String]
    <method> final <triedcooking>
    "apply"
    []
    // 1 parameter list
    ValDef( // x$1: String
      <param> <synthetic> <triedcooking>
      "x$1"
      <tpt> // tree.tpe=String
      <empty>
    )
    <tpt> // tree.tpe=Array[String]
    Apply( // def split(x$1: String): Array[String] in class String, tree.tpe=Array[String]
      "x$1"."split" // def split(x$1: String): Array[String] in class String, tree.tpe=(x$1: String)Array[String]
      "x"
    )
  )
  DefDef( // final def apply(v1: Object): Object
    <method> final <bridge>
    "apply"
    []
    // 1 parameter list
    ValDef( // v1: Object
      <param> <triedcooking>
      "v1"
      <tpt> // tree.tpe=Object
      <empty>
    )
    <tpt> // tree.tpe=Object
    Apply( // final def apply(x$1: String): Array[String], tree.tpe=Array[String]
      $read$$iw$$iw$$anonfun$1.this."apply" // final def apply(x$1: String): Array[String], tree.tpe=(x$1: String)Array[String]
      Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=String
        TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()String
          "v1"."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0
          <tpt> // tree.tpe=String
        )
        Nil
      )
    )
  )
  DefDef( // def <init>(): $line3.$read$$iw$$iw$$anonfun$1
    <method> <triedcooking>
    "<init>"
    []
    List(Nil)
    <tpt> // tree.tpe=$line3.$read$$iw$$iw$$anonfun$1
    Block( // tree.tpe=Unit
      Apply( // def <init>(): scala.runtime.AbstractFunction1 in class AbstractFunction1, tree.tpe=scala.runtime.AbstractFunction1
        $read$$iw$$iw$$anonfun$1.super."<init>" // def <init>(): scala.runtime.AbstractFunction1 in class AbstractFunction1, tree.tpe=()scala.runtime.AbstractFunction1
        Nil
      )
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(TypeSymbol(abstract trait Iterator extends TraversableOnce))

Not an impl class:(class Function1$class in package scala (flags: abstract <java>),trait Function1 in package scala (flags: <interface> abstract <trait> <lateinterface>))
	at scala.Predef$.assert(Predef.scala:170)
	at scala.tools.nsc.Global.assert(Global.scala:235)
	at scala.tools.nsc.transform.Mixin.scala$tools$nsc$transform$Mixin$$mixinImplClassMembers$1(Mixin.scala:272)
	at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$2.apply(Mixin.scala:369)
	at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$2.apply(Mixin.scala:364)
	at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:766)
	at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
	at scala.collection.immutable.List.foreach(List.scala:78)
	at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:765)
	at scala.tools.nsc.transform.Mixin.addMixedinMembers(Mixin.scala:364)
	at scala.tools.nsc.transform.Mixin.addMixedinMembers(Mixin.scala:361)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.preTransform(Mixin.scala:531)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1245)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:472)
	at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:651)
	at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1165)
	at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1164)
	at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:674)
	at scala.reflect.internal.Trees$class.itransform(Trees.scala:1163)
	at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
	at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
	at scala.reflect.api.Trees$Transformer.transform(Trees.scala:646)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1245)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:472)
	at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$2.apply(Trees.scala:667)
	at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$2.apply(Trees.scala:665)
	at scala.collection.immutable.List.loop$1(List.scala:164)
	at scala.collection.immutable.List.mapConserve(List.scala:180)
	at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:665)
	at scala.reflect.internal.Trees$$anonfun$itransform$1.apply(Trees.scala:1159)
	at scala.reflect.internal.Trees$$anonfun$itransform$1.apply(Trees.scala:1159)
	at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:674)
	at scala.reflect.internal.Trees$class.itransform(Trees.scala:1158)
	at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
	at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
	at scala.reflect.api.Trees$Transformer.transform(Trees.scala:646)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1245)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:472)
	at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:229)
	at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
	at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:459)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:426)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:426)
	at scala.collection.Iterator$class.foreach(Iterator.scala:726)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1155)
	at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:426)
	at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1576)
	at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1550)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:1546)
	at scala.tools.nsc.interpreter.IMain.compileSourcesKeepingRun(IMain.scala:434)
	at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compileAndSaveRun(IMain.scala:806)
	at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compile(IMain.scala:764)
	at scala.tools.nsc.interpreter.IMain$Request.compile$lzycompute(IMain.scala:940)
	at scala.tools.nsc.interpreter.IMain$Request.compile(IMain.scala:935)
	at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:609)
	at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:574)
	at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:742)
	at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:787)
	at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:699)
	at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:563)
	at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:570)
	at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:573)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:864)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:819)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:819)
	at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
	at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:819)
	at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:79)
	at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:92)
	at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101)
	at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
@scabug
Copy link
Author

scabug commented Aug 4, 2012

Imported From: https://issues.scala-lang.org/browse/SI-6177?orig=1
Reporter: @SethTisue
Affected Versions: 2.10.0-M6
Duplicates #5789

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants