2011-12-31 3 views
16

Есть ли способ в Scala найти и отобразить все применения implicits в моем коде или скомпилировать без implicits enabled (так что я получаю ошибки компиляции)? Я надеюсь определить места, где я непреднамеренно выделяю дополнительную память во внутренних циклах.Найти все implicits

ответ

18

Вы можете использовать опцию -Xprint:typer и посмотреть, как проверены внутренние петли, представляющие интерес. Неявные вызовы появятся в печатном исходном коде. Вам может потребоваться передать вывод в файл, чтобы вы могли искать интересные разделы.

Также в ночных клубах Scala Eclipse IDE на http://scala-ide.org/download/nightly.html есть экранная неявная функция. Вы должны включить его в Предпочтения, Scala, Implicits раздел.

Двойные стрелки на левом поле показывает, что неявное используется:

enter image description here

На парении, он показывает детали:

enter image description here

Идея SCALA плагин также может показать неявные преобразования с подчеркиванием, см. ту же часть кода:

enter image description here

Он также должен показать, какой из них используется с помощью CTRL-SHIFT-Q ярлык, но я имел меньший успех с ним ...

11

По состоянию на вчера (это просто совпадение) есть -Xlog- неявное-преобразование.

scalac -Xlog-implicit-conversions -d /tmp /scala/trunk/src/library/scala/util/Random.scala 
/scala/trunk/src/library/scala/util/Random.scala:115: applied implicit conversion from Int to ?{val to: ?} = implicit def intWrapper(x: Int): scala.runtime.RichInt 
    for (n <- buf.length to 2 by -1) { 
       ^
Смежные вопросы