class AdLint::Exam::CBuiltin::W0496::AmbiguousExpressionDetector

Public Class Methods

new(phase_ctxt, expr) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10886
def initialize(phase_ctxt, expr)
  @phase_ctxt      = phase_ctxt
  @target_expr     = expr
  @encl_expr_stack = [expr]
  @cond_exprs      = Hash.new(0)
end

Public Instance Methods

execute() click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10893
def execute
  @target_expr.accept(self)
end
visit_conditional_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10903
def visit_conditional_expression(node)
  super
  cur_encl = current_encl_expr
  if @cond_exprs[cur_encl] > 0
    W(cur_encl.head_location)
  end
  @cond_exprs[cur_encl] += 1
end
visit_grouped_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10897
def visit_grouped_expression(node)
  @encl_expr_stack.push(node)
  super
  @encl_expr_stack.pop
end

Private Instance Methods

current_encl_expr() click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10913
def current_encl_expr
  @encl_expr_stack.last
end
suppressors() click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 10925
def suppressors
  @phase_ctxt[:suppressors]
end