class AdLint::Exam::CBuiltin::W0039

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 980
def initialize(phase_ctxt)
  super
  trav = phase_ctxt[:cc1_ast_traversal]
  trav.enter_compound_statement   += T(:enter_block)
  trav.leave_compound_statement   += T(:leave_block)
  trav.enter_variable_definition  += T(:add_identifier)
  trav.enter_variable_declaration += T(:add_identifier)
  trav.enter_typedef_declaration  += T(:add_identifier)
  @block_stack = [0]
end

Private Instance Methods

add_identifier(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 1000
def add_identifier(node)
  @block_stack[-1] += 1
  W(node.location) if @block_stack.last == 128
end
enter_block(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 992
def enter_block(node)
  @block_stack.push(0)
end
leave_block(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 996
def leave_block(node)
  @block_stack.pop
end