def process_call exp
return exp unless @current_class
return exp if process_call_defn? exp
target = exp.target
if sexp? target
target = process target
end
method = exp.method
first_arg = exp.first_arg
if @current_method.nil? and target.nil?
if first_arg.nil?
case method
when :private, :protected, :public
@visibility = method
when :attr_accessible
@current_class.set_attr_accessible
else
end
else
case method
when :include
@current_class.add_include class_name(first_arg) if @current_class
when :attr_accessible
@current_class.set_attr_accessible exp
when :attr_protected
@current_class.set_attr_protected exp
else
if @current_class
@current_class.add_option method, exp
end
end
end
exp
else
call = make_call target, method, process_all!(exp.args)
call.line(exp.line)
call
end
end