2015-03-23 3 views
4

Я играл с Scala (в частности foldLeft) и наткнулся на очень странный случай. Создание val со строкой внутри него (я пробовал несколько строк), а затем запуск (по общему признанию причудливого?) foldLeft против него работает отлично в первый раз, но сбрасывает ошибку утверждения во второй раз, когда выполняется тот же самый фрагмент кода (против непреложного val). Это происходит последовательно. Кроме того, это происходит в консоли (я не тестировал это внутри исполняемого файла).Может ли это быть ошибкой компилятора Scala?

Я новичок в Scala, поэтому, хотя я не ожидаю, что это на самом деле будет ошибкой, мне любопытно, что может привести к тому, что это произойдет?

Я запускаю Scala 2.11.5 (виртуальная машина Java HotSpot TM TM, Java 1.8.0_31) и вызывая консоль, запустив исполняемый файл scala.

Настройка тестового случая:

scala> val t = "My test string!" 
t: String = My test string! 

Запуск foldLeft раз:

scala> t.foldLeft((0 -> ""))((x, y) => { println(f"x: $x/$x, y: $y"); (x._1 + 1 -> (x._2 + y.toString)) }) 
x: (0,)/(0,), y: M 
x: (1,M)/(1,M), y: y 
x: (2,My)/(2,My), y: 
x: (3,My)/(3,My), y: t 
x: (4,My t)/(4,My t), y: e 
x: (5,My te)/(5,My te), y: s 
x: (6,My tes)/(6,My tes), y: t 
x: (7,My test)/(7,My test), y: 
x: (8,My test)/(8,My test), y: s 
x: (9,My test s)/(9,My test s), y: t 
x: (10,My test st)/(10,My test st), y: r 
x: (11,My test str)/(11,My test str), y: i 
x: (12,My test stri)/(12,My test stri), y: n 
x: (13,My test strin)/(13,My test strin), y: g 
x: (14,My test string)/(14,My test string), y: ! 
res0: (Int, String) = (15,My test string!) 

Запуск идентиченfoldLeft снова:

scala> t.foldLeft((0 -> ""))((x, y) => { println(f"x: $x/$x, y: $y"); (x._1 + 1 -> (x._2 + y.toString)) }) 
java.lang.AssertionError: assertion failed: List(value _1$mcI$sp, value _1$mcI$sp, value _1$mcI$sp) 
    at scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:1916) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.matchingSymbolInPrefix$1(SpecializeTypes.scala:1460) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transformSelect$1(SpecializeTypes.scala:1483) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1579) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transformSelect$1(SpecializeTypes.scala:1467) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1579) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transformSelect$1(SpecializeTypes.scala:1467) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1579) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1372) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1692) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transformTemplate$1$1.apply(SpecializeTypes.scala:1599) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transformTemplate$1$1.apply(SpecializeTypes.scala:1599) 
    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.SpecializeTypes$$anon$2.transformTemplate$1(SpecializeTypes.scala:1599) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1601) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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: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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    at scala.reflect.internal.Trees$$anonfun$itransform$1.apply(Trees.scala:1357) 
    at scala.reflect.internal.Trees$$anonfun$itransform$1.apply(Trees.scala:1356) 
    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:1355) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transformTemplate$1$1.apply(SpecializeTypes.scala:1599) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transformTemplate$1$1.apply(SpecializeTypes.scala:1599) 
    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.SpecializeTypes$$anon$2.transformTemplate$1(SpecializeTypes.scala:1599) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1601) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transformTemplate$1$1.apply(SpecializeTypes.scala:1599) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transformTemplate$1$1.apply(SpecializeTypes.scala:1599) 
    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.SpecializeTypes$$anon$2.transformTemplate$1(SpecializeTypes.scala:1599) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1601) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428) 
    at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371) 
    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.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712) 
... **[Trimmed due to StackOverflow character limit]** ... 

That entry seems to have slain the compiler. Shall I replay 
your session? I can re-run each line except the last one. 
[y/n] 
Abandoning crashed session. 

Есть идеи?

+2

это похоже на ошибку –

+0

@KimStebel Интересно, что эта (может быть), кажется, общая проблема с обработкой кортежей 'foldLeft'. Я просто попробовал это с таким же точным поведением: 't.foldLeft ((0 -> List [Char]())) ((x, y) => x._1 + 1 -> (x._2: + y)) ' – Ruslan

+0

Собственно, не все кортежи, а только те, которые ссылаются сами. Я просто сделал еще несколько тестов, и это отлично работает: 't.foldLeft ((0 -> 0)) ((x, y) => (y + 1 -> y))', а это вызывает сбой: ' t.foldLeft ((0 -> 0)) ((x, y) => (x._1 + 1 -> y)) ' – Ruslan

ответ

7

Это была ошибка в 2.11.5, а именно: SI-9089. Это зафиксировано в 2.11.6.

+0

Полезно знать, спасибо! – Ruslan