2

У меня есть программа scala, в которой, помимо прочего, есть парсер-комбинатор. Это делается путем расширения scala.util.parsing.combinator.RegexParsers. Я разработал его, используя Scala 2.10, и все работает нормально.Scalac, висящий на фазовом тире RegexParser

Вчера я модернизировал свою систему до Scala 2.11.4 вместе с IntelliJ 14.02 (не это важно).

Однако всякий раз, когда я пытаюсь скомпилировать эту программу сейчас, scalac зависаний во время этой фазы:

scalac: phase typer on MyParser.scala

Я не изменил абсолютно ничего этого кода, я не могу понять, почему он висит или откуда Я должен начать. IntelliJ было предупреждение о операторов постфиксных для синтаксического анализа выражений, как constants_def? или structure_def*, где ? и * следовать маркер, и я добавил эту линию, из-за SIP: Language Modularization Features:

import scala.language.postfixOps

Это действительно не было любой эффект и проблема все те же.

Как я могу устранить неполадки в том, что происходит? Я не могу понять, откуда начать понимать, почему фазовый типер просто висит на неопределенный срок.

+0

Я бы сначала заподозрил старые продукты сборки в рабочем пространстве IDE. Затем я попытаюсь воспроизвести с помощью командной строки scalac, чтобы устранить IDE. Тогда, если бы мне было любопытно, я бы использовал '-Ytyper-debug -verbose -Ydebug'. –

ответ

1

Похоже, обходной путь, чтобы добавить явный тип:

def da_gd : Parser[Expression with TimedCondition] = 
    pref_timed_gd | da_gd_conjunction | 
    (empty_temporal: Parser[Expression with TimedCondition]) 

дамп стека показывает, что это выяснить тип ехрг, и -Ytyper-debug показывает окрестности.

Поскольку ничего хорошего после полуночи я не остановлюсь.

+0

Спасибо. Так это на самом деле то, что было нарушено в компиляторе 2.11? – jbx

+0

Ум, я не знаю, я до сих пор не прочитал статью, на которую Мартин О. ссылался на отчет об ошибке после этого вопроса. Ну, это явно сломано, но разрешимо ли это? –

 Смежные вопросы

  • Нет связанных вопросов^_^