class AdLint::Exam::CBuiltin::W0532
Public Class Methods
new(phase_ctxt)
click to toggle source
Calls superclass method
AdLint::Examination::new
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 12212 def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_switch_statement += T(:check_switch_statement) end
Private Instance Methods
check_switch_statement(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 12219 def check_switch_statement(node) return unless node.statement.kind_of?(Cc1::CompoundStatement) node.statement.block_items.each_with_index do |item, idx| effective_breaks = EffectiveBreakCollector.new.execute(item) unless effective_breaks.empty? if nxt_item = node.statement.block_items[idx + 1] while nxt_item.kind_of?(Cc1::GenericLabeledStatement) nxt_item = nxt_item.statement end case nxt_item when Cc1::CaseLabeledStatement, Cc1::DefaultLabeledStatement ; else effective_breaks.each do |effective_break| W(effective_break.location) end end end end end end