L1. Two vars, consts, enums, properties or events of one name in a program are an error naming both places (functions already were); the first used to win silently. A let / var of a name its own block already declared is an error (it used to shadow). A function with a result type whose body can reach its end without a return is an error, asked structurally of the body - a return, an if/else or a match with a default arm whose every branch ends - rather than handing back whatever the result slot held. The game, the lab and every package example pass all three; the lab had one harmless shadow, and the game's split screens had two real bugs of the kind. examples/rejected/ holds the four refusals, checked by the test runner's new reject_case. Seed regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
9 lines
278 B
Text
9 lines
278 B
Text
# redeclared_local.ludic - one block declaring a name twice. The second used to shadow the first
|
|
# silently: a settings page compared its vegetation setting against the volumetric one for it.
|
|
program RedeclaredLocal {
|
|
entry {
|
|
let v0 = 1
|
|
let v0 = 2
|
|
print(v0)
|
|
}
|
|
}
|