Add failing semantic analysis test
Implement check for duplicate variable names
Add test for duplicate local variable declaration
Add lexer error test
Add type mismatch test
Implement type mismatch check
Add parser error test
Add failing test for types of comparison operands
Implement comparison operand type check
Add failing test for inequality comparison
Implement inequality comparison type check
Add failing test for logical comparison
Implement logical comparison type check
Add failing test for method missing check
Implement missing method check
Add failing test for function return type check
Implement function return type check
Add failing test for function call argument types
Make function call argument type test pass
Add undefined variable test & implementation