Last active
June 23, 2016 12:56
-
-
Save wheaties/7b334ce515588fc5e8628e07f4c77b2a to your computer and use it in GitHub Desktop.
And now we blow up in the erasure phase...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import twotails.mutualrec | |
| class Dog{ | |
| @mutualrec final def dog1(count: Int): Int = if (count == 0) count else dog2(count - 1) | |
| @mutualrec final def dog2(count: Int): Int = if (count == 0) count else if (count % 2 == 0) dog1(count - 1) else dog3(count - 1) | |
| @mutualrec final def dog3(count: Int): Int = if (count == 0) count else dog1(count - 1) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| java.lang.NullPointerException | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.preEraseAsInstanceOf$1(Erasure.scala:885) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.preEraseNormalApply(Erasure.scala:936) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.preEraseApply(Erasure.scala:1054) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.preErase(Erasure.scala:1060) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1140) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2559) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2559) | |
| at scala.collection.immutable.List.loop$1(List.scala:173) | |
| at scala.collection.immutable.List.mapConserve(List.scala:189) | |
| at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2559) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1347) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1368) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1370) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformCaseDefs$1.apply(Trees.scala:2581) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformCaseDefs$1.apply(Trees.scala:2581) | |
| at scala.collection.immutable.List.loop$1(List.scala:173) | |
| at scala.collection.immutable.List.mapConserve(List.scala:189) | |
| at scala.reflect.api.Trees$Transformer.transformCaseDefs(Trees.scala:2581) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1382) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1366) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1400) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1421) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1366) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1363) | |
| at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1361) | |
| at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2600) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:30) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:25) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:17) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1360) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1148) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2589) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2587) | |
| at scala.collection.immutable.List.loop$1(List.scala:173) | |
| at scala.collection.immutable.List.mapConserve(List.scala:189) | |
| at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2587) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1404) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:40) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:40) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:40) | |
| at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2600) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:30) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:40) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2563) | |
| at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1408) | |
| at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1407) | |
| at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2600) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:30) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:25) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:17) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1406) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:872) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2589) | |
| at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2587) | |
| at scala.collection.immutable.List.loop$1(List.scala:173) | |
| at scala.collection.immutable.List.mapConserve(List.scala:189) | |
| at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2587) | |
| at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1426) | |
| at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1426) | |
| at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2600) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:30) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:25) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:17) | |
| at scala.reflect.internal.Trees$class.itransform(Trees.scala:1425) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16) | |
| at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:40) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:42) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:42) | |
| at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2600) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:30) | |
| at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:42) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anon$1.transform(Erasure.scala:1151) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:1161) | |
| at scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:745) | |
| at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:147) | |
| at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30) | |
| at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply$mcV$sp(Global.scala:440) | |
| at scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:431) | |
| at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:440) | |
| at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:398) | |
| at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:398) | |
| at scala.collection.Iterator$class.foreach(Iterator.scala:893) | |
| at scala.collection.AbstractIterator.foreach(Iterator.scala:1336) | |
| at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:398) | |
| at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1501) | |
| at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1486) | |
| at scala.tools.nsc.Global$Run.compileSources(Global.scala:1481) | |
| at scala.tools.nsc.Global$Run.compile(Global.scala:1582) | |
| 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:68) | |
| at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:67) | |
| at sbt.inc.Incremental$.manageClassfiles(Incremental.scala:95) | |
| at sbt.inc.Incremental$.compile(Incremental.scala:67) | |
| 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:860) | |
| at sbt.Defaults$$anonfun$compileIncrementalTask$1.apply(Defaults.scala:851) | |
| at sbt.Defaults$$anonfun$compileIncrementalTask$1.apply(Defaults.scala:849) | |
| 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] (twotails/test:compileIncremental) java.lang.NullPointerException |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class Dog extends Object { | |
| def <init>(): twotails.Dog = { | |
| Dog.super{Dog.super.type}.<init>{()Object}(){Object}; | |
| (){Unit} | |
| }{Unit}; | |
| @scala.annotation.tailrec final <artifact> private def mutualrec_fn(indx: Int, count: Int): Int = { | |
| <synthetic> val _$this: twotails.Dog = Dog.this{twotails.Dog}; | |
| _mutualrec_fn(_$this: twotails.Dog, indx: Int, count: Int){ | |
| { | |
| case <synthetic> val x1: Int = (indx{Int}: Int @scala.annotation.switch){Int @scala.annotation.switch}; | |
| x1{Int} match { | |
| case 0{Int(0)} => if (count.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| count{Int} | |
| else | |
| _mutualrec_fn{(x$1: twotails.Dog, indx: Int, count: Int)Int}(Dog.this{Dog.this.type}, 1{Int(1)}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}, count.-{(x: Int)Int}(1{Int(1)}){Int}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}){Int}{Int} | |
| case 1{Int(1)} => if (count.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| count{Int} | |
| else | |
| if (count.%{(x: Int)Int}(2{Int(2)}){Int}.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| _mutualrec_fn{(x$1: twotails.Dog, indx: Int, count: Int)Int}(Dog.this{Dog.this.type}, 0{Int(0)}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}, count.-{(x: Int)Int}(1{Int(1)}){Int}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}){Int} | |
| else | |
| _mutualrec_fn{(x$1: twotails.Dog, indx: Int, count: Int)Int}(Dog.this{Dog.this.type}, 2{Int(2)}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}, count.-{(x: Int)Int}(1{Int(1)}){Int}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}){Int}{Int}{Int} | |
| case 2{Int(2)} => if (count.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| count{Int} | |
| else | |
| _mutualrec_fn{(x$1: twotails.Dog, indx: Int, count: Int)Int}(Dog.this{Dog.this.type}, 0{Int(0)}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}, count.-{(x: Int)Int}(1{Int(1)}){Int}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int}){Int}{Int} | |
| case _{Int} => throw new MatchError{MatchError}{(obj: Any)MatchError}(x1{Int}){MatchError}{Nothing} | |
| }{Int} | |
| }{Int}.asInstanceOf{[T0]()T0}[Int]{()Int}(){Int} | |
| }{Int} | |
| }{Int}; | |
| final def dog1(count: Int): Int = Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(0{Int(0)}, count{Int}){Int}; | |
| final def dog2(count: Int): Int = Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(1{Int(1)}, count{Int}){Int}; | |
| final def dog3(count: Int): Int = Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(2{Int(2)}, count{Int}){Int} | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class Dog extends scala.AnyRef { | |
| def <init>(): twotails.Dog = { | |
| Dog.super{Dog.super.type}.<init>{()Object}(){Object}; | |
| (){Unit} | |
| }{Unit}; | |
| @scala.annotation.tailrec final <artifact> private def mutualrec_fn(indx: Int, count: Int): Int = (indx{Int}: Int @scala.annotation.switch){Int @scala.annotation.switch} match { | |
| case 0{Int(0)} => if (count.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| count{Int} | |
| else | |
| Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(1{Int(1)}, count.-{(x: Int)Int}(1{Int(1)}){Int}){Int}{Int} | |
| case 1{Int(1)} => if (count.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| count{Int} | |
| else | |
| if (count.%{(x: Int)Int}(2{Int(2)}){Int}.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(0{Int(0)}, count.-{(x: Int)Int}(1{Int(1)}){Int}){Int} | |
| else | |
| Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(2{Int(2)}, count.-{(x: Int)Int}(1{Int(1)}){Int}){Int}{Int}{Int} | |
| case 2{Int(2)} => if (count.=={(x: Int)Boolean}(0{Int(0)}){Boolean}) | |
| count{Int} | |
| else | |
| Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(0{Int(0)}, count.-{(x: Int)Int}(1{Int(1)}){Int}){Int}{Int} | |
| }{Int}; | |
| final def dog1(count: Int): Int = Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(0{Int(0)}, count{Int}){Int}; | |
| final def dog2(count: Int): Int = Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(1{Int(1)}, count{Int}){Int}; | |
| final def dog3(count: Int): Int = Dog.this{Dog.this.type}.mutualrec_fn{(indx: Int, count: Int)Int}(2{Int(2)}, count{Int}){Int} | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment