2010-08-11 2 views
0

Учитывая следующий фрагмент кода:Jruby проблема с нумерацией строк?

hash = {     # 1 
    (line = __LINE__) => # 2 
    lambda { x }   # 3 
} 

Doing некоторый осмотр JRuby:

puts line # >> 2 
puts hash[line].inspect >> #<Proc:[email protected]/tmp/test.rb:2> 

, кажется, отличаются от стандартного мрт:

puts line # >> 2 
puts hash[line].inspect >> #<Proc:[email protected]/tmp/test.rb:3> 

прок, как представляется, по линии в mri, тогда как в jruby это линия ... это ошибка? Любое обходное решение для этого?

+0

Почему это имеет значение для вас? – jtbandes

+0

Скорее всего, ошибка. У JRuby есть несколько из них здесь и там, где фреймы не выровнены одинаково. Большую часть времени они достаточно малы, чтобы не заметить. Если вы можете, помогите придумать некоторые тестовые примеры, в которых они ошибаются (их должно быть несколько, попробуйте также с отправкой блоков) и разместите их на http://bugs.jruby.org/. –

+0

@jtbandes: Причина, по которой это меня беспокоит, заключается в том, что я реализую serializable_proc (http://github.com/ngty/serializable_proc) с помощью ruby_parser, который выполняет статический анализ кода, и мне нужен номер строки, сгенерированный ProC# inspect чтобы определить, какую строку я хочу обработать, поскольку jruby дает мне неточную нумерацию строк, SerializableProc работает не так, как ожидалось. Во всяком случае, SerializableProc может не иметь практического использования, но я думаю, что это будет просто один из моих интересных проектов, чтобы увидеть, как далеко я могу продвинуть идею сериализации proc. – ngty

ответ

0

Если он отличается от MRI, это, вероятно, считается ошибкой

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