Skip to content

Instantly share code, notes, and snippets.

@retronym
Created September 23, 2015 04:06
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/38b183dca95953f84b66 to your computer and use it in GitHub Desktop.
Save retronym/38b183dca95953f84b66 to your computer and use it in GitHub Desktop.
Shapeless inference puzzle
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
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] = ???
}
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] = ???
}
--- 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