Bystroushaak / tinySelf

Self-like language implemented in the RPython language toolkit.
29 stars 3 forks source link

Block parameters keep their mutable state in do: #118

Open Bystroushaak opened 5 years ago

Bystroushaak commented 5 years ago

This is broken (cnt keeps state):

        do: blk = (| size. cnt <- 0. |
            size: self length.

            [cnt < size] whileTrue: [
                blk with: (self at: cnt) With: cnt.
                cnt: cnt + 1.
            ].
        ).

This works:

        do: blk = (| size. cnt. |
            cnt: 0.
            size: self length.

            [cnt < size] whileTrue: [
                blk with: (self at: cnt) With: cnt.
                cnt: cnt + 1.
            ].
        ).