Re: Errors compile shapeless tests with 2.12.0-RC1

88 views
Skip to first unread message

Miles Sabin

unread,
Sep 9, 2016, 1:27:14 PM9/9/16
to scala-internals
FYI I've just pushed this branch,

https://github.com/milessabin/shapeless/tree/topic/2.12.0-RC1-regression-2

This is shapeless at the commit that's supposed to be checked by the
community build,

https://github.com/scala/community-builds/blob/2.12.x/common.conf#L71

Plus the delta to the build to get it to build with RC1 (actually
Adriaan's update to that),

https://github.com/milessabin/shapeless/commit/a205e21805f7039bfb6ae3bdd7980eca0ee0a0ca

It also exhibits the crash, so it's pretty clear that the community
build can't be compiling the shapeless tests.

Cheers,


Miles


On Thu, Sep 8, 2016 at 10:55 PM, Miles Sabin <mi...@milessabin.com> wrote:
> I've narrowed this down to a short example which reproduces the
> problem on this branch,
>
> https://github.com/milessabin/shapeless/tree/topic/2.12.0-RC1-regression
>
> If you run,
>
> sbt -Dsbt.profile=2.12.x scratchJVM/test:compile
>
> you'll see the crash (the -Dsbt.profile=2.12.x is to disable
> sbt-scoverage which doesn't have 2.12.x support currently).
>
> This compiles without error on 2.12.0-M5.
>
> The test in question is,
>
> import shapeless._
> import syntax.singleton._
>
> object Boom {
> type T = HList.`2`.T
> 2.narrow :: HNil: T
> }
>
> I'm fairly sure the trigger is going to be the selectDynamic macro on
> HList which enables the backticked `2` to be interpreted as the
> constant type 2.
>
> I think this must be a fairly recent regression (in the last few weeks or so).
>
> Pretty clearly this is exploiting all kinds of implementation defined
> behaviour, so it's fair game. The big worry is that tests equivalent
> to this have been in shapeless tree for a very long time now, which
> suggests that the community build isn't catching all the things it
> should be catching ... I suspect it's not attempting to compile tests
> which have been disabled.
>
> Cheers,
>
>
> Miles
>
>
> On Thu, Sep 8, 2016 at 8:35 PM, Miles Sabin <mi...@milessabin.com> wrote:
>> Hi folks,
>>
>> I'm seeing a number of errors of the following form,
>>
>>> test:compile
>> [info] Compiling 1 Scala source to
>> /home/miles/projects/shapeless/core/jvm/target/scala-2.12.0-RC1/classes...
>> [info] Compiling 45 Scala sources to
>> /home/miles/projects/shapeless/core/jvm/target/scala-2.12.0-RC1/test-classes...
>> java.util.NoSuchElementException: key not found: value x$1628
>> at scala.collection.MapLike.default(MapLike.scala:232)
>> at scala.collection.mutable.HashMap.apply(HashMap.scala:65)
>> at
>> scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder$locals$.load(BCodeSkelBuilder.scala:392)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:352)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:639)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.$anonfun$genLoadArguments$1(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:670)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:818)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:364)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.$anonfun$genLoadArguments$1(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:670)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:251)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadQualifier(BCodeBodyBuilder.scala:905)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:669)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:818)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:364)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.$anonfun$genLoadArguments$1(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:670)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:251)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadQualifier(BCodeBodyBuilder.scala:905)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:669)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:818)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:364)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.$anonfun$genLoadArguments$1(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:670)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:251)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadQualifier(BCodeBodyBuilder.scala:905)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:669)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:818)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:364)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.$anonfun$genLoadArguments$1(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments(BCodeBodyBuilder.scala:940)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:670)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genStat(BCodeBodyBuilder.scala:82)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.$anonfun$genBlock$1(BCodeBodyBuilder.scala:817)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:817)
>> at
>> scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:364)
>> at
>> scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.emitNormalMethodBody$1(BCodeSkelBuilder.scala:604)
>> at
>> scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genDefDef(BCodeSkelBuilder.scala:636)
>> at
>> scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:510)
>> at
>> scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.$anonfun$gen$7(BCodeSkelBuilder.scala:512)
>> at
>> scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:512)
>> at
>> scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genPlainClass(BCodeSkelBuilder.scala:113)
>> at
>> scala.tools.nsc.backend.jvm.GenBCode$BCodePhase$Worker1.visit(GenBCode.scala:190)
>> at
>> scala.tools.nsc.backend.jvm.GenBCode$BCodePhase$Worker1.$anonfun$run$1(GenBCode.scala:139)
>> at
>> scala.tools.nsc.backend.jvm.GenBCode$BCodePhase$Worker1.run(GenBCode.scala:139)
>> at
>> scala.tools.nsc.backend.jvm.GenBCode$BCodePhase.buildAndSendToDisk(GenBCode.scala:381)
>> at
>> scala.tools.nsc.backend.jvm.GenBCode$BCodePhase.run(GenBCode.scala:350)
>> at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1404)
>> at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1389)
>> at scala.tools.nsc.Global$Run.compileSources(Global.scala:1384)
>> at scala.tools.nsc.Global$Run.compile(Global.scala:1478)
>> at xsbt.CachedCompiler0.run(CompilerInterface.scala:116)
>> at xsbt.CachedCompiler0.run(CompilerInterface.scala:95)
>> at xsbt.CompilerInterface.run(CompilerInterface.scala:26)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:498)
>> at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:101)
>> at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:47)
>> at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
>> at
>> sbt.compiler.MixedAnalyzingCompiler$$anonfun$compileScala$1$1.apply$mcV$sp(MixedAnalyzingCompiler.scala:50)
>> at
>> sbt.compiler.MixedAnalyzingCompiler$$anonfun$compileScala$1$1.apply(MixedAnalyzingCompiler.scala:50)
>> at
>> sbt.compiler.MixedAnalyzingCompiler$$anonfun$compileScala$1$1.apply(MixedAnalyzingCompiler.scala:50)
>> at
>> sbt.compiler.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:74)
>> at
>> sbt.compiler.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:49)
>> at
>> sbt.compiler.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:64)
>> at
>> sbt.compiler.IC$$anonfun$compileInternal$1.apply(IncrementalCompiler.scala:160)
>> at
>> sbt.compiler.IC$$anonfun$compileInternal$1.apply(IncrementalCompiler.scala:160)
>> at
>> sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:66)
>> at
>> sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:64)
>> at sbt.inc.IncrementalCommon.cycle(IncrementalCommon.scala:32)
>> at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:72)
>> at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:71)
>> at sbt.inc.Incremental$.manageClassfiles(Incremental.scala:99)
>> at sbt.inc.Incremental$.compile(Incremental.scala:71)
>> at sbt.inc.IncrementalCompile$.apply(Compile.scala:54)
>> at sbt.compiler.IC$.compileInternal(IncrementalCompiler.scala:160)
>> at sbt.compiler.IC$.incrementalCompile(IncrementalCompiler.scala:138)
>> at sbt.Compiler$.compile(Compiler.scala:152)
>> at sbt.Compiler$.compile(Compiler.scala:138)
>> at
>> sbt.Defaults$.sbt$Defaults$$compileIncrementalTaskImpl(Defaults.scala:861)
>> at
>> sbt.Defaults$$anonfun$compileIncrementalTask$1.apply(Defaults.scala:852)
>> at
>> sbt.Defaults$$anonfun$compileIncrementalTask$1.apply(Defaults.scala:850)
>> at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
>> at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
>> at sbt.std.Transform$$anon$4.work(System.scala:63)
>> at
>> sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
>> at
>> sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
>> at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
>> at sbt.Execute.work(Execute.scala:237)
>> at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
>> at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
>> at
>> sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
>> at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> at
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> at java.lang.Thread.run(Thread.java:745)
>> [error] Error while emitting hlist.scala
>> [error] key not found: value x$1628
>>
>>
>>
>> --
>> Miles Sabin
>> tel: +44 7813 944 528
>> skype: milessabin
>> gtalk: mi...@milessabin.com
>> http://milessabin.com/blog
>> http://twitter.com/milessabin
>
>
>
> --
> Miles Sabin
> tel: +44 7813 944 528
> skype: milessabin
> gtalk: mi...@milessabin.com
> http://milessabin.com/blog
> http://twitter.com/milessabin



--
Miles Sabin
tel: +44 7813 944 528
skype: milessabin
gtalk: mi...@milessabin.com
http://milessabin.com/blog
http://twitter.com/milessabin

Miles Sabin

unread,
Sep 9, 2016, 1:27:31 PM9/9/16
to scala-internals

Miles Sabin

unread,
Sep 9, 2016, 1:27:31 PM9/9/16
to scala-internals

Miles Sabin

unread,
Sep 11, 2016, 10:36:56 AM9/11/16
to scala-internals, Adriaan Moors
PR with a diagnosis and tentative fix here,

https://github.com/scala/scala/pull/5394/files

Cheers,


Miles
Reply all
Reply to author
Forward
0 new messages