class AdLint::Exam::CBuiltin::W0080

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 1804
def initialize(phase_ctxt)
  super
  interp = phase_ctxt[:cc1_interpreter]
  interp.on_variable_defined += T(:check)
  interp.on_block_started    += T(:enter_block)
  interp.on_block_ended      += T(:leave_block)
  @block_level = 0
end

Private Instance Methods

check(var_def, var) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 1814
def check(var_def, var)
  if @block_level == 0
    if var.declared_as_extern? || var.declared_as_static?
      if var.type.const? && var_def.initializer.nil?
        W(var_def.location)
      end
    end
  end
end
enter_block(*) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 1824
def enter_block(*)
  @block_level += 1
end
leave_block(*) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 1828
def leave_block(*)
  @block_level -= 1
end