`delete` statement leaves its result on the stack
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 79/100
Hướng nghiên cứu
Bắt đầu với Action::stack_delta trong crates/rascal/src/internal/as2_pcode/pcode.rs tại các dòng được liên kết, sau đó lần theo cách codegen sử dụng các delta và truncate_stack cho các câu lệnh biểu thức. Đối chiếu hành vi được tạo ra khi delete được dùng như một câu lệnh với trường hợp tái hiện trong issue; hoàn tất khi vòng lặp duyệt a và b mỗi giá trị một lần.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Rust
- Star
- 22
- Fork
- 2
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Dinnerbone/Rascal
-
`swf` upgrade to 0.4.0Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Dinnerbone/Rascal#91 · 2 reaction ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
Dinnerbone/Rascal#93 ·
-
__bytecode__ support?Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 30/100
Dinnerbone/Rascal#88 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
Dinnerbone/Rascal#87 · 1 bình luận ·
-
Cannot have comments in `@PCode`Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
Dinnerbone/Rascal#76 ·
Tất cả issue của Dinnerbone/Rascal
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
rubys/roundhouse#1917 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[cosmic-applet-battery] Division by zero displays NaN% when UPower reports max_brightness = 0Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
pop-os/cosmic-applets#1619 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
binding:python bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày