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