Commit 13096b1
fix(script): comparar contra un nombre de bicho ya no falla en silencio
?foe.kind = mosquito parseaba sin un solo error y era falso para siempre. Como
el idioma no tenia literales de texto, mosquito se buscaba como ruta del mundo,
volvia undefined, y nunca era igual a nada. El jugador escribia lo obvio, no
recibia ninguna queja, y perdia la pelea sin forma de ver por que.
Un script sintacticamente valido y semanticamente muerto es la peor respuesta
que puede dar este idioma, porque el juego entero consiste en mirar una regla
fallar y entender por que.
Ahora un nombre suelto que no nombra nada del mundo se lee como texto.
Descarte las comillas, que era el otro arreglo posible. El punto del idioma es
que alguien que nunca programo pueda escribir una regla, y acordarse de
entrecomillar un lado de la comparacion y el otro no es exactamente lo que le
ensena a la gente que es mala en esto.
Un token con puntos nunca es texto: foe.dsit es un typo de una ruta, no una
palabra, asi que sigue dando falso en vez de compararse contra la cadena
"foe.dsit" y pasar por casualidad.
Verificado: los seis casos andan, incluidos los numeros, el != y el typo de
ruta. 258 asserts del repo siguen pasando.
Escrito despues del cierre del hackathon, lo aclaro en vez de disimularlo.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 763d945 commit 13096b1
1 file changed
Lines changed: 24 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
177 | 200 | | |
178 | 201 | | |
179 | 202 | | |
| |||
0 commit comments