# Declarations -- fn1() 1 + 2 + 3 -- fn2(n) #n .. " " .. #n) -- fn3(a, b) #a * #b # Invalid Declarations -- misses end: fn4( 1 + 2 + 3 -- fn5(invalid arg) 4 + 5 + 6 -- misses arg: fn6() #n .. " " .. #n -- misses separator: fn7(a b) #a * #b # Invalid Calls * fn1(1) adds arg * fn1( never end * fn1(invalid arg) * fn2() misses arg * fn2(a: 3) wrong kwarg * fn3(1 2) misses separator * fn3(1, 2, 3) wrong args number * fn3(1, b: 2) mixed arg and kwarg * fn4() fn5() not declared Invalid calls and declarations generate and collects errors.