Странная ошибка Scala, связанная с неявным преобразованием параметров конструктора по умолчанию - PullRequest
4 голосов
/ 09 января 2011

Рассмотрим файл bug.scala :

package sandbox

object Foo {
  implicit def stringToInt(s: String) = 5
}

import Foo._

class Boo(val a: Int = "foo" / 3) {
  val b: Int = "foo" / 3
  def c(d: Int = "foo" / 3) = d
}

Он определяет неявное преобразование, импортирует его и использует его в трех немного разных сценариях. Скомпилируйте это:

E:\prog\scala\test>scalac bug.scala
bug.scala:9: error: value / is not a member of java.lang.String
class Boo(val a: Int = "foo" / 3) {
                       ^
one error found

Кажется, что неявное преобразование не работает при использовании для параметра конструктора по умолчанию, но работает для других сценариев.

Теперь смотрите это:

package sandbox

object Foo {
  implicit def stringToInt(s: String) = 5
}

object dummy

import Foo._
import dummy._

class Boo(val a: Int = "foo" / 3) {
  val b: Int = "foo" / 3
  def c(d: Int = "foo" / 3) = d
}

Мы просто добавили пустой объект и импортировали его. Теперь файл компилируется без ошибок!

Я вижу здесь две возможности: 1) Моя голова болталась со мной. 2) В компиляторе есть ошибка. Кто-нибудь может подтвердить, что это последнее?

(Использование Scala 2.8.1.)

1 Ответ

2 голосов
/ 09 января 2011

Определенно ошибка.Я подал его от вашего имени.

https://issues.scala -lang.org / browse / SI-4141

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...