Created
March 18, 2016 21:39
-
-
Save smarter/d7d9e2b7b2378269233f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // usedNames: $anon,<init>,A,Any,B$,HasT,Int,Nothing,Object,T,X$,p,x | |
| // topLevelDependencies: class A,class Any,class HasT,class Int,class Nothing,class Object,module class <empty>,module class B$ | |
| // topLevelInheritanceDependencies: class A,class HasT,class Object | |
| trait HasT extends java.lang.this#Object with scala.this#Any { | |
| ^inherited^ def wait(x$0: scala.this#Long, x$1: scala.this#Int): scala.this#Unit | |
| ^inherited^ def wait(x$0: scala.this#Long): scala.this#Unit | |
| ^inherited^ def wait(): scala.this#Unit | |
| ^inherited^ protected def finalize(): scala.this#Unit | |
| ^inherited^ def equals(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def ##: scala.this#Int | |
| ^inherited^ protected def clone(): java.lang.this#Object | |
| ^inherited^ def toString(): java.lang.this#String | |
| ^inherited^ def notify(): scala.this#Unit | |
| ^inherited^ final def ==(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def getClass(): java.lang.this#Class | |
| ^inherited^ def hashCode(): scala.this#Int | |
| ^inherited^ final def eq(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def !=(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ def notifyAll(): scala.this#Unit | |
| ^inherited^ final def isInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: scala.this#Boolean | |
| ^inherited^ final def ne(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def asInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: <T0> | |
| ^inherited^ final def synchronized[ T0 >: scala.this#Nothing <: scala.this#Any](x$0: <T0>): <T0> | |
| def <init>(): this#HasT | |
| abstract type T>: scala.this#Nothing <: scala.this#Any | |
| } | |
| abstract class A extends java.lang.this#Object with scala.this#Any { | |
| ^inherited^ def wait(x$0: scala.this#Long, x$1: scala.this#Int): scala.this#Unit | |
| ^inherited^ def wait(x$0: scala.this#Long): scala.this#Unit | |
| ^inherited^ def wait(): scala.this#Unit | |
| ^inherited^ protected def finalize(): scala.this#Unit | |
| ^inherited^ def equals(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def ##: scala.this#Int | |
| ^inherited^ protected def clone(): java.lang.this#Object | |
| ^inherited^ def toString(): java.lang.this#String | |
| ^inherited^ def notify(): scala.this#Unit | |
| ^inherited^ final def ==(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def getClass(): java.lang.this#Class | |
| ^inherited^ def hashCode(): scala.this#Int | |
| ^inherited^ final def eq(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def !=(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ def notifyAll(): scala.this#Unit | |
| ^inherited^ final def isInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: scala.this#Boolean | |
| ^inherited^ final def ne(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def asInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: <T0> | |
| ^inherited^ final def synchronized[ T0 >: scala.this#Nothing <: scala.this#Any](x$0: <T0>): <T0> | |
| final object A.X extends java.lang.this#Object with scala.this#Any { self: A.this#X => | |
| ^inherited^ def wait(x$0: scala.this#Long, x$1: scala.this#Int): scala.this#Unit | |
| ^inherited^ def wait(x$0: scala.this#Long): scala.this#Unit | |
| ^inherited^ def wait(): scala.this#Unit | |
| ^inherited^ protected def finalize(): scala.this#Unit | |
| ^inherited^ def equals(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def ##: scala.this#Int | |
| ^inherited^ protected def clone(): java.lang.this#Object | |
| ^inherited^ def toString(): java.lang.this#String | |
| ^inherited^ def notify(): scala.this#Unit | |
| ^inherited^ final def ==(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def getClass(): java.lang.this#Class | |
| ^inherited^ def hashCode(): scala.this#Int | |
| ^inherited^ final def eq(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def !=(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ def notifyAll(): scala.this#Unit | |
| ^inherited^ final def isInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: scala.this#Boolean | |
| ^inherited^ final def ne(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def asInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: <T0> | |
| ^inherited^ final def synchronized[ T0 >: scala.this#Nothing <: scala.this#Any](x$0: <T0>): <T0> | |
| def foo(x: A.this#p#T): A.this#p#T | |
| } | |
| def <init>(): this#A | |
| val p: this#HasT | |
| final lazy val X: A.this#X$ | |
| } | |
| final object B extends this#A with java.lang.this#Object with scala.this#Any { self: this#B => | |
| ^inherited^ final object A.X extends java.lang.this#Object with scala.this#Any { self: A.this#X => | |
| ^inherited^ def wait(x$0: scala.this#Long, x$1: scala.this#Int): scala.this#Unit | |
| ^inherited^ def wait(x$0: scala.this#Long): scala.this#Unit | |
| ^inherited^ def wait(): scala.this#Unit | |
| ^inherited^ protected def finalize(): scala.this#Unit | |
| ^inherited^ def equals(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def ##: scala.this#Int | |
| ^inherited^ protected def clone(): java.lang.this#Object | |
| ^inherited^ def toString(): java.lang.this#String | |
| ^inherited^ def notify(): scala.this#Unit | |
| ^inherited^ final def ==(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def getClass(): java.lang.this#Class | |
| ^inherited^ def hashCode(): scala.this#Int | |
| ^inherited^ final def eq(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def !=(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ def notifyAll(): scala.this#Unit | |
| ^inherited^ final def isInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: scala.this#Boolean | |
| ^inherited^ final def ne(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def asInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: <T0> | |
| ^inherited^ final def synchronized[ T0 >: scala.this#Nothing <: scala.this#Any](x$0: <T0>): <T0> | |
| def foo(x: A.this#p#T): A.this#p#T | |
| } | |
| ^inherited^ final lazy val X: A.this#X$ | |
| ^inherited^ def wait(x$0: scala.this#Long, x$1: scala.this#Int): scala.this#Unit | |
| ^inherited^ def wait(x$0: scala.this#Long): scala.this#Unit | |
| ^inherited^ def wait(): scala.this#Unit | |
| ^inherited^ protected def finalize(): scala.this#Unit | |
| ^inherited^ def equals(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def ##: scala.this#Int | |
| ^inherited^ protected def clone(): java.lang.this#Object | |
| ^inherited^ def toString(): java.lang.this#String | |
| ^inherited^ def notify(): scala.this#Unit | |
| ^inherited^ final def ==(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def getClass(): java.lang.this#Class | |
| ^inherited^ def hashCode(): scala.this#Int | |
| ^inherited^ final def eq(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def !=(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ def notifyAll(): scala.this#Unit | |
| ^inherited^ final def isInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: scala.this#Boolean | |
| ^inherited^ final def ne(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def asInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: <T0> | |
| ^inherited^ final def synchronized[ T0 >: scala.this#Nothing <: scala.this#Any](x$0: <T0>): <T0> | |
| override val p: this#HasT {type T = scala.this#Int} | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| trait HasT { type T } | |
| abstract class A { | |
| val p: HasT | |
| object X { | |
| def foo(x: p.T): p.T = x | |
| } | |
| } | |
| object B extends A { | |
| // compile, change Int to String, compile succeeds but shouldn't | |
| override val p: HasT { type T = Int } = new HasT { type T = Int } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // usedNames: <init>,B,Object,Test$,X,foo | |
| // topLevelDependencies: class A,class Object,module class <empty>,module class B$,module class Test$ | |
| // topLevelInheritanceDependencies: class Object | |
| final object Test extends java.lang.this#Object with scala.this#Any { self: this#Test => | |
| ^inherited^ def wait(x$0: scala.this#Long, x$1: scala.this#Int): scala.this#Unit | |
| ^inherited^ def wait(x$0: scala.this#Long): scala.this#Unit | |
| ^inherited^ def wait(): scala.this#Unit | |
| ^inherited^ protected def finalize(): scala.this#Unit | |
| ^inherited^ def equals(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def ##: scala.this#Int | |
| ^inherited^ protected def clone(): java.lang.this#Object | |
| ^inherited^ def toString(): java.lang.this#String | |
| ^inherited^ def notify(): scala.this#Unit | |
| ^inherited^ final def ==(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ final def getClass(): java.lang.this#Class | |
| ^inherited^ def hashCode(): scala.this#Int | |
| ^inherited^ final def eq(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def !=(x$0: scala.this#Any): scala.this#Boolean | |
| ^inherited^ def notifyAll(): scala.this#Unit | |
| ^inherited^ final def isInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: scala.this#Boolean | |
| ^inherited^ final def ne(x$0: java.lang.this#Object): scala.this#Boolean | |
| ^inherited^ final def asInstanceOf[ T0 >: scala.this#Nothing <: scala.this#Any]: <T0> | |
| ^inherited^ final def synchronized[ T0 >: scala.this#Nothing <: scala.this#Any](x$0: <T0>): <T0> | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| object Test { | |
| B.X.foo(1) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment