Created
November 6, 2014 02:27
-
-
Save retronym/3ccbe7e0791447d272a6 to your computer and use it in GitHub Desktop.
This file contains 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
--- sandbox/good.log 2014-11-06 12:24:30.000000000 +1000 | |
+++ sandbox/bad.log 2014-11-06 12:24:38.000000000 +1000 | |
@@ -1055,191 +1055,270 @@ | |
| |-- Int BYVALmode-EXPRmode (site: method productElement in Let3) implicits disabled | |
| | \-> [val x1] Int | |
| |-- x1 match { case 0 => Let3.this.expr case _ => throw new I... EXPRmode (site: method productElement in Let3) implicits disabled | |
| | |-- 0 : pt=Int PATTERNmode (site: method productElement in Let3) enrichment only | |
| | | \-> Int(0) | |
| | |-- _ : pt=Int PATTERNmode (site: method productElement in Let3) enrichment only | |
| | | \-> Int | |
| | \-> test.nestedcov.Outer3[A,A] | |
| \-> test.nestedcov.Outer3[A,A] | |
|-- { case <synthetic> val x1: Any = x$1; case5(){ if (x1.isI... EXPRmode (site: method equals in Let3) implicits disabled | |
| |-- Any BYVALmode-EXPRmode (site: method equals in Let3) implicits disabled | |
| | \-> [val x1] Any | |
| |-- ()Boolean BYVALmode-EXPRmode (site: method equals in Let3) implicits disabled | |
| | |-- if (x1.isInstanceOf[test.nestedcov.Let3[A]]) matchEnd4(tr... : pt=Boolean EXPRmode (site: method equals in Let3) implicits disabled | |
| | | |-- [T0]=> Boolean : pt=Boolean BYVALmode-EXPRmode (site: method equals in Let3) implicits disabled | |
| | | | \-> Boolean | |
| | | |-- (x: Boolean)Boolean : pt=Boolean EXPRmode (site: method equals in Let3) implicits disabled | |
| | | | |-- (x: Boolean)Boolean BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method equals in Let3) implicits disabled | |
| | | | | \-> (x: Boolean)Boolean | |
| | | | \-> Boolean | |
| | | |-- ()Boolean : pt=Boolean EXPRmode (site: method equals in Let3) implicits disabled | |
| | | | |-- ()Boolean BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method equals in Let3) implicits disabled | |
| | | | | \-> ()Boolean | |
| | | | \-> Boolean | |
| | | \-> Boolean | |
| | \-> Boolean | |
| |-- ()Boolean BYVALmode-EXPRmode (site: method equals in Let3) implicits disabled | |
| | |-- (x: Boolean)Boolean : pt=Boolean EXPRmode (site: method equals in Let3) implicits disabled | |
| | | |-- (x: Boolean)Boolean BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method equals in Let3) implicits disabled | |
| | | | \-> (x: Boolean)Boolean | |
| | | \-> Boolean | |
| | \-> Boolean | |
| |-- (x: Boolean)Boolean EXPRmode (site: method equals in Let3) implicits disabled | |
| | \-> Boolean | |
| \-> Boolean | |
|-- { case <synthetic> val x1: test.nestedcov.Outer[A] = nc; ... EXPRmode (site: method run in NestedCov) implicits disabled | |
| |-- test.nestedcov.Outer[A] BYVALmode-EXPRmode (site: method run in NestedCov) implicits disabled | |
| | \-> [val x1] test.nestedcov.Outer[A] | |
| |-- ()test.nestedcov.Outer[test.nestedcov.Inner[A]] BYVALmode-EXPRmode (site: method run in NestedCov) implicits disabled | |
| | |-- if (x1.isInstanceOf[test.nestedcov.Let[A]]) { <synthetic>... : pt=test.nestedcov.Outer[test.nestedcov.Inner[A]] EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | |-- [T0]=> Boolean : pt=Boolean BYVALmode-EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | \-> Boolean | |
| | | |-- { <synthetic> val x2: test.nestedcov.Let[A] = (x1.asInsta... : pt=test.nestedcov.Outer[test.nestedcov.Inner[A]] EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | |-- test.nestedcov.Let[A] BYVALmode-EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | | |-- (x1.asInstanceOf[test.nestedcov.Let[A]]: test.nestedcov.L... : pt=test.nestedcov.Let[A] BYVALmode-EXPRmode (site: value x2 in NestedCov) implicits disabled | |
| | | | | | |-- [T0]=> T0 : pt=test.nestedcov.Let[A] EXPRmode (site: value x2 in NestedCov) implicits disabled | |
| | | | | | | \-> test.nestedcov.Let[A] | |
| | | | | | \-> test.nestedcov.Let[A] | |
| | | | | \-> [val x2] test.nestedcov.Let[A] | |
| | | | |-- { val expr: test.nestedcov.Outer[test.nestedcov.Inner[A]]... : pt=test.nestedcov.Outer[test.nestedcov.Inner[A]] EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | | |-- test.nestedcov.Outer[test.nestedcov.Inner[A]] BYVALmode-EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | | | |-- => test.nestedcov.Outer[test.nestedcov.Inner[A]] : pt=test.nestedcov.Outer[test.nestedcov.Inner[A]] BYVALmode-EXPRmode (site: value expr in NestedCov) implicits disabled | |
| | | | | | | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | | | | \-> [val expr] test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | | | |-- (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])test.ne... : pt=test.nestedcov.Outer[test.nestedcov.Inner[A]] EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | | | |-- (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])test.ne... BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run in NestedCov) implicits disabled | |
| | | | | | | \-> (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | | | | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | | | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | |-- ()test.nestedcov.Outer[test.nestedcov.Inner[A]] : pt=test.nestedcov.Outer[test.nestedcov.Inner[A]] EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | |-- ()test.nestedcov.Outer[test.nestedcov.Inner[A]] BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run in NestedCov) implicits disabled | |
| | | | | \-> ()test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| |-- ()test.nestedcov.Outer[test.nestedcov.Inner[A]] BYVALmode-EXPRmode (site: method run in NestedCov) implicits disabled | |
| | |-- (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])test.ne... : pt=test.nestedcov.Outer[test.nestedcov.Inner[A]] EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | |-- (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])test.ne... BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run in NestedCov) implicits disabled | |
| | | | \-> (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | | |-- throw new MatchError(x1) EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | |-- new MatchError(x1) : pt=Throwable BYVALmode-EXPRmode (site: method run in NestedCov) implicits disabled | |
| | | | | |-- new MatchError BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run in NestedCov) implicits disabled | |
| | | | | | |-- new MatchError EXPRmode-POLYmode-QUALmode (silent: method run in NestedCov) implicits disabled | |
| | | | | | | \-> MatchError | |
| | | | | | \-> (obj: Any)MatchError | |
| | | | | \-> MatchError | |
| | | | \-> Nothing | |
| | | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| |-- (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])test.ne... EXPRmode (site: method run in NestedCov) implicits disabled | |
| | \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
| \-> test.nestedcov.Outer[test.nestedcov.Inner[A]] | |
|-- { case <synthetic> val x1: test.nestedcov.Outer2[A,A] = n... EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| |-- test.nestedcov.Outer2[A,A] BYVALmode-EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | \-> [val x1] test.nestedcov.Outer2[A,A] | |
| |-- ()test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] BYVALmode-EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | |-- if (x1.isInstanceOf[test.nestedcov.Let2[A with A]]) { <sy... : pt=test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | | |-- [T0]=> Boolean : pt=Boolean BYVALmode-EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | | | \-> Boolean | |
| | | |-- { <synthetic> val x2: test.nestedcov.Let2[A with A] = (x1... : pt=test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | | | |-- test.nestedcov.Let2[A with A] BYVALmode-EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | | | | |-- (x1.asInstanceOf[test.nestedcov.Let2[A with A]]: test.nes... : pt=test.nestedcov.Let2[A with A] BYVALmode-EXPRmode (site: value x2 in NestedCov) implicits disabled | |
| | | | | | |-- [T0]=> T0 : pt=test.nestedcov.Let2[A with A] EXPRmode (site: value x2 in NestedCov) implicits disabled | |
| | | | | | | \-> test.nestedcov.Let2[A with A] | |
| | | | | | \-> test.nestedcov.Let2[A with A] | |
| | | | | \-> [val x2] test.nestedcov.Let2[A with A] | |
| | | | |-- { val expr: test.nestedcov.Outer2[test.nestedcov.Inner2[?... : pt=test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | | | | |-- test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2]... BYVALmode-EXPRmode (site: method run2 in NestedCov) implicits disabled | |
| | | | | | |-- => test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] : pt=test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] BYVALmode-EXPRmode (site: value expr in NestedCov) implicits disabled | |
-| | | | | | | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
-| | | | | | \-> [val expr] test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] | |
-| | | | | |-- (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])tes... : pt=test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] EXPRmode (site: method run2 in NestedCov) implicits disabled | |
-| | | | | | |-- (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])tes... BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run2 in NestedCov) implicits disabled | |
-| | | | | | | \-> (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | | | | | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | | | | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | | | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | | |-- ()test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] : pt=test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] EXPRmode (site: method run2 in NestedCov) implicits disabled | |
-| | | | |-- ()test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run2 in NestedCov) implicits disabled | |
-| | | | | \-> ()test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | | | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| |-- ()test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] BYVALmode-EXPRmode (site: method run2 in NestedCov) implicits disabled | |
-| | |-- (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])tes... : pt=test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] EXPRmode (site: method run2 in NestedCov) implicits disabled | |
-| | | |-- (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])tes... BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run2 in NestedCov) implicits disabled | |
-| | | | \-> (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | | |-- throw new MatchError(x1) EXPRmode (site: method run2 in NestedCov) implicits disabled | |
-| | | | |-- new MatchError(x1) : pt=Throwable BYVALmode-EXPRmode (site: method run2 in NestedCov) implicits disabled | |
-| | | | | |-- new MatchError BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run2 in NestedCov) implicits disabled | |
-| | | | | | |-- new MatchError EXPRmode-POLYmode-QUALmode (silent: method run2 in NestedCov) implicits disabled | |
-| | | | | | | \-> MatchError | |
-| | | | | | \-> (obj: Any)MatchError | |
-| | | | | \-> MatchError | |
-| | | | \-> Nothing | |
-| | | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| |-- (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])tes... EXPRmode (site: method run2 in NestedCov) implicits disabled | |
-| | \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
-| \-> test.nestedcov.Outer2[test.nestedcov.Inner2[A],A] | |
+| | | | | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | | | | found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+| | | | | | | required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem): while typing x2.expr | |
+| | | | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | | | found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+| | | | | | required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem): while typing val expr: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] = x2.expr | |
+| | | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | | found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+| | | | | required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem): while typing { | |
+| | | | | val expr: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] = x2.expr; | |
+| | | | | matchEnd4((expr: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])) | |
+| | | | | } | |
+| | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+| | | | required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem): while typing { | |
+| | | | <synthetic> val x2: test.nestedcov.Let2[A with A] = (x1.asInstanceOf[test.nestedcov.Let2[A with A]]: test.nestedcov.Let2[A with A]); | |
+| | | | { | |
+| | | | val expr: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] = x2.expr; | |
+| | | | matchEnd4((expr: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])) | |
+| | | | } | |
+| | | | } | |
+| | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+| | | required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem): while typing if (x1.isInstanceOf[test.nestedcov.Let2[A with A]]) | |
+| | | { | |
+| | | <synthetic> val x2: test.nestedcov.Let2[A with A] = (x1.asInstanceOf[test.nestedcov.Let2[A with A]]: test.nestedcov.Let2[A with A]); | |
+| | | { | |
+| | | val expr: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] = x2.expr; | |
+| | | matchEnd4((expr: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])) | |
+| | | } | |
+| | | } | |
+| | | else | |
+| | | case6() | |
+| | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+| | required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem): while typing case5(){ | |
+| | if (x1.isInstanceOf[test.nestedcov.Let2[A with A]]) | |
+| | { | |
+| | <synthetic> val x2: test.nestedcov.Let2[A with A] = (x1.asInstanceOf[test.nestedcov.Let2[A with A]]: test.nestedcov.Let2[A with A]); | |
+| | { | |
+| | val expr: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] = x2.expr; | |
+| | matchEnd4((expr: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])) | |
+| | } | |
+| | } | |
+| | else | |
+| | case6() | |
+| | } | |
+| caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+| required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem): while typing { | |
+| case <synthetic> val x1: test.nestedcov.Outer2[A,A] = nc; | |
+| case5(){ | |
+| if (x1.isInstanceOf[test.nestedcov.Let2[A with A]]) | |
+| { | |
+| <synthetic> val x2: test.nestedcov.Let2[A with A] = (x1.asInstanceOf[test.nestedcov.Let2[A with A]]: test.nestedcov.Let2[A with A]); | |
+| { | |
+| val expr: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] = x2.expr; | |
+| matchEnd4((expr: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])) | |
+| } | |
+| } | |
+| else | |
+| case6() | |
+| }; | |
+| case6(){ | |
+| matchEnd4(throw new MatchError(x1)) | |
+| }; | |
+| matchEnd4(x){ | |
+| x | |
+| } | |
+| } | |
+sandbox/test.scala:22: error: error during expansion of this match (this is a scalac bug). | |
+The underlying error was: type mismatch; | |
+ found : test.nestedcov.Outer2[test.nestedcov.Inner2[A with A],A with A] | |
+ required: test.nestedcov.Outer2[test.nestedcov.Inner2[?A3 with ?A2],?A3 with ?A2] where type ?A2 <: A (this is a GADT skolem), type ?A3 <: A (this is a GADT skolem) | |
+ def run2[A](nc: Outer2[A, A]) = nc match { | |
+ ^ | |
|-- { case <synthetic> val x1: test.nestedcov.Outer3[A,A] = n... EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| |-- test.nestedcov.Outer3[A,A] BYVALmode-EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | \-> [val x1] test.nestedcov.Outer3[A,A] | |
| |-- ()test.nestedcov.Outer3[A,A] BYVALmode-EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | |-- if (x1.isInstanceOf[test.nestedcov.Let3[A with A]]) { <sy... : pt=test.nestedcov.Outer3[A,A] EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | | |-- [T0]=> Boolean : pt=Boolean BYVALmode-EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | | | \-> Boolean | |
| | | |-- { <synthetic> val x2: test.nestedcov.Let3[A with A] = (x1... : pt=test.nestedcov.Outer3[A,A] EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | | | |-- test.nestedcov.Let3[A with A] BYVALmode-EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | | | | |-- (x1.asInstanceOf[test.nestedcov.Let3[A with A]]: test.nes... : pt=test.nestedcov.Let3[A with A] BYVALmode-EXPRmode (site: value x2 in NestedCov) implicits disabled | |
| | | | | | |-- [T0]=> T0 : pt=test.nestedcov.Let3[A with A] EXPRmode (site: value x2 in NestedCov) implicits disabled | |
| | | | | | | \-> test.nestedcov.Let3[A with A] | |
| | | | | | \-> test.nestedcov.Let3[A with A] | |
| | | | | \-> [val x2] test.nestedcov.Let3[A with A] | |
| | | | |-- { val expr: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?... : pt=test.nestedcov.Outer3[A,A] EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | | | | |-- test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] BYVALmode-EXPRmode (site: method run3 in NestedCov) implicits disabled | |
| | | | | | |-- => test.nestedcov.Outer3[A,A] : pt=test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] BYVALmode-EXPRmode (site: value expr in NestedCov) implicits disabled | |
-| | | | | | | \-> test.nestedcov.Outer3[A with A,A with A] | |
-| | | | | | \-> [val expr] test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] | |
-| | | | | |-- (x: test.nestedcov.Outer3[A,A])test.nestedcov.Outer3[A,A] : pt=test.nestedcov.Outer3[A,A] EXPRmode (site: method run3 in NestedCov) implicits disabled | |
-| | | | | | |-- (x: test.nestedcov.Outer3[A,A])test.nestedcov.Outer3[A,A] BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run3 in NestedCov) implicits disabled | |
-| | | | | | | \-> (x: test.nestedcov.Outer3[A,A])test.nestedcov.Outer3[A,A] | |
-| | | | | | \-> test.nestedcov.Outer3[A,A] | |
-| | | | | \-> test.nestedcov.Outer3[A,A] | |
-| | | | \-> test.nestedcov.Outer3[A,A] | |
-| | | |-- ()test.nestedcov.Outer3[A,A] : pt=test.nestedcov.Outer3[A,A] EXPRmode (site: method run3 in NestedCov) implicits disabled | |
-| | | | |-- ()test.nestedcov.Outer3[A,A] BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run3 in NestedCov) implicits disabled | |
-| | | | | \-> ()test.nestedcov.Outer3[A,A] | |
-| | | | \-> test.nestedcov.Outer3[A,A] | |
-| | | \-> test.nestedcov.Outer3[A,A] | |
-| | \-> test.nestedcov.Outer3[A,A] | |
-| |-- ()test.nestedcov.Outer3[A,A] BYVALmode-EXPRmode (site: method run3 in NestedCov) implicits disabled | |
-| | |-- (x: test.nestedcov.Outer3[A,A])test.nestedcov.Outer3[A,A] : pt=test.nestedcov.Outer3[A,A] EXPRmode (site: method run3 in NestedCov) implicits disabled | |
-| | | |-- (x: test.nestedcov.Outer3[A,A])test.nestedcov.Outer3[A,A] BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run3 in NestedCov) implicits disabled | |
-| | | | \-> (x: test.nestedcov.Outer3[A,A])test.nestedcov.Outer3[A,A] | |
-| | | |-- throw new MatchError(x1) EXPRmode (site: method run3 in NestedCov) implicits disabled | |
-| | | | |-- new MatchError(x1) : pt=Throwable BYVALmode-EXPRmode (site: method run3 in NestedCov) implicits disabled | |
-| | | | | |-- new MatchError BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method run3 in NestedCov) implicits disabled | |
-| | | | | | |-- new MatchError EXPRmode-POLYmode-QUALmode (silent: method run3 in NestedCov) implicits disabled | |
-| | | | | | | \-> MatchError | |
-| | | | | | \-> (obj: Any)MatchError | |
-| | | | | \-> MatchError | |
-| | | | \-> Nothing | |
-| | | \-> test.nestedcov.Outer3[A,A] | |
-| | \-> test.nestedcov.Outer3[A,A] | |
-| |-- (x: test.nestedcov.Outer3[A,A])test.nestedcov.Outer3[A,A] EXPRmode (site: method run3 in NestedCov) implicits disabled | |
-| | \-> test.nestedcov.Outer3[A,A] | |
-| \-> test.nestedcov.Outer3[A,A] | |
-|-- (x: <?>)Some[A] EXPRmode-FUNmode-POLYmode-TAPPmode (site: object Let) implicits disabled | |
-| |-- new Some[test.nestedcov.Outer[test.nestedcov.Inner[A]]] EXPRmode-POLYmode-QUALmode (site: object Let) implicits disabled | |
-| | \-> Some[test.nestedcov.Outer[test.nestedcov.Inner[A]]] | |
-| \-> (x: test.nestedcov.Outer[test.nestedcov.Inner[A]])Some[test.nestedcov.Outer[test.nestedcov.Inner[A]]] | |
-|-- (x: A)Some[A] EXPRmode-FUNmode-POLYmode-TAPPmode (site: object Let2) implicits disabled | |
-| |-- new Some[test.nestedcov.Outer2[test.nestedcov.Inner2[A],A]] EXPRmode-POLYmode-QUALmode (site: object Let2) implicits disabled | |
-| | \-> Some[test.nestedcov.Outer2[test.nestedcov.Inner2[A],A]] | |
-| \-> (x: test.nestedcov.Outer2[test.nestedcov.Inner2[A],A])Some[test.nestedcov.Outer2[test.nestedcov.Inner2[A],A]] | |
-|-- (x: A)Some[A] EXPRmode-FUNmode-POLYmode-TAPPmode (site: object Let3) implicits disabled | |
-| |-- new Some[test.nestedcov.Outer3[A,A]] EXPRmode-POLYmode-QUALmode (site: object Let3) implicits disabled | |
-| | \-> Some[test.nestedcov.Outer3[A,A]] | |
-| \-> (x: test.nestedcov.Outer3[A,A])Some[test.nestedcov.Outer3[A,A]] | |
+| | | | | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | | | | found : test.nestedcov.Outer3[A with A,A with A] | |
+| | | | | | | required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem): while typing x2.expr | |
+| | | | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | | | found : test.nestedcov.Outer3[A with A,A with A] | |
+| | | | | | required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem): while typing val expr: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] = x2.expr | |
+| | | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | | found : test.nestedcov.Outer3[A with A,A with A] | |
+| | | | | required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem): while typing { | |
+| | | | | val expr: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] = x2.expr; | |
+| | | | | matchEnd4((expr: test.nestedcov.Outer3[A,A])) | |
+| | | | | } | |
+| | | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | | found : test.nestedcov.Outer3[A with A,A with A] | |
+| | | | required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem): while typing { | |
+| | | | <synthetic> val x2: test.nestedcov.Let3[A with A] = (x1.asInstanceOf[test.nestedcov.Let3[A with A]]: test.nestedcov.Let3[A with A]); | |
+| | | | { | |
+| | | | val expr: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] = x2.expr; | |
+| | | | matchEnd4((expr: test.nestedcov.Outer3[A,A])) | |
+| | | | } | |
+| | | | } | |
+| | | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | | found : test.nestedcov.Outer3[A with A,A with A] | |
+| | | required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem): while typing if (x1.isInstanceOf[test.nestedcov.Let3[A with A]]) | |
+| | | { | |
+| | | <synthetic> val x2: test.nestedcov.Let3[A with A] = (x1.asInstanceOf[test.nestedcov.Let3[A with A]]: test.nestedcov.Let3[A with A]); | |
+| | | { | |
+| | | val expr: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] = x2.expr; | |
+| | | matchEnd4((expr: test.nestedcov.Outer3[A,A])) | |
+| | | } | |
+| | | } | |
+| | | else | |
+| | | case6() | |
+| | caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| | found : test.nestedcov.Outer3[A with A,A with A] | |
+| | required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem): while typing case5(){ | |
+| | if (x1.isInstanceOf[test.nestedcov.Let3[A with A]]) | |
+| | { | |
+| | <synthetic> val x2: test.nestedcov.Let3[A with A] = (x1.asInstanceOf[test.nestedcov.Let3[A with A]]: test.nestedcov.Let3[A with A]); | |
+| | { | |
+| | val expr: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] = x2.expr; | |
+| | matchEnd4((expr: test.nestedcov.Outer3[A,A])) | |
+| | } | |
+| | } | |
+| | else | |
+| | case6() | |
+| | } | |
+| caught scala.reflect.internal.Types$TypeError: type mismatch; | |
+| found : test.nestedcov.Outer3[A with A,A with A] | |
+| required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem): while typing { | |
+| case <synthetic> val x1: test.nestedcov.Outer3[A,A] = nc; | |
+| case5(){ | |
+| if (x1.isInstanceOf[test.nestedcov.Let3[A with A]]) | |
+| { | |
+| <synthetic> val x2: test.nestedcov.Let3[A with A] = (x1.asInstanceOf[test.nestedcov.Let3[A with A]]: test.nestedcov.Let3[A with A]); | |
+| { | |
+| val expr: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] = x2.expr; | |
+| matchEnd4((expr: test.nestedcov.Outer3[A,A])) | |
+| } | |
+| } | |
+| else | |
+| case6() | |
+| }; | |
+| case6(){ | |
+| matchEnd4(throw new MatchError(x1)) | |
+| }; | |
+| matchEnd4(x){ | |
+| x | |
+| } | |
+| } | |
+sandbox/test.scala:27: error: error during expansion of this match (this is a scalac bug). | |
+The underlying error was: type mismatch; | |
+ found : test.nestedcov.Outer3[A with A,A with A] | |
+ required: test.nestedcov.Outer3[?A5 with ?A4,?A5 with ?A4] where type ?A4 <: A (this is a GADT skolem), type ?A5 <: A (this is a GADT skolem) | |
+ def run3[A](nc: Outer3[A, A]) = nc match { | |
+ ^ | |
+two errors found |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment