2010-08-11 35 views
0

鉴于下面的代码片断:Jruby行号问题?

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

在JRuby做一些检查:

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

似乎从标准MRI不同:

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

体proc似乎是线 in mri,而在jruby中,它是行 ...是这个a错误?任何解决方法?

+0

为什么这对你很重要? – jtbandes 2010-08-11 02:37:54

+0

最有可能的一个错误。 JRuby在这里和那里确实有一些框架没有完全一致。大多数时候他们足够小,不会注意到。如果可以的话,帮助提出一些他们错误的测试用例(应该有几个,也可以尝试一些block dispatch),并将它们发布到http://bugs.jruby.org/。 – 2010-08-11 17:58:27

+0

@jtbandes:它困扰我的原因是我正在使用ruby_parser实现serializable_proc(http://github.com/ngty/serializable_proc),它执行静态代码分析,并且我需要Proc#检查生成的行号以确定哪一行我想处理,因为jruby给我不准确的行号,SerializableProc不能按预期工作。无论如何,SerializableProc可能没有实际用途,但我想这只是我有趣的项目之一,看看我可以推动序列化proc的想法。 – ngty 2010-08-15 02:06:11

回答

0

如果它不同于MRI它可能被认为是一个错误