1# proccatch2.tcl --
2#
3#  Test file for compilation.
4#  This file defines four procs, which are both compiled, inside a catch
5#  statement; the last command in the catch triggers an error.
6#  We also define enough variables to push us past 256 objects in the object
7#  table.
8#  The file checks for the following:
9#  The compiled procs cause a new object to be added to the object table;
10#  because this object has an index > 256, it needs 4 bytes of storage in the
11#  bytecodes. Thus, cmpWrite.c:UpdateBytecodes pushes the bytecodes to the
12#  right. In this case, the exception range starts before the place where
13#  bytecodes are shifted, so that the offset does not change. But the size of
14#  the range does, because of the extra bytes. If the size does not get
15#  changed, the last command slips outside the range, and is no longer caught.
16#  The check here is to make sure that UpdateBytecodes updates the exception
17#  ranges when the bytecodes are pushed.
18#
19# Copyright (c) 1998-2000 by Ajuba Solutions.
20# All rights reserved.
21#
22# RCS: @(#) $Id: proccatch2.tcl,v 1.2 2000/05/30 22:19:12 wart Exp $
23
24# make sure dummy is not defined.
25# This catch is safe, because it's done before the procs are defined
26
27catch {unset dummy}
28
29# these statements are here to generate enough objects to push us past the
30# value of 255 for the next available index, which will be used for the
31# "tbcload::bcproc" string object (to replace "proc")
32
33set var0 0
34set var1 1
35set var2 2
36set var3 3
37set var4 4
38set var5 5
39set var6 6
40set var7 7
41set var8 8
42set var9 9
43set var10 10
44set var11 11
45set var12 12
46set var13 13
47set var14 14
48set var15 15
49set var16 16
50set var17 17
51set var18 18
52set var19 19
53set var20 20
54set var21 21
55set var22 22
56set var23 23
57set var24 24
58set var25 25
59set var26 26
60set var27 27
61set var28 28
62set var29 29
63set var30 30
64set var31 31
65set var32 32
66set var33 33
67set var34 34
68set var35 35
69set var36 36
70set var37 37
71set var38 38
72set var39 39
73set var40 40
74set var41 41
75set var42 42
76set var43 43
77set var44 44
78set var45 45
79set var46 46
80set var47 47
81set var48 48
82set var49 49
83set var50 50
84set var51 51
85set var52 52
86set var53 53
87set var54 54
88set var55 55
89set var56 56
90set var57 57
91set var58 58
92set var59 59
93set var60 60
94set var61 61
95set var62 62
96set var63 63
97set var64 64
98
99# the error in the last command should be caught by the catch.
100
101catch {
102    proc a { x } { return "$x : $x" }
103    proc b { x {y dummy} } { return "$x : $y" }
104    proc c { z } { return "$z : $z" }
105    proc d { z {y dummy} } { return "$z : $y" }
106
107    unset dummy
108}
109
110set var65 65
111set var66 66
112set var67 67
113set var68 68
114set var69 69
115set var70 70
116set var71 71
117set var72 72
118set var73 73
119set var74 74
120set var75 75
121set var76 76
122set var77 77
123set var78 78
124set var79 79
125set var80 80
126set var81 81
127set var82 82
128set var83 83
129set var84 84
130set var85 85
131set var86 86
132set var87 87
133set var88 88
134set var89 89
135set var90 90
136set var91 91
137set var92 92
138set var93 93
139set var94 94
140set var95 95
141set var96 96
142set var97 97
143set var98 98
144set var99 99
145set var100 100
146set var101 101
147set var102 102
148set var103 103
149set var104 104
150set var105 105
151set var106 106
152set var107 107
153set var108 108
154set var109 109
155set var110 110
156set var111 111
157set var112 112
158set var113 113
159set var114 114
160set var115 115
161set var116 116
162set var117 117
163set var118 118
164set var119 119
165set var120 120
166set var121 121
167set var122 122
168set var123 123
169set var124 124
170set var125 125
171set var126 126
172set var127 127
173set var128 128
174set var129 129
175set var130 130
176set var131 131
177set var132 132
178set var133 133
179set var134 134
180set var135 135
181set var136 136
182set var137 137
183set var138 138
184set var139 139
185set var140 140
186set var141 141
187set var142 142
188set var143 143
189set var144 144
190set var145 145
191set var146 146
192set var147 147
193set var148 148
194set var149 149
195set var150 150
196set var151 151
197set var152 152
198set var153 153
199set var154 154
200set var155 155
201set var156 156
202set var157 157
203set var158 158
204set var159 159
205set var160 160
206set var161 161
207set var162 162
208set var163 163
209set var164 164
210set var165 165
211set var166 166
212set var167 167
213set var168 168
214set var169 169
215set var170 170
216set var171 171
217set var172 172
218set var173 173
219set var174 174
220set var175 175
221set var176 176
222set var177 177
223set var178 178
224set var179 179
225set var180 180
226set var181 181
227set var182 182
228set var183 183
229set var184 184
230set var185 185
231set var186 186
232set var187 187
233set var188 188
234set var189 189
235set var190 190
236set var191 191
237set var192 192
238set var193 193
239set var194 194
240set var195 195
241set var196 196
242set var197 197
243set var198 198
244set var199 199
245set var200 200
246set var201 201
247set var202 202
248set var203 203
249set var204 204
250set var205 205
251set var206 206
252set var207 207
253set var208 208
254set var209 209
255set var210 210
256set var211 211
257set var212 212
258set var213 213
259set var214 214
260set var215 215
261set var216 216
262set var217 217
263set var218 218
264set var219 219
265set var220 220
266set var221 221
267set var222 222
268set var223 223
269set var224 224
270set var225 225
271set var226 226
272set var227 227
273set var228 228
274set var229 229
275set var230 230
276set var231 231
277set var232 232
278set var233 233
279set var234 234
280set var235 235
281set var236 236
282set var237 237
283set var238 238
284set var239 239
285set var240 240
286set var241 241
287set var242 242
288set var243 243
289set var244 244
290set var245 245
291set var246 246
292set var247 247
293set var248 248
294set var249 249
295set var250 250
296set var251 251
297set var252 252
298set var253 253
299set var254 254
300set var255 255
301set var256 256
302set var257 257
303set var258 258
304set var259 259
305set var260 260
306set var261 261
307set var262 262
308set var263 263
309set var264 264
310set var265 265
311set var266 266
312set var267 267
313set var268 268
314set var269 269
315set var270 270
316set var271 271
317set var272 272
318set var273 273
319set var274 274
320set var275 275
321set var276 276
322set var277 277
323set var278 278
324set var279 279
325set var280 280
326set var281 281
327set var282 282
328set var283 283
329set var284 284
330set var285 285
331set var286 286
332set var287 287
333set var288 288
334set var289 289
335set var290 290
336set var291 291
337set var292 292
338set var293 293
339set var294 294
340set var295 295
341set var296 296
342set var297 297
343set var298 298
344set var299 299
345
346set result TEST
347