Skip to content

Commit f494ef1

Browse files
authored
Merge pull request #251 from zheng-yongping/improve-SyntaxError-error-message
Improve syntax error error message
2 parents 66a497d + 2a03542 commit f494ef1

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

lib/iruby/backend.rb

+13-3
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class PryBackend
5757

5858
def initialize
5959
require 'pry'
60-
Pry.memory_size = 3
60+
Pry.memory_size = 3
6161
Pry.pager = false # Don't use the pager
6262
Pry.print = proc {|output, value|} # No result printing
6363
Pry.exception_handler = proc {|output, exception, _| }
@@ -72,11 +72,21 @@ def eval(code, store_history)
7272
reset
7373
raise SystemExit
7474
end
75-
unless @pry.eval_string.empty?
75+
76+
# Pry::Code.complete_expression? return false
77+
if !@pry.eval_string.empty?
7678
syntax_error = @pry.eval_string
7779
@pry.reset_eval_string
78-
@pry.evaluate_ruby syntax_error
80+
@pry.evaluate_ruby(syntax_error)
81+
82+
# Pry::Code.complete_expression? raise SyntaxError
83+
# evaluate again for current line number
84+
elsif @pry.last_result_is_exception? &&
85+
@pry.last_exception.is_a?(SyntaxError) &&
86+
@pry.last_exception.is_a?(Pry::UserError)
87+
@pry.evaluate_ruby(code)
7988
end
89+
8090
raise @pry.last_exception if @pry.last_result_is_exception?
8191
@pry.push_initial_binding unless @pry.current_binding # ensure that we have a binding
8292
@pry.last_result

lib/iruby/kernel.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def execute_request(msg)
112112

113113
def error_content(e)
114114
rindex = e.backtrace.rindex{|line| line.start_with?(@backend.eval_path)} || -1
115-
backtrace = e.backtrace[0..rindex]
115+
backtrace = SyntaxError === e && rindex == -1 ? [] : e.backtrace[0..rindex]
116116
{ ename: e.class.to_s,
117117
evalue: e.message,
118118
traceback: ["#{RED}#{e.class}#{RESET}: #{e.message}", *backtrace] }

0 commit comments

Comments
 (0)