| 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;
|
| }
|
|
|