# Invalid Declarations All errors should be collected, printed and exit with 1. Malformed YAML: --- id: fn1 fail ... 1 + 1 Empty YAML: --- ... 1 + 1 Empty YAML and code: --- ... Misses id: --- identifier: fn1 ... 1 + 1 Wrong id (doesn't starts with `%a`): --- id: 1 ... 1 + 1 Wrong id (doesn't follows with `[_%w]`): --- id: f-1 ... 1 + 1 Wrong id (more than 1 word): --- id: f n1 ... 1 + 1 Invalid value: --- id: fn1 shift: "true" ... 1 + 1 Invalid path: --- id: fn1 dump: invalid/path.txt ... 1 + 1 Extra key: --- id: fn1 language: fennel ... 1 + 1 Uknown lang: --- id: fn1 lang: fail ... 1 + 1 Uknown cmd: --- id: fn1 cmd: piton -E -X utf8 ... 1 + 1 Empty code: --- id: fn1 ... Misses arg: --- id: fn1 ... #a + #b Infinite loop: --- id: fn1 args: x: 1 ... `fn1(2)` * #x Invalid code: --- id: fn1 ... false + false # Declarations With Invalid Calls: --- id: fn1 typed: true args: a: 1 b: 2 ... #a * #b # Invalid Calls - `fn1(` never end - `fn1(invalid arg)` - `fn1()` misses args - `fn1(1)` less args - `fn1(1, 2, 3)` extra args - `fn1(x: 3, y: 4)` wrong kwargs - `fn1(1, a: 2)` mixed arg and kwarg - `fn1(a: 1.0, b: 2.0)` misses type - `fn2()` not declared