| Index: src/runtime.cc | 
| =================================================================== | 
| --- src/runtime.cc	(revision 2860) | 
| +++ src/runtime.cc	(working copy) | 
| @@ -6821,8 +6821,20 @@ | 
| target_start_position = start_position; | 
| target = shared; | 
| } else { | 
| -              if (target_start_position < start_position && | 
| -                  shared->end_position() < target->end_position()) { | 
| +              if (target_start_position == start_position && | 
| +                  shared->end_position() == target->end_position()) { | 
| +                  // If a top-level function contain only one function | 
| +                  // declartion the source for the top-level and the function is | 
| +                  // the same. In that case prefer the non top-level function. | 
| +                if (!shared->is_toplevel()) { | 
| +                  target_start_position = start_position; | 
| +                  target = shared; | 
| +                } | 
| +              } else if (target_start_position <= start_position && | 
| +                         shared->end_position() <= target->end_position()) { | 
| +                // This containment check includes equality as a function inside | 
| +                // a top-level function can share either start or end position | 
| +                // with the top-level function. | 
| target_start_position = start_position; | 
| target = shared; | 
| } | 
|  |