byebug 7.0.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 075e48a583d6bdc5ec0cd4ce6cf195412476d722
4
- data.tar.gz: 8e755e6afcc87f2fb06109c9fdc0dd8e052a1736
3
+ metadata.gz: d5f07ccaa5a4aa1349f40bc2cf000ba1b38923c8
4
+ data.tar.gz: a751bfe958abd5e9067ee0af534d021bfd2db7b5
5
5
  SHA512:
6
- metadata.gz: def5daed567d526f9cf7ad3af964a997e18aeedaf9349f23c5e9e25534c9c3711a6e1688efbfc317da99b83508035ff9db4a9d64f12ba56fb671422044a8103b
7
- data.tar.gz: bac9c0be89f64f58403218158b92686734bcf7a5771f4d6eac6e9c7cd4a91ebcf28d476d3e8c3e447c4bf01ba534a60651ce33dec7e04ad81edc4372ff89110a
6
+ metadata.gz: a14bb16fc28b18e031e94a4ec9e2e9615d2e9fd4543afee5dd39c11f4b8339d9d3d3098e7906c192289d659e4f10e8b13aba0d4d7d7c3e0aba4b1730d671e493
7
+ data.tar.gz: 785e5764ddad295fdf8559e63d470c111869a56c3bae74895b5f9a6da0d4f08485d0e12799268938ab8f0ce7e48e54267bb7c23b20b0de3860d5af19a0ca06fe
@@ -1,3 +1,14 @@
1
+ ## 8.0.0 - 2015-11-05
2
+ ### Fixed
3
+ * [#183]((https://github.com/deivid-rodriguez/byebug/issues/183). Compilation
4
+ in Ruby 2.0. Regression introduced in 7.0.0
5
+ * "Return value is: nil" would be displayed when stopping right before the end
6
+ of a class definition. We want to avoid showing anything instead.
7
+
8
+ ## Changed
9
+ * Plugins now need to implement an `at_end` method (separate from `at_return`)
10
+ in their custom processors.
11
+
1
12
  ## 7.0.0 - 2015-11-04
2
13
  ### Fixed
3
14
  * [#177](https://github.com/deivid-rodriguez/byebug/issues/177). Some issues
@@ -228,6 +228,14 @@ call_at_return(VALUE ctx, debug_context_t * dc, VALUE return_value)
228
228
  return call_at(ctx, dc, rb_intern("at_return"), 1, return_value);
229
229
  }
230
230
 
231
+ static VALUE
232
+ call_at_end(VALUE ctx, debug_context_t * dc)
233
+ {
234
+ dc->stop_reason = CTX_STOP_BREAKPOINT;
235
+
236
+ return call_at(ctx, dc, rb_intern("at_end"), 0, Qnil);
237
+ }
238
+
231
239
  static void
232
240
  call_at_line_check(VALUE ctx, debug_context_t * dc, VALUE breakpoint)
233
241
  {
@@ -326,8 +334,6 @@ call_event(VALUE trace_point, void *data)
326
334
  static void
327
335
  return_event(VALUE trace_point, void *data)
328
336
  {
329
- VALUE return_value;
330
-
331
337
  EVENT_SETUP;
332
338
 
333
339
  RETURN_EVENT_SETUP;
@@ -336,13 +342,26 @@ return_event(VALUE trace_point, void *data)
336
342
  {
337
343
  reset_stepping_stop_points(dc);
338
344
 
339
- if (rb_tracearg_event_flag(trace_arg) &
340
- (RUBY_EVENT_RETURN | RUBY_EVENT_B_RETURN))
341
- return_value = rb_tracearg_return_value(trace_arg);
342
- else
343
- return_value = Qnil;
345
+ call_at_return(context, dc, rb_tracearg_return_value(trace_arg));
346
+ }
347
+
348
+ RETURN_EVENT_TEARDOWN;
349
+
350
+ EVENT_TEARDOWN;
351
+ }
352
+
353
+ static void
354
+ end_event(VALUE trace_point, void *data)
355
+ {
356
+ EVENT_SETUP;
357
+
358
+ RETURN_EVENT_SETUP;
359
+
360
+ if ((dc->steps_out == 0) && (CTX_FL_TEST(dc, CTX_FL_STOP_ON_RET)))
361
+ {
362
+ reset_stepping_stop_points(dc);
344
363
 
345
- call_at_return(context, dc, return_value);
364
+ call_at_end(context, dc);
346
365
  }
347
366
 
348
367
  RETURN_EVENT_TEARDOWN;
@@ -439,7 +458,8 @@ register_tracepoints(VALUE self)
439
458
  {
440
459
  int line_msk = RUBY_EVENT_LINE;
441
460
  int call_msk = RUBY_EVENT_CALL;
442
- int ret_msk = RUBY_EVENT_RETURN | RUBY_EVENT_B_RETURN | RUBY_EVENT_END;
461
+ int ret_msk = RUBY_EVENT_RETURN | RUBY_EVENT_B_RETURN;
462
+ int end_msk = RUBY_EVENT_END;
443
463
  int raw_call_msk = RUBY_EVENT_C_CALL | RUBY_EVENT_B_CALL | RUBY_EVENT_CLASS;
444
464
  int raw_ret_msk = RUBY_EVENT_C_RETURN;
445
465
  int raise_msk = RUBY_EVENT_RAISE;
@@ -447,6 +467,7 @@ register_tracepoints(VALUE self)
447
467
  VALUE tpLine = rb_tracepoint_new(Qnil, line_msk, line_event, 0);
448
468
  VALUE tpCall = rb_tracepoint_new(Qnil, call_msk, call_event, 0);
449
469
  VALUE tpReturn = rb_tracepoint_new(Qnil, ret_msk, return_event, 0);
470
+ VALUE tpEnd = rb_tracepoint_new(Qnil, end_msk, end_event, 0);
450
471
  VALUE tpCCall = rb_tracepoint_new(Qnil, raw_call_msk, raw_call_event, 0);
451
472
  VALUE tpCReturn = rb_tracepoint_new(Qnil, raw_ret_msk, raw_return_event, 0);
452
473
  VALUE tpRaise = rb_tracepoint_new(Qnil, raise_msk, raise_event, 0);
@@ -455,6 +476,7 @@ register_tracepoints(VALUE self)
455
476
  rb_ary_push(traces, tpLine);
456
477
  rb_ary_push(traces, tpCall);
457
478
  rb_ary_push(traces, tpReturn);
479
+ rb_ary_push(traces, tpEnd);
458
480
  rb_ary_push(traces, tpCCall);
459
481
  rb_ary_push(traces, tpCReturn);
460
482
  rb_ary_push(traces, tpRaise);
@@ -39,34 +39,32 @@ module Byebug
39
39
  end
40
40
 
41
41
  #
42
- # Tells whether a file is ignored by the debugger.
43
- #
44
- # @param path [String] filename to be checked.
42
+ # Reader for the current frame
45
43
  #
46
- def ignored_file?(path)
47
- self.class.ignored_files.include?(path)
48
- end
49
-
50
44
  def frame
51
45
  @frame ||= Frame.new(self, 0)
52
46
  end
53
47
 
48
+ #
49
+ # Writer for the current frame
50
+ #
54
51
  def frame=(pos)
55
52
  @frame = Frame.new(self, pos)
56
53
  end
57
54
 
58
- def file
59
- frame.file
60
- end
61
-
62
- def line
63
- frame.line
64
- end
55
+ extend Forwardable
56
+ def_delegators :frame, :file, :line
65
57
 
58
+ #
59
+ # Current file & line information
60
+ #
66
61
  def location
67
62
  "#{normalize(file)}:#{line}"
68
63
  end
69
64
 
65
+ #
66
+ # Current file, line and source code information
67
+ #
70
68
  def full_location
71
69
  return location if virtual_file?(file)
72
70
 
@@ -88,37 +86,70 @@ module Byebug
88
86
  step_into 1
89
87
  end
90
88
 
91
- def at_breakpoint(breakpoint)
92
- processor.at_breakpoint(breakpoint)
93
- end
89
+ #
90
+ # Line handler
91
+ #
92
+ def at_line
93
+ self.frame = 0
94
+ return if ignored_file?(file)
94
95
 
95
- def at_catchpoint(exception)
96
- processor.at_catchpoint(exception)
96
+ processor.at_line
97
97
  end
98
98
 
99
+ #
100
+ # Tracing handler
101
+ #
99
102
  def at_tracing
100
103
  return if ignored_file?(file)
101
104
 
102
105
  processor.at_tracing
103
106
  end
104
107
 
105
- def at_line
106
- self.frame = 0
107
- return if ignored_file?(file)
108
+ #
109
+ # Breakpoint handler
110
+ #
111
+ def at_breakpoint(breakpoint)
112
+ processor.at_breakpoint(breakpoint)
113
+ end
108
114
 
109
- processor.at_line
115
+ #
116
+ # Catchpoint handler
117
+ #
118
+ def at_catchpoint(exception)
119
+ processor.at_catchpoint(exception)
110
120
  end
111
121
 
122
+ #
123
+ # Return handler
124
+ #
112
125
  def at_return(return_value)
113
126
  return if ignored_file?(file)
114
127
 
115
128
  processor.at_return(return_value)
116
129
  end
117
130
 
131
+ #
132
+ # End of class definition handler
133
+ #
134
+ def at_end
135
+ return if ignored_file?(file)
136
+
137
+ processor.at_end
138
+ end
139
+
118
140
  private
119
141
 
120
142
  def processor
121
143
  @processor ||= self.class.processor.new(self)
122
144
  end
145
+
146
+ #
147
+ # Tells whether a file is ignored by the debugger.
148
+ #
149
+ # @param path [String] filename to be checked.
150
+ #
151
+ def ignored_file?(path)
152
+ self.class.ignored_files.include?(path)
153
+ end
123
154
  end
124
155
  end
@@ -33,17 +33,18 @@ module Byebug
33
33
  @printer ||= Printers::Plain.new
34
34
  end
35
35
 
36
- def frame
37
- @context.frame
38
- end
39
-
40
36
  extend Forwardable
37
+
38
+ def_delegators :@context, :frame
39
+
41
40
  def_delegator :printer, :print, :pr
42
41
  def_delegator :printer, :print_collection, :prc
43
42
  def_delegator :printer, :print_variables, :prv
44
43
 
45
44
  def_delegators :interface, :errmsg, :puts, :confirm
46
45
 
46
+ def_delegators Byebug, :commands
47
+
47
48
  #
48
49
  # Available commands
49
50
  #
@@ -51,8 +52,14 @@ module Byebug
51
52
  @command_list ||= CommandList.new(commands)
52
53
  end
53
54
 
54
- def commands
55
- Byebug.commands
55
+ def at_line
56
+ process_commands
57
+ end
58
+
59
+ def at_tracing
60
+ puts "Tracing: #{context.full_location}"
61
+
62
+ run_auto_cmds(2)
56
63
  end
57
64
 
58
65
  def at_breakpoint(brkpt)
@@ -65,19 +72,13 @@ module Byebug
65
72
  puts "Catchpoint at #{context.location}: `#{exception}'"
66
73
  end
67
74
 
68
- def at_tracing
69
- puts "Tracing: #{context.full_location}"
70
-
71
- run_auto_cmds(2)
72
- end
75
+ def at_return(return_value)
76
+ puts "Return value is: #{safe_inspect(return_value)}"
73
77
 
74
- def at_line
75
78
  process_commands
76
79
  end
77
80
 
78
- def at_return(return_value)
79
- puts "Return value is: #{safe_inspect(return_value)}"
80
-
81
+ def at_end
81
82
  process_commands
82
83
  end
83
84
 
@@ -2,5 +2,5 @@
2
2
  # Reopen main module to define the library version
3
3
  #
4
4
  module Byebug
5
- VERSION = '7.0.0'
5
+ VERSION = '8.0.0'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: byebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rodriguez
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-11-04 00:00:00.000000000 Z
13
+ date: 2015-11-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler