==================
Basic function declaration
==================

function x()
end

---

(chunk
  (fn_stmt
    (name)))

==================
Global function declaration with parameters
==================

function x(foo, bar)
end

---

(chunk
  (fn_stmt
    (name)
    (paramlist
      (param
        (name))
      (param
        (name)))))

==================
Global function declaration with body
==================

function x()
    return true
end

---

(chunk
  (fn_stmt
    (name)
    (block
      (ret_stmt
        (explist
          (boolean))))))

==================
Complex function name declaration
==================

function x.y:z()
end

---

(chunk
  (fn_stmt
    table_name: (name)
    (key
      field_name: (name))
    method_name: (name)))

==================
Local function declaration
==================

local function x()
end

---

(chunk
  (local_fn_stmt
    (name)))

==================
Complex local function declaration
==================

local function foo(a, b) end
local function bar(...) end
local function baz(a, b, ...) end

---

(chunk
  (local_fn_stmt
    (name)
    (paramlist
      (param 
        (name))
      (param 
        (name))))
  (local_fn_stmt
    (name)
    (paramlist
      (param 
        (vararg))))
  (local_fn_stmt
    (name)
    (paramlist
      (param 
        (name))
      (param 
        (name))
      (param 
        (vararg)))))
