test: cover unknown method return types
This commit is contained in:
@@ -2,6 +2,11 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Validate unknown method return types
|
||||
|
||||
- Added focused `claro typecheck` regression coverage for an object method declaring an unsupported `RETURNS` type such as `BANANA`.
|
||||
- The release validator now checks function and method unknown-return-type diagnostics separately.
|
||||
|
||||
### Diagnose unknown declared return types
|
||||
|
||||
- `claro typecheck` now reports a learner-facing error when a function or object method declares an unsupported `RETURNS` type such as `BANANA`.
|
||||
|
||||
@@ -191,6 +191,8 @@ Return declarations must use a known Claro type. If the type name is misspelled,
|
||||
Function square declares an unknown return type BANANA. Use a Claro type such as NUMBER, TEXT, YESNO, LIST, or MAP.
|
||||
```
|
||||
|
||||
The same check applies to methods, so `Player.score RETURNS BANANA` reports `Method Player.score declares an unknown return type BANANA...` instead of allowing a misspelled type into a class definition.
|
||||
|
||||
The unknown-function diagnostic is validated for both modern `DO squre 4` and compatibility `CALL squre WITH 4` calls. Compatibility calls that leave `WITH` empty, such as `CALL greet WITH`, now count as zero arguments, so learners get the same missing-argument guidance as `DO greet` instead of the checker treating the blank as an argument.
|
||||
|
||||
For functions with more than one checked parameter, Claro reports each mismatched argument with the parameter name:
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
CLASS Player
|
||||
TEACH score amount RETURNS BANANA
|
||||
RETURN amount
|
||||
END
|
||||
END
|
||||
@@ -176,6 +176,9 @@ EXPECTED = {
|
||||
"tests/typecheck_invalid_return_type_bad.claro": [
|
||||
"tests/typecheck_invalid_return_type_bad.claro:1: Function square declares an unknown return type BANANA. Use a Claro type such as NUMBER, TEXT, YESNO, LIST, or MAP.",
|
||||
],
|
||||
"tests/typecheck_method_invalid_return_type_bad.claro": [
|
||||
"tests/typecheck_method_invalid_return_type_bad.claro:2: Method Player.score declares an unknown return type BANANA. Use a Claro type such as NUMBER, TEXT, YESNO, LIST, or MAP.",
|
||||
],
|
||||
"tests/typecheck_object_field_unknown_object_bad.claro": [
|
||||
"tests/typecheck_object_field_unknown_object_bad.claro:5: Object player is not known yet. Create it with NEW ClassName player before setting player.score.",
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user