test: cover unknown method return types
This commit is contained in:
@@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
## Unreleased
|
## 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
|
### 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`.
|
- `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.
|
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.
|
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:
|
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": [
|
||||||
"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_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": [
|
||||||
"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.",
|
"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