Tests should go into compile_test.go, and the input program should be minimal as possible. There may be more than one test case per bullet point. - [ ] Calling function that is wrong type for the function it is called in should produce error. - [ ] Calling function with args that don't match its signature should produce error (length, basic literal type, function type, func lit type). - [ ] Calling function with option that doesn't match the subtype should produce error. - [ ] Correctly calling function with variadic field in its signature should succeed.