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

Trait super[Object] crasher #4704

Closed
scabug opened this issue Jun 16, 2011 · 4 comments
Closed

Trait super[Object] crasher #4704

scabug opened this issue Jun 16, 2011 · 4 comments
Milestone

Comments

@scabug
Copy link

scabug commented Jun 16, 2011

If I try to compile the following code:

trait Bar {
  super[ScalaObject].hashCode // also super[Object]
}

I get a compiler crash with the following stacktrace:

java.lang.AssertionError: assertion failed
	at scala.Predef$.assert(Predef.scala:77)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.scala$tools$nsc$transform$Mixin$MixinTransformer$$postTransform(Mixin.scala:1006)
	at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$16.apply(Mixin.scala:1054)
	at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$16.apply(Mixin.scala:1054)
	at scala.tools.nsc.symtab.SymbolTable.atPhase(SymbolTable.scala:103)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1054)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:856)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:854)
	at scala.collection.immutable.List.loop$1(List.scala:115)
	at scala.collection.immutable.List.mapConserve(List.scala:132)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:854)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:766)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1053)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:750)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:748)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:864)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:747)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1053)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:856)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:854)
	at scala.collection.immutable.List.loop$1(List.scala:115)
	at scala.collection.immutable.List.mapConserve(List.scala:132)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:854)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:764)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1053)
	at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:840)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:734)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:733)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:864)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:732)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1053)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:856)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:854)
	at scala.collection.immutable.List.loop$1(List.scala:115)
	at scala.collection.immutable.List.mapConserve(List.scala:132)
	at scala.collection.immutable.List.loop$1(List.scala:119)
	at scala.collection.immutable.List.mapConserve(List.scala:132)
	at scala.collection.immutable.List.loop$1(List.scala:119)
	at scala.collection.immutable.List.mapConserve(List.scala:132)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:854)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:728)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:728)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:864)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:727)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1053)
	at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:857)
	at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply(Global.scala:276)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply(Global.scala:276)
	at scala.tools.nsc.reporters.Reporter.withSource(Reporter.scala:48)
	at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:276)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:252)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:252)
	at scala.collection.Iterator$class.foreach(Iterator.scala:631)
	at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:304)
	at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:252)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:733)
	at scala.tools.nsc.Global$Run.compile(Global.scala:813)
@scabug
Copy link
Author

scabug commented Jun 16, 2011

Imported From: https://issues.scala-lang.org/browse/SI-4704?orig=1
Reporter: Jorge Ortiz (jorgeortiz85)
Affected Versions: 2.8.0, 2.8.1, 2.9.0, 2.11.0-M8

@scabug
Copy link
Author

scabug commented Jul 5, 2011

@paulp said:
Don't know how to handle. Here's a test, in case this starts looking too easy.

trait MM {
  protected def method = "bip"
}
trait NN {
  protected def method = "bop"
}
trait OOOOO extends MM with NN {
  override protected def method = super[MM].method + super[NN].method
  override def hashCode = super[MM].hashCode + super[NN].hashCode
}

@scabug
Copy link
Author

scabug commented May 29, 2014

@VladUreche said:
The variant I found independently:

trait IterableLike[A]

trait SeqLike[A] extends IterableLike[A] {
  override def toString = super[IterableLike].toString
}

History: miniboxing/miniboxing-plugin#40

@xuwei-k
Copy link

xuwei-k commented Aug 11, 2018

fixed since Scala 2.12.x? 🤔

Welcome to Scala 2.12.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_181).
Type in expressions for evaluation. Or try :help.

scala> trait Bar {
     |   super[Object].hashCode
     | }
defined trait Bar
Welcome to Scala 2.13.0-M4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_181).
Type in expressions for evaluation. Or try :help.

scala> trait Bar {
     |   super[Object].hashCode
     | }
defined trait Bar
Welcome to Scala 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_181).
Type in expressions for evaluation. Or try :help.

scala> trait Bar {
     |   super[Object].hashCode
     | }
java.lang.AssertionError: assertion failed: 
  class iw$Bar$class
     while compiling: <console>
        during phase: globalPhase=mixin, enteringPhase=cleanup
     library version: version 2.11.12
    compiler version: version 2.11.12
  reconstructed args: 

  last tree to typer: type $iw
       tree position: line 9 of <console>
            tree tpe: <notype>
              symbol: object iw in package $line3
   symbol definition: class iw extends Object (a ModuleClassSymbol)
      symbol package: $line3
       symbol owners: object iw
           call site: object iw$Bar$class in package $line3 in package $line3

<Cannot read source file>
	at scala.tools.nsc.transform.Mixin$MixinTransformer.scala$tools$nsc$transform$Mixin$MixinTransformer$$postTransform(Mixin.scala:1217)
	at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1261)
	at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1261)
	at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:235)
	at scala.reflect.internal.SymbolTable.exitingPhase(SymbolTable.scala:256)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1261)
	at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:468)
	at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2589)

@SethTisue SethTisue added this to the 2.12.0 milestone Aug 11, 2018
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

4 participants