class AdLint::Exam::CBuiltin::W0828
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 20164 def initialize(phase_ctxt) super trav = phase_ctxt[:cc1_ast_traversal] trav.enter_variable_definition += T(:enter_variable_definition) end
Private Instance Methods
check(type, init)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 20186 def check(type, init) return unless init case when inits = init.initializers case when type.array? check(type.base_type, inits.first) when type.struct? type.members.zip(inits).each { |m, i| i and check(m.type, i) } end when init.expression.kind_of?(Cc1::StringLiteralSpecifier) else W(init.location) if type.array? end end
enter_variable_definition(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 20171 def enter_variable_definition(node) if outmost_init = node.initializer if inits = outmost_init.initializers case when node.type.array? check(node.type.base_type, inits.first) when node.type.struct? node.type.members.zip(inits).each do |memb, init| check(memb.type, init) if init end end end end end