class AdLint::Exam::CBuiltin::W0491
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 10258 def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_variable_defined += T(:define_variable) interp.on_variable_declared += T(:declare_variable) interp.on_struct_declared += T(:declare_struct) interp.on_union_declared += T(:declare_union) interp.on_enum_declared += T(:declare_enum) interp.on_typedef_declared += T(:declare_typedef) interp.on_parameter_defined += T(:define_parameter) interp.on_label_defined += T(:define_label) interp.on_block_started += T(:enter_scope) interp.on_block_ended += T(:leave_scope) @dcl_names = [[]] @tag_names = [[]] @label_names = [[]] end
Private Instance Methods
declare_enum(enum_dcl)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10339 def declare_enum(enum_dcl) tag_name = enum_dcl.identifier return unless tag_name pair_names = (@dcl_names + @label_names).flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(enum_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end
declare_struct(struct_dcl)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10307 def declare_struct(struct_dcl) tag_name = struct_dcl.identifier return unless tag_name pair_names = (@dcl_names + @label_names).flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(struct_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end
declare_typedef(typedef_dcl)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10355 def declare_typedef(typedef_dcl) dcl_name = typedef_dcl.identifier pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(typedef_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end
declare_union(union_dcl)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10323 def declare_union(union_dcl) tag_name = union_dcl.identifier return unless tag_name pair_names = (@dcl_names + @label_names).flatten.select { |id| id.value == tag_name.value } unless pair_names.empty? W(union_dcl.location, tag_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @tag_names.last.push(tag_name) end
declare_variable(var_dcl, *)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10292 def declare_variable(var_dcl, *) dcl_name = var_dcl.identifier pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_dcl.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end
define_label(labeled_stmt)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10386 def define_label(labeled_stmt) label_name = labeled_stmt.label pair_names = (@dcl_names + @tag_names).flatten.select { |id| id.value == label_name.value } unless pair_names.empty? W(labeled_stmt.location, label_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @label_names.last.push(label_name) end
define_parameter(param_def, *)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10370 def define_parameter(param_def, *) dcl_name = param_def.identifier return unless dcl_name pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(param_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end
define_variable(var_def, *)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10277 def define_variable(var_def, *) dcl_name = var_def.identifier pair_names = (@tag_names + @label_names).flatten.select { |id| id.value == dcl_name.value } unless pair_names.empty? W(var_def.location, dcl_name.value, *pair_names.map { |pair| C(:C0001, pair.location, pair.value) }) end @dcl_names.last.push(dcl_name) end
enter_scope(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10401 def enter_scope(*) @dcl_names.push([]) @tag_names.push([]) @label_names.push([]) end
leave_scope(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10407 def leave_scope(*) @dcl_names.pop @tag_names.pop @label_names.pop end