class Opal::Fragment

def location

def location
  case
  when !@sexp
    nil
  when @sexp.type == :send
    loc = @sexp.loc
    if loc.respond_to? :dot # a>.b || a>+b / >a / a>[b]
      loc.dot || loc.selector
    elsif loc.respond_to? :operator # a >|= b
      loc.operator
    else
      @sexp
    end
  when @sexp.type == :iter
    if loc.respond_to? :begin
      @sexp.loc.begin # [1,2].each >{ }
    else
      @sexp
    end
  else
    @sexp
  end
end