class AdLint::Exam::CBuiltin::W0031

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 662
def initialize(phase_ctxt)
  super
  interp = phase_ctxt[:cc1_interpreter]
  interp.on_function_started        += T(:start_function)
  interp.on_parameter_defined       += T(:add_parameter)
  interp.on_variable_referred       += T(:use_parameter)
  interp.on_variable_value_referred += T(:use_parameter)
  interp.on_function_ended          += T(:check_unused_parameter)
  @parameters = nil
end

Private Instance Methods

add_parameter(param_def, var) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 678
def add_parameter(param_def, var)
  if @parameters && var.named?
    @parameters[var.name] = [param_def, false]
  end
end
check_unused_parameter(*) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 692
def check_unused_parameter(*)
  if @parameters
    @parameters.each do |name, param|
      W(param[0].location, name) unless param[1]
    end
    @parameters = nil
  end
end
start_function(*) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 674
def start_function(*)
  @parameters = {}
end
use_parameter(*, var) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 684
def use_parameter(*, var)
  if @parameters && var.named?
    if param_def = @parameters[var.name]
      @parameters[var.name] = [param_def, true]
    end
  end
end