class AdLint::Exam::CBuiltin::W0024
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 470 def initialize(phase_ctxt) super @interp = phase_ctxt[:cc1_interpreter] @interp.on_additive_expr_evaled += T(:check_binary) @interp.on_prefix_increment_expr_evaled += T(:check_unary_prefix) @interp.on_postfix_increment_expr_evaled += T(:check_unary_postfix) @interp.on_prefix_decrement_expr_evaled += T(:check_unary_prefix) @interp.on_postfix_decrement_expr_evaled += T(:check_unary_postfix) 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 481 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)).true? W(binary_expr.location) end when rhs_var.type.pointer? && lhs_var.type.scalar? lhs_val = lhs_var.value if lhs_var.value.scalar? && lhs_val.test_must_be_equal_to(scalar_value_of(1)).true? W(binary_expr.location) end end end
check_unary_postfix(postfix_expr, ope_var, *)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 504 def check_unary_postfix(postfix_expr, ope_var, *) if ope_var.type.pointer? W(postfix_expr.location) end end
check_unary_prefix(unary_expr, ope_var, *)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 498 def check_unary_prefix(unary_expr, ope_var, *) if ope_var.type.pointer? W(unary_expr.location) end end
interpreter()
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 510 def interpreter @interp end