2017-05-24 11 views
3

私はエラーを取得せずに(再帰的に)このようKotlin REPLで値を定義することができます。これはKotlin REPLのバグですか?

val s: String = s 

をそして今、私はNOTNULLの種類が、ヌルの値に「s」を取得します。
そして私はNPEと、このNotNull値で何かを行うことができます:

>>> val s: String = s 

>>> s.length 
java.lang.NullPointerException 

あなたはそれをするたびに動作しますが、ご自身Kotlin REPLでそれを試すことができます。

私はKotlinバージョン1.1.2-3を使用しています。

+0

REPLは、実行されている行の最後の状態を表すクラスのメンバーにローカル変数を回転させることによって機能します。したがって、変数 's'は' null'値を持つメンバとして作成され、その後独自の値(まだ 'null')に設定されます。そのためコードがコンパイルされます。コンテキスト内でコードを真にチェックするのではなく、前の行と現在の行に設定されている現在の値とのコードをチェックします。したがって、失敗するケースもあります。しかし、バグはバグです。それを探してください。そうでなければ、バグを報告してください:http://youtrack.jetbrains.com/issues/KT –

+0

そしてこのバグをここに書き留めて、他の読者がその状態を追跡できるようにしてください。ありがとう! –

+0

未解決の問題は見つかりませんでしたので、https://youtrack.jetbrains.com/issue/KT-18052 – zsmb13

答えて

0

はいを​​使用しています、これはバグです。

val s: String = s 
print(s.length) 

このコードは正常にコンパイルされましたが、実行時にエラーが発生します。

Error: Unresolved reference: s


enter image description here

2

はい、REPLのバグです。 REAL Kotlinファイルで

、それは「Unresolve参照」と

を文句を言うでしょう申し訳ありませんが、私は、IMGを投稿することはできませんが、あなたはあなたのIDEで試みることができます。

は私がのIntelliJ IDEA-2017年1月3日

+0

もちろんコードは違法です – ice1000

関連する問題