class AdLint::Exam::CBuiltin::W0023
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 431 def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_additive_expr_evaled += T(:check_binary) @interp.on_multiplicative_expr_evaled += T(:check_binary) end
Private Instance Methods
check_binary(binary_expr, lhs_var, rhs_var, *)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 439 def check_binary(binary_expr, lhs_var, rhs_var, *) case when lhs_var.type.pointer? && rhs_var.type.scalar? rhs_val = rhs_var.value if rhs_var.value.scalar? && rhs_val.test_must_be_equal_to(scalar_value_of(1)).false? W(binary_expr.location) end when rhs_var.type.pointer? && lhs_var.type.scalar? lhs_val = lhs_var.value if lhs_val.scalar? && lhs_val.test_must_be_equal_to(scalar_value_of(1)).false? W(binary_expr.location) end end end
interpreter()
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 456 def interpreter @interp end