class AdLint::Exam::CBuiltin::W0950

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 20440
def initialize(phase_ctxt)
  super
  trav = phase_ctxt[:cc1_ast_traversal]
  trav.enter_variable_definition += T(:check)
end

Private Instance Methods

check(var_def) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 20447
def check(var_def)
  return unless var_def.type.array?

  dcr = var_def.init_declarator.declarator
  ary_dcrs = collect_array_declarators(dcr)

  ary_dcrs.each do |ary_dcr|
    if expr = ary_dcr.size_expression
      const_specs = collect_constant_specifiers(expr)
      if immediate = const_specs.find { |cs| !cs.constant.replaced? }
        W(immediate.location, immediate.to_s)
      end
    end
  end
end