Method: AdLint::Cpp::FunctionLikeMacro#expand

Defined in:
lib/adlint/cpp/macro.rb

#expand(toks, macro_tbl, repl_ctxt) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/adlint/cpp/macro.rb', line 124

def expand(toks, macro_tbl, repl_ctxt)
  super

  args, * = parse_arguments(toks, 1)
  args = [] if @parameter_names.empty?
  args_hash =
    @parameter_names.zip(args).each_with_object({}) { |(param, arg), hash|
      hash[param] = arg
    }

  rslt_toks = expand_replacement_list(args_hash, toks.first.location,
                                      macro_tbl, repl_ctxt)
  macro_tbl.notify_function_like_macro_replacement(self, toks, args,
                                                   rslt_toks)
  rslt_toks
end