Created
September 23, 2015 04:06
-
-
Save retronym/38b183dca95953f84b66 to your computer and use it in GitHub Desktop.
Shapeless inference puzzle
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
for i in 1 2; do cp $i.scala test.scala; scalac -Xprint:typer -Ymacro-debug-verbose -Ystop-after:typer -Ytyper-debug -Ymacro-expand:discard -classpath core/target/scala-2.11/classes test.scala 2>&1 | tee $i.log; done; diff -U1000 {1,2}.log > 3.log.diff |
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
import shapeless._ | |
trait Test { | |
def ex[ Tuple <: Product, TupleHL <: HList, Hel, T <: HList](in : Tuple)(implicit gen: Generic.Aux[Tuple, TupleHL], isHCons: IsHCons1.Aux[TupleHL, List[Hel], T]) | |
val ii: (List[Int], List[Int]) | |
ex(ii) | |
} | |
trait IsHCons1[L] { type H; type T <: HList} | |
object IsHCons1 { | |
type Aux[L <: HList, H0, T0 <: HList] = IsHCons1[L] { type H = H0; type T = T0 } | |
implicit def hlistIsHCons[H0, T0 <: HList]: Aux[H0 :: T0, H0, T0] = ??? | |
} |
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
import shapeless._ | |
trait Test { | |
def ex[L[_] <: List[_], Tuple <: Product, TupleHL <: HList, Hel, T <: HList](in : Tuple)(implicit gen: Generic.Aux[Tuple, TupleHL], isHCons: IsHCons1.Aux[TupleHL, L[Hel], T]) | |
val ii: (List[Int], List[Int]) | |
ex(ii) | |
} | |
trait IsHCons1[L] { type H; type T <: HList} | |
object IsHCons1 { | |
type Aux[L <: HList, H0, T0 <: HList] = IsHCons1[L] { type H = H0; type T = T0 } | |
implicit def hlistIsHCons[H0, T0 <: HList]: Aux[H0 :: T0, H0, T0] = ??? | |
} |
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
--- 1.log 2015-09-23 14:06:08.000000000 +1000 | |
+++ 2.log 2015-09-23 14:06:10.000000000 +1000 | |
@@ -1,551 +1,832 @@ | |
|-- <empty> EXPRmode-POLYmode-QUALmode (site: package <root>) | |
| \-> <empty>.type | |
|-- shapeless EXPRmode-POLYmode-QUALmode (site: package <empty>) | |
| \-> shapeless.type | |
|-- class Test BYVALmode-EXPRmode (site: package <empty>) | |
| |-- scala.Tuple2[List[Int], List[Int]] TYPEmode (site: value ii in Test) | |
| | |-- List[Int] TYPEmode (site: value ii in Test) | |
| | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: value ii in Test) | |
| | | | \-> scala.type | |
| | | |-- Int TYPEmode (site: value ii in Test) | |
| | | | \-> Int | |
| | | \-> List[Int] | |
| | |-- List[Int] TYPEmode (site: value ii in Test) | |
| | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: value ii in Test) | |
| | | | \-> scala.type | |
| | | |-- Int TYPEmode (site: value ii in Test) | |
| | | | \-> Int | |
| | | \-> List[Int] | |
| | \-> (List[Int], List[Int]) | |
| |-- def $init$ BYVALmode-EXPRmode (site: trait Test) | |
| | \-> [def $init$] ()Unit | |
-| |-- def ex[Tuple <: Product, TupleHL <: HList, Hel, T <: HList] BYVALmode-EXPRmode (site: trait Test) | |
+| |-- def ex[L[_] <: List[_$1] forSome { <synthetic> type _$1 }... BYVALmode-EXPRmode (site: trait Test) | |
| | |-- scala.Unit TYPEmode (site: method ex in Test) | |
| | | \-> Unit | |
| | |-- Tuple TYPEmode (site: value in in Test) | |
| | | |-- <: Product TYPEmode (site: type Tuple in Test) | |
| | | | |-- Product TYPEmode (site: type Tuple in Test) | |
| | | | | \-> Product | |
| | | | [adapt] <: Product is now a TypeTree( <: Product) | |
| | | | \-> <: Product | |
| | | \-> Tuple | |
| | |-- Generic.Aux[Tuple, TupleHL] TYPEmode (site: value gen in Test) | |
| | | |-- Generic EXPRmode-POLYmode-QUALmode (site: value gen in Test) | |
| | | | \-> shapeless.Generic.type | |
| | | |-- Tuple TYPEmode (site: value gen in Test) | |
| | | | \-> Tuple | |
| | | |-- TupleHL TYPEmode (site: value gen in Test) | |
| | | | |-- <: HList TYPEmode (site: type TupleHL in Test) | |
| | | | | |-- HList TYPEmode (site: type TupleHL in Test) | |
| | | | | | \-> shapeless.HList | |
| | | | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | | | \-> <: shapeless.HList | |
| | | | \-> TupleHL | |
| | | \-> shapeless.Generic.Aux[Tuple,TupleHL] | |
-| | |-- IsHCons1.Aux[TupleHL, List[Hel], T] TYPEmode (site: value isHCons in Test) | |
+| | |-- IsHCons1.Aux[TupleHL, L[Hel], T] TYPEmode (site: value isHCons in Test) | |
| | | |-- IsHCons1 EXPRmode-POLYmode-QUALmode (site: value isHCons in Test) | |
| | | | \-> IsHCons1.type | |
| | | |-- IsHCons1[L] { type H = H0; type T = T0 } TYPEmode (site: type Aux in IsHCons1) | |
| | | | |-- IsHCons1[L] TYPEmode (site: type Aux in IsHCons1) | |
| | | | | |-- L NOmode (site: type Aux in IsHCons1) | |
| | | | | | \-> L | |
| | | | | \-> IsHCons1[L] | |
| | | | |-- H0 TYPEmode (site: type H in <refinement>) | |
| | | | | \-> H0 | |
| | | | |-- T0 TYPEmode (site: type T in <refinement>) | |
| | | | | \-> T0 | |
| | | | |-- <: HList TYPEmode (site: type T0 in IsHCons1) | |
| | | | | |-- HList TYPEmode (site: type T0 in IsHCons1) | |
| | | | | | \-> shapeless.HList | |
| | | | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | | | \-> <: shapeless.HList | |
| | | | [adapt] IsHCons1[L] { type H = H0; type T = T0 } is now a TypeTree(IsHCons1[L]{type H = H0; type T = T0}) | |
| | | | \-> IsHCons1[L]{type H = H0; type T = T0} | |
| | | |-- TupleHL TYPEmode (site: value isHCons in Test) | |
| | | | \-> TupleHL | |
-| | | |-- List[Hel] TYPEmode (site: value isHCons in Test) | |
-| | | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: value isHCons in Test) | |
-| | | | | \-> scala.type | |
+| | | |-- L[Hel] TYPEmode (site: value isHCons in Test) | |
+| | | | |-- <: List[_$1] forSome { <synthetic> type _$1 } TYPEmode (site: type L in Test) | |
+| | | | | |-- List[_$1] forSome { <synthetic> type _$1 } TYPEmode (site: type L in Test) | |
+| | | | | | |-- _$1 BYVALmode-EXPRmode (site: type L in Test) | |
+| | | | | | | \-> [type _$1] _$1 | |
+| | | | | | |-- List[_$1] TYPEmode (site: type L in Test) | |
+| | | | | | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: type L in Test) | |
+| | | | | | | | \-> scala.type | |
+| | | | | | | |-- _$1 TYPEmode (site: type L in Test) | |
+| | | | | | | | \-> _$1 | |
+| | | | | | | \-> List[_$1] | |
+| | | | | | \-> List[_] | |
+| | | | | [adapt] <: List is now a TypeTree( <: List[_]) | |
+| | | | | \-> <: List[_] | |
| | | | |-- Hel TYPEmode (site: value isHCons in Test) | |
| | | | | \-> Hel | |
-| | | | \-> List[Hel] | |
+| | | | \-> L[Hel] | |
| | | |-- T TYPEmode (site: value isHCons in Test) | |
| | | | |-- <: HList TYPEmode (site: type T in Test) | |
| | | | | |-- HList TYPEmode (site: type T in Test) | |
| | | | | | \-> shapeless.HList | |
| | | | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | | | \-> <: shapeless.HList | |
| | | | \-> T | |
-| | | \-> IsHCons1.Aux[TupleHL,List[Hel],T] | |
+| | | \-> IsHCons1.Aux[TupleHL,L[Hel],T] | |
+| | |-- <: List[_$1] forSome { <synthetic> type _$1 } TYPEmode (site: type L in Test) | |
+| | | |-- List[_$1] forSome { <synthetic> type _$1 } TYPEmode (site: type L in Test) | |
+| | | | |-- _$1 BYVALmode-EXPRmode (site: type L in Test) | |
+| | | | | \-> [type _$1] _$1 | |
+| | | | |-- List[_$1] TYPEmode (site: type L in Test) | |
+| | | | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: type L in Test) | |
+| | | | | | \-> scala.type | |
+| | | | | \-> List[_$1] | |
+| | | | \-> List[_] | |
+| | | [adapt] <: List[A] is now a TypeTree( <: List[_]) | |
+| | | \-> <: List[_] | |
| | |-- <: Product TYPEmode (site: method ex in Test) | |
| | | |-- Product TYPEmode (site: method ex in Test) | |
| | | | \-> Product | |
| | | [adapt] <: Product is now a TypeTree( <: Product) | |
| | | \-> <: Product | |
| | |-- <: HList TYPEmode (site: method ex in Test) | |
| | | |-- HList TYPEmode (site: method ex in Test) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
| | |-- <: HList TYPEmode (site: method ex in Test) | |
| | | |-- HList TYPEmode (site: method ex in Test) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
| | |-- Generic.Aux[Tuple, TupleHL] TYPEmode (site: value gen in Test) | |
| | | |-- Generic EXPRmode-POLYmode-QUALmode (site: value gen in Test) | |
| | | | \-> shapeless.Generic.type | |
| | | \-> shapeless.Generic.Aux[Tuple,TupleHL] | |
| | |-- IsHCons1.Aux[L,H0,T0] TYPEmode (site: value isHCons in Test) | |
-| | | |-- List[Hel] TYPEmode (site: value isHCons in Test) | |
-| | | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: value isHCons in Test) | |
-| | | | | \-> scala.type | |
-| | | | \-> List[Hel] | |
-| | | \-> IsHCons1.Aux[TupleHL,List[Hel],T] | |
+| | | |-- L[_] TYPEmode (site: value isHCons in Test) | |
+| | | | \-> L[Hel] | |
+| | | \-> IsHCons1.Aux[TupleHL,L[Hel],T] | |
| | |-- <: HList TYPEmode (site: type L in IsHCons1) | |
| | | |-- HList TYPEmode (site: type L in IsHCons1) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
-| | \-> [def ex] [Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: shapeless.HList](in: Tuple)(implicit gen: shapeless.Generic.Aux[Tuple,TupleHL], implicit isHCons: IsHCons1.Aux[TupleHL,List[Hel],T])Unit | |
+| | \-> [def ex] [L[_] <: List[_], Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: shapeless.HList](in: Tuple)(implicit gen: shapeless.Generic.Aux[Tuple,TupleHL], implicit isHCons: IsHCons1.Aux[TupleHL,L[Hel],T])Unit | |
| |-- def ii BYVALmode-EXPRmode (site: trait Test) | |
| | |-- (T1, T2) TYPEmode (site: value ii in Test) | |
| | | |-- List[Int] TYPEmode (site: value ii in Test) | |
| | | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: value ii in Test) | |
| | | | | \-> scala.type | |
| | | | |-- Int TYPEmode (site: value ii in Test) | |
| | | | | \-> Int | |
| | | | \-> List[Int] | |
| | | |-- List[Int] TYPEmode (site: value ii in Test) | |
| | | | |-- scala.`package` EXPRmode-POLYmode-QUALmode (site: value ii in Test) | |
| | | | | \-> scala.type | |
| | | | |-- Int TYPEmode (site: value ii in Test) | |
| | | | | \-> Int | |
| | | | \-> List[Int] | |
| | | \-> (List[Int], List[Int]) | |
| | \-> [def ii] => (List[Int], List[Int]) | |
| |-- ex(ii) BYVALmode-EXPRmode (site: value <local Test> in Test) | |
| | |-- ex BYVALmode-EXPRmode-FUNmode-POLYmode (silent: value <local Test> in Test) | |
+undetParam added: type L | |
undetParam added: type Tuple | |
undetParam added: type TupleHL | |
undetParam added: type Hel | |
undetParam added: type T | |
-| | | [adapt] [Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: ... adapted to [Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: ... | |
-| | | \-> (in: Tuple)(implicit gen: shapeless.Generic.Aux[Tuple,TupleHL], implicit isHCons: IsHCons1.Aux[TupleHL,List[Hel],T])Unit | |
+| | | [adapt] [L[_] <: List[_], Tuple <: Product, TupleHL <: shapeless.... adapted to [L[_] <: List[_], Tuple <: Product, TupleHL <: shapeless.... | |
+| | | \-> (in: Tuple)(implicit gen: shapeless.Generic.Aux[Tuple,TupleHL], implicit isHCons: IsHCons1.Aux[TupleHL,L[Hel],T])Unit | |
| | |-- ii BYVALmode-EXPRmode-POLYmode (site: value <local Test> in Test) | |
| | | \-> (List[Int], List[Int]) | |
-| | solving for (Tuple: ?Tuple, TupleHL: ?TupleHL, Hel: ?Hel, T: ?T) | |
+| | solving for (L: ?L, Tuple: ?Tuple, TupleHL: ?TupleHL, Hel: ?Hel, T: ?T) | |
undetParam inferred: type Tuple as (List[Int], List[Int]) | |
-| | solving for (TupleHL: ?TupleHL, Hel: ?Hel, T: ?T) | |
+| | solving for (L: ?L, TupleHL: ?TupleHL, Hel: ?Hel, T: ?T) | |
undetParam added: type T | |
undetParam added: type R | |
-macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@149e0f5d, expandee = TypeApply[1](Select[2](Select[3](This[4](TypeName("shapeless")), shapeless.Generic#9056), TermName("materialize")#20577), List(TypeTree[5](), TypeTree[6]())) | |
-[1] TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20569, List(TypeRef(NoPrefix, TypeName("T")#33132, List()), TypeRef(NoPrefix, TypeName("R")#33133, List()))) | |
-[2] PolyType(List(TypeName("T")#20578, TypeName("R")#20579), NullaryMethodType(TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20569, List(TypeRef(NoPrefix, TypeName("T")#20578, List()), TypeRef(NoPrefix, TypeName("R")#20579, List()))))) | |
+macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@769f71a9, expandee = TypeApply[1](Select[2](Select[3](This[4](TypeName("shapeless")), shapeless.Generic#9056), TermName("materialize")#20579), List(TypeTree[5](), TypeTree[6]())) | |
+[1] TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(NoPrefix, TypeName("T")#33172, List()), TypeRef(NoPrefix, TypeName("R")#33173, List()))) | |
+[2] PolyType(List(TypeName("T")#20580, TypeName("R")#20581), NullaryMethodType(TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(NoPrefix, TypeName("T")#20580, List()), TypeRef(NoPrefix, TypeName("R")#20581, List()))))) | |
[3] SingleType(ThisType(shapeless#33), shapeless.Generic#9056) | |
[4] ThisType(shapeless#33) | |
-[5] TypeRef(NoPrefix, TypeName("T")#33132, List()) | |
-[6] TypeRef(NoPrefix, TypeName("R")#33133, List()), desugared = () | |
+[5] TypeRef(NoPrefix, TypeName("T")#33172, List()) | |
+[6] TypeRef(NoPrefix, TypeName("R")#33173, List()), desugared = () | |
looking for macro implementation: macro method materialize | |
resolving macro implementation as shapeless.GenericMacros.materialize (isBundle = true) | |
macro classloader: initializing from -cp: List(file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resources.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jsse.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jce.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/charsets.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jfr.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/akka-actor_2.11-2.3.10.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/config-1.2.1.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/jline-2.12.1.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-2.11.0.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-migration_2.11-1.1.0.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-compiler.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-library_2.11-1.0.2.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-plugin_2.11.7-1.0.2.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-library.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-parser-combinators_2.11-1.0.4.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-reflect.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-swing_2.11-1.0.2.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-xml_2.11-1.0.4.jar, file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scalap-2.11.7.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/System/Library/Java/Extensions/MRJToolkit.jar, file:/Users/jason/code/shapeless/core/target/scala-2.11/classes/) | |
-classloader is: scala.reflect.internal.util.ScalaClassLoader$URLClassLoader@6af93788 of type class scala.reflect.internal.util.ScalaClassLoader$URLClassLoader with classpath [file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resources.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jsse.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jce.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/charsets.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jfr.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/akka-actor_2.11-2.3.10.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/config-1.2.1.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/jline-2.12.1.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-2.11.0.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-migration_2.11-1.1.0.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-compiler.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-library_2.11-1.0.2.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-plugin_2.11.7-1.0.2.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-library.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-parser-combinators_2.11-1.0.4.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-reflect.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-swing_2.11-1.0.2.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-xml_2.11-1.0.4.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scalap-2.11.7.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/cldrdata.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/dnsns.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/jfxrt.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/localedata.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/nashorn.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunec.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/zipfs.jar,file:/System/Library/Java/Extensions/MRJToolkit.jar,file:/Users/jason/code/shapeless/core/target/scala-2.11/classes/] and parent being primordial classloader with boot classpath [/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/classes:/usr/local/Cellar/scala/2.11.7/libexec/lib/akka-actor_2.11-2.3.10.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/config-1.2.1.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/jline-2.12.1.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-2.11.0.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-migration_2.11-1.1.0.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-compiler.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-library_2.11-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-plugin_2.11.7-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-library.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-parser-combinators_2.11-1.0.4.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-reflect.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-swing_2.11-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-xml_2.11-1.0.4.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scalap-2.11.7.jar] | |
+classloader is: scala.reflect.internal.util.ScalaClassLoader$URLClassLoader@6f96c77 of type class scala.reflect.internal.util.ScalaClassLoader$URLClassLoader with classpath [file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resources.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jsse.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jce.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/charsets.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jfr.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/akka-actor_2.11-2.3.10.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/config-1.2.1.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/jline-2.12.1.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-2.11.0.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-migration_2.11-1.1.0.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-compiler.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-library_2.11-1.0.2.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-plugin_2.11.7-1.0.2.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-library.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-parser-combinators_2.11-1.0.4.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-reflect.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-swing_2.11-1.0.2.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-xml_2.11-1.0.4.jar,file:/usr/local/Cellar/scala/2.11.7/libexec/lib/scalap-2.11.7.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/cldrdata.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/dnsns.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/jfxrt.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/localedata.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/nashorn.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunec.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar,file:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext/zipfs.jar,file:/System/Library/Java/Extensions/MRJToolkit.jar,file:/Users/jason/code/shapeless/core/target/scala-2.11/classes/] and parent being primordial classloader with boot classpath [/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/classes:/usr/local/Cellar/scala/2.11.7/libexec/lib/akka-actor_2.11-2.3.10.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/config-1.2.1.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/jline-2.12.1.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-2.11.0.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-migration_2.11-1.1.0.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-compiler.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-library_2.11-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-plugin_2.11.7-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-library.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-parser-combinators_2.11-1.0.4.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-reflect.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-swing_2.11-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-xml_2.11-1.0.4.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scalap-2.11.7.jar] | |
successfully loaded macro impl as (class shapeless.GenericMacros, public scala.reflect.api.Trees$TreeApi shapeless.GenericMacros.materialize(scala.reflect.api.TypeTags$WeakTypeTag,scala.reflect.api.TypeTags$WeakTypeTag)) | |
-calculateUndetparams: Set(type R, type T) | |
+calculateUndetparams: Set(type T, type R) | |
macro expansion is delayed: shapeless.this.Generic.materialize[T, R] | |
context: MacroContext(materialize@source-/Users/jason/code/shapeless/test.scala,line-6,offset=250 +0) | |
prefix: shapeless.this.Generic | |
targs: List(T, R) | |
argss: List() | |
paramss: List() | |
binding: MacroImplBinding(true,false,shapeless.GenericMacros,materialize,List(List(Tag(0), Tag(1))),List(T, R)) | |
trees: List() | |
tags: List(WeakTypeTag[T], WeakTypeTag[R]) | |
macroImplArgs: List(WeakTypeTag[T], WeakTypeTag[R]) | |
| | solving for (T: ?T, R: ?R) | |
undetParam inferred: type T as (List[Int], List[Int]) | |
-macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@1622f1b, expandee = TypeApply[7](Select[2](Select[3](This[4](TypeName("shapeless")), shapeless.Generic#9056), TermName("materialize")#20577), List(TypeTree[8](), TypeTree[6]())) | |
-[2] PolyType(List(TypeName("T")#20578, TypeName("R")#20579), NullaryMethodType(TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20569, List(TypeRef(NoPrefix, TypeName("T")#20578, List()), TypeRef(NoPrefix, TypeName("R")#20579, List()))))) | |
+macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@6580cfdd, expandee = TypeApply[7](Select[2](Select[3](This[4](TypeName("shapeless")), shapeless.Generic#9056), TermName("materialize")#20579), List(TypeTree[8](), TypeTree[6]())) | |
+[2] PolyType(List(TypeName("T")#20580, TypeName("R")#20581), NullaryMethodType(TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(NoPrefix, TypeName("T")#20580, List()), TypeRef(NoPrefix, TypeName("R")#20581, List()))))) | |
[3] SingleType(ThisType(shapeless#33), shapeless.Generic#9056) | |
[4] ThisType(shapeless#33) | |
-[6] TypeRef(NoPrefix, TypeName("R")#33133, List()) | |
-[7] TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20569, List(TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), TypeRef(NoPrefix, TypeName("R")#33133, List()))) | |
+[6] TypeRef(NoPrefix, TypeName("R")#33173, List()) | |
+[7] TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), TypeRef(NoPrefix, TypeName("R")#33173, List()))) | |
[8] TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), desugared = () | |
looking for macro implementation: macro method materialize | |
-macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@2e4b8173, expandee = TypeApply[7](Select[2](Select[3](This[4](TypeName("shapeless")), shapeless.Generic#9056), TermName("materialize")#20577), List(TypeTree[8](), TypeTree[6]())) | |
-[2] PolyType(List(TypeName("T")#20578, TypeName("R")#20579), NullaryMethodType(TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20569, List(TypeRef(NoPrefix, TypeName("T")#20578, List()), TypeRef(NoPrefix, TypeName("R")#20579, List()))))) | |
+macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@63355449, expandee = TypeApply[7](Select[2](Select[3](This[4](TypeName("shapeless")), shapeless.Generic#9056), TermName("materialize")#20579), List(TypeTree[8](), TypeTree[6]())) | |
+[2] PolyType(List(TypeName("T")#20580, TypeName("R")#20581), NullaryMethodType(TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(NoPrefix, TypeName("T")#20580, List()), TypeRef(NoPrefix, TypeName("R")#20581, List()))))) | |
[3] SingleType(ThisType(shapeless#33), shapeless.Generic#9056) | |
[4] ThisType(shapeless#33) | |
-[6] TypeRef(NoPrefix, TypeName("R")#33133, List()) | |
-[7] TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20569, List(TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), TypeRef(NoPrefix, TypeName("R")#33133, List()))) | |
+[6] TypeRef(NoPrefix, TypeName("R")#33173, List()) | |
+[7] TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), TypeRef(NoPrefix, TypeName("R")#33173, List()))) | |
[8] TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), desugared = () | |
looking for macro implementation: macro method materialize | |
performing macro expansion shapeless.this.Generic.materialize[(List[Int], List[Int]), R] at source-/Users/jason/code/shapeless/test.scala,line-6,offset=250 | |
context: MacroContext(materialize@source-/Users/jason/code/shapeless/test.scala,line-6,offset=250 +0) | |
prefix: shapeless.this.Generic | |
targs: List((List[Int], List[Int]), R) | |
argss: List() | |
paramss: List() | |
binding: MacroImplBinding(true,false,shapeless.GenericMacros,materialize,List(List(Tag(0), Tag(1))),List(T, R)) | |
trees: List() | |
tags: List(WeakTypeTag[(List[Int], List[Int])], WeakTypeTag[R]) | |
macroImplArgs: List(WeakTypeTag[(List[Int], List[Int])], WeakTypeTag[R]) | |
original: | |
{ | |
final class fresh$macro$3 extends _root_.shapeless.Generic[(List[Int], List[Int])] { | |
def <init>() = { | |
super.<init>(); | |
() | |
}; | |
type Repr = shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]; | |
def to(p: (List[Int], List[Int])): Repr = p match { | |
case scala.this.Tuple2((pat$macro$1 @ _), (pat$macro$2 @ _)) => _root_.shapeless.$colon$colon(pat$macro$1, _root_.shapeless.$colon$colon(pat$macro$2, _root_.shapeless.HNil)) | |
}.asInstanceOf[Repr]; | |
def from(p: Repr): (List[Int], List[Int]) = p match { | |
case _root_.shapeless.$colon$colon((pat$macro$1 @ _), _root_.shapeless.$colon$colon((pat$macro$2 @ _), _root_.shapeless.HNil)) => scala.this.Tuple2(pat$macro$1, pat$macro$2) | |
} | |
}; | |
(new fresh$macro$3(): _root_.shapeless.Generic.Aux[(List[Int], List[Int]), shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]]) | |
} | |
Block(List(ClassDef(Modifiers(FINAL), TypeName("fresh$macro$3"), List(), Template(List(AppliedTypeTree(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TypeName("Generic")), List(TypeTree()))), noSelfType, List(DefDef(Modifiers(), termNames.CONSTRUCTOR, List(), List(List()), TypeTree(), Block(List(pendingSuperCall), Literal(Constant(())))), TypeDef(Modifiers(), TypeName("Repr"), List(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), Select(This(TypeName("shapeless")), shapeless.HNil)))))), DefDef(Modifiers(), TermName("to"), List(), List(List(ValDef(Modifiers(PARAM), TermName("p"), TypeTree(), EmptyTree))), Ident(TypeName("Repr")), TypeApply(Select(Match(Ident(TermName("p")), List(CaseDef(Apply(Select(This(TypeName("scala")), scala.Tuple2), List(Bind(TermName("pat$macro$1"), Ident(termNames.WILDCARD)), Bind(TermName("pat$macro$2"), Ident(termNames.WILDCARD)))), EmptyTree, Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Ident(TermName("pat$macro$1")), Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Ident(TermName("pat$macro$2")), Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("HNil"))))))))), TermName("asInstanceOf")), List(Ident(TypeName("Repr"))))), DefDef(Modifiers(), TermName("from"), List(), List(List(ValDef(Modifiers(PARAM), TermName("p"), Ident(TypeName("Repr")), EmptyTree))), TypeTree(), Match(Ident(TermName("p")), List(CaseDef(Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Bind(TermName("pat$macro$1"), Ident(termNames.WILDCARD)), Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Bind(TermName("pat$macro$2"), Ident(termNames.WILDCARD)), Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("HNil")))))), EmptyTree, Apply(Select(This(TypeName("scala")), scala.Tuple2), List(Ident(TermName("pat$macro$1")), Ident(TermName("pat$macro$2")))))))))))), Typed(Apply(Select(New(Ident(TypeName("fresh$macro$3"))), termNames.CONSTRUCTOR), List()), AppliedTypeTree(Select(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("Generic")), TypeName("Aux")), List(TypeTree(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), Select(This(TypeName("shapeless")), shapeless.HNil))))))))) | |
whitebox typecheck #0 (against pt = ?): { | |
final class fresh$macro$3 extends _root_.shapeless.Generic[(List[Int], List[Int])] { | |
def <init>() = { | |
super.<init>(); | |
() | |
}; | |
type Repr = shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]; | |
def to(p: (List[Int], List[Int])): Repr = p match { | |
case scala.this.Tuple2((pat$macro$1 @ _), (pat$macro$2 @ _)) => _root_.shapeless.$colon$colon(pat$macro$1, _root_.shapeless.$colon$colon(pat$macro$2, _root_.shapeless.HNil)) | |
}.asInstanceOf[Repr]; | |
def from(p: Repr): (List[Int], List[Int]) = p match { | |
case _root_.shapeless.$colon$colon((pat$macro$1 @ _), _root_.shapeless.$colon$colon((pat$macro$2 @ _), _root_.shapeless.HNil)) => scala.this.Tuple2(pat$macro$1, pat$macro$2) | |
} | |
}; | |
(new fresh$macro$3(): _root_.shapeless.Generic.Aux[(List[Int], List[Int]), shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]]) | |
} | |
| | |-- { final class fresh$macro$3 extends _root_.shapeless.Gene... EXPRmode (silent: value <local Test> in Test) implicits disabled | |
| | | |-- class fresh$macro$3 BYVALmode-EXPRmode (silent: value <local Test> in Test) implicits disabled | |
| | | | |-- _root_.shapeless.Generic FUNmode-TYPEmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | | \-> shapeless.type | |
| | | | | \-> shapeless.Generic | |
| | | | |-- _root_.shapeless.Generic[(List[Int], List[Int])] TYPEmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | | \-> shapeless.type | |
| | | | | \-> shapeless.Generic[(List[Int], List[Int])] | |
| | | | |-- _root_.shapeless.Generic FUNmode-TYPEmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | \-> shapeless.Generic | |
| | | | |-- _root_.shapeless.Generic[(List[Int], List[Int])] TYPEmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | \-> shapeless.Generic[(List[Int], List[Int])] | |
| | | | |-- super EXPRmode-POLYmode-QUALmode (silent: <init> in fresh$macro$3) implicits disabled | |
| | | | | |-- this EXPRmode (silent: <init> in fresh$macro$3) implicits disabled | |
| | | | | | \-> fresh$macro$3 | |
| | | | | \-> fresh$macro$3.super.type (with underlying type AnyRef) | |
| | | | |-- Reprshapeless.:: BYVALmode-EXPRmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | |-- shapeless.::[H,T] TYPEmode (silent: type Repr in fresh$macro$3) implicits disabled | |
| | | | | | |-- shapeless.::[H,T] TYPEmode (silent: type Repr in fresh$macro$3) implicits disabled | |
| | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
| | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
| | | | | |-- shapeless.::[H,T] TYPEmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | | |-- shapeless.::[H,T] TYPEmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
| | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
| | | | | \-> [type Repr] fresh$macro$3.this.Repr | |
| | | | |-- def to BYVALmode-EXPRmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | |-- Repr TYPEmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | [adapt] fresh$macro$3.this.Repr is now a TypeTree(fresh$macro$3.this.Repr) | |
| | | | | | \-> fresh$macro$3.this.Repr | |
| | | | | |-- Repr TYPEmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | [adapt] fresh$macro$3.this.Repr is now a TypeTree(fresh$macro$3.this.Repr) | |
| | | | | | \-> fresh$macro$3.this.Repr | |
| | | | | |-- p match { case scala.this.Tuple2((pat$macro$1 @ _), (pat$... : pt=fresh$macro$3.this.Repr EXPRmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | |-- p match { case scala.this.Tuple2((pat$macro$1 @ _), (pat$... BYVALmode-EXPRmode-FUNmode-POLYmode-TAPPmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | |-- p match { case scala.this.Tuple2((pat$macro$1 @ _), (pat$... EXPRmode-POLYmode-QUALmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | |-- p BYVALmode-EXPRmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | \-> (List[Int], List[Int]) | |
| | | | | | | | |-- Tuple2.type : pt=(List[Int], List[Int]) PATTERNmode (silent: method to in fresh$macro$3) enrichment only | |
| | | | | | | | | solving for (T1: ?T1, T2: ?T2) | |
undetParam inferred: type T1 as List[Int] | |
undetParam inferred: type T2 as List[Int] | |
| | | | | | | | | |-- (pat$macro$1 @ _) : pt=List[Int] BYVALmode-PATTERNmode (silent: method to in fresh$macro$3) enrichment only | |
| | | | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (silent: method to in fresh$macro$3) enrichment only | |
| | | | | | | | | | | \-> List[Int] | |
| | | | | | | | | | \-> List[Int] | |
| | | | | | | | | |-- (pat$macro$2 @ _) : pt=List[Int] BYVALmode-PATTERNmode (silent: method to in fresh$macro$3) enrichment only | |
| | | | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (silent: method to in fresh$macro$3) enrichment only | |
| | | | | | | | | | | \-> List[Int] | |
| | | | | | | | | | \-> List[Int] | |
| | | | | | | | | \-> (List[Int], List[Int]) | |
| | | | | | | | |-- _root_.shapeless.$colon$colon(pat$macro$1, _root_.shapele... EXPRmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | |-- _root_.shapeless.$colon$colon BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | | \-> shapeless.type | |
| | | | | | | | | | |-- shapeless.::.apply BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
undetParam added: type H | |
undetParam added: type T | |
| | | | | | | | | | | [adapt] [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
| | | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
| | | | | | | | | | [adapt] shapeless.::.type adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
| | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
| | | | | | | | | |-- pat$macro$1 BYVALmode-EXPRmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | \-> List[Int] | |
| | | | | | | | | |-- _root_.shapeless.$colon$colon(pat$macro$2, _root_.shapele... BYVALmode-EXPRmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | |-- _root_.shapeless.$colon$colon BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | | | \-> shapeless.type | |
| | | | | | | | | | | |-- shapeless.::.apply BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
undetParam added: type H | |
undetParam added: type T | |
| | | | | | | | | | | | [adapt] [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
| | | | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
| | | | | | | | | | | [adapt] shapeless.::.type adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
| | | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
| | | | | | | | | | |-- pat$macro$2 BYVALmode-EXPRmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | | \-> List[Int] | |
| | | | | | | | | | |-- _root_.shapeless.HNil BYVALmode-EXPRmode-POLYmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | | | | | | \-> shapeless.type | |
| | | | | | | | | | | \-> shapeless.HNil.type | |
| | | | | | | | | | solving for (H: ?H, T: ?T) | |
undetParam inferred: type H as List[Int] | |
undetParam inferred: type T as shapeless.HNil.type | |
| | | | | | | | | | \-> shapeless.::[List[Int],shapeless.HNil.type] | |
| | | | | | | | | solving for (H: ?H, T: ?T) | |
undetParam inferred: type H as List[Int] | |
undetParam inferred: type T as shapeless.::[List[Int],shapeless.HNil.type] | |
| | | | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil.type]] | |
| | | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil.type]] | |
| | | | | | | \-> [T0]=> T0 | |
| | | | | | |-- Repr TYPEmode (silent: method to in fresh$macro$3) implicits disabled | |
| | | | | | | [adapt] fresh$macro$3.this.Repr is now a TypeTree(fresh$macro$3.this.Repr) | |
| | | | | | | \-> fresh$macro$3.this.Repr | |
| | | | | | \-> fresh$macro$3.this.Repr | |
| | | | | \-> [def to] (p: (List[Int], List[Int]))fresh$macro$3.this.Repr | |
| | | | |-- def from BYVALmode-EXPRmode (silent: class fresh$macro$3) implicits disabled | |
| | | | | |-- Repr TYPEmode (silent: value p in fresh$macro$3) implicits disabled | |
| | | | | | [adapt] fresh$macro$3.this.Repr is now a TypeTree(fresh$macro$3.this.Repr) | |
| | | | | | \-> fresh$macro$3.this.Repr | |
| | | | | |-- Repr TYPEmode (silent: value p in fresh$macro$3) implicits disabled | |
| | | | | | [adapt] fresh$macro$3.this.Repr is now a TypeTree(fresh$macro$3.this.Repr) | |
| | | | | | \-> fresh$macro$3.this.Repr | |
| | | | | |-- p match { case _root_.shapeless.$colon$colon((pat$macro$1... : pt=(List[Int], List[Int]) EXPRmode (silent: method from in fresh$macro$3) implicits disabled | |
| | | | | | |-- p BYVALmode-EXPRmode (silent: method from in fresh$macro$3) implicits disabled | |
| | | | | | | \-> fresh$macro$3.this.Repr | |
| | | | | | |-- _root_.shapeless.$colon$colon((pat$macro$1 @ _), _root_.s... : pt=fresh$macro$3.this.Repr PATTERNmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | |-- _root_.shapeless.$colon$colon : pt=fresh$macro$3.this.Repr BYVALmode-FUNmode-PATTERNmode-POLYmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | \-> shapeless.type | |
| | | | | | | | solving for (H: ?H, T: ?T) | |
undetParam inferred: type H as List[Int] | |
undetParam inferred: type T as shapeless.::[List[Int],shapeless.HNil] | |
| | | | | | | | [adapt] shapeless.::.type is now a TypeTree((head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]) | |
| | | | | | | | \-> (head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
| | | | | | | |-- (pat$macro$1 @ _) : pt=List[Int] BYVALmode-PATTERNmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | \-> List[Int] | |
| | | | | | | | \-> List[Int] | |
| | | | | | | |-- _root_.shapeless.$colon$colon((pat$macro$2 @ _), _root_.s... : pt=shapeless.::[List[Int],shapeless.HNil] BYVALmode-PATTERNmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | |-- _root_.shapeless.$colon$colon : pt=shapeless.::[List[Int],shapeless.HNil] BYVALmode-FUNmode-PATTERNmode-POLYmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | | \-> shapeless.type | |
| | | | | | | | | solving for (H: ?H, T: ?T) | |
undetParam inferred: type H as List[Int] | |
undetParam inferred: type T as shapeless.HNil | |
| | | | | | | | | [adapt] shapeless.::.type is now a TypeTree((head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil]) | |
| | | | | | | | | \-> (head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil] | |
| | | | | | | | |-- (pat$macro$2 @ _) : pt=List[Int] BYVALmode-PATTERNmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | | \-> List[Int] | |
| | | | | | | | | \-> List[Int] | |
| | | | | | | | |-- _root_.shapeless.HNil : pt=shapeless.HNil BYVALmode-PATTERNmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method from in fresh$macro$3) enrichment only | |
| | | | | | | | | | \-> shapeless.type | |
| | | | | | | | | \-> shapeless.HNil.type | |
| | | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
| | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
| | | | | | |-- Tuple2.type : pt=(List[Int], List[Int]) EXPRmode (silent: method from in fresh$macro$3) implicits disabled | |
| | | | | | | |-- scala.this.Tuple2.apply BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method from in fresh$macro$3) implicits disabled | |
undetParam added: type T1 | |
undetParam added: type T2 | |
| | | | | | | | [adapt] [T1, T2](_1: T1, _2: T2)(T1, T2) adapted to [T1, T2](_1: T1, _2: T2)(T1, T2) | |
| | | | | | | | \-> (_1: T1, _2: T2)(T1, T2) | |
| | | | | | | |-- pat$macro$1 : pt=List[Int] BYVALmode-EXPRmode-POLYmode (silent: method from in fresh$macro$3) implicits disabled | |
| | | | | | | | \-> List[Int] | |
| | | | | | | |-- pat$macro$2 : pt=List[Int] BYVALmode-EXPRmode-POLYmode (silent: method from in fresh$macro$3) implicits disabled | |
| | | | | | | | \-> List[Int] | |
| | | | | | | solving for (T1: ?T1, T2: ?T2) | |
undetParam inferred: type T1 as List[Int] | |
undetParam inferred: type T2 as List[Int] | |
| | | | | | | \-> (List[Int], List[Int]) | |
| | | | | | \-> (List[Int], List[Int]) | |
| | | | | \-> [def from] (p: fresh$macro$3.this.Repr)(List[Int], List[Int]) | |
| | | | \-> [class fresh$macro$3] fresh$macro$3 | |
| | | |-- (new fresh$macro$3(): _root_.shapeless.Generic.Aux[(List[... EXPRmode (silent: value <local Test> in Test) implicits disabled | |
| | | | |-- _root_.shapeless.Generic.Aux[(List[Int], List[Int]), shap... TYPEmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | |-- _root_.shapeless.Generic EXPRmode-POLYmode-QUALmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | | | \-> shapeless.type | |
| | | | | | \-> shapeless.Generic.type | |
| | | | | |-- shapeless.::[H,T] TYPEmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | | |-- shapeless.::[H,T] TYPEmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
| | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
| | | | | \-> shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] | |
| | | | |-- new fresh$macro$3() : pt=shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] EXPRmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | |-- new fresh$macro$3 BYVALmode-EXPRmode-FUNmode-POLYmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | | |-- new fresh$macro$3 EXPRmode-POLYmode-QUALmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | | | |-- fresh$macro$3 FUNmode-TYPEmode (silent: value <local Test> in Test) implicits disabled | |
| | | | | | | | \-> fresh$macro$3 | |
| | | | | | | \-> fresh$macro$3 | |
| | | | | | \-> ()fresh$macro$3 | |
| | | | | \-> fresh$macro$3 | |
| | | | \-> shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] | |
| | | \-> shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] | |
whitebox typecheck #1 (against pt = shapeless.Generic.Aux[(List[Int], List[Int]),?]): { | |
final class fresh$macro$3 extends AnyRef with shapeless.Generic[(List[Int], List[Int])] { | |
def <init>(): fresh$macro$3 = { | |
fresh$macro$3.super.<init>(); | |
() | |
}; | |
type Repr = shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]; | |
def to(p: (List[Int], List[Int])): fresh$macro$3.this.Repr = p match { | |
case (_1: List[Int], _2: List[Int])(List[Int], List[Int])((pat$macro$1 @ _), (pat$macro$2 @ _)) => shapeless.::.apply[List[Int], shapeless.::[List[Int],shapeless.HNil.type]](pat$macro$1, shapeless.::.apply[List[Int], shapeless.HNil.type](pat$macro$2, shapeless.HNil)) | |
}.asInstanceOf[fresh$macro$3.this.Repr]; | |
def from(p: fresh$macro$3.this.Repr): (List[Int], List[Int]) = p match { | |
case (head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]((pat$macro$1 @ _), (head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil]((pat$macro$2 @ _), shapeless.HNil)) => scala.this.Tuple2.apply[List[Int], List[Int]](pat$macro$1, pat$macro$2) | |
} | |
}; | |
(new fresh$macro$3(): shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]]) | |
} | |
whitebox typecheck #2 (against pt = ?): { | |
final class fresh$macro$3 extends AnyRef with shapeless.Generic[(List[Int], List[Int])] { | |
def <init>(): fresh$macro$3 = { | |
fresh$macro$3.super.<init>(); | |
() | |
}; | |
type Repr = shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]; | |
def to(p: (List[Int], List[Int])): fresh$macro$3.this.Repr = p match { | |
case (_1: List[Int], _2: List[Int])(List[Int], List[Int])((pat$macro$1 @ _), (pat$macro$2 @ _)) => shapeless.::.apply[List[Int], shapeless.::[List[Int],shapeless.HNil.type]](pat$macro$1, shapeless.::.apply[List[Int], shapeless.HNil.type](pat$macro$2, shapeless.HNil)) | |
}.asInstanceOf[fresh$macro$3.this.Repr]; | |
def from(p: fresh$macro$3.this.Repr): (List[Int], List[Int]) = p match { | |
case (head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]((pat$macro$1 @ _), (head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil]((pat$macro$2 @ _), shapeless.HNil)) => scala.this.Tuple2.apply[List[Int], List[Int]](pat$macro$1, pat$macro$2) | |
} | |
}; | |
(new fresh$macro$3(): shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]]) | |
} | |
| | [adapt] [T, R]=> shapeless.Generic.Aux[T,R] adapted to [T, R]=> shapeless.Generic.Aux[T,R] based on pt shapeless.Generic.Aux[(List[Int], List[Int]),TupleHL] | |
-| | solving for (TupleHL: ?TupleHL, Hel: ?Hel, T: ?T) | |
+| | solving for (L: ?L, TupleHL: ?TupleHL, Hel: ?Hel, T: ?T) | |
undetParam inferred: type TupleHL as shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
| | |-- Aux[$colon$colon[H0, T0], H0, T0] TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | |-- $colon$colon[H0, T0] TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | | |-- H0 TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | | | \-> H0 | |
| | | | |-- T0 TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | | | |-- <: HList TYPEmode (site: type T0 in IsHCons1) | |
| | | | | | |-- HList TYPEmode (site: type T0 in IsHCons1) | |
| | | | | | | \-> shapeless.HList | |
| | | | | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | | | | \-> <: shapeless.HList | |
| | | | | \-> T0 | |
| | | | \-> shapeless.::[H0,T0] | |
| | | |-- H0 TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | | \-> H0 | |
| | | |-- T0 TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | | \-> T0 | |
| | | \-> IsHCons1.Aux[shapeless.::[H0,T0],H0,T0] | |
undetParam added: type H0 | |
undetParam added: type T0 | |
| | solving for (H0: ?H0, T0: ?T0) | |
-| | |-- [H0, T0 <: shapeless.HList]=> IsHCons1.Aux[shapeless.::[H... EXPRmode (silent: value <local Test> in Test) implicits disabled | |
-| | | \-> IsHCons1.Aux[shapeless.::[H0,T0],H0,T0] | |
-| | [adapt] [H0, T0 <: shapeless.HList]=> IsHCons1.Aux[shapeless.::[H... adapted to [H0, T0 <: shapeless.HList]=> IsHCons1.Aux[shapeless.::[H... based on pt IsHCons1.Aux[shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]],List[Hel],T] | |
-test.scala:6: error: could not find implicit value for parameter isHCons: IsHCons1.Aux[TupleHL,List[Hel],T] | |
- ex(ii) | |
- ^ | |
-| | |-- [Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: ... BYVALmode-EXPRmode (site solving: type Hel,type T: value <local Test> in Test) | |
-| | | solving for (Hel: ?Hel, T: ?T) | |
-| | | solving for (Hel: ?Hel, T: ?T) | |
-undetParam inferred: type Hel as Nothing | |
-undetParam inferred: type T as Nothing | |
-| | | \-> <error> | |
-| | [adapt] [Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: ... adapted to [Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: ... | |
-| | \-> <error> | |
+undetParam inferred: type H0 as List[Int] | |
+undetParam inferred: type T0 as shapeless.::[List[Int],shapeless.HNil] | |
+| | [adapt] [H0, T0 <: shapeless.HList]=> IsHCons1.Aux[shapeless.::[H... adapted to [H0, T0 <: shapeless.HList]=> IsHCons1.Aux[shapeless.::[H... based on pt IsHCons1.Aux[shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]],L[Hel],T] | |
+| | solving for (L: ?L, Hel: ?Hel, T: ?T) | |
+undetParam inferred: type L as List | |
+undetParam inferred: type Hel as Int | |
+undetParam inferred: type T as shapeless.::[List[Int],shapeless.HNil] | |
+| | |-- [L[_] <: List[_], Tuple <: Product, TupleHL <: shapeless.... BYVALmode-EXPRmode (site: value <local Test> in Test) | |
+macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@13c9d689, expandee = TypeApply[7](Select[2](Select[3](This[4](TypeName("shapeless")), shapeless.Generic#9056), TermName("materialize")#20579), List(TypeTree[8](), TypeTree[6]())) | |
+[2] PolyType(List(TypeName("T")#20580, TypeName("R")#20581), NullaryMethodType(TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(NoPrefix, TypeName("T")#20580, List()), TypeRef(NoPrefix, TypeName("R")#20581, List()))))) | |
+[3] SingleType(ThisType(shapeless#33), shapeless.Generic#9056) | |
+[4] ThisType(shapeless#33) | |
+[6] TypeRef(NoPrefix, TypeName("R")#33173, List()) | |
+[7] TypeRef(SingleType(ThisType(shapeless#33), shapeless.Generic#9056), TypeName("Aux")#20571, List(TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), TypeRef(NoPrefix, TypeName("R")#33173, List()))) | |
+[8] TypeRef(ThisType(scala#27), scala.Tuple2#1725, List(TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#26), scala.package#2557), TypeName("List")#3047, List(TypeRef(ThisType(scala#27), scala.Int#1113, List()))))), desugared = () | |
+looking for macro implementation: macro method materialize | |
+performing macro expansion shapeless.this.Generic.materialize[(List[Int], List[Int]), R] at source-/Users/jason/code/shapeless/test.scala,line-6,offset=250 | |
+context: MacroContext(materialize@source-/Users/jason/code/shapeless/test.scala,line-6,offset=250 +0) | |
+prefix: shapeless.this.Generic | |
+targs: List((List[Int], List[Int]), R) | |
+argss: List() | |
+paramss: List() | |
+binding: MacroImplBinding(true,false,shapeless.GenericMacros,materialize,List(List(Tag(0), Tag(1))),List(T, R)) | |
+trees: List() | |
+tags: List(WeakTypeTag[(List[Int], List[Int])], WeakTypeTag[R]) | |
+macroImplArgs: List(WeakTypeTag[(List[Int], List[Int])], WeakTypeTag[R]) | |
+original: | |
+{ | |
+ final class fresh$macro$6 extends _root_.shapeless.Generic[(List[Int], List[Int])] { | |
+ def <init>() = { | |
+ super.<init>(); | |
+ () | |
+ }; | |
+ type Repr = shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]; | |
+ def to(p: (List[Int], List[Int])): Repr = p match { | |
+ case scala.this.Tuple2((pat$macro$4 @ _), (pat$macro$5 @ _)) => _root_.shapeless.$colon$colon(pat$macro$4, _root_.shapeless.$colon$colon(pat$macro$5, _root_.shapeless.HNil)) | |
+}.asInstanceOf[Repr]; | |
+ def from(p: Repr): (List[Int], List[Int]) = p match { | |
+ case _root_.shapeless.$colon$colon((pat$macro$4 @ _), _root_.shapeless.$colon$colon((pat$macro$5 @ _), _root_.shapeless.HNil)) => scala.this.Tuple2(pat$macro$4, pat$macro$5) | |
+ } | |
+ }; | |
+ (new fresh$macro$6(): _root_.shapeless.Generic.Aux[(List[Int], List[Int]), shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]]) | |
+} | |
+Block(List(ClassDef(Modifiers(FINAL), TypeName("fresh$macro$6"), List(), Template(List(AppliedTypeTree(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TypeName("Generic")), List(TypeTree()))), noSelfType, List(DefDef(Modifiers(), termNames.CONSTRUCTOR, List(), List(List()), TypeTree(), Block(List(pendingSuperCall), Literal(Constant(())))), TypeDef(Modifiers(), TypeName("Repr"), List(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), Select(This(TypeName("shapeless")), shapeless.HNil)))))), DefDef(Modifiers(), TermName("to"), List(), List(List(ValDef(Modifiers(PARAM), TermName("p"), TypeTree(), EmptyTree))), Ident(TypeName("Repr")), TypeApply(Select(Match(Ident(TermName("p")), List(CaseDef(Apply(Select(This(TypeName("scala")), scala.Tuple2), List(Bind(TermName("pat$macro$4"), Ident(termNames.WILDCARD)), Bind(TermName("pat$macro$5"), Ident(termNames.WILDCARD)))), EmptyTree, Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Ident(TermName("pat$macro$4")), Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Ident(TermName("pat$macro$5")), Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("HNil"))))))))), TermName("asInstanceOf")), List(Ident(TypeName("Repr"))))), DefDef(Modifiers(), TermName("from"), List(), List(List(ValDef(Modifiers(PARAM), TermName("p"), Ident(TypeName("Repr")), EmptyTree))), TypeTree(), Match(Ident(TermName("p")), List(CaseDef(Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Bind(TermName("pat$macro$4"), Ident(termNames.WILDCARD)), Apply(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("$colon$colon")), List(Bind(TermName("pat$macro$5"), Ident(termNames.WILDCARD)), Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("HNil")))))), EmptyTree, Apply(Select(This(TypeName("scala")), scala.Tuple2), List(Ident(TermName("pat$macro$4")), Ident(TermName("pat$macro$5")))))))))))), Typed(Apply(Select(New(Ident(TypeName("fresh$macro$6"))), termNames.CONSTRUCTOR), List()), AppliedTypeTree(Select(Select(Select(Ident(termNames.ROOTPKG), TermName("shapeless")), TermName("Generic")), TypeName("Aux")), List(TypeTree(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), AppliedTypeTree(Select(This(TypeName("shapeless")), shapeless.$colon$colon), List(TypeTree(), Select(This(TypeName("shapeless")), shapeless.HNil))))))))) | |
+whitebox typecheck #0 (against pt = ?): { | |
+ final class fresh$macro$6 extends _root_.shapeless.Generic[(List[Int], List[Int])] { | |
+ def <init>() = { | |
+ super.<init>(); | |
+ () | |
+ }; | |
+ type Repr = shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]; | |
+ def to(p: (List[Int], List[Int])): Repr = p match { | |
+ case scala.this.Tuple2((pat$macro$4 @ _), (pat$macro$5 @ _)) => _root_.shapeless.$colon$colon(pat$macro$4, _root_.shapeless.$colon$colon(pat$macro$5, _root_.shapeless.HNil)) | |
+}.asInstanceOf[Repr]; | |
+ def from(p: Repr): (List[Int], List[Int]) = p match { | |
+ case _root_.shapeless.$colon$colon((pat$macro$4 @ _), _root_.shapeless.$colon$colon((pat$macro$5 @ _), _root_.shapeless.HNil)) => scala.this.Tuple2(pat$macro$4, pat$macro$5) | |
+ } | |
+ }; | |
+ (new fresh$macro$6(): _root_.shapeless.Generic.Aux[(List[Int], List[Int]), shapeless.this.::[List[Int], shapeless.this.::[List[Int], shapeless.this.HNil]]]) | |
+} | |
+| | | |-- { final class fresh$macro$6 extends _root_.shapeless.Gene... BYVALmode-EXPRmode (site: value <local Test> in Test) | |
+| | | | |-- class fresh$macro$6 BYVALmode-EXPRmode (site: value <local Test> in Test) | |
+| | | | | |-- _root_.shapeless.Generic FUNmode-TYPEmode (site: class fresh$macro$6) | |
+| | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (site: class fresh$macro$6) | |
+| | | | | | | \-> shapeless.type | |
+| | | | | | \-> shapeless.Generic | |
+| | | | | |-- _root_.shapeless.Generic[(List[Int], List[Int])] TYPEmode (site: class fresh$macro$6) | |
+| | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (site: class fresh$macro$6) | |
+| | | | | | | \-> shapeless.type | |
+| | | | | | \-> shapeless.Generic[(List[Int], List[Int])] | |
+| | | | | |-- _root_.shapeless.Generic FUNmode-TYPEmode (site: class fresh$macro$6) | |
+| | | | | | \-> shapeless.Generic | |
+| | | | | |-- _root_.shapeless.Generic[(List[Int], List[Int])] TYPEmode (site: class fresh$macro$6) | |
+| | | | | | \-> shapeless.Generic[(List[Int], List[Int])] | |
+| | | | | |-- super EXPRmode-POLYmode-QUALmode (silent: <init> in fresh$macro$6) | |
+| | | | | | |-- this EXPRmode (silent: <init> in fresh$macro$6) | |
+| | | | | | | \-> fresh$macro$6 | |
+| | | | | | \-> fresh$macro$6.super.type (with underlying type AnyRef) | |
+| | | | | |-- Reprshapeless.::[H,T] BYVALmode-EXPRmode (site: class fresh$macro$6) | |
+| | | | | | |-- shapeless.::[H,T] TYPEmode (site: type Repr in fresh$macro$6) | |
+| | | | | | | |-- shapeless.::[H,T] TYPEmode (site: type Repr in fresh$macro$6) | |
+| | | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
+| | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
+| | | | | | |-- shapeless.::[H,T] TYPEmode (site: class fresh$macro$6) | |
+| | | | | | | |-- shapeless.::[H,T] TYPEmode (site: class fresh$macro$6) | |
+| | | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
+| | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
+| | | | | | \-> [type Repr] fresh$macro$6.this.Repr | |
+| | | | | |-- def to BYVALmode-EXPRmode (site: class fresh$macro$6) | |
+| | | | | | |-- Repr TYPEmode (site: method to in fresh$macro$6) | |
+| | | | | | | [adapt] fresh$macro$6.this.Repr is now a TypeTree(fresh$macro$6.this.Repr) | |
+| | | | | | | \-> fresh$macro$6.this.Repr | |
+| | | | | | |-- Repr TYPEmode (site: method to in fresh$macro$6) | |
+| | | | | | | [adapt] fresh$macro$6.this.Repr is now a TypeTree(fresh$macro$6.this.Repr) | |
+| | | | | | | \-> fresh$macro$6.this.Repr | |
+| | | | | | |-- p match { case scala.this.Tuple2((pat$macro$4 @ _), (pat$... : pt=fresh$macro$6.this.Repr EXPRmode (site: method to in fresh$macro$6) | |
+| | | | | | | |-- p match { case scala.this.Tuple2((pat$macro$4 @ _), (pat$... BYVALmode-EXPRmode-FUNmode-POLYmode-TAPPmode (site: method to in fresh$macro$6) | |
+| | | | | | | | |-- p match { case scala.this.Tuple2((pat$macro$4 @ _), (pat$... EXPRmode-POLYmode-QUALmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | |-- p BYVALmode-EXPRmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | | \-> (List[Int], List[Int]) | |
+| | | | | | | | | |-- Tuple2.type : pt=(List[Int], List[Int]) PATTERNmode (site: method to in fresh$macro$6) enrichment only | |
+| | | | | | | | | | solving for (T1: ?T1, T2: ?T2) | |
+undetParam inferred: type T1 as List[Int] | |
+undetParam inferred: type T2 as List[Int] | |
+| | | | | | | | | | |-- (pat$macro$4 @ _) : pt=List[Int] BYVALmode-PATTERNmode (site: method to in fresh$macro$6) enrichment only | |
+| | | | | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (site: method to in fresh$macro$6) enrichment only | |
+| | | | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | | |-- (pat$macro$5 @ _) : pt=List[Int] BYVALmode-PATTERNmode (site: method to in fresh$macro$6) enrichment only | |
+| | | | | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (site: method to in fresh$macro$6) enrichment only | |
+| | | | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | | \-> (List[Int], List[Int]) | |
+| | | | | | | | | |-- _root_.shapeless.$colon$colon(pat$macro$4, _root_.shapele... EXPRmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | | |-- _root_.shapeless.$colon$colon BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$6) | |
+| | | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method to in fresh$macro$6) | |
+| | | | | | | | | | | | \-> shapeless.type | |
+| | | | | | | | | | | |-- shapeless.::.apply BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$6) | |
+undetParam added: type H | |
+undetParam added: type T | |
+| | | | | | | | | | | | [adapt] [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
+| | | | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
+| | | | | | | | | | | [adapt] shapeless.::.type adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
+| | | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
+| | | | | | | | | | |-- pat$macro$4 BYVALmode-EXPRmode-POLYmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | | |-- _root_.shapeless.$colon$colon(pat$macro$5, _root_.shapele... BYVALmode-EXPRmode-POLYmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | | | |-- _root_.shapeless.$colon$colon BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$6) | |
+| | | | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method to in fresh$macro$6) | |
+| | | | | | | | | | | | | \-> shapeless.type | |
+| | | | | | | | | | | | |-- shapeless.::.apply BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method to in fresh$macro$6) | |
+undetParam added: type H | |
+undetParam added: type T | |
+| | | | | | | | | | | | | [adapt] [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
+| | | | | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
+| | | | | | | | | | | | [adapt] shapeless.::.type adapted to [H, T <: shapeless.HList](head: H, tail: T)shapeless.::[H... | |
+| | | | | | | | | | | | \-> (head: H, tail: T)shapeless.::[H,T] | |
+| | | | | | | | | | | |-- pat$macro$5 BYVALmode-EXPRmode-POLYmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | | | |-- _root_.shapeless.HNil BYVALmode-EXPRmode-POLYmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (site: method to in fresh$macro$6) | |
+| | | | | | | | | | | | | \-> shapeless.type | |
+| | | | | | | | | | | | \-> shapeless.HNil.type | |
+| | | | | | | | | | | solving for (H: ?H, T: ?T) | |
+undetParam inferred: type H as List[Int] | |
+undetParam inferred: type T as shapeless.HNil.type | |
+| | | | | | | | | | | \-> shapeless.::[List[Int],shapeless.HNil.type] | |
+| | | | | | | | | | solving for (H: ?H, T: ?T) | |
+undetParam inferred: type H as List[Int] | |
+undetParam inferred: type T as shapeless.::[List[Int],shapeless.HNil.type] | |
+| | | | | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil.type]] | |
+| | | | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil.type]] | |
+| | | | | | | | \-> [T0]=> T0 | |
+| | | | | | | |-- Repr TYPEmode (site: method to in fresh$macro$6) | |
+| | | | | | | | [adapt] fresh$macro$6.this.Repr is now a TypeTree(fresh$macro$6.this.Repr) | |
+| | | | | | | | \-> fresh$macro$6.this.Repr | |
+| | | | | | | \-> fresh$macro$6.this.Repr | |
+| | | | | | \-> [def to] (p: (List[Int], List[Int]))fresh$macro$6.this.Repr | |
+| | | | | |-- def from BYVALmode-EXPRmode (site: class fresh$macro$6) | |
+| | | | | | |-- Repr TYPEmode (site: value p in fresh$macro$6) | |
+| | | | | | | [adapt] fresh$macro$6.this.Repr is now a TypeTree(fresh$macro$6.this.Repr) | |
+| | | | | | | \-> fresh$macro$6.this.Repr | |
+| | | | | | |-- Repr TYPEmode (site: value p in fresh$macro$6) | |
+| | | | | | | [adapt] fresh$macro$6.this.Repr is now a TypeTree(fresh$macro$6.this.Repr) | |
+| | | | | | | \-> fresh$macro$6.this.Repr | |
+| | | | | | |-- p match { case _root_.shapeless.$colon$colon((pat$macro$4... : pt=(List[Int], List[Int]) EXPRmode (site: method from in fresh$macro$6) | |
+| | | | | | | |-- p BYVALmode-EXPRmode (site: method from in fresh$macro$6) | |
+| | | | | | | | \-> fresh$macro$6.this.Repr | |
+| | | | | | | |-- _root_.shapeless.$colon$colon((pat$macro$4 @ _), _root_.s... : pt=fresh$macro$6.this.Repr PATTERNmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | |-- _root_.shapeless.$colon$colon : pt=fresh$macro$6.this.Repr BYVALmode-FUNmode-PATTERNmode-POLYmode (silent: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | \-> shapeless.type | |
+| | | | | | | | | solving for (H: ?H, T: ?T) | |
+undetParam inferred: type H as List[Int] | |
+undetParam inferred: type T as shapeless.::[List[Int],shapeless.HNil] | |
+| | | | | | | | | [adapt] shapeless.::.type is now a TypeTree((head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]) | |
+| | | | | | | | | \-> (head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
+| | | | | | | | |-- (pat$macro$4 @ _) : pt=List[Int] BYVALmode-PATTERNmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | \-> List[Int] | |
+| | | | | | | | |-- _root_.shapeless.$colon$colon((pat$macro$5 @ _), _root_.s... : pt=shapeless.::[List[Int],shapeless.HNil] BYVALmode-PATTERNmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | |-- _root_.shapeless.$colon$colon : pt=shapeless.::[List[Int],shapeless.HNil] BYVALmode-FUNmode-PATTERNmode-POLYmode (silent: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (silent: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | | \-> shapeless.type | |
+| | | | | | | | | | solving for (H: ?H, T: ?T) | |
+undetParam inferred: type H as List[Int] | |
+undetParam inferred: type T as shapeless.HNil | |
+| | | | | | | | | | [adapt] shapeless.::.type is now a TypeTree((head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil]) | |
+| | | | | | | | | | \-> (head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil] | |
+| | | | | | | | | |-- (pat$macro$5 @ _) : pt=List[Int] BYVALmode-PATTERNmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | |-- _ : pt=List[Int] BYVALmode-PATTERNmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | | \-> List[Int] | |
+| | | | | | | | | |-- _root_.shapeless.HNil : pt=shapeless.HNil BYVALmode-PATTERNmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (site: method from in fresh$macro$6) enrichment only | |
+| | | | | | | | | | | \-> shapeless.type | |
+| | | | | | | | | | \-> shapeless.HNil.type | |
+| | | | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
+| | | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
+| | | | | | | |-- Tuple2.type : pt=(List[Int], List[Int]) EXPRmode (site: method from in fresh$macro$6) | |
+| | | | | | | | |-- scala.this.Tuple2.apply BYVALmode-EXPRmode-FUNmode-POLYmode (silent: method from in fresh$macro$6) | |
+undetParam added: type T1 | |
+undetParam added: type T2 | |
+| | | | | | | | | [adapt] [T1, T2](_1: T1, _2: T2)(T1, T2) adapted to [T1, T2](_1: T1, _2: T2)(T1, T2) | |
+| | | | | | | | | \-> (_1: T1, _2: T2)(T1, T2) | |
+| | | | | | | | |-- pat$macro$4 : pt=List[Int] BYVALmode-EXPRmode-POLYmode (site: method from in fresh$macro$6) | |
+| | | | | | | | | \-> List[Int] | |
+| | | | | | | | |-- pat$macro$5 : pt=List[Int] BYVALmode-EXPRmode-POLYmode (site: method from in fresh$macro$6) | |
+| | | | | | | | | \-> List[Int] | |
+| | | | | | | | solving for (T1: ?T1, T2: ?T2) | |
+undetParam inferred: type T1 as List[Int] | |
+undetParam inferred: type T2 as List[Int] | |
+| | | | | | | | \-> (List[Int], List[Int]) | |
+| | | | | | | \-> (List[Int], List[Int]) | |
+| | | | | | \-> [def from] (p: fresh$macro$6.this.Repr)(List[Int], List[Int]) | |
+| | | | | \-> [class fresh$macro$6] fresh$macro$6 | |
+| | | | |-- (new fresh$macro$6(): _root_.shapeless.Generic.Aux[(List[... BYVALmode-EXPRmode (site: value <local Test> in Test) | |
+| | | | | |-- _root_.shapeless.Generic.Aux[(List[Int], List[Int]), shap... TYPEmode (site: value <local Test> in Test) | |
+| | | | | | |-- _root_.shapeless.Generic EXPRmode-POLYmode-QUALmode (site: value <local Test> in Test) | |
+| | | | | | | |-- _root_.shapeless EXPRmode-POLYmode-QUALmode (site: value <local Test> in Test) | |
+| | | | | | | | \-> shapeless.type | |
+| | | | | | | \-> shapeless.Generic.type | |
+| | | | | | |-- shapeless.::[H,T] TYPEmode (site: value <local Test> in Test) | |
+| | | | | | | |-- shapeless.::[H,T] TYPEmode (site: value <local Test> in Test) | |
+| | | | | | | | \-> shapeless.::[List[Int],shapeless.HNil] | |
+| | | | | | | \-> shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]] | |
+| | | | | | \-> shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] | |
+| | | | | |-- new fresh$macro$6() : pt=shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] EXPRmode (site: value <local Test> in Test) | |
+| | | | | | |-- new fresh$macro$6 BYVALmode-EXPRmode-FUNmode-POLYmode (silent: value <local Test> in Test) | |
+| | | | | | | |-- new fresh$macro$6 EXPRmode-POLYmode-QUALmode (silent: value <local Test> in Test) | |
+| | | | | | | | |-- fresh$macro$6 FUNmode-TYPEmode (silent: value <local Test> in Test) | |
+| | | | | | | | | \-> fresh$macro$6 | |
+| | | | | | | | \-> fresh$macro$6 | |
+| | | | | | | \-> ()fresh$macro$6 | |
+| | | | | | \-> fresh$macro$6 | |
+| | | | | \-> shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] | |
+| | | | \-> shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]] | |
+whitebox typecheck #1 (against pt = shapeless.Generic.Aux[(List[Int], List[Int]),?]): { | |
+ final class fresh$macro$6 extends AnyRef with shapeless.Generic[(List[Int], List[Int])] { | |
+ def <init>(): fresh$macro$6 = { | |
+ fresh$macro$6.super.<init>(); | |
+ () | |
+ }; | |
+ type Repr = shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]; | |
+ def to(p: (List[Int], List[Int])): fresh$macro$6.this.Repr = p match { | |
+ case (_1: List[Int], _2: List[Int])(List[Int], List[Int])((pat$macro$4 @ _), (pat$macro$5 @ _)) => shapeless.::.apply[List[Int], shapeless.::[List[Int],shapeless.HNil.type]](pat$macro$4, shapeless.::.apply[List[Int], shapeless.HNil.type](pat$macro$5, shapeless.HNil)) | |
+}.asInstanceOf[fresh$macro$6.this.Repr]; | |
+ def from(p: fresh$macro$6.this.Repr): (List[Int], List[Int]) = p match { | |
+ case (head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]((pat$macro$4 @ _), (head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil]((pat$macro$5 @ _), shapeless.HNil)) => scala.this.Tuple2.apply[List[Int], List[Int]](pat$macro$4, pat$macro$5) | |
+ } | |
+ }; | |
+ (new fresh$macro$6(): shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]]) | |
+} | |
+whitebox typecheck #2 (against pt = shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]]): { | |
+ final class fresh$macro$6 extends AnyRef with shapeless.Generic[(List[Int], List[Int])] { | |
+ def <init>(): fresh$macro$6 = { | |
+ fresh$macro$6.super.<init>(); | |
+ () | |
+ }; | |
+ type Repr = shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]; | |
+ def to(p: (List[Int], List[Int])): fresh$macro$6.this.Repr = p match { | |
+ case (_1: List[Int], _2: List[Int])(List[Int], List[Int])((pat$macro$4 @ _), (pat$macro$5 @ _)) => shapeless.::.apply[List[Int], shapeless.::[List[Int],shapeless.HNil.type]](pat$macro$4, shapeless.::.apply[List[Int], shapeless.HNil.type](pat$macro$5, shapeless.HNil)) | |
+}.asInstanceOf[fresh$macro$6.this.Repr]; | |
+ def from(p: fresh$macro$6.this.Repr): (List[Int], List[Int]) = p match { | |
+ case (head: List[Int], tail: shapeless.::[List[Int],shapeless.HNil])shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]((pat$macro$4 @ _), (head: List[Int], tail: shapeless.HNil)shapeless.::[List[Int],shapeless.HNil]((pat$macro$5 @ _), shapeless.HNil)) => scala.this.Tuple2.apply[List[Int], List[Int]](pat$macro$4, pat$macro$5) | |
+ } | |
+ }; | |
+ (new fresh$macro$6(): shapeless.Generic.Aux[(List[Int], List[Int]),shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]]]) | |
+} | |
+| | | \-> Unit | |
+| | [adapt] [L[_] <: List[_], Tuple <: Product, TupleHL <: shapeless.... adapted to [L[_] <: List[_], Tuple <: Product, TupleHL <: shapeless.... | |
+| | \-> Unit | |
| \-> [trait Test] Test | |
|-- class IsHCons1[L] BYVALmode-EXPRmode (site: package <empty>) | |
| |-- H BYVALmode-EXPRmode (site: trait IsHCons1) | |
| | \-> [type H] IsHCons1.this.H | |
| |-- T <: HList BYVALmode-EXPRmode (site: trait IsHCons1) | |
| | |-- <: HList TYPEmode (site: type T in IsHCons1) | |
| | | |-- HList TYPEmode (site: type T in IsHCons1) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
| | |-- <: HList TYPEmode (site: trait IsHCons1) | |
| | | |-- HList TYPEmode (site: trait IsHCons1) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
| | \-> [type T] IsHCons1.this.T | |
| \-> [trait IsHCons1] IsHCons1[L] | |
|-- object IsHCons1 BYVALmode-EXPRmode (site: package <empty>) | |
| |-- super EXPRmode-POLYmode-QUALmode (silent: <init> in IsHCons1) | |
| | |-- this EXPRmode (silent: <init> in IsHCons1) | |
| | | \-> IsHCons1.type | |
| | \-> IsHCons1.type | |
| |-- Aux[L <: HList, H0, T0 <: HList]IsHCons1[L] { type H = H0... BYVALmode-EXPRmode (site: object IsHCons1) | |
| | |-- <: HList TYPEmode (site: type Aux in IsHCons1) | |
| | | |-- HList TYPEmode (site: type Aux in IsHCons1) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
| | |-- <: HList TYPEmode (site: type Aux in IsHCons1) | |
| | | |-- HList TYPEmode (site: type Aux in IsHCons1) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
| | \-> [type Aux] IsHCons1.Aux[L,H0,T0] | |
| |-- def hlistIsHCons[H0, T0 <: HList] BYVALmode-EXPRmode (site: object IsHCons1) | |
| | |-- <: HList TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | |-- HList TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | | \-> shapeless.HList | |
| | | [adapt] <: shapeless.HList is now a TypeTree( <: shapeless.HList) | |
| | | \-> <: shapeless.HList | |
| | |-- Aux[$colon$colon[H0, T0], H0, T0] TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | |-- $colon$colon[H0, T0] TYPEmode (site: method hlistIsHCons in IsHCons1) | |
| | | | \-> shapeless.::[H0,T0] | |
| | | \-> IsHCons1.Aux[shapeless.::[H0,T0],H0,T0] | |
| | |-- $qmark$qmark$qmark : pt=IsHCons1.Aux[shapeless.::[H0,T0],H0,T0] EXPRmode (site: method hlistIsHCons in IsHCons1) | |
| | | \-> Nothing | |
| | \-> [def hlistIsHCons] [H0, T0 <: shapeless.HList]=> IsHCons1.Aux[shapeless.::[H0,T0],H0,T0] | |
| \-> [object IsHCons1] IsHCons1.type | |
|-- HH0 BYVALmode-EXPRmode (site: <refinement>) | |
| \-> [type H] this.H | |
|-- TT0 BYVALmode-EXPRmode (site: <refinement>) | |
| \-> [type T] this.T | |
[[syntax trees at end of typer]] // test.scala | |
package <empty> { | |
import shapeless._; | |
abstract trait Test extends scala.AnyRef { | |
def /*Test*/$init$(): Unit = { | |
() | |
}; | |
- def ex[Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: shapeless.HList](in: Tuple)(implicit gen: shapeless.Generic.Aux[Tuple,TupleHL], isHCons: IsHCons1.Aux[TupleHL,List[Hel],T]): Unit; | |
+ def ex[L[_] >: [_]Nothing <: [_]List[_], Tuple <: Product, TupleHL <: shapeless.HList, Hel, T <: shapeless.HList](in: Tuple)(implicit gen: shapeless.Generic.Aux[Tuple,TupleHL], isHCons: IsHCons1.Aux[TupleHL,L[Hel],T]): Unit; | |
<stable> <accessor> def ii: (List[Int], List[Int]); | |
- Test.this.ex[(List[Int], List[Int]), shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]], Nothing, Nothing](Test.this.ii)(shapeless.this.Generic.materialize[(List[Int], List[Int]), R]) | |
+ Test.this.ex[List, (List[Int], List[Int]), shapeless.::[List[Int],shapeless.::[List[Int],shapeless.HNil]], Int, shapeless.::[List[Int],shapeless.HNil]](Test.this.ii)(shapeless.this.Generic.materialize[(List[Int], List[Int]), R], IsHCons1.hlistIsHCons[List[Int], shapeless.::[List[Int],shapeless.HNil]]) | |
}; | |
abstract trait IsHCons1[L] extends scala.AnyRef { | |
type H; | |
type T <: shapeless.HList | |
}; | |
object IsHCons1 extends scala.AnyRef { | |
def <init>(): IsHCons1.type = { | |
IsHCons1.super.<init>(); | |
() | |
}; | |
type Aux[L <: shapeless.HList, H0, T0 <: shapeless.HList] = IsHCons1[L]{type H = H0; type T = T0}; | |
implicit def hlistIsHCons[H0, T0 <: shapeless.HList]: IsHCons1.Aux[shapeless.::[H0,T0],H0,T0] = scala.this.Predef.??? | |
} | |
} | |
-one error found | |
+warning: there was one feature warning; re-run with -feature for details | |
+one warning found |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment