Bug #2427

possible bug in Method#source_location (from [ruby-core:27014])

Added by ujihisa (ujihisa .) over 2 years ago. Updated about 1 year ago.

Status:Closed Start date:12/04/2009
Priority:Normal Due date:
Assignee:mame (Yusuke Endoh) % Done:

100%

Category:-
Target version:2.0.0
ruby -v:ruby 1.9.2dev (2009-11-11 trunk 25717) [i386-mingw32]

Description

Originally reported by Roger Pack:

> It appears that Method#source_location returns different values for
> 1.9.1 and 1.9.2dev for this code:
>
> class A
>
>  def go( a=3,
>   b=3)
>  end
> end
> puts A.instance_method(:go).source_location
>
> 1.9.1 says line 3, 1.9.2 says line 4.
>
> I assume 1.9.1 is correct? (I would expect it to be the line it
> *starts* on, and if you take out the default values, both 1.9.1 and
> 1.9.2 says line 3).
> Thanks.
> -r

According to Luis Lavena's report,

> a.rb, ending either with LF or CRLF:
>
> C:\Users\Luis\Desktop>pik tags yarv ruby a.rb
> ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32]
>
> a.rb
> 3
>
> ruby 1.9.2dev (2009-11-11 trunk 25717) [i386-mingw32]
>
> a.rb
> 4

But I couldn't reproduce the issue on Mac OS X. Both LF and CRLF scripts said the same results.

> In my environment, both versions of ruby said same results.
>
> $ ruby191 -v a.rb
> ruby 1.9.1p281 (2009-08-09 revision 24476) [i386-darwin9.7.0]
> a.rb
> 4
>
> $ ruby192 -v a.rb
> ruby 1.9.2dev (2009-12-04 trunk 25986) [i386-darwin9.8.0]
> a.rb
> 4

Associated revisions

Revision 25992
Added by nobu (Nobuyoshi Nakada) over 2 years ago

* parse.y (k_def): adjust the location of method definition to the line of def. [Bug #2427]

Revision 25992
Added by nobu (Nobuyoshi Nakada) over 2 years ago

* parse.y (k_def): adjust the location of method definition to the line of def. [Bug #2427]

History

Updated by usa (Usaku NAKAMURA) over 2 years ago

  • Assignee changed from usa (Usaku NAKAMURA) to nobu (Nobuyoshi Nakada)
I don't know whether 3 or 4 is correct.

Anyway, this difference is brought by the changes of parse.y,
and not depends on the platform of ruby.
It depends on only revision.
I don't track the changes of parse.y, so I don't know the actual
revision which brings this difference.
In my expectation, Nobu knows everything about it.

Updated by usa (Usaku NAKAMURA) over 2 years ago

  • Assignee changed from nobu (Nobuyoshi Nakada) to mame (Yusuke Endoh)
Oops, maybe not nobu, but mame.

Updated by nobu (Nobuyoshi Nakada) over 2 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100
This issue was solved with changeset r25992.
ujihisa, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Also available in: Atom PDF