def process_bracket_call exp
r = replace(exp)
if r != exp
return r
end
exp.arglist = process_default(exp.arglist)
r = replace(exp)
if r != exp
return r
end
t = process(exp.target.deep_clone)
if t != exp.target
e = exp.deep_clone
e.target = t
r = replace(e)
if r != e
return r
end
else
t = nil
end
if hash? t
if v = process_hash_access(t, exp.first_arg)
v.deep_clone(exp.line)
else
case t.node_type
when :params
exp.target = PARAMS_SEXP.deep_clone(exp.target.line)
when :session
exp.target = SESSION_SEXP.deep_clone(exp.target.line)
when :cookies
exp.target = COOKIES_SEXP.deep_clone(exp.target.line)
end
exp
end
elsif array? t
if v = process_array_access(t, exp.args)
v.deep_clone(exp.line)
else
exp
end
elsif t
exp.target = t
exp
else
if exp.target
exp.target = process_default exp.target
end
exp
end
end