1
0
forked from Mirror/wren
Files
wren/test/language/variable/too_many_locals_nested.wren
Bob Nystrom c5ce6fac46 Fix local variable declarations in the REPL.
A statement like:

  for (i in 1..2)

When run in the REPL declares a local variable ("i"), but not inside
a function or method body. This hit a corner case in the compiler
where it didn't have the correct slot indexes set up.

That corner case is because sometimes when you compile a chunk, local
slot zero is pre-allocated -- either to refer to "this" or to hold the
closure for a function so that it doesn't get GCed while running. But
if you're compiling top-level code, that slot isn't allocated. But top
level code for the REPL *should* be, because that gets invoked like a
function.

To simplify things, *every* compiled chunk now pre-allocates slot zero.
That way, there are fewer cases to keep in mind.

Also fixed an issue where a GC during an import could collected the
imported module body's closure.

Fix #456.
2018-04-27 08:20:49 -07:00

268 lines
6.0 KiB
Plaintext

{
// Slot zero is always taken to hold the closure or receiver.
var a1 = "value"
var a2 = a1
var a3 = a2
var a4 = a3
var a5 = a4
var a6 = a5
var a7 = a6
var a8 = a7
var a9 = a8
var a10 = a9
var a11 = a10
var a12 = a11
var a13 = a12
var a14 = a13
var a15 = a14
{
var a16 = a15
var a17 = a16
var a18 = a17
var a19 = a18
var a20 = a19
var a21 = a20
var a22 = a21
var a23 = a22
var a24 = a23
var a25 = a24
var a26 = a25
var a27 = a26
var a28 = a27
var a29 = a28
var a30 = a29
var a31 = a30
{
var a32 = a31
var a33 = a32
var a34 = a33
var a35 = a34
var a36 = a35
var a37 = a36
var a38 = a37
var a39 = a38
var a40 = a39
var a41 = a40
var a42 = a41
var a43 = a42
var a44 = a43
var a45 = a44
var a46 = a45
var a47 = a46
var a48 = a47
var a49 = a48
var a50 = a49
var a51 = a50
var a52 = a51
var a53 = a52
var a54 = a53
var a55 = a54
var a56 = a55
var a57 = a56
var a58 = a57
var a59 = a58
var a60 = a59
var a61 = a60
var a62 = a61
var a63 = a62
{
var a64 = a63
var a65 = a64
var a66 = a65
var a67 = a66
var a68 = a67
var a69 = a68
var a70 = a69
var a71 = a70
var a72 = a71
var a73 = a72
var a74 = a73
var a75 = a74
var a76 = a75
var a77 = a76
var a78 = a77
var a79 = a78
var a80 = a79
var a81 = a80
var a82 = a81
var a83 = a82
var a84 = a83
var a85 = a84
var a86 = a85
var a87 = a86
var a88 = a87
var a89 = a88
var a90 = a89
var a91 = a90
var a92 = a91
var a93 = a92
var a94 = a93
var a95 = a94
var a96 = a95
var a97 = a96
var a98 = a97
var a99 = a98
var a100 = a99
var a101 = a100
var a102 = a101
var a103 = a102
var a104 = a103
var a105 = a104
var a106 = a105
var a107 = a106
var a108 = a107
var a109 = a108
var a110 = a109
var a111 = a110
var a112 = a111
var a113 = a112
var a114 = a113
var a115 = a114
var a116 = a115
var a117 = a116
var a118 = a117
var a119 = a118
var a120 = a119
var a121 = a120
var a122 = a121
var a123 = a122
var a124 = a123
var a125 = a124
var a126 = a125
var a127 = a126
{
var a128 = a127
var a129 = a128
var a130 = a129
var a131 = a130
var a132 = a131
var a133 = a132
var a134 = a133
var a135 = a134
var a136 = a135
var a137 = a136
var a138 = a137
var a139 = a138
var a140 = a139
var a141 = a140
var a142 = a141
var a143 = a142
var a144 = a143
var a145 = a144
var a146 = a145
var a147 = a146
var a148 = a147
var a149 = a148
var a150 = a149
var a151 = a150
var a152 = a151
var a153 = a152
var a154 = a153
var a155 = a154
var a156 = a155
var a157 = a156
var a158 = a157
var a159 = a158
var a160 = a159
var a161 = a160
var a162 = a161
var a163 = a162
var a164 = a163
var a165 = a164
var a166 = a165
var a167 = a166
var a168 = a167
var a169 = a168
var a170 = a169
var a171 = a170
var a172 = a171
var a173 = a172
var a174 = a173
var a175 = a174
var a176 = a175
var a177 = a176
var a178 = a177
var a179 = a178
var a180 = a179
var a181 = a180
var a182 = a181
var a183 = a182
var a184 = a183
var a185 = a184
var a186 = a185
var a187 = a186
var a188 = a187
var a189 = a188
var a190 = a189
var a191 = a190
var a192 = a191
var a193 = a192
var a194 = a193
var a195 = a194
var a196 = a195
var a197 = a196
var a198 = a197
var a199 = a198
var a200 = a199
var a201 = a200
var a202 = a201
var a203 = a202
var a204 = a203
var a205 = a204
var a206 = a205
var a207 = a206
var a208 = a207
var a209 = a208
var a210 = a209
var a211 = a210
var a212 = a211
var a213 = a212
var a214 = a213
var a215 = a214
var a216 = a215
var a217 = a216
var a218 = a217
var a219 = a218
var a220 = a219
var a221 = a220
var a222 = a221
var a223 = a222
var a224 = a223
var a225 = a224
var a226 = a225
var a227 = a226
var a228 = a227
var a229 = a228
var a230 = a229
var a231 = a230
var a232 = a231
var a233 = a232
var a234 = a233
var a235 = a234
var a236 = a235
var a237 = a236
var a238 = a237
var a239 = a238
var a240 = a239
var a241 = a240
var a242 = a241
var a243 = a242
var a244 = a243
var a245 = a244
var a246 = a245
var a247 = a246
var a248 = a247
var a249 = a248
var a250 = a249
var a251 = a250
var a252 = a251
var a253 = a252
var a254 = a253
var a255 = a254
var a256 = a255 // expect error
}
}
}
}
}