Skip to content

Instantly share code, notes, and snippets.

@retronym
Created November 6, 2014 02:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save retronym/3ccbe7e0791447d272a6 to your computer and use it in GitHub Desktop.
Save retronym/3ccbe7e0791447d272a6 to your computer and use it in GitHub Desktop.
--- 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