2011-01-09 15 views
4

がファイルbug.scala考えてみましょパラメータ:奇妙な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 
} 

それは暗黙の型変換を定義し、輸入して、3つのわずかに異なるシナリオでそれを使用しています。それをコンパイルします。

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を使用)

答えて