class AdLint::Exam::CBuiltin::W0107
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 2577 def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_assignment_expr_evaled += T(:check_assignment) end
Private Instance Methods
check_assignment(expr, lhs_var, rhs_var)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2584 def check_assignment(expr, lhs_var, rhs_var) return unless lhs_var.type.pointer? && rhs_var.type.pointer? if rhs_pointee = pointee_of(rhs_var) if rhs_pointee.variable? && rhs_pointee.named? return unless rhs_pointee.binding.memory.dynamic? # NOTE: An array typed parameter can be considered as an alias of the # corresponding argument. So, it is safe to return an address # of the argument. return if rhs_pointee.type.parameter? && rhs_pointee.type.array? if lhs_var.scope.local? && lhs_var.binding.memory.static? W(expr.location) end end end end
interpreter()
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2602 def interpreter @interp end