summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-24 16:21:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-24 16:21:54 +0000
commit181a4ea8c6fce1c0388050ab4c914a0f1281926b (patch)
tree173247f8756b99bd6b84cca54f829315a46ba169
parent7dd8c1f20fe89b3fdf19778c5f6e970503b23a9e (diff)
debug.rb: Fix debug listing
* lib/debug.rb (script_lines): get source lines from SCRIPT_LINES__ or read from the file. * lib/debug.rb (display_list): use script_lines instead of recursion. [Bug #8318] * lib/debug.rb (line_at): use script_lines same as display_list. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog10
-rw-r--r--lib/debug.rb21
2 files changed, 21 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 7c7462df238..7db1a30ab4a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,12 @@
-Thu Apr 25 01:18:55 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 25 01:21:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/debug.rb (script_lines): get source lines from SCRIPT_LINES__ or
+ read from the file.
+
+ * lib/debug.rb (display_list): use script_lines instead of recursion.
+ [Bug #8318]
+
+ * lib/debug.rb (line_at): use script_lines same as display_list.
* lib/debug.rb (display_list): Fix debug listing when called from the
same file it has been required. patch by Dario Bertini <berdario AT
diff --git a/lib/debug.rb b/lib/debug.rb
index b5ae3e95c8e..67861cba642 100644
--- a/lib/debug.rb
+++ b/lib/debug.rb
@@ -752,8 +752,17 @@ EOHELP
(id ? ":in `#{id.id2name}'" : "")
end
+ def script_lines(file, line)
+ unless (lines = SCRIPT_LINES__[file]) and lines != true
+ Tracer::Single.get_line(file, line) if File.exist?(file)
+ lines = SCRIPT_LINES__[file]
+ lines = nil if lines == true
+ end
+ lines
+ end
+
def display_list(b, e, file, line)
- if lines = SCRIPT_LINES__[file] and lines != true
+ if lines = script_lines(file, line)
stdout.printf "[%d, %d] in %s\n", b, e, file
b.upto(e) do |n|
if n > 0 && lines[n-1]
@@ -764,20 +773,14 @@ EOHELP
end
end
end
- elsif File.exists? file
- Tracer::Single.get_line(file, line)
- display_list(b, e, file, line)
else
stdout.printf "No sourcefile available for %s\n", file
end
end
def line_at(file, line)
- lines = SCRIPT_LINES__[file]
- if lines
- return "\n" if lines == true
- line = lines[line-1]
- return "\n" unless line
+ lines = script_lines(file, line)
+ if lines and line = lines[line-1]
return line
end
return "\n"