`delete` statement leaves its result on the stack
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 79/100
Línea de trabajo
Empieza por Action::stack_delta en crates/rascal/src/internal/as2_pcode/pcode.rs en las líneas enlazadas y luego sigue cómo codegen usa los deltas y truncate_stack para las sentencias de expresión. Comprueba el comportamiento generado de delete usado como sentencia frente a la reproducción del issue; el trabajo está terminado cuando el bucle visita a y b una vez cada uno.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The result of a delete used as a statement is never popped. Inside a for..in loop, the leftover values get enumerated, so the loop doesn't end.
var o = {a: 1, b: 2};
var n = 0;
for (var k in o) {
delete o.nothing;
trace(k);
if (++n == 5) {
trace("too many iterations");
break;
}
}
Expected: a and b, once each.
Actual, in Flash Player (Rascal 0.3.6, SWF 8):
a
false
false
false
false
too many iterations
Assigning the result (var d = delete o.nothing;) works around it.
The cause seems to be the stack deltas in Action::stack_delta:
Both actions push a boolean result, so these should be -1 (pops an object and a name) and 0 (pops a name). The codegen then believes the stack is already balanced, and truncate_stack emits no Pop for the expression statement.
- Lenguaje dominante
- Rust
- Estrellas
- 22
- Forks
- 2
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Dinnerbone/Rascal
-
`swf` upgrade to 0.4.0Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Dinnerbone/Rascal#91 · 2 reacciones ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Dinnerbone/Rascal#93 ·
-
__bytecode__ support?Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
Dinnerbone/Rascal#88 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
Dinnerbone/Rascal#87 · 1 comentario ·
-
Cannot have comments in `@PCode`Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
Dinnerbone/Rascal#76 ·
Todos los issues de Dinnerbone/Rascal
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
rubys/roundhouse#1917 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
[cosmic-applet-battery] Division by zero displays NaN% when UPower reports max_brightness = 0Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
pop-os/cosmic-applets#1619 ·
Los mantenedores suelen responder en 3 días
-
binding:python bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día