-- Ambiguous without ; as foo(print)(a) is a valid call foo = function() end a, b = foo; (print)(a) -- NOT Ambiguous without ; as true(print)(a) is syntactically invalid a, b = true; (print)(a) -- Ambiguous without ; as foo(print)(a) is a valid call a, b = true, foo; (print)(a) -- Obviously not ambiguous without ; a, b = foo; print(a) -- Ambiguous without ; as foo()(print)(a) is a valid call foo(); (print)(a) a, b = foo, true; (print)(a)