# 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.