Skip to content

Instantly share code, notes, and snippets.

@k-tsj
Created October 31, 2010 15:45
Show Gist options
  • Save k-tsj/656740 to your computer and use it in GitHub Desktop.
Save k-tsj/656740 to your computer and use it in GitHub Desktop.
maybe a scala compiler(2.8.1RC4) bug
object Main {
def main(args: Array[String]) {
args match {
case Array("a", a @ _*) => { } // この行外す or @ _*削る or 下の行と順番を入れ替えるとコンパイル通る
case Array("b") => { } // この行外すとコンパイル通る
case Array("c", c) => {
0 // この行外すとコンパイル通る
}
}
}
}
// $ uname -a
// Linux lucid 2.6.32-24-server #41-Ubuntu SMP Thu Aug 19 02:47:08 UTC 2010 x86_64 GNU/Linux
//
// $ javac -version
// javac 1.6.0_22
//
// $ scalac -version
// Scala compiler version 2.8.1.RC4 -- Copyright 2002-2010, LAMP/EPFL
//
// $ scalac Main.scala
//
// Exception in thread "main" scala.tools.nsc.symtab.Types$TypeError: not enough arguments for method body%2: (val c: java.lang.String)Unit.
// Unspecified value parameter c.
// at scala.tools.nsc.typechecker.Contexts$Context.error(Contexts.scala:274)
// at scala.tools.nsc.typechecker.Infer$Inferencer.error(Infer.scala:205)
// at scala.tools.nsc.typechecker.Infer$Inferencer.errorTree(Infer.scala:209)
// at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$tryNamesDefaults$1$4.apply(Typers.scala:2410)
// at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$tryNamesDefaults$1$4.apply(Typers.scala:2402)
// at scala.Option.getOrElse(Option.scala:104)
// at scala.tools.nsc.typechecker.Typers$Typer.tryNamesDefaults$1(Typers.scala:2402)
// at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:2421)
// at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:3380)
// at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4049)
// at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4203)
// at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4252)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$RuleApplication.mkFail(ParallelMatching.scala:251)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixTypes.failure(ParallelMatching.scala:648)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$RuleApplication.codegen(ParallelMatching.scala:247)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixTypes.tree(ParallelMatching.scala:650)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$Rep.applyRule(ParallelMatching.scala:838)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$RuleApplication.mkFail(ParallelMatching.scala:251)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixTypes.failure(ParallelMatching.scala:648)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$RuleApplication.codegen(ParallelMatching.scala:247)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixTypes.tree(ParallelMatching.scala:650)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$Rep.applyRule(ParallelMatching.scala:838)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixSequence.success(ParallelMatching.scala:529)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$RuleApplication.codegen(ParallelMatching.scala:247)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixSequence.tree(ParallelMatching.scala:532)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$Rep.applyRule(ParallelMatching.scala:838)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixUnapply.success(ParallelMatching.scala:432)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$RuleApplication.codegen(ParallelMatching.scala:247)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$MixUnapply.tree(ParallelMatching.scala:438)
// at scala.tools.nsc.matching.ParallelMatching$MatchMatrix$Rep.applyRule(ParallelMatching.scala:838)
// at scala.tools.nsc.matching.TransMatcher$class.handlePattern(TransMatcher.scala:80)
// at scala.tools.nsc.transform.ExplicitOuter.handlePattern(ExplicitOuter.scala:19)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.matchTranslation(ExplicitOuter.scala:399)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:488)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:761)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:759)
// at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:877)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
// at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:758)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
// at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:239)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:457)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:869)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:867)
// at scala.collection.immutable.List.loop$1(List.scala:115)
// at scala.collection.immutable.List.mapConserve(List.scala:132)
// at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:867)
// at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:775)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:49)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:49)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:49)
// at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:877)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:49)
// at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:239)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:437)
// at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:853)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:745)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:744)
// at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:877)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
// at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:743)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
// at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:239)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:498)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:869)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:867)
// at scala.collection.immutable.List.loop$1(List.scala:115)
// at scala.collection.immutable.List.mapConserve(List.scala:132)
// at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:867)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:739)
// at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:739)
// at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:877)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
// at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:738)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:49)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:51)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:51)
// at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:877)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:31)
// at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:51)
// at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:239)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:498)
// at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:870)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.scala$tools$nsc$transform$ExplicitOuter$ExplicitOuterTransformer$$super$transformUnit(ExplicitOuter.scala:507)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer$$anonfun$transformUnit$1.apply(ExplicitOuter.scala:507)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer$$anonfun$transformUnit$1.apply(ExplicitOuter.scala:507)
// at scala.tools.nsc.symtab.SymbolTable.atPhase(SymbolTable.scala:103)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transformUnit(ExplicitOuter.scala:507)
// at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transformUnit(ExplicitOuter.scala:302)
// at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
// at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply(Global.scala:282)
// at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply(Global.scala:282)
// at scala.tools.nsc.reporters.Reporter.withSource(Reporter.scala:48)
// at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:282)
// at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:256)
// at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:256)
// at scala.collection.Iterator$class.foreach(Iterator.scala:631)
// at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:304)
// at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:256)
// at scala.tools.nsc.Global$Run.compileSources(Global.scala:741)
// at scala.tools.nsc.Global$Run.compile(Global.scala:822)
// at scala.tools.nsc.Main$.process(Main.scala:106)
// at scala.tools.nsc.Main$.main(Main.scala:120)
// at scala.tools.nsc.Main.main(Main.scala)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment