adlint 3.0.4 → 3.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/ChangeLog +374 -13
  2. data/INSTALL +1 -3
  3. data/MANIFEST +12 -0
  4. data/NEWS +30 -4
  5. data/README +0 -4
  6. data/TODO +2 -1
  7. data/etc/mesg.d/c_builtin/en_US/messages.yml +2 -2
  8. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +2 -2
  9. data/etc/mesg.d/core/en_US/messages.yml +5 -1
  10. data/etc/mesg.d/core/ja_JP/messages.yml +5 -1
  11. data/features/code_check/W0422.feature +128 -0
  12. data/features/code_check/W0491.feature +57 -0
  13. data/features/code_check/W0492.feature +80 -0
  14. data/features/code_check/W0542.feature +20 -0
  15. data/features/code_check/W0580.feature +25 -0
  16. data/features/code_check/W0610.feature +36 -0
  17. data/features/code_check/W0642.feature +67 -0
  18. data/features/code_check/W0786.feature +39 -0
  19. data/features/code_check/W0830.feature +27 -0
  20. data/features/code_check/W1047.feature +72 -0
  21. data/features/code_check/W9003.feature +22 -0
  22. data/features/code_extraction/TODO +1 -0
  23. data/features/metric_measurement/TODO +1 -0
  24. data/lib/adlint/analyzer.rb +2 -2
  25. data/lib/adlint/cc1/ctrlexpr.rb +27 -6
  26. data/lib/adlint/cc1/domain.rb +72 -12
  27. data/lib/adlint/cc1/enum.rb +4 -0
  28. data/lib/adlint/cc1/expr.rb +31 -29
  29. data/lib/adlint/cc1/interp.rb +45 -56
  30. data/lib/adlint/cc1/lexer.rb +26 -5
  31. data/lib/adlint/cc1/mediator.rb +35 -6
  32. data/lib/adlint/cc1/object.rb +62 -19
  33. data/lib/adlint/cc1/parser.rb +948 -904
  34. data/lib/adlint/cc1/parser.y +59 -29
  35. data/lib/adlint/cc1/phase.rb +6 -8
  36. data/lib/adlint/cc1/syntax.rb +70 -17
  37. data/lib/adlint/cc1/util.rb +4 -4
  38. data/lib/adlint/code.rb +16 -6
  39. data/lib/adlint/cpp/eval.rb +31 -25
  40. data/lib/adlint/cpp/lexer.rb +11 -5
  41. data/lib/adlint/cpp/macro.rb +34 -7
  42. data/lib/adlint/cpp/phase.rb +8 -8
  43. data/lib/adlint/error.rb +6 -0
  44. data/lib/adlint/exam/c_builtin/cc1_check.rb +557 -594
  45. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +72 -72
  46. data/lib/adlint/exam/c_builtin/cc1_code.rb +72 -52
  47. data/lib/adlint/exam/c_builtin/cc1_metric.rb +131 -131
  48. data/lib/adlint/exam/c_builtin/cpp_check.rb +48 -48
  49. data/lib/adlint/exam/c_builtin/cpp_check_shima.rb +2 -2
  50. data/lib/adlint/exam/c_builtin/cpp_code.rb +21 -21
  51. data/lib/adlint/exam/c_builtin/ld_check.rb +88 -87
  52. data/lib/adlint/exam/c_builtin/ld_metric.rb +4 -5
  53. data/lib/adlint/exam/c_builtin.rb +6 -6
  54. data/lib/adlint/ld/object.rb +269 -186
  55. data/lib/adlint/ld/phase.rb +19 -19
  56. data/lib/adlint/ld/typedef.rb +7 -7
  57. data/lib/adlint/ld/util.rb +25 -17
  58. data/lib/adlint/location.rb +6 -1
  59. data/lib/adlint/memo.rb +66 -13
  60. data/lib/adlint/prelude.rb +2 -2
  61. data/lib/adlint/report.rb +13 -14
  62. data/lib/adlint/util.rb +1 -1
  63. data/lib/adlint/version.rb +2 -2
  64. data/share/doc/Makefile +6 -2
  65. data/share/doc/c99gram.dot +502 -0
  66. data/share/doc/c99gram.pdf +0 -0
  67. data/share/doc/developers_guide_ja.html +4 -3
  68. data/share/doc/developers_guide_ja.texi +2 -1
  69. data/share/doc/users_guide_en.html +9 -9
  70. data/share/doc/users_guide_en.texi +7 -7
  71. data/share/doc/users_guide_ja.html +9 -9
  72. data/share/doc/users_guide_ja.texi +7 -7
  73. metadata +14 -2
@@ -44,24 +44,24 @@ module CBuiltin #:nodoc:
44
44
  def initialize(phase_ctxt)
45
45
  super
46
46
  @fpath = phase_ctxt[:sources].first.fpath
47
- visitor = phase_ctxt[:cc1_visitor]
48
- visitor.enter_error_statement += T(:count_statement)
49
- visitor.enter_generic_labeled_statement += T(:count_statement)
50
- visitor.enter_case_labeled_statement += T(:count_statement)
51
- visitor.enter_default_labeled_statement += T(:count_statement)
52
- visitor.enter_expression_statement += T(:count_statement)
53
- visitor.enter_if_statement += T(:count_statement)
54
- visitor.enter_if_else_statement += T(:count_statement)
55
- visitor.enter_switch_statement += T(:count_statement)
56
- visitor.enter_while_statement += T(:count_statement)
57
- visitor.enter_do_statement += T(:count_statement)
58
- visitor.enter_for_statement += T(:count_statement)
59
- visitor.enter_c99_for_statement += T(:count_statement)
60
- visitor.enter_goto_statement += T(:count_statement)
61
- visitor.enter_continue_statement += T(:count_statement)
62
- visitor.enter_break_statement += T(:count_statement)
63
- visitor.enter_return_statement += T(:count_statement)
64
- visitor.leave_translation_unit += M(:measure)
47
+ traversal = phase_ctxt[:cc1_ast_traversal]
48
+ traversal.enter_error_statement += T(:count_statement)
49
+ traversal.enter_generic_labeled_statement += T(:count_statement)
50
+ traversal.enter_case_labeled_statement += T(:count_statement)
51
+ traversal.enter_default_labeled_statement += T(:count_statement)
52
+ traversal.enter_expression_statement += T(:count_statement)
53
+ traversal.enter_if_statement += T(:count_statement)
54
+ traversal.enter_if_else_statement += T(:count_statement)
55
+ traversal.enter_switch_statement += T(:count_statement)
56
+ traversal.enter_while_statement += T(:count_statement)
57
+ traversal.enter_do_statement += T(:count_statement)
58
+ traversal.enter_for_statement += T(:count_statement)
59
+ traversal.enter_c99_for_statement += T(:count_statement)
60
+ traversal.enter_goto_statement += T(:count_statement)
61
+ traversal.enter_continue_statement += T(:count_statement)
62
+ traversal.enter_break_statement += T(:count_statement)
63
+ traversal.enter_return_statement += T(:count_statement)
64
+ traversal.leave_translation_unit += M(:measure)
65
65
  @stmt_cnt = 0
66
66
  end
67
67
 
@@ -86,10 +86,10 @@ module CBuiltin #:nodoc:
86
86
  def initialize(phase_ctxt)
87
87
  super
88
88
  @fpath = phase_ctxt[:sources].first.fpath
89
- visitor = phase_ctxt[:cc1_visitor]
90
- visitor.enter_ansi_function_definition += T(:count_function)
91
- visitor.enter_kandr_function_definition += T(:count_function)
92
- visitor.leave_translation_unit += M(:measure)
89
+ traversal = phase_ctxt[:cc1_ast_traversal]
90
+ traversal.enter_ansi_function_definition += T(:count_function)
91
+ traversal.enter_kandr_function_definition += T(:count_function)
92
+ traversal.leave_translation_unit += M(:measure)
93
93
  @fun_cnt = 0
94
94
  end
95
95
 
@@ -114,27 +114,27 @@ module CBuiltin #:nodoc:
114
114
  def initialize(phase_ctxt)
115
115
  super
116
116
  @fpath = phase_ctxt[:sources].first.fpath
117
- visitor = phase_ctxt[:cc1_visitor]
118
- visitor.enter_ansi_function_definition += T(:enter_function)
119
- visitor.leave_ansi_function_definition += T(:leave_function)
120
- visitor.enter_kandr_function_definition += T(:enter_function)
121
- visitor.leave_kandr_function_definition += T(:leave_function)
122
- visitor.enter_error_statement += T(:count_statement)
123
- visitor.enter_generic_labeled_statement += T(:count_statement)
124
- visitor.enter_case_labeled_statement += T(:count_statement)
125
- visitor.enter_default_labeled_statement += T(:count_statement)
126
- visitor.enter_expression_statement += T(:count_statement)
127
- visitor.enter_if_statement += T(:count_statement)
128
- visitor.enter_if_else_statement += T(:count_statement)
129
- visitor.enter_switch_statement += T(:count_statement)
130
- visitor.enter_while_statement += T(:count_statement)
131
- visitor.enter_do_statement += T(:count_statement)
132
- visitor.enter_for_statement += T(:count_statement)
133
- visitor.enter_c99_for_statement += T(:count_statement)
134
- visitor.enter_goto_statement += T(:count_statement)
135
- visitor.enter_continue_statement += T(:count_statement)
136
- visitor.enter_break_statement += T(:count_statement)
137
- visitor.enter_return_statement += T(:count_statement)
117
+ traversal = phase_ctxt[:cc1_ast_traversal]
118
+ traversal.enter_ansi_function_definition += T(:enter_function)
119
+ traversal.leave_ansi_function_definition += T(:leave_function)
120
+ traversal.enter_kandr_function_definition += T(:enter_function)
121
+ traversal.leave_kandr_function_definition += T(:leave_function)
122
+ traversal.enter_error_statement += T(:count_statement)
123
+ traversal.enter_generic_labeled_statement += T(:count_statement)
124
+ traversal.enter_case_labeled_statement += T(:count_statement)
125
+ traversal.enter_default_labeled_statement += T(:count_statement)
126
+ traversal.enter_expression_statement += T(:count_statement)
127
+ traversal.enter_if_statement += T(:count_statement)
128
+ traversal.enter_if_else_statement += T(:count_statement)
129
+ traversal.enter_switch_statement += T(:count_statement)
130
+ traversal.enter_while_statement += T(:count_statement)
131
+ traversal.enter_do_statement += T(:count_statement)
132
+ traversal.enter_for_statement += T(:count_statement)
133
+ traversal.enter_c99_for_statement += T(:count_statement)
134
+ traversal.enter_goto_statement += T(:count_statement)
135
+ traversal.enter_continue_statement += T(:count_statement)
136
+ traversal.enter_break_statement += T(:count_statement)
137
+ traversal.enter_return_statement += T(:count_statement)
138
138
  @cur_fun = nil
139
139
  @stmt_cnt = 0
140
140
  end
@@ -172,27 +172,27 @@ module CBuiltin #:nodoc:
172
172
  def initialize(phase_ctxt)
173
173
  super
174
174
  @fpath = phase_ctxt[:sources].first.fpath
175
- visitor = phase_ctxt[:cc1_visitor]
176
- visitor.enter_ansi_function_definition += T(:enter_function)
177
- visitor.leave_ansi_function_definition += T(:leave_function)
178
- visitor.enter_kandr_function_definition += T(:enter_function)
179
- visitor.leave_kandr_function_definition += T(:leave_function)
180
- visitor.enter_error_statement += T(:count_statement)
181
- visitor.enter_generic_labeled_statement += T(:count_statement)
182
- visitor.enter_case_labeled_statement += T(:count_statement)
183
- visitor.enter_default_labeled_statement += T(:count_statement)
184
- visitor.enter_expression_statement += T(:count_statement)
185
- visitor.enter_if_statement += T(:count_statement)
186
- visitor.enter_if_else_statement += T(:count_statement)
187
- visitor.enter_switch_statement += T(:count_statement)
188
- visitor.enter_while_statement += T(:count_statement)
189
- visitor.enter_do_statement += T(:count_statement)
190
- visitor.enter_for_statement += T(:count_statement)
191
- visitor.enter_c99_for_statement += T(:count_statement)
192
- visitor.enter_goto_statement += T(:count_statement)
193
- visitor.enter_continue_statement += T(:count_statement)
194
- visitor.enter_break_statement += T(:count_statement)
195
- visitor.enter_return_statement += T(:count_statement)
175
+ traversal = phase_ctxt[:cc1_ast_traversal]
176
+ traversal.enter_ansi_function_definition += T(:enter_function)
177
+ traversal.leave_ansi_function_definition += T(:leave_function)
178
+ traversal.enter_kandr_function_definition += T(:enter_function)
179
+ traversal.leave_kandr_function_definition += T(:leave_function)
180
+ traversal.enter_error_statement += T(:count_statement)
181
+ traversal.enter_generic_labeled_statement += T(:count_statement)
182
+ traversal.enter_case_labeled_statement += T(:count_statement)
183
+ traversal.enter_default_labeled_statement += T(:count_statement)
184
+ traversal.enter_expression_statement += T(:count_statement)
185
+ traversal.enter_if_statement += T(:count_statement)
186
+ traversal.enter_if_else_statement += T(:count_statement)
187
+ traversal.enter_switch_statement += T(:count_statement)
188
+ traversal.enter_while_statement += T(:count_statement)
189
+ traversal.enter_do_statement += T(:count_statement)
190
+ traversal.enter_for_statement += T(:count_statement)
191
+ traversal.enter_c99_for_statement += T(:count_statement)
192
+ traversal.enter_goto_statement += T(:count_statement)
193
+ traversal.enter_continue_statement += T(:count_statement)
194
+ traversal.enter_break_statement += T(:count_statement)
195
+ traversal.enter_return_statement += T(:count_statement)
196
196
  @cur_fun = nil
197
197
  @unreached_stmt_cnt = 0
198
198
  end
@@ -231,9 +231,9 @@ module CBuiltin #:nodoc:
231
231
  def initialize(phase_ctxt)
232
232
  super
233
233
  @fpath = phase_ctxt[:sources].first.fpath
234
- visitor = phase_ctxt[:cc1_visitor]
235
- visitor.enter_ansi_function_definition += T(:measure)
236
- visitor.enter_kandr_function_definition += T(:measure)
234
+ traversal = phase_ctxt[:cc1_ast_traversal]
235
+ traversal.enter_ansi_function_definition += T(:measure)
236
+ traversal.enter_kandr_function_definition += T(:measure)
237
237
  end
238
238
 
239
239
  private
@@ -255,9 +255,9 @@ module CBuiltin #:nodoc:
255
255
  def initialize(phase_ctxt)
256
256
  super
257
257
  @fpath = phase_ctxt[:sources].first.fpath
258
- visitor = phase_ctxt[:cc1_visitor]
259
- visitor.enter_ansi_function_definition += T(:measure_ansi_function)
260
- visitor.enter_kandr_function_definition += T(:measure_kandr_function)
258
+ traversal = phase_ctxt[:cc1_ast_traversal]
259
+ traversal.enter_ansi_function_definition += T(:measure_ansi_function)
260
+ traversal.enter_kandr_function_definition += T(:measure_kandr_function)
261
261
  end
262
262
 
263
263
  private
@@ -364,12 +364,12 @@ module CBuiltin #:nodoc:
364
364
  def initialize(phase_ctxt)
365
365
  super
366
366
  @fpath = phase_ctxt[:sources].first.fpath
367
- visitor = phase_ctxt[:cc1_visitor]
368
- visitor.enter_ansi_function_definition += T(:enter_function)
369
- visitor.leave_ansi_function_definition += T(:leave_function)
370
- visitor.enter_kandr_function_definition += T(:enter_function)
371
- visitor.leave_kandr_function_definition += T(:leave_function)
372
- visitor.enter_function_call_expression += T(:count_function_call)
367
+ traversal = phase_ctxt[:cc1_ast_traversal]
368
+ traversal.enter_ansi_function_definition += T(:enter_function)
369
+ traversal.leave_ansi_function_definition += T(:leave_function)
370
+ traversal.enter_kandr_function_definition += T(:enter_function)
371
+ traversal.leave_kandr_function_definition += T(:leave_function)
372
+ traversal.enter_function_call_expression += T(:count_function_call)
373
373
  @cur_fun = nil
374
374
  @funcall_cnt = 0
375
375
  end
@@ -408,12 +408,12 @@ module CBuiltin #:nodoc:
408
408
  def initialize(phase_ctxt)
409
409
  super
410
410
  @fpath = phase_ctxt[:sources].first.fpath
411
- visitor = phase_ctxt[:cc1_visitor]
412
- visitor.enter_ansi_function_definition += T(:enter_function)
413
- visitor.leave_ansi_function_definition += T(:leave_function)
414
- visitor.enter_kandr_function_definition += T(:enter_function)
415
- visitor.leave_kandr_function_definition += T(:leave_function)
416
- visitor.enter_goto_statement += T(:count_goto)
411
+ traversal = phase_ctxt[:cc1_ast_traversal]
412
+ traversal.enter_ansi_function_definition += T(:enter_function)
413
+ traversal.leave_ansi_function_definition += T(:leave_function)
414
+ traversal.enter_kandr_function_definition += T(:enter_function)
415
+ traversal.leave_kandr_function_definition += T(:leave_function)
416
+ traversal.enter_goto_statement += T(:count_goto)
417
417
  @cur_fun = nil
418
418
  @goto_cnt = 0
419
419
  end
@@ -452,27 +452,27 @@ module CBuiltin #:nodoc:
452
452
  def initialize(phase_ctxt)
453
453
  super
454
454
  @fpath = phase_ctxt[:sources].first.fpath
455
- visitor = phase_ctxt[:cc1_visitor]
456
- visitor.enter_ansi_function_definition += T(:enter_function)
457
- visitor.leave_ansi_function_definition += T(:leave_function)
458
- visitor.enter_kandr_function_definition += T(:enter_function)
459
- visitor.leave_kandr_function_definition += T(:leave_function)
460
- visitor.enter_error_statement += T(:enter_statement)
461
- visitor.enter_generic_labeled_statement += T(:enter_statement)
462
- visitor.enter_case_labeled_statement += T(:enter_statement)
463
- visitor.enter_default_labeled_statement += T(:enter_statement)
464
- visitor.enter_expression_statement += T(:enter_statement)
465
- visitor.enter_if_statement += T(:enter_statement)
466
- visitor.enter_if_else_statement += T(:enter_statement)
467
- visitor.enter_switch_statement += T(:enter_statement)
468
- visitor.enter_while_statement += T(:enter_statement)
469
- visitor.enter_do_statement += T(:enter_statement)
470
- visitor.enter_for_statement += T(:enter_statement)
471
- visitor.enter_c99_for_statement += T(:enter_statement)
472
- visitor.enter_goto_statement += T(:enter_statement)
473
- visitor.enter_continue_statement += T(:enter_statement)
474
- visitor.enter_break_statement += T(:enter_statement)
475
- visitor.enter_return_statement += T(:count_return)
455
+ traversal = phase_ctxt[:cc1_ast_traversal]
456
+ traversal.enter_ansi_function_definition += T(:enter_function)
457
+ traversal.leave_ansi_function_definition += T(:leave_function)
458
+ traversal.enter_kandr_function_definition += T(:enter_function)
459
+ traversal.leave_kandr_function_definition += T(:leave_function)
460
+ traversal.enter_error_statement += T(:enter_statement)
461
+ traversal.enter_generic_labeled_statement += T(:enter_statement)
462
+ traversal.enter_case_labeled_statement += T(:enter_statement)
463
+ traversal.enter_default_labeled_statement += T(:enter_statement)
464
+ traversal.enter_expression_statement += T(:enter_statement)
465
+ traversal.enter_if_statement += T(:enter_statement)
466
+ traversal.enter_if_else_statement += T(:enter_statement)
467
+ traversal.enter_switch_statement += T(:enter_statement)
468
+ traversal.enter_while_statement += T(:enter_statement)
469
+ traversal.enter_do_statement += T(:enter_statement)
470
+ traversal.enter_for_statement += T(:enter_statement)
471
+ traversal.enter_c99_for_statement += T(:enter_statement)
472
+ traversal.enter_goto_statement += T(:enter_statement)
473
+ traversal.enter_continue_statement += T(:enter_statement)
474
+ traversal.enter_break_statement += T(:enter_statement)
475
+ traversal.enter_return_statement += T(:count_return)
476
476
  @cur_fun = nil
477
477
  @retn_cnt = 0
478
478
  @last_stmt = nil
@@ -528,13 +528,13 @@ module CBuiltin #:nodoc:
528
528
  def initialize(phase_ctxt)
529
529
  super
530
530
  @fpath = phase_ctxt[:sources].first.fpath
531
- visitor = phase_ctxt[:cc1_visitor]
532
- visitor.enter_ansi_function_definition += T(:enter_function)
533
- visitor.leave_ansi_function_definition += T(:leave_function)
534
- visitor.enter_kandr_function_definition += T(:enter_function)
535
- visitor.leave_kandr_function_definition += T(:leave_function)
536
- visitor.enter_if_else_statement += T(:enter_if_else_statement)
537
- visitor.leave_if_else_statement += T(:leave_if_else_statement)
531
+ traversal = phase_ctxt[:cc1_ast_traversal]
532
+ traversal.enter_ansi_function_definition += T(:enter_function)
533
+ traversal.leave_ansi_function_definition += T(:leave_function)
534
+ traversal.enter_kandr_function_definition += T(:enter_function)
535
+ traversal.leave_kandr_function_definition += T(:leave_function)
536
+ traversal.enter_if_else_statement += T(:enter_if_else_statement)
537
+ traversal.leave_if_else_statement += T(:leave_if_else_statement)
538
538
  @cur_fun = nil
539
539
  @if_else_stmt_chain = 0
540
540
  @incomplete_if_else_stmt_cnt = 0
@@ -584,19 +584,19 @@ module CBuiltin #:nodoc:
584
584
  def initialize(phase_ctxt)
585
585
  super
586
586
  @fpath = phase_ctxt[:sources].first.fpath
587
- visitor = phase_ctxt[:cc1_visitor]
588
- visitor.enter_ansi_function_definition += T(:enter_function)
589
- visitor.leave_ansi_function_definition += T(:leave_function)
590
- visitor.enter_kandr_function_definition += T(:enter_function)
591
- visitor.leave_kandr_function_definition += T(:leave_function)
592
- visitor.enter_compound_statement += T(:enter_block)
593
- visitor.leave_compound_statement += T(:leave_block)
594
- visitor.enter_if_statement += T(:check_statement)
595
- visitor.enter_if_else_statement += T(:check_statement)
596
- visitor.enter_while_statement += T(:check_statement)
597
- visitor.enter_do_statement += T(:check_statement)
598
- visitor.enter_for_statement += T(:check_statement)
599
- visitor.enter_c99_for_statement += T(:check_statement)
587
+ traversal = phase_ctxt[:cc1_ast_traversal]
588
+ traversal.enter_ansi_function_definition += T(:enter_function)
589
+ traversal.leave_ansi_function_definition += T(:leave_function)
590
+ traversal.enter_kandr_function_definition += T(:enter_function)
591
+ traversal.leave_kandr_function_definition += T(:leave_function)
592
+ traversal.enter_compound_statement += T(:enter_block)
593
+ traversal.leave_compound_statement += T(:leave_block)
594
+ traversal.enter_if_statement += T(:check_statement)
595
+ traversal.enter_if_else_statement += T(:check_statement)
596
+ traversal.enter_while_statement += T(:check_statement)
597
+ traversal.enter_do_statement += T(:check_statement)
598
+ traversal.enter_for_statement += T(:check_statement)
599
+ traversal.enter_c99_for_statement += T(:check_statement)
600
600
  @cur_fun = nil
601
601
  end
602
602
 
@@ -752,14 +752,14 @@ module CBuiltin #:nodoc:
752
752
  def initialize(phase_ctxt)
753
753
  super
754
754
  @fpath = phase_ctxt[:sources].first.fpath
755
- visitor = phase_ctxt[:cc1_visitor]
756
- visitor.enter_ansi_function_definition += T(:enter_function)
757
- visitor.leave_ansi_function_definition += T(:leave_function)
758
- visitor.enter_kandr_function_definition += T(:enter_function)
759
- visitor.leave_kandr_function_definition += T(:leave_function)
760
- visitor.enter_if_statement += T(:enter_selection)
761
- visitor.enter_if_else_statement += T(:enter_selection)
762
- visitor.enter_case_labeled_statement += T(:enter_selection)
755
+ traversal = phase_ctxt[:cc1_ast_traversal]
756
+ traversal.enter_ansi_function_definition += T(:enter_function)
757
+ traversal.leave_ansi_function_definition += T(:leave_function)
758
+ traversal.enter_kandr_function_definition += T(:enter_function)
759
+ traversal.leave_kandr_function_definition += T(:leave_function)
760
+ traversal.enter_if_statement += T(:enter_selection)
761
+ traversal.enter_if_else_statement += T(:enter_selection)
762
+ traversal.enter_case_labeled_statement += T(:enter_selection)
763
763
  @cur_fun = nil
764
764
  @cycl_compl = 0
765
765
  end
@@ -48,9 +48,9 @@ module CBuiltin #:nodoc:
48
48
 
49
49
  def initialize(phase_ctxt)
50
50
  super
51
- visitor = phase_ctxt[:cpp_visitor]
52
- visitor.enter_grouped_expression += T(:enter_grouped_expression)
53
- visitor.leave_grouped_expression += T(:leave_grouped_expression)
51
+ traversal = phase_ctxt[:cpp_ast_traversal]
52
+ traversal.enter_grouped_expression += T(:enter_grouped_expression)
53
+ traversal.leave_grouped_expression += T(:leave_grouped_expression)
54
54
  @group_depth = 0
55
55
  end
56
56
 
@@ -155,9 +155,9 @@ module CBuiltin #:nodoc:
155
155
 
156
156
  def initialize(phase_ctxt)
157
157
  super
158
- visitor = phase_ctxt[:cpp_visitor]
159
- visitor.enter_if_section += T(:enter_if_section)
160
- visitor.leave_if_section += T(:leave_if_section)
158
+ traversal = phase_ctxt[:cpp_ast_traversal]
159
+ traversal.enter_if_section += T(:enter_if_section)
160
+ traversal.leave_if_section += T(:leave_if_section)
161
161
  @if_depth = 0
162
162
  end
163
163
 
@@ -355,9 +355,9 @@ module CBuiltin #:nodoc:
355
355
 
356
356
  def initialize(phase_ctxt)
357
357
  super
358
- visitor = phase_ctxt[:cpp_visitor]
359
- visitor.enter_user_include_line += T(:check_user_include_line)
360
- visitor.enter_system_include_line += T(:check_system_include_line)
358
+ traversal = phase_ctxt[:cpp_ast_traversal]
359
+ traversal.enter_user_include_line += T(:check_user_include_line)
360
+ traversal.enter_system_include_line += T(:check_system_include_line)
361
361
  end
362
362
 
363
363
  private
@@ -383,11 +383,11 @@ module CBuiltin #:nodoc:
383
383
 
384
384
  def initialize(phase_ctxt)
385
385
  super
386
- visitor = phase_ctxt[:cpp_visitor]
387
- visitor.enter_user_include_line += T(:enter_include_line)
388
- visitor.enter_system_include_line += T(:enter_include_line)
389
- visitor.enter_text_line += T(:enter_text_line)
390
- visitor.enter_if_section += T(:enter_if_section)
386
+ traversal = phase_ctxt[:cpp_ast_traversal]
387
+ traversal.enter_user_include_line += T(:enter_include_line)
388
+ traversal.enter_system_include_line += T(:enter_include_line)
389
+ traversal.enter_text_line += T(:enter_text_line)
390
+ traversal.enter_if_section += T(:enter_if_section)
391
391
  @main_fpath = phase_ctxt[:sources].first.fpath
392
392
  @last_fpath = nil
393
393
  @enclosed_by_if_section = false
@@ -496,9 +496,9 @@ module CBuiltin #:nodoc:
496
496
 
497
497
  def initialize(phase_ctxt)
498
498
  super
499
- visitor = phase_ctxt[:cpp_visitor]
500
- visitor.enter_function_like_define_line += T(:check)
501
- visitor.enter_va_function_like_define_line += T(:check)
499
+ traversal = phase_ctxt[:cpp_ast_traversal]
500
+ traversal.enter_function_like_define_line += T(:check)
501
+ traversal.enter_va_function_like_define_line += T(:check)
502
502
  end
503
503
 
504
504
  private
@@ -663,10 +663,10 @@ module CBuiltin #:nodoc:
663
663
 
664
664
  def initialize(phase_ctxt)
665
665
  super
666
- visitor = phase_ctxt[:cpp_visitor]
667
- visitor.enter_object_like_define_line += T(:check)
668
- visitor.enter_function_like_define_line += T(:check)
669
- visitor.enter_va_function_like_define_line += T(:check)
666
+ traversal = phase_ctxt[:cpp_ast_traversal]
667
+ traversal.enter_object_like_define_line += T(:check)
668
+ traversal.enter_function_like_define_line += T(:check)
669
+ traversal.enter_va_function_like_define_line += T(:check)
670
670
  end
671
671
 
672
672
  private
@@ -693,8 +693,8 @@ module CBuiltin #:nodoc:
693
693
 
694
694
  def initialize(phase_ctxt)
695
695
  super
696
- visitor = phase_ctxt[:cpp_visitor]
697
- visitor.enter_object_like_define_line += T(:check)
696
+ traversal = phase_ctxt[:cpp_ast_traversal]
697
+ traversal.enter_object_like_define_line += T(:check)
698
698
  end
699
699
 
700
700
  private
@@ -716,10 +716,10 @@ module CBuiltin #:nodoc:
716
716
 
717
717
  def initialize(phase_ctxt)
718
718
  super
719
- visitor = phase_ctxt[:cpp_visitor]
720
- visitor.enter_object_like_define_line += T(:check)
721
- visitor.enter_function_like_define_line += T(:check)
722
- visitor.enter_va_function_like_define_line += T(:check)
719
+ traversal = phase_ctxt[:cpp_ast_traversal]
720
+ traversal.enter_object_like_define_line += T(:check)
721
+ traversal.enter_function_like_define_line += T(:check)
722
+ traversal.enter_va_function_like_define_line += T(:check)
723
723
  end
724
724
 
725
725
  private
@@ -741,10 +741,10 @@ module CBuiltin #:nodoc:
741
741
 
742
742
  def initialize(phase_ctxt)
743
743
  super
744
- visitor = phase_ctxt[:cpp_visitor]
745
- visitor.enter_object_like_define_line += T(:check)
746
- visitor.enter_function_like_define_line += T(:check)
747
- visitor.enter_va_function_like_define_line += T(:check)
744
+ traversal = phase_ctxt[:cpp_ast_traversal]
745
+ traversal.enter_object_like_define_line += T(:check)
746
+ traversal.enter_function_like_define_line += T(:check)
747
+ traversal.enter_va_function_like_define_line += T(:check)
748
748
  end
749
749
 
750
750
  private
@@ -764,8 +764,8 @@ module CBuiltin #:nodoc:
764
764
 
765
765
  def initialize(phase_ctxt)
766
766
  super
767
- visitor = phase_ctxt[:cpp_visitor]
768
- visitor.enter_object_like_define_line += T(:check)
767
+ traversal = phase_ctxt[:cpp_ast_traversal]
768
+ traversal.enter_object_like_define_line += T(:check)
769
769
  end
770
770
 
771
771
  private
@@ -801,8 +801,8 @@ module CBuiltin #:nodoc:
801
801
 
802
802
  def initialize(phase_ctxt)
803
803
  super
804
- visitor = phase_ctxt[:cpp_visitor]
805
- visitor.enter_object_like_define_line += T(:check)
804
+ traversal = phase_ctxt[:cpp_ast_traversal]
805
+ traversal.enter_object_like_define_line += T(:check)
806
806
  end
807
807
 
808
808
  private
@@ -1066,9 +1066,9 @@ module CBuiltin #:nodoc:
1066
1066
 
1067
1067
  def initialize(phase_ctxt)
1068
1068
  super
1069
- visitor = phase_ctxt[:cpp_visitor]
1070
- visitor.enter_system_include_line += T(:check)
1071
- visitor.enter_system_include_next_line += T(:check)
1069
+ traversal = phase_ctxt[:cpp_ast_traversal]
1070
+ traversal.enter_system_include_line += T(:check)
1071
+ traversal.enter_system_include_next_line += T(:check)
1072
1072
  end
1073
1073
 
1074
1074
  private
@@ -1088,9 +1088,9 @@ module CBuiltin #:nodoc:
1088
1088
 
1089
1089
  def initialize(phase_ctxt)
1090
1090
  super
1091
- visitor = phase_ctxt[:cpp_visitor]
1092
- visitor.enter_user_include_line += T(:check)
1093
- visitor.enter_user_include_next_line += T(:check)
1091
+ traversal = phase_ctxt[:cpp_ast_traversal]
1092
+ traversal.enter_user_include_line += T(:check)
1093
+ traversal.enter_user_include_next_line += T(:check)
1094
1094
  end
1095
1095
 
1096
1096
  private
@@ -1110,11 +1110,11 @@ module CBuiltin #:nodoc:
1110
1110
 
1111
1111
  def initialize(phase_ctxt)
1112
1112
  super
1113
- visitor = phase_ctxt[:cpp_visitor]
1114
- visitor.enter_user_include_line += T(:check)
1115
- visitor.enter_user_include_next_line += T(:check)
1116
- visitor.enter_system_include_line += T(:check)
1117
- visitor.enter_system_include_next_line += T(:check)
1113
+ traversal = phase_ctxt[:cpp_ast_traversal]
1114
+ traversal.enter_user_include_line += T(:check)
1115
+ traversal.enter_user_include_next_line += T(:check)
1116
+ traversal.enter_system_include_line += T(:check)
1117
+ traversal.enter_system_include_next_line += T(:check)
1118
1118
  end
1119
1119
 
1120
1120
  private
@@ -1327,8 +1327,8 @@ module CBuiltin #:nodoc:
1327
1327
 
1328
1328
  def initialize(phase_ctxt)
1329
1329
  super
1330
- visitor = phase_ctxt[:cpp_visitor]
1331
- visitor.enter_unknown_directive += T(:check)
1330
+ traversal = phase_ctxt[:cpp_ast_traversal]
1331
+ traversal.enter_unknown_directive += T(:check)
1332
1332
  end
1333
1333
 
1334
1334
  private
@@ -68,8 +68,8 @@ module CBuiltin #:nodoc:
68
68
 
69
69
  def initialize(phase_ctxt)
70
70
  super
71
- visitor = phase_ctxt[:cpp_visitor]
72
- visitor.enter_line_line += T(:check)
71
+ traversal = phase_ctxt[:cpp_ast_traversal]
72
+ traversal.enter_line_line += T(:check)
73
73
  end
74
74
 
75
75
  private
@@ -37,7 +37,7 @@ module AdLint #:nodoc:
37
37
  module Exam #:nodoc:
38
38
  module CBuiltin #:nodoc:
39
39
 
40
- class ObjectLikeMacroExtraction < CodeExtraction
40
+ class ObjLikeMacroExtraction < CodeExtraction
41
41
  def_registrant_phase Cpp::Prepare2Phase
42
42
 
43
43
  def initialize(phase_ctxt)
@@ -55,7 +55,7 @@ module CBuiltin #:nodoc:
55
55
  end
56
56
  end
57
57
 
58
- class FuncLikeMacroExtraction < CodeExtraction
58
+ class FunLikeMacroExtraction < CodeExtraction
59
59
  def_registrant_phase Cpp::Prepare2Phase
60
60
 
61
61
  def initialize(phase_ctxt)
@@ -102,23 +102,23 @@ module CBuiltin #:nodoc:
102
102
 
103
103
  def initialize(phase_ctxt)
104
104
  super
105
- visitor = phase_ctxt[:cpp_visitor]
106
- visitor.enter_if_statement += T(:extract_if)
107
- visitor.enter_ifdef_statement += T(:extract_ifdef)
108
- visitor.enter_ifndef_statement += T(:extract_ifndef)
109
- visitor.enter_elif_statement += T(:extract_elif)
110
- visitor.enter_else_statement += T(:extract_else)
111
- visitor.enter_endif_line += T(:extract_endif)
112
- visitor.enter_user_include_line += T(:extract_user_include)
113
- visitor.enter_system_include_line += T(:extract_system_include)
114
- visitor.enter_object_like_define_line += T(:extract_define)
115
- visitor.enter_function_like_define_line += T(:extract_define)
116
- visitor.enter_va_function_like_define_line += T(:extract_define)
117
- visitor.enter_undef_line += T(:extract_undef)
118
- visitor.enter_line_line += T(:extract_line)
119
- visitor.enter_error_line += T(:extract_error)
120
- visitor.enter_pragma_line += T(:extract_pragma)
121
- visitor.enter_null_directive += T(:extract_null)
105
+ traversal = phase_ctxt[:cpp_ast_traversal]
106
+ traversal.enter_if_statement += T(:extract_if)
107
+ traversal.enter_ifdef_statement += T(:extract_ifdef)
108
+ traversal.enter_ifndef_statement += T(:extract_ifndef)
109
+ traversal.enter_elif_statement += T(:extract_elif)
110
+ traversal.enter_else_statement += T(:extract_else)
111
+ traversal.enter_endif_line += T(:extract_endif)
112
+ traversal.enter_user_include_line += T(:extract_usr_include)
113
+ traversal.enter_system_include_line += T(:extract_sys_include)
114
+ traversal.enter_object_like_define_line += T(:extract_define)
115
+ traversal.enter_function_like_define_line += T(:extract_define)
116
+ traversal.enter_va_function_like_define_line += T(:extract_define)
117
+ traversal.enter_undef_line += T(:extract_undef)
118
+ traversal.enter_line_line += T(:extract_line)
119
+ traversal.enter_error_line += T(:extract_error)
120
+ traversal.enter_pragma_line += T(:extract_pragma)
121
+ traversal.enter_null_directive += T(:extract_null)
122
122
  end
123
123
 
124
124
  private
@@ -153,12 +153,12 @@ module CBuiltin #:nodoc:
153
153
  PP_DIRECTIVE(endif_line.location, endif_line.keyword.value, nil)
154
154
  end
155
155
 
156
- def extract_user_include(usr_include_line)
156
+ def extract_usr_include(usr_include_line)
157
157
  PP_DIRECTIVE(usr_include_line.location, usr_include_line.keyword.value,
158
158
  usr_include_line.header_name.value)
159
159
  end
160
160
 
161
- def extract_system_include(sys_include_line)
161
+ def extract_sys_include(sys_include_line)
162
162
  PP_DIRECTIVE(sys_include_line.location, sys_include_line.keyword.value,
163
163
  sys_include_line.header_name.value)
164
164
  end