Tcl Source Code

Hex Artifact Content
Login

Artifact 044c08262291722553575d90b401e4feb6962d2f:

Attachment "2868499.patch" to ticket [2868499fff] added by dgp 2010-03-31 22:51:08.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 63 61 74 63 68  Index: doc/catch
0010: 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .n.=============
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
0060: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
0070: 6c 2f 64 6f 63 2f 63 61 74 63 68 2e 6e 2c 76 0a  l/doc/catch.n,v.
0080: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
0090: 69 6f 6e 20 31 2e 32 33 0a 64 69 66 66 20 2d 75  ion 1.23.diff -u
00a0: 20 2d 72 31 2e 32 33 20 63 61 74 63 68 2e 6e 0a   -r1.23 catch.n.
00b0: 2d 2d 2d 20 64 6f 63 2f 63 61 74 63 68 2e 6e 09  --- doc/catch.n.
00c0: 31 33 20 4a 61 6e 20 32 30 31 30 20 31 32 3a 30  13 Jan 2010 12:0
00d0: 38 3a 33 30 20 2d 30 30 30 30 09 31 2e 32 33 0a  8:30 -0000.1.23.
00e0: 2b 2b 2b 20 64 6f 63 2f 63 61 74 63 68 2e 6e 09  +++ doc/catch.n.
00f0: 33 31 20 4d 61 72 20 32 30 31 30 20 31 35 3a 34  31 Mar 2010 15:4
0100: 36 3a 30 34 20 2d 30 30 30 30 0a 40 40 20 2d 35  6:04 -0000.@@ -5
0110: 34 2c 32 32 20 2b 35 34 2c 33 36 20 40 40 0a 20  4,22 +54,36 @@. 
0120: 74 68 65 20 5c 66 42 5c 2d 6c 65 76 65 6c 5c 66  the \fB\-level\f
0130: 52 20 61 6e 64 20 5c 66 42 5c 2d 63 6f 64 65 5c  R and \fB\-code\
0140: 66 52 20 65 6e 74 72 69 65 73 20 62 65 20 73 6f  fR entries be so
0150: 6d 65 74 68 69 6e 67 20 65 6c 73 65 2c 20 61 73  mething else, as
0160: 0a 20 66 75 72 74 68 65 72 20 64 65 73 63 72 69  . further descri
0170: 62 65 64 20 69 6e 20 74 68 65 20 64 6f 63 75 6d  bed in the docum
0180: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  entation for the
0190: 20 5c 66 42 72 65 74 75 72 6e 5c 66 52 20 63 6f   \fBreturn\fR co
01a0: 6d 6d 61 6e 64 2e 0a 20 2e 50 50 0a 2d 57 68 65  mmand.. .PP.-Whe
01b0: 6e 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64  n the return cod
01c0: 65 20 66 72 6f 6d 20 65 76 61 6c 75 61 74 69 6f  e from evaluatio
01d0: 6e 20 6f 66 20 5c 66 49 73 63 72 69 70 74 5c 66  n of \fIscript\f
01e0: 52 20 69 73 20 5c 66 42 54 43 4c 5f 45 52 52 4f  R is \fBTCL_ERRO
01f0: 52 5c 66 52 2c 0a 2d 74 68 72 65 65 20 61 64 64  R\fR,.-three add
0200: 69 74 69 6f 6e 61 6c 20 65 6e 74 72 69 65 73 20  itional entries 
0210: 61 72 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74  are defined in t
0220: 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20 6f 66  he dictionary of
0230: 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 73 0a   return options.
0240: 2d 73 74 6f 72 65 64 20 69 6e 20 5c 66 49 6f 70  -stored in \fIop
0250: 74 69 6f 6e 73 56 61 72 4e 61 6d 65 5c 66 52 3a  tionsVarName\fR:
0260: 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66 6f 5c   \fB\-errorinfo\
0270: 66 52 2c 20 5c 66 42 5c 2d 65 72 72 6f 72 63 6f  fR, \fB\-errorco
0280: 64 65 5c 66 52 2c 20 0a 2d 61 6e 64 20 5c 66 42  de\fR, .-and \fB
0290: 5c 2d 65 72 72 6f 72 6c 69 6e 65 5c 66 52 2e 20  \-errorline\fR. 
02a0: 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   The value of th
02b0: 65 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66 6f  e \fB\-errorinfo
02c0: 5c 66 52 20 65 6e 74 72 79 0a 2d 69 73 20 61 20  \fR entry.-is a 
02d0: 66 6f 72 6d 61 74 74 65 64 20 73 74 61 63 6b 20  formatted stack 
02e0: 74 72 61 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  trace containing
02f0: 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f   more informatio
0300: 6e 20 61 62 6f 75 74 0a 2d 74 68 65 20 63 6f 6e  n about.-the con
0310: 74 65 78 74 20 69 6e 20 77 68 69 63 68 20 74 68  text in which th
0320: 65 20 65 72 72 6f 72 20 68 61 70 70 65 6e 65 64  e error happened
0330: 2e 20 20 54 68 65 20 66 6f 72 6d 61 74 74 65 64  .  The formatted
0340: 20 73 74 61 63 6b 0a 2d 74 72 61 63 65 20 69 73   stack.-trace is
0350: 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 72 65 61   meant to be rea
0360: 64 20 62 79 20 61 20 70 65 72 73 6f 6e 2e 20 20  d by a person.  
0370: 54 68 65 20 76 61 6c 75 65 20 6f 66 0a 2d 74 68  The value of.-th
0380: 65 20 5c 66 42 5c 2d 65 72 72 6f 72 63 6f 64 65  e \fB\-errorcode
0390: 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61 64 64  \fR entry is add
03a0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
03b0: 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0a 2d 65  ion about the.-e
03c0: 72 72 6f 72 20 73 74 6f 72 65 64 20 61 73 20 61  rror stored as a
03d0: 20 6c 69 73 74 2e 20 20 54 68 65 20 5c 66 42 5c   list.  The \fB\
03e0: 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20 76 61  -errorcode\fR va
03f0: 6c 75 65 20 69 73 20 6d 65 61 6e 74 20 74 6f 0a  lue is meant to.
0400: 2d 62 65 20 66 75 72 74 68 65 72 20 70 72 6f 63  -be further proc
0410: 65 73 73 65 64 20 62 79 20 70 72 6f 67 72 61 6d  essed by program
0420: 73 2c 20 61 6e 64 20 6d 61 79 20 6e 6f 74 20 62  s, and may not b
0430: 65 20 70 61 72 74 69 63 75 6c 61 72 6c 79 0a 2d  e particularly.-
0440: 72 65 61 64 61 62 6c 65 20 62 79 20 70 65 6f 70  readable by peop
0450: 6c 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20 6f  le.  The value o
0460: 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72  f the \fB\-error
0470: 6c 69 6e 65 5c 66 52 20 65 6e 74 72 79 0a 2d 69  line\fR entry.-i
0480: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 64  s an integer ind
0490: 69 63 61 74 69 6e 67 20 77 68 69 63 68 20 6c 69  icating which li
04a0: 6e 65 20 6f 66 20 5c 66 49 73 63 72 69 70 74 5c  ne of \fIscript\
04b0: 66 52 20 77 61 73 20 62 65 69 6e 67 0a 2d 65 76  fR was being.-ev
04c0: 61 6c 75 61 74 65 64 20 77 68 65 6e 20 74 68 65  aluated when the
04d0: 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 2e   error occurred.
04e0: 20 20 54 68 65 20 76 61 6c 75 65 73 20 6f 66 20    The values of 
04f0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e  the \fB\-errorin
0500: 66 6f 5c 66 52 0a 2d 61 6e 64 20 5c 66 42 5c 2d  fo\fR.-and \fB\-
0510: 65 72 72 6f 72 63 6f 64 65 5c 66 52 20 65 6e 74  errorcode\fR ent
0520: 72 69 65 73 20 6f 66 20 74 68 65 20 6d 6f 73 74  ries of the most
0530: 20 72 65 63 65 6e 74 20 65 72 72 6f 72 20 61 72   recent error ar
0540: 65 20 61 6c 73 6f 0a 2d 61 76 61 69 6c 61 62 6c  e also.-availabl
0550: 65 20 61 73 20 76 61 6c 75 65 73 20 6f 66 20 74  e as values of t
0560: 68 65 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62  he global variab
0570: 6c 65 73 20 5c 66 42 3a 3a 65 72 72 6f 72 49 6e  les \fB::errorIn
0580: 66 6f 5c 66 52 0a 2d 61 6e 64 20 5c 66 42 3a 3a  fo\fR.-and \fB::
0590: 65 72 72 6f 72 43 6f 64 65 5c 66 52 20 72 65 73  errorCode\fR res
05a0: 70 65 63 74 69 76 65 6c 79 2e 0a 2b 57 68 65 6e  pectively..+When
05b0: 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65   the return code
05c0: 20 66 72 6f 6d 20 65 76 61 6c 75 61 74 69 6f 6e   from evaluation
05d0: 20 6f 66 20 5c 66 49 73 63 72 69 70 74 5c 66 52   of \fIscript\fR
05e0: 20 69 73 0a 2b 5c 66 42 54 43 4c 5f 45 52 52 4f   is.+\fBTCL_ERRO
05f0: 52 5c 66 52 2c 20 66 6f 75 72 20 61 64 64 69 74  R\fR, four addit
0600: 69 6f 6e 61 6c 20 65 6e 74 72 69 65 73 20 61 72  ional entries ar
0610: 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  e defined in the
0620: 20 64 69 63 74 69 6f 6e 61 72 79 0a 2b 6f 66 20   dictionary.+of 
0630: 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 73 20 73  return options s
0640: 74 6f 72 65 64 20 69 6e 20 5c 66 49 6f 70 74 69  tored in \fIopti
0650: 6f 6e 73 56 61 72 4e 61 6d 65 5c 66 52 3a 20 5c  onsVarName\fR: \
0660: 66 42 5c 2d 65 72 72 6f 72 69 6e 66 6f 5c 66 52  fB\-errorinfo\fR
0670: 2c 0a 2b 5c 66 42 5c 2d 65 72 72 6f 72 63 6f 64  ,.+\fB\-errorcod
0680: 65 5c 66 52 2c 20 5c 66 42 5c 2d 65 72 72 6f 72  e\fR, \fB\-error
0690: 6c 69 6e 65 5c 66 52 2c 20 61 6e 64 20 5c 66 42  line\fR, and \fB
06a0: 5c 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66 52 2e  \-errorstack\fR.
06b0: 20 20 54 68 65 0a 2b 76 61 6c 75 65 20 6f 66 20    The.+value of 
06c0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e  the \fB\-errorin
06d0: 66 6f 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61  fo\fR entry is a
06e0: 20 66 6f 72 6d 61 74 74 65 64 20 73 74 61 63 6b   formatted stack
06f0: 20 74 72 61 63 65 0a 2b 63 6f 6e 74 61 69 6e 69   trace.+containi
0700: 6e 67 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74  ng more informat
0710: 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63 6f  ion about the co
0720: 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68 20 74  ntext in which t
0730: 68 65 20 65 72 72 6f 72 0a 2b 68 61 70 70 65 6e  he error.+happen
0740: 65 64 2e 20 20 54 68 65 20 66 6f 72 6d 61 74 74  ed.  The formatt
0750: 65 64 20 73 74 61 63 6b 20 74 72 61 63 65 20 69  ed stack trace i
0760: 73 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 72 65  s meant to be re
0770: 61 64 20 62 79 20 61 20 70 65 72 73 6f 6e 2e 0a  ad by a person..
0780: 2b 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68  +The value of th
0790: 65 20 5c 66 42 5c 2d 65 72 72 6f 72 63 6f 64 65  e \fB\-errorcode
07a0: 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61 64 64  \fR entry is add
07b0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
07c0: 69 6f 6e 0a 2b 61 62 6f 75 74 20 74 68 65 20 65  ion.+about the e
07d0: 72 72 6f 72 20 73 74 6f 72 65 64 20 61 73 20 61  rror stored as a
07e0: 20 6c 69 73 74 2e 20 20 54 68 65 20 5c 66 42 5c   list.  The \fB\
07f0: 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20 76 61  -errorcode\fR va
0800: 6c 75 65 20 69 73 0a 2b 6d 65 61 6e 74 20 74 6f  lue is.+meant to
0810: 20 62 65 20 66 75 72 74 68 65 72 20 70 72 6f 63   be further proc
0820: 65 73 73 65 64 20 62 79 20 70 72 6f 67 72 61 6d  essed by program
0830: 73 2c 20 61 6e 64 20 6d 61 79 20 6e 6f 74 20 62  s, and may not b
0840: 65 20 70 61 72 74 69 63 75 6c 61 72 6c 79 0a 2b  e particularly.+
0850: 72 65 61 64 61 62 6c 65 20 62 79 20 70 65 6f 70  readable by peop
0860: 6c 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20 6f  le.  The value o
0870: 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72  f the \fB\-error
0880: 6c 69 6e 65 5c 66 52 20 65 6e 74 72 79 20 69 73  line\fR entry is
0890: 20 61 6e 0a 2b 69 6e 74 65 67 65 72 20 69 6e 64   an.+integer ind
08a0: 69 63 61 74 69 6e 67 20 77 68 69 63 68 20 6c 69  icating which li
08b0: 6e 65 20 6f 66 20 5c 66 49 73 63 72 69 70 74 5c  ne of \fIscript\
08c0: 66 52 20 77 61 73 20 62 65 69 6e 67 20 65 76 61  fR was being eva
08d0: 6c 75 61 74 65 64 20 77 68 65 6e 0a 2b 74 68 65  luated when.+the
08e0: 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 2e   error occurred.
08f0: 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74    The value of t
0900: 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 73 74 61  he \fB\-errorsta
0910: 63 6b 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61  ck\fR entry is a
0920: 6e 0a 2b 65 76 65 6e 2d 73 69 7a 65 64 20 6c 69  n.+even-sized li
0930: 73 74 20 6d 61 64 65 20 6f 66 20 74 6f 6b 65 6e  st made of token
0940: 2d 70 61 72 61 6d 65 74 65 72 20 70 61 69 72 73  -parameter pairs
0950: 20 61 63 63 75 6d 75 6c 61 74 65 64 20 77 68 69   accumulated whi
0960: 6c 65 0a 2b 75 6e 77 69 6e 64 69 6e 67 20 74 68  le.+unwinding th
0970: 65 20 73 74 61 63 6b 2e 20 54 68 65 20 74 6f 6b  e stack. The tok
0980: 65 6e 20 6d 61 79 20 62 65 20 22 43 41 4c 4c 22  en may be "CALL"
0990: 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20  , in which case 
09a0: 74 68 65 0a 2b 70 61 72 61 6d 65 74 65 72 20 69  the.+parameter i
09b0: 73 20 61 20 6c 69 73 74 20 6d 61 64 65 20 6f 66  s a list made of
09c0: 20 74 68 65 20 70 72 6f 63 20 6e 61 6d 65 20 61   the proc name a
09d0: 6e 64 20 61 72 67 75 6d 65 6e 74 73 20 61 74 20  nd arguments at 
09e0: 74 68 65 0a 2b 63 6f 72 72 65 73 70 6f 6e 64 69  the.+correspondi
09f0: 6e 67 20 6c 65 76 65 6c 3b 20 6f 72 20 69 74 20  ng level; or it 
0a00: 6d 61 79 20 62 65 20 22 55 50 22 2c 20 69 6e 20  may be "UP", in 
0a10: 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 70  which case the p
0a20: 61 72 61 6d 65 74 65 72 20 69 73 0a 2b 74 68 65  arameter is.+the
0a30: 20 72 65 6c 61 74 69 76 65 20 5b 75 70 6c 65 76   relative [uplev
0a40: 65 6c 5d 20 6f 66 20 74 68 65 20 70 72 65 76 69  el] of the previ
0a50: 6f 75 73 20 43 41 4c 4c 2e 20 54 68 65 20 73 61  ous CALL. The sa
0a60: 6c 69 65 6e 74 20 64 69 66 66 65 72 65 6e 63 65  lient difference
0a70: 73 0a 2b 77 72 74 20 2d 65 72 72 6f 72 69 6e 66  s.+wrt -errorinf
0a80: 6f 20 61 72 65 20 74 68 61 74 20 28 31 29 20 69  o are that (1) i
0a90: 74 20 69 73 20 61 20 6d 61 63 68 69 6e 65 2d 72  t is a machine-r
0aa0: 65 61 64 61 62 6c 65 20 66 6f 72 6d 20 61 6d 65  eadable form ame
0ab0: 6e 61 62 6c 65 20 74 6f 0a 2b 5b 66 6f 72 65 61  nable to.+[forea
0ac0: 63 68 20 7b 74 6f 6b 20 70 72 6d 7d 20 2e 2e 2e  ch {tok prm} ...
0ad0: 5d 2c 20 28 32 29 20 69 74 20 63 6f 6e 74 61 69  ], (2) it contai
0ae0: 6e 73 20 74 68 65 20 74 72 75 65 20 28 73 75 62  ns the true (sub
0af0: 73 74 69 74 75 74 65 64 29 20 76 61 6c 75 65 73  stituted) values
0b00: 0a 2b 70 61 73 73 65 64 20 74 6f 20 74 68 65 20  .+passed to the 
0b10: 66 75 6e 63 74 69 6f 6e 73 2c 20 69 6e 73 74 65  functions, inste
0b20: 61 64 20 6f 66 20 74 68 65 20 73 74 61 74 69 63  ad of the static
0b30: 20 74 65 78 74 20 6f 66 20 74 68 65 20 63 61 6c   text of the cal
0b40: 6c 69 6e 67 0a 2b 73 69 74 65 73 2c 20 61 6e 64  ling.+sites, and
0b50: 20 28 33 29 20 69 74 20 69 73 20 63 6f 61 72 73   (3) it is coars
0b60: 65 72 2d 67 72 61 69 6e 65 64 2c 20 77 69 74 68  er-grained, with
0b70: 20 6f 6e 6c 79 20 6f 6e 65 20 65 6c 65 6d 65 6e   only one elemen
0b80: 74 20 70 65 72 20 73 74 61 63 6b 0a 2b 66 72 61  t per stack.+fra
0b90: 6d 65 20 28 6c 69 6b 65 20 70 72 6f 63 73 3b 20  me (like procs; 
0ba0: 6e 6f 20 73 65 70 61 72 61 74 65 20 65 6c 65 6d  no separate elem
0bb0: 65 6e 74 73 20 66 6f 72 20 5b 66 6f 72 65 61 63  ents for [foreac
0bc0: 68 5d 20 63 6f 6e 73 74 72 75 63 74 73 20 66 6f  h] constructs fo
0bd0: 72 0a 2b 65 78 61 6d 70 6c 65 29 2e 0a 2b 0a 2b  r.+example)..+.+
0be0: 54 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68  The values of th
0bf0: 65 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66 6f  e \fB\-errorinfo
0c00: 5c 66 52 20 61 6e 64 20 5c 66 42 5c 2d 65 72 72  \fR and \fB\-err
0c10: 6f 72 63 6f 64 65 5c 66 52 20 65 6e 74 72 69 65  orcode\fR entrie
0c20: 73 20 6f 66 0a 2b 74 68 65 20 6d 6f 73 74 20 72  s of.+the most r
0c30: 65 63 65 6e 74 20 65 72 72 6f 72 20 61 72 65 20  ecent error are 
0c40: 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 61  also available a
0c50: 73 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20  s values of the 
0c60: 67 6c 6f 62 61 6c 0a 2b 76 61 72 69 61 62 6c 65  global.+variable
0c70: 73 20 5c 66 42 3a 3a 65 72 72 6f 72 49 6e 66 6f  s \fB::errorInfo
0c80: 5c 66 52 20 61 6e 64 20 5c 66 42 3a 3a 65 72 72  \fR and \fB::err
0c90: 6f 72 43 6f 64 65 5c 66 52 20 72 65 73 70 65 63  orCode\fR respec
0ca0: 74 69 76 65 6c 79 2e 20 54 68 65 0a 2b 76 61 6c  tively. The.+val
0cb0: 75 65 20 6f 66 20 74 68 65 20 5c 66 42 5c 2d 65  ue of the \fB\-e
0cc0: 72 72 6f 72 73 74 61 63 6b 5c 66 52 20 65 6e 74  rrorstack\fR ent
0cd0: 72 79 20 73 75 72 66 61 63 65 73 20 61 73 20 5c  ry surfaces as \
0ce0: 66 42 69 6e 66 6f 0a 2b 65 72 72 6f 72 73 74 61  fBinfo.+errorsta
0cf0: 63 6b 5c 66 52 2e 0a 20 2e 50 50 0a 20 54 63 6c  ck\fR.. .PP. Tcl
0d00: 20 70 61 63 6b 61 67 65 73 20 6d 61 79 20 70 72   packages may pr
0d10: 6f 76 69 64 65 20 63 6f 6d 6d 61 6e 64 73 20 74  ovide commands t
0d20: 68 61 74 20 73 65 74 20 6f 74 68 65 72 20 65 6e  hat set other en
0d30: 74 72 69 65 73 20 69 6e 20 74 68 65 0a 20 64 69  tries in the. di
0d40: 63 74 69 6f 6e 61 72 79 20 6f 66 20 72 65 74 75  ctionary of retu
0d50: 72 6e 20 6f 70 74 69 6f 6e 73 2c 20 61 6e 64 20  rn options, and 
0d60: 74 68 65 20 5c 66 42 72 65 74 75 72 6e 5c 66 52  the \fBreturn\fR
0d70: 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 62 65 0a   command may be.
0d80: 49 6e 64 65 78 3a 20 64 6f 63 2f 69 6e 66 6f 2e  Index: doc/info.
0d90: 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  n.==============
0da0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0db0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0dc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0dd0: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
0de0: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
0df0: 2f 64 6f 63 2f 69 6e 66 6f 2e 6e 2c 76 0a 72 65  /doc/info.n,v.re
0e00: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
0e10: 6e 20 31 2e 33 36 0a 64 69 66 66 20 2d 75 20 2d  n 1.36.diff -u -
0e20: 72 31 2e 33 36 20 69 6e 66 6f 2e 6e 0a 2d 2d 2d  r1.36 info.n.---
0e30: 20 64 6f 63 2f 69 6e 66 6f 2e 6e 09 32 34 20 4d   doc/info.n.24 M
0e40: 61 72 20 32 30 31 30 20 31 33 3a 32 31 3a 31 31  ar 2010 13:21:11
0e50: 20 2d 30 30 30 30 09 31 2e 33 36 0a 2b 2b 2b 20   -0000.1.36.+++ 
0e60: 64 6f 63 2f 69 6e 66 6f 2e 6e 09 33 31 20 4d 61  doc/info.n.31 Ma
0e70: 72 20 32 30 31 30 20 31 35 3a 34 36 3a 30 34 20  r 2010 15:46:04 
0e80: 2d 30 30 30 30 0a 40 40 20 2d 39 34 2c 36 20 2b  -0000.@@ -94,6 +
0e90: 39 34 2c 31 36 20 40 40 0a 20 4f 74 68 65 72 77  94,16 @@. Otherw
0ea0: 69 73 65 20 69 74 20 72 65 74 75 72 6e 73 20 5c  ise it returns \
0eb0: 66 42 31 5c 66 52 20 61 6e 64 20 70 6c 61 63 65  fB1\fR and place
0ec0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  s the default va
0ed0: 6c 75 65 20 6f 66 20 5c 66 49 61 72 67 5c 66 52  lue of \fIarg\fR
0ee0: 0a 20 69 6e 74 6f 20 76 61 72 69 61 62 6c 65 20  . into variable 
0ef0: 5c 66 49 76 61 72 6e 61 6d 65 5c 66 52 2e 0a 20  \fIvarname\fR.. 
0f00: 2e 54 50 0a 2b 5c 66 42 69 6e 66 6f 20 65 72 72  .TP.+\fBinfo err
0f10: 6f 72 73 74 61 63 6b 20 5c 66 52 3f 5c 66 49 69  orstack \fR?\fIi
0f20: 6e 74 65 72 70 5c 66 52 3f 0a 2b 2e 0a 2b 52 65  nterp\fR?.+..+Re
0f30: 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20  turns a list of 
0f40: 6c 69 73 74 73 20 6d 61 64 65 20 6f 66 20 74 68  lists made of th
0f50: 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 73  e function names
0f60: 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 20 61   and arguments a
0f70: 74 0a 2b 65 61 63 68 20 6c 65 76 65 6c 20 66 72  t.+each level fr
0f80: 6f 6d 20 74 68 65 20 63 61 6c 6c 20 73 74 61 63  om the call stac
0f90: 6b 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65 72  k of the last er
0fa0: 72 6f 72 20 69 6e 20 74 68 65 20 67 69 76 65 6e  ror in the given
0fb0: 0a 2b 5c 66 49 69 6e 74 65 72 70 5c 66 52 2c 20  .+\fIinterp\fR, 
0fc0: 6f 72 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  or in the curren
0fd0: 74 20 6f 6e 65 20 69 66 20 6e 6f 74 20 73 70 65  t one if not spe
0fe0: 63 69 66 69 65 64 2e 20 20 54 68 69 73 0a 2b 69  cified.  This.+i
0ff0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 61 6c  nformation is al
1000: 73 6f 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68  so present in th
1010: 65 20 2d 65 72 72 6f 72 73 74 61 63 6b 20 65 6e  e -errorstack en
1020: 74 72 79 20 6f 66 20 74 68 65 20 6f 70 74 69 6f  try of the optio
1030: 6e 73 0a 2b 64 69 63 74 69 6f 6e 61 72 79 20 72  ns.+dictionary r
1040: 65 74 75 72 6e 65 64 20 62 79 20 33 2d 61 72 67  eturned by 3-arg
1050: 20 5c 66 42 63 61 74 63 68 5c 66 52 3b 20 5c 66   \fBcatch\fR; \f
1060: 42 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 6b  Binfo errorstack
1070: 5c 66 52 20 69 73 20 61 0a 2b 63 6f 6e 76 65 6e  \fR is a.+conven
1080: 69 65 6e 74 20 77 61 79 20 6f 66 20 72 65 74 72  ient way of retr
1090: 69 65 76 69 6e 67 20 69 74 20 66 6f 72 20 75 6e  ieving it for un
10a0: 63 61 75 67 68 74 20 65 72 72 6f 72 73 20 61 74  caught errors at
10b0: 20 74 6f 70 6c 65 76 65 6c 20 69 6e 20 61 6e 0a   toplevel in an.
10c0: 2b 69 6e 74 65 72 61 63 74 69 76 65 20 74 63 6c  +interactive tcl
10d0: 73 68 2e 0a 2b 2e 54 50 0a 20 5c 66 42 69 6e 66  sh..+.TP. \fBinf
10e0: 6f 20 65 78 69 73 74 73 20 5c 66 49 76 61 72 4e  o exists \fIvarN
10f0: 61 6d 65 5c 66 52 0a 20 2e 0a 20 52 65 74 75 72  ame\fR. .. Retur
1100: 6e 73 20 5c 66 42 31 5c 66 52 20 69 66 20 74 68  ns \fB1\fR if th
1110: 65 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 64  e variable named
1120: 20 5c 66 49 76 61 72 4e 61 6d 65 5c 66 52 20 65   \fIvarName\fR e
1130: 78 69 73 74 73 20 69 6e 20 74 68 65 0a 49 6e 64  xists in the.Ind
1140: 65 78 3a 20 64 6f 63 2f 72 65 74 75 72 6e 2e 6e  ex: doc/return.n
1150: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .===============
1160: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1170: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1180: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1190: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ====.RCS file: /
11a0: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
11b0: 64 6f 63 2f 72 65 74 75 72 6e 2e 6e 2c 76 0a 72  doc/return.n,v.r
11c0: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
11d0: 6f 6e 20 31 2e 32 35 0a 64 69 66 66 20 2d 75 20  on 1.25.diff -u 
11e0: 2d 72 31 2e 32 35 20 72 65 74 75 72 6e 2e 6e 0a  -r1.25 return.n.
11f0: 2d 2d 2d 20 64 6f 63 2f 72 65 74 75 72 6e 2e 6e  --- doc/return.n
1200: 09 32 30 20 4a 61 6e 20 32 30 31 30 20 31 33 3a  .20 Jan 2010 13:
1210: 34 32 3a 31 37 20 2d 30 30 30 30 09 31 2e 32 35  42:17 -0000.1.25
1220: 0a 2b 2b 2b 20 64 6f 63 2f 72 65 74 75 72 6e 2e  .+++ doc/return.
1230: 6e 09 33 31 20 4d 61 72 20 32 30 31 30 20 31 35  n.31 Mar 2010 15
1240: 3a 34 36 3a 30 34 20 2d 30 30 30 30 0a 40 40 20  :46:04 -0000.@@ 
1250: 2d 31 33 38 2c 36 20 2b 31 33 38 2c 32 32 20 40  -138,6 +138,22 @
1260: 40 0a 20 62 79 20 74 68 65 20 5c 66 42 63 61 74  @. by the \fBcat
1270: 63 68 5c 66 52 20 63 6f 6d 6d 61 6e 64 20 28 6f  ch\fR command (o
1280: 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 70 79 20  r from the copy 
1290: 6f 66 20 74 68 61 74 20 69 6e 66 6f 72 6d 61 74  of that informat
12a0: 69 6f 6e 0a 20 73 74 6f 72 65 64 20 69 6e 20 74  ion. stored in t
12b0: 68 65 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62  he global variab
12c0: 6c 65 20 5c 66 42 65 72 72 6f 72 49 6e 66 6f 5c  le \fBerrorInfo\
12d0: 66 52 29 2e 0a 20 2e 54 50 0a 2b 5c 66 42 5c 2d  fR).. .TP.+\fB\-
12e0: 65 72 72 6f 72 73 74 61 63 6b 20 5c 66 49 6c 69  errorstack \fIli
12f0: 73 74 5c 66 52 0a 2b 2e 0a 2b 54 68 65 20 5c 66  st\fR.+..+The \f
1300: 42 5c 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66 52  B\-errorstack\fR
1310: 20 6f 70 74 69 6f 6e 20 72 65 63 65 69 76 65 73   option receives
1320: 20 73 70 65 63 69 61 6c 20 74 72 65 61 74 6d 65   special treatme
1330: 6e 74 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65  nt only when the
1340: 20 76 61 6c 75 65 0a 2b 6f 66 20 74 68 65 20 5c   value.+of the \
1350: 66 42 5c 2d 63 6f 64 65 5c 66 52 20 6f 70 74 69  fB\-code\fR opti
1360: 6f 6e 20 69 73 20 5c 66 42 54 43 4c 5f 45 52 52  on is \fBTCL_ERR
1370: 4f 52 5c 66 52 2e 20 20 54 68 65 6e 20 5c 66 49  OR\fR.  Then \fI
1380: 6c 69 73 74 5c 66 52 20 69 73 20 74 68 65 20 69  list\fR is the i
1390: 6e 69 74 69 61 6c 0a 2b 65 72 72 6f 72 20 73 74  nitial.+error st
13a0: 61 63 6b 2c 20 72 65 63 6f 72 64 69 6e 67 20 61  ack, recording a
13b0: 63 74 75 61 6c 20 61 72 67 75 6d 65 6e 74 20 76  ctual argument v
13c0: 61 6c 75 65 73 20 70 61 73 73 65 64 20 74 6f 20  alues passed to 
13d0: 65 61 63 68 20 70 72 6f 63 20 6c 65 76 65 6c 2e  each proc level.
13e0: 20 20 54 68 65 20 65 72 72 6f 72 20 73 74 61 63    The error stac
13f0: 6b 20 77 69 6c 6c 0a 2b 61 6c 73 6f 20 62 65 20  k will.+also be 
1400: 72 65 61 63 68 61 62 6c 65 20 74 68 72 6f 75 67  reachable throug
1410: 68 20 5b 69 6e 66 6f 20 65 72 72 6f 72 73 74 61  h [info errorsta
1420: 63 6b 5d 2e 0a 2b 49 66 20 6e 6f 20 5c 66 42 5c  ck]..+If no \fB\
1430: 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66 52 20 6f  -errorstack\fR o
1440: 70 74 69 6f 6e 20 69 73 20 70 72 6f 76 69 64 65  ption is provide
1450: 64 20 74 6f 20 5c 66 42 72 65 74 75 72 6e 5c 66  d to \fBreturn\f
1460: 52 20 77 68 65 6e 0a 2b 74 68 65 20 5c 66 42 5c  R when.+the \fB\
1470: 2d 63 6f 64 65 20 65 72 72 6f 72 5c 66 52 20 6f  -code error\fR o
1480: 70 74 69 6f 6e 20 69 73 20 70 72 6f 76 69 64 65  ption is provide
1490: 64 2c 20 54 63 6c 20 77 69 6c 6c 20 70 72 6f 76  d, Tcl will prov
14a0: 69 64 65 20 69 74 73 20 6f 77 6e 0a 2b 69 6e 69  ide its own.+ini
14b0: 74 69 61 6c 20 65 72 72 6f 72 20 73 74 61 63 6b  tial error stack
14c0: 20 69 6e 20 74 68 65 20 65 6e 74 72 79 20 66 6f   in the entry fo
14d0: 72 20 5c 66 42 5c 2d 65 72 72 6f 72 73 74 61 63  r \fB\-errorstac
14e0: 6b 5c 66 52 2e 20 20 54 63 6c 27 73 0a 2b 69 6e  k\fR.  Tcl's.+in
14f0: 69 74 69 61 6c 20 65 72 72 6f 72 20 73 74 61 63  itial error stac
1500: 6b 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 6f  k will include o
1510: 6e 6c 79 20 74 68 65 20 63 61 6c 6c 20 74 6f 20  nly the call to 
1520: 74 68 65 20 70 72 6f 63 65 64 75 72 65 2c 20 61  the procedure, a
1530: 6e 64 0a 2b 73 74 61 63 6b 20 75 6e 77 69 6e 64  nd.+stack unwind
1540: 69 6e 67 20 77 69 6c 6c 20 61 70 70 65 6e 64 20  ing will append 
1550: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
1560: 74 20 68 69 67 68 65 72 20 73 74 61 63 6b 20 6c  t higher stack l
1570: 65 76 65 6c 73 2c 20 62 75 74 0a 2b 74 68 65 72  evels, but.+ther
1580: 65 20 77 69 6c 6c 20 62 65 20 6e 6f 20 69 6e 66  e will be no inf
1590: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
15a0: 68 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68  he context of th
15b0: 65 20 65 72 72 6f 72 20 77 69 74 68 69 6e 0a 2b  e error within.+
15c0: 74 68 65 20 70 72 6f 63 65 64 75 72 65 2e 20 20  the procedure.  
15d0: 54 79 70 69 63 61 6c 6c 79 20 74 68 65 20 5c 66  Typically the \f
15e0: 49 6c 69 73 74 5c 66 52 20 76 61 6c 75 65 20 69  Ilist\fR value i
15f0: 73 20 73 75 70 70 6c 69 65 64 20 66 72 6f 6d 0a  s supplied from.
1600: 2b 74 68 65 20 76 61 6c 75 65 20 6f 66 20 5c 66  +the value of \f
1610: 42 5c 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66 52  B\-errorstack\fR
1620: 20 69 6e 20 61 20 72 65 74 75 72 6e 20 6f 70 74   in a return opt
1630: 69 6f 6e 73 20 64 69 63 74 69 6f 6e 61 72 79 20  ions dictionary 
1640: 63 61 70 74 75 72 65 64 0a 2b 62 79 20 74 68 65  captured.+by the
1650: 20 5c 66 42 63 61 74 63 68 5c 66 52 20 63 6f 6d   \fBcatch\fR com
1660: 6d 61 6e 64 20 28 6f 72 20 66 72 6f 6d 20 74 68  mand (or from th
1670: 65 20 63 6f 70 79 20 6f 66 20 74 68 61 74 20 69  e copy of that i
1680: 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20  nformation from 
1690: 5b 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 6b  [info errorstack
16a0: 5d 29 2e 0a 2b 2e 54 50 0a 20 5c 66 42 5c 2d 6c  ])..+.TP. \fB\-l
16b0: 65 76 65 6c 20 5c 66 49 6c 65 76 65 6c 5c 66 52  evel \fIlevel\fR
16c0: 0a 20 2e 0a 20 54 68 65 20 5c 66 42 5c 2d 6c 65  . .. The \fB\-le
16d0: 76 65 6c 5c 66 52 20 61 6e 64 20 5c 66 42 5c 2d  vel\fR and \fB\-
16e0: 63 6f 64 65 5c 66 52 20 6f 70 74 69 6f 6e 73 20  code\fR options 
16f0: 77 6f 72 6b 20 74 6f 67 65 74 68 65 72 20 74 6f  work together to
1700: 20 73 65 74 20 74 68 65 20 72 65 74 75 72 6e 0a   set the return.
1710: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
1720: 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d  clBasic.c.======
1730: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1740: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1750: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1760: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
1770: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
1780: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63  /tcl/tcl/generic
1790: 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65  /tclBasic.c,v.re
17a0: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
17b0: 6e 20 31 2e 34 34 39 0a 64 69 66 66 20 2d 75 20  n 1.449.diff -u 
17c0: 2d 72 31 2e 34 34 39 20 74 63 6c 42 61 73 69 63  -r1.449 tclBasic
17d0: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74  .c.--- generic/t
17e0: 63 6c 42 61 73 69 63 2e 63 09 31 39 20 4d 61 72  clBasic.c.19 Mar
17f0: 20 32 30 31 30 20 31 31 3a 35 34 3a 30 36 20 2d   2010 11:54:06 -
1800: 30 30 30 30 09 31 2e 34 34 39 0a 2b 2b 2b 20 67  0000.1.449.+++ g
1810: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e  eneric/tclBasic.
1820: 63 09 33 31 20 4d 61 72 20 32 30 31 30 20 31 35  c.31 Mar 2010 15
1830: 3a 34 36 3a 30 34 20 2d 30 30 30 30 0a 40 40 20  :46:04 -0000.@@ 
1840: 2d 35 32 39 2c 36 20 2b 35 32 39 2c 31 33 20 40  -529,6 +529,13 @
1850: 40 0a 20 20 20 20 20 69 50 74 72 2d 3e 65 72 72  @.     iPtr->err
1860: 6f 72 49 6e 66 6f 20 3d 20 4e 55 4c 4c 3b 0a 20  orInfo = NULL;. 
1870: 20 20 20 20 54 63 6c 4e 65 77 4c 69 74 65 72 61      TclNewLitera
1880: 6c 53 74 72 69 6e 67 4f 62 6a 28 69 50 74 72 2d  lStringObj(iPtr-
1890: 3e 65 69 56 61 72 2c 20 22 3a 3a 65 72 72 6f 72  >eiVar, "::error
18a0: 49 6e 66 6f 22 29 3b 0a 20 20 20 20 20 54 63 6c  Info");.     Tcl
18b0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 50  _IncrRefCount(iP
18c0: 74 72 2d 3e 65 69 56 61 72 29 3b 0a 2b 20 20 20  tr->eiVar);.+   
18d0: 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63   iPtr->errorStac
18e0: 6b 20 3d 20 54 63 6c 5f 4e 65 77 4c 69 73 74 4f  k = Tcl_NewListO
18f0: 62 6a 28 30 2c 20 4e 55 4c 4c 29 3b 0a 2b 20 20  bj(0, NULL);.+  
1900: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75    Tcl_IncrRefCou
1910: 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74  nt(iPtr->errorSt
1920: 61 63 6b 29 3b 0a 2b 20 20 20 20 69 50 74 72 2d  ack);.+    iPtr-
1930: 3e 72 65 73 65 74 45 72 72 6f 72 53 74 61 63 6b  >resetErrorStack
1940: 20 3d 20 31 3b 0a 2b 20 20 20 20 54 63 6c 4e 65   = 1;.+    TclNe
1950: 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f 62  wLiteralStringOb
1960: 6a 28 69 50 74 72 2d 3e 75 70 4c 69 74 65 72 61  j(iPtr->upLitera
1970: 6c 2c 22 55 50 22 29 3b 0a 2b 20 20 20 20 54 63  l,"UP");.+    Tc
1980: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69  l_IncrRefCount(i
1990: 50 74 72 2d 3e 75 70 4c 69 74 65 72 61 6c 29 3b  Ptr->upLiteral);
19a0: 0a 2b 20 20 20 20 54 63 6c 4e 65 77 4c 69 74 65  .+    TclNewLite
19b0: 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 69 50 74  ralStringObj(iPt
19c0: 72 2d 3e 63 61 6c 6c 4c 69 74 65 72 61 6c 2c 22  r->callLiteral,"
19d0: 43 41 4c 4c 22 29 3b 0a 2b 20 20 20 20 54 63 6c  CALL");.+    Tcl
19e0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 50  _IncrRefCount(iP
19f0: 74 72 2d 3e 63 61 6c 6c 4c 69 74 65 72 61 6c 29  tr->callLiteral)
1a00: 3b 0a 20 20 20 20 20 69 50 74 72 2d 3e 65 72 72  ;.     iPtr->err
1a10: 6f 72 43 6f 64 65 20 3d 20 4e 55 4c 4c 3b 0a 20  orCode = NULL;. 
1a20: 20 20 20 20 54 63 6c 4e 65 77 4c 69 74 65 72 61      TclNewLitera
1a30: 6c 53 74 72 69 6e 67 4f 62 6a 28 69 50 74 72 2d  lStringObj(iPtr-
1a40: 3e 65 63 56 61 72 2c 20 22 3a 3a 65 72 72 6f 72  >ecVar, "::error
1a50: 43 6f 64 65 22 29 3b 0a 20 20 20 20 20 54 63 6c  Code");.     Tcl
1a60: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 50  _IncrRefCount(iP
1a70: 74 72 2d 3e 65 63 56 61 72 29 3b 0a 40 40 20 2d  tr->ecVar);.@@ -
1a80: 31 34 36 37 2c 36 20 2b 31 34 37 34 2c 31 30 20  1467,6 +1474,10 
1a90: 40 40 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 66  @@. .Tcl_DecrRef
1aa0: 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f  Count(iPtr->erro
1ab0: 72 49 6e 66 6f 29 3b 0a 20 09 69 50 74 72 2d 3e  rInfo);. .iPtr->
1ac0: 65 72 72 6f 72 49 6e 66 6f 20 3d 20 4e 55 4c 4c  errorInfo = NULL
1ad0: 3b 0a 20 20 20 20 20 7d 0a 2b 20 20 20 20 54 63  ;.     }.+    Tc
1ae0: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69  l_DecrRefCount(i
1af0: 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29  Ptr->errorStack)
1b00: 3b 0a 2b 20 20 20 20 69 50 74 72 2d 3e 65 72 72  ;.+    iPtr->err
1b10: 6f 72 53 74 61 63 6b 20 3d 20 4e 55 4c 4c 3b 0a  orStack = NULL;.
1b20: 2b 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66  +    Tcl_DecrRef
1b30: 43 6f 75 6e 74 28 69 50 74 72 2d 3e 75 70 4c 69  Count(iPtr->upLi
1b40: 74 65 72 61 6c 29 3b 0a 2b 20 20 20 20 54 63 6c  teral);.+    Tcl
1b50: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50  _DecrRefCount(iP
1b60: 74 72 2d 3e 63 61 6c 6c 4c 69 74 65 72 61 6c 29  tr->callLiteral)
1b70: 3b 0a 20 20 20 20 20 69 66 20 28 69 50 74 72 2d  ;.     if (iPtr-
1b80: 3e 72 65 74 75 72 6e 4f 70 74 73 29 20 7b 0a 20  >returnOpts) {. 
1b90: 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e  .Tcl_DecrRefCoun
1ba0: 74 28 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70  t(iPtr->returnOp
1bb0: 74 73 29 3b 0a 20 20 20 20 20 7d 0a 40 40 20 2d  ts);.     }.@@ -
1bc0: 38 39 34 33 2c 35 20 2b 38 39 35 34 2c 37 20 40  8943,5 +8954,7 @
1bd0: 40 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20  @.  * mode: c.  
1be0: 2a 20 63 2d 62 61 73 69 63 2d 6f 66 66 73 65 74  * c-basic-offset
1bf0: 3a 20 34 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c  : 4.  * fill-col
1c00: 75 6d 6e 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d  umn: 78.+ * tab-
1c10: 77 69 64 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64  width: 8.+ * ind
1c20: 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e  ent-tabs-mode: n
1c30: 69 6c 0a 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f  il.  * End:.  */
1c40: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
1c50: 74 63 6c 43 6d 64 49 4c 2e 63 0a 3d 3d 3d 3d 3d  tclCmdIL.c.=====
1c60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
1ca0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
1cb0: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
1cc0: 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 2c 76 0a 72  c/tclCmdIL.c,v.r
1cd0: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
1ce0: 6f 6e 20 31 2e 31 38 30 0a 64 69 66 66 20 2d 75  on 1.180.diff -u
1cf0: 20 2d 72 31 2e 31 38 30 20 74 63 6c 43 6d 64 49   -r1.180 tclCmdI
1d00: 4c 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f  L.c.--- generic/
1d10: 74 63 6c 43 6d 64 49 4c 2e 63 09 35 20 4d 61 72  tclCmdIL.c.5 Mar
1d20: 20 32 30 31 30 20 31 34 3a 33 34 3a 30 33 20 2d   2010 14:34:03 -
1d30: 30 30 30 30 09 31 2e 31 38 30 0a 2b 2b 2b 20 67  0000.1.180.+++ g
1d40: 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e  eneric/tclCmdIL.
1d50: 63 09 33 31 20 4d 61 72 20 32 30 31 30 20 31 35  c.31 Mar 2010 15
1d60: 3a 34 36 3a 30 34 20 2d 30 30 30 30 0a 40 40 20  :46:04 -0000.@@ 
1d70: 2d 31 31 38 2c 36 20 2b 31 31 38 2c 39 20 40 40  -118,6 +118,9 @@
1d80: 0a 20 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a  . ...    int obj
1d90: 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73  c, Tcl_Obj *cons
1da0: 74 20 6f 62 6a 76 5b 5d 29 3b 0a 20 73 74 61 74  t objv[]);. stat
1db0: 69 63 20 69 6e 74 09 09 49 6e 66 6f 44 65 66 61  ic int..InfoDefa
1dc0: 75 6c 74 43 6d 64 28 43 6c 69 65 6e 74 44 61 74  ultCmd(ClientDat
1dd0: 61 20 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74  a dummy, Tcl_Int
1de0: 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09  erp *interp,. ..
1df0: 09 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54  .    int objc, T
1e00: 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62  cl_Obj *const ob
1e10: 6a 76 5b 5d 29 3b 0a 2b 2f 2a 20 54 49 50 20 23  jv[]);.+/* TIP #
1e20: 33 34 38 20 2d 20 4e 65 77 20 27 69 6e 66 6f 27  348 - New 'info'
1e30: 20 73 75 62 63 6f 6d 6d 61 6e 64 20 27 65 72 72   subcommand 'err
1e40: 6f 72 73 74 61 63 6b 27 20 2a 2f 0a 2b 73 74 61  orstack' */.+sta
1e50: 74 69 63 20 69 6e 74 09 09 49 6e 66 6f 45 72 72  tic int..InfoErr
1e60: 6f 72 53 74 61 63 6b 43 6d 64 28 43 6c 69 65 6e  orStackCmd(Clien
1e70: 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 54 63 6c  tData dummy, Tcl
1e80: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c  _Interp *interp,
1e90: 0a 2b 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a  .+...    int obj
1ea0: 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73  c, Tcl_Obj *cons
1eb0: 74 20 6f 62 6a 76 5b 5d 29 3b 0a 20 2f 2a 20 54  t objv[]);. /* T
1ec0: 49 50 20 23 32 38 30 20 2d 20 4e 65 77 20 27 69  IP #280 - New 'i
1ed0: 6e 66 6f 27 20 73 75 62 63 6f 6d 6d 61 6e 64 20  nfo' subcommand 
1ee0: 27 66 72 61 6d 65 27 20 2a 2f 0a 20 73 74 61 74  'frame' */. stat
1ef0: 69 63 20 69 6e 74 09 09 49 6e 66 6f 46 72 61 6d  ic int..InfoFram
1f00: 65 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20  eCmd(ClientData 
1f10: 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72  dummy, Tcl_Inter
1f20: 70 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20  p *interp,. ... 
1f30: 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c     int objc, Tcl
1f40: 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a 76  _Obj *const objv
1f50: 5b 5d 29 3b 0a 40 40 20 2d 31 36 34 2c 36 20 2b  []);.@@ -164,6 +
1f60: 31 36 37 2c 37 20 40 40 0a 20 20 20 20 20 7b 22  167,7 @@.     {"
1f70: 63 6f 6d 70 6c 65 74 65 22 2c 09 20 20 20 49 6e  complete",.   In
1f80: 66 6f 43 6f 6d 70 6c 65 74 65 43 6d 64 2c 09 20  foCompleteCmd,. 
1f90: 20 20 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e     NULL, NULL, N
1fa0: 55 4c 4c 7d 2c 0a 20 20 20 20 20 7b 22 63 6f 72  ULL},.     {"cor
1fb0: 6f 75 74 69 6e 65 22 2c 09 20 20 20 54 63 6c 49  outine",.   TclI
1fc0: 6e 66 6f 43 6f 72 6f 75 74 69 6e 65 43 6d 64 2c  nfoCoroutineCmd,
1fd0: 20 20 20 20 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c       NULL, NULL,
1fe0: 20 4e 55 4c 4c 7d 2c 0a 20 20 20 20 20 7b 22 64   NULL},.     {"d
1ff0: 65 66 61 75 6c 74 22 2c 09 09 20 20 20 49 6e 66  efault",..   Inf
2000: 6f 44 65 66 61 75 6c 74 43 6d 64 2c 09 20 20 20  oDefaultCmd,.   
2010: 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c   NULL, NULL, NUL
2020: 4c 7d 2c 0a 2b 20 20 20 20 7b 22 65 72 72 6f 72  L},.+    {"error
2030: 73 74 61 63 6b 22 2c 09 20 20 20 49 6e 66 6f 45  stack",.   InfoE
2040: 72 72 6f 72 53 74 61 63 6b 43 6d 64 2c 09 20 20  rrorStackCmd,.  
2050: 20 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55    NULL, NULL, NU
2060: 4c 4c 7d 2c 0a 20 20 20 20 20 7b 22 65 78 69 73  LL},.     {"exis
2070: 74 73 22 2c 09 09 20 20 20 54 63 6c 49 6e 66 6f  ts",..   TclInfo
2080: 45 78 69 73 74 73 43 6d 64 2c 09 20 20 20 20 54  ExistsCmd,.    T
2090: 63 6c 43 6f 6d 70 69 6c 65 49 6e 66 6f 45 78 69  clCompileInfoExi
20a0: 73 74 73 43 6d 64 2c 20 4e 55 4c 4c 2c 20 4e 55  stsCmd, NULL, NU
20b0: 4c 4c 7d 2c 0a 20 20 20 20 20 7b 22 66 72 61 6d  LL},.     {"fram
20c0: 65 22 2c 09 09 20 20 20 49 6e 66 6f 46 72 61 6d  e",..   InfoFram
20d0: 65 43 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c 20  eCmd,.    NULL, 
20e0: 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20 20 20  NULL, NULL},.   
20f0: 20 20 7b 22 66 75 6e 63 74 69 6f 6e 73 22 2c 09    {"functions",.
2100: 20 20 20 49 6e 66 6f 46 75 6e 63 74 69 6f 6e 73     InfoFunctions
2110: 43 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c 20 4e  Cmd,.    NULL, N
2120: 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 40 40 20 2d  ULL, NULL},.@@ -
2130: 31 30 32 32 2c 36 20 2b 31 30 32 36 2c 35 35 20  1022,6 +1026,55 
2140: 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d  @@. /*.  *------
2150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2190: 0a 20 20 2a 0a 2b 20 2a 20 49 6e 66 6f 45 72 72  .  *.+ * InfoErr
21a0: 6f 72 53 74 61 63 6b 43 6d 64 20 2d 2d 0a 2b 20  orStackCmd --.+ 
21b0: 2a 0a 2b 20 2a 09 43 61 6c 6c 65 64 20 74 6f 20  *.+ *.Called to 
21c0: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 22 69  implement the "i
21d0: 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 6b 22 20  nfo errorstack" 
21e0: 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 72 65 74  command that ret
21f0: 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  urns information
2200: 0a 2b 20 2a 09 61 62 6f 75 74 20 74 68 65 20 6c  .+ *.about the l
2210: 61 73 74 20 65 72 72 6f 72 27 73 20 63 61 6c 6c  ast error's call
2220: 20 73 74 61 63 6b 2e 20 48 61 6e 64 6c 65 73 20   stack. Handles 
2230: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79  the following sy
2240: 6e 74 61 78 3a 0a 2b 20 2a 0a 2b 20 2a 09 20 20  ntax:.+ *.+ *.  
2250: 20 20 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 63    info errorstac
2260: 6b 20 3f 69 6e 74 65 72 70 3f 0a 2b 20 2a 0a 2b  k ?interp?.+ *.+
2270: 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09   * Results:.+ *.
2280: 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f 4b 20 69  Returns TCL_OK i
2290: 66 20 73 75 63 63 65 73 73 66 75 6c 20 61 6e 64  f successful and
22a0: 20 54 43 4c 5f 45 52 52 4f 52 20 69 66 20 74 68   TCL_ERROR if th
22b0: 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2e  ere is an error.
22c0: 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66  .+ *.+ * Side ef
22d0: 66 65 63 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72  fects:.+ *.Retur
22e0: 6e 73 20 61 20 72 65 73 75 6c 74 20 69 6e 20 74  ns a result in t
22f0: 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 27 73  he interpreter's
2300: 20 72 65 73 75 6c 74 20 6f 62 6a 65 63 74 2e 20   result object. 
2310: 49 66 20 74 68 65 72 65 20 69 73 20 61 6e 0a 2b  If there is an.+
2320: 20 2a 09 65 72 72 6f 72 2c 20 74 68 65 20 72 65   *.error, the re
2330: 73 75 6c 74 20 69 73 20 61 6e 20 65 72 72 6f 72  sult is an error
2340: 20 6d 65 73 73 61 67 65 2e 0a 2b 20 2a 0a 2b 20   message..+ *.+ 
2350: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
2360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2390: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b  -------.+ */.+.+
23a0: 73 74 61 74 69 63 20 69 6e 74 0a 2b 49 6e 66 6f  static int.+Info
23b0: 45 72 72 6f 72 53 74 61 63 6b 43 6d 64 28 0a 2b  ErrorStackCmd(.+
23c0: 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 64      ClientData d
23d0: 75 6d 6d 79 2c 09 09 2f 2a 20 4e 6f 74 20 75 73  ummy,../* Not us
23e0: 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f  ed. */.+    Tcl_
23f0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 09  Interp *interp,.
2400: 09 2f 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65  ./* Current inte
2410: 72 70 72 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20  rpreter. */.+   
2420: 20 69 6e 74 20 6f 62 6a 63 2c 09 09 09 2f 2a 20   int objc,.../* 
2430: 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  Number of argume
2440: 6e 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c  nts. */.+    Tcl
2450: 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a 76  _Obj *const objv
2460: 5b 5d 29 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20  [])./* Argument 
2470: 6f 62 6a 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b  objects. */.+{.+
2480: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a      Tcl_Interp *
2490: 74 61 72 67 65 74 3b 0a 2b 20 20 20 20 49 6e 74  target;.+    Int
24a0: 65 72 70 20 2a 69 50 74 72 3b 0a 2b 0a 2b 20 20  erp *iPtr;.+.+  
24b0: 20 20 69 66 20 28 28 6f 62 6a 63 20 21 3d 20 31    if ((objc != 1
24c0: 29 20 26 26 20 28 6f 62 6a 63 20 21 3d 20 32 29  ) && (objc != 2)
24d0: 29 20 7b 0a 2b 09 54 63 6c 5f 57 72 6f 6e 67 4e  ) {.+.Tcl_WrongN
24e0: 75 6d 41 72 67 73 28 69 6e 74 65 72 70 2c 20 31  umArgs(interp, 1
24f0: 2c 20 6f 62 6a 76 2c 20 22 3f 69 6e 74 65 72 70  , objv, "?interp
2500: 3f 22 29 3b 0a 2b 09 72 65 74 75 72 6e 20 54 43  ?");.+.return TC
2510: 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a  L_ERROR;.+    }.
2520: 2b 20 20 20 20 0a 2b 20 20 20 20 74 61 72 67 65  +    .+    targe
2530: 74 20 3d 20 69 6e 74 65 72 70 3b 0a 2b 20 20 20  t = interp;.+   
2540: 20 69 66 20 28 6f 62 6a 63 20 3d 3d 20 32 29 20   if (objc == 2) 
2550: 7b 0a 2b 20 20 20 20 20 20 20 20 74 61 72 67 65  {.+        targe
2560: 74 20 3d 20 54 63 6c 5f 47 65 74 53 6c 61 76 65  t = Tcl_GetSlave
2570: 28 69 6e 74 65 72 70 2c 20 54 63 6c 5f 47 65 74  (interp, Tcl_Get
2580: 53 74 72 69 6e 67 28 6f 62 6a 76 5b 31 5d 29 29  String(objv[1]))
2590: 3b 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 74  ;.+        if (t
25a0: 61 72 67 65 74 20 3d 3d 20 4e 55 4c 4c 29 20 7b  arget == NULL) {
25b0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 72 65  .+            re
25c0: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a  turn TCL_ERROR;.
25d0: 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20  +        }.+    
25e0: 7d 0a 2b 0a 2b 20 20 20 20 69 50 74 72 20 3d 20  }.+.+    iPtr = 
25f0: 28 49 6e 74 65 72 70 20 2a 29 20 74 61 72 67 65  (Interp *) targe
2600: 74 3b 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 4f  t;.+    Tcl_SetO
2610: 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c  bjResult(interp,
2620: 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63   iPtr->errorStac
2630: 6b 29 3b 0a 2b 20 20 20 20 0a 2b 20 20 20 20 72  k);.+    .+    r
2640: 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 2b 7d  eturn TCL_OK;.+}
2650: 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d  .+..+/*.+ *-----
2660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
26a0: 2d 0a 2b 20 2a 0a 20 20 2a 20 54 63 6c 49 6e 66  -.+ *.  * TclInf
26b0: 6f 45 78 69 73 74 73 43 6d 64 20 2d 2d 0a 20 20  oExistsCmd --.  
26c0: 2a 0a 20 20 2a 09 43 61 6c 6c 65 64 20 74 6f 20  *.  *.Called to 
26d0: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 22 69  implement the "i
26e0: 6e 66 6f 20 65 78 69 73 74 73 22 20 63 6f 6d 6d  nfo exists" comm
26f0: 61 6e 64 20 74 68 61 74 20 64 65 74 65 72 6d 69  and that determi
2700: 6e 65 73 20 77 68 65 74 68 65 72 0a 40 40 20 2d  nes whether.@@ -
2710: 34 34 30 31 2c 35 20 2b 34 34 35 34 2c 37 20 40  4401,5 +4454,7 @
2720: 40 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20  @.  * mode: c.  
2730: 2a 20 63 2d 62 61 73 69 63 2d 6f 66 66 73 65 74  * c-basic-offset
2740: 3a 20 34 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c  : 4.  * fill-col
2750: 75 6d 6e 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d  umn: 78.+ * tab-
2760: 77 69 64 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64  width: 8.+ * ind
2770: 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e  ent-tabs-mode: n
2780: 69 6c 0a 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f  il.  * End:.  */
2790: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
27a0: 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d  tclInt.h.=======
27b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
27c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
27d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
27e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
27f0: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
2800: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
2810: 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69  tclInt.h,v.retri
2820: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
2830: 2e 34 36 36 0a 64 69 66 66 20 2d 75 20 2d 72 31  .466.diff -u -r1
2840: 2e 34 36 36 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d  .466 tclInt.h.--
2850: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74  - generic/tclInt
2860: 2e 68 09 32 37 20 4d 61 72 20 32 30 31 30 20 32  .h.27 Mar 2010 2
2870: 32 3a 34 30 3a 31 34 20 2d 30 30 30 30 09 31 2e  2:40:14 -0000.1.
2880: 34 36 36 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f  466.+++ generic/
2890: 74 63 6c 49 6e 74 2e 68 09 33 31 20 4d 61 72 20  tclInt.h.31 Mar 
28a0: 32 30 31 30 20 31 35 3a 34 36 3a 30 34 20 2d 30  2010 15:46:04 -0
28b0: 30 30 30 0a 40 40 20 2d 31 39 38 34 2c 36 20 2b  000.@@ -1984,6 +
28c0: 31 39 38 34 2c 31 30 20 40 40 0a 20 20 20 20 20  1984,10 @@.     
28d0: 54 63 6c 5f 4f 62 6a 20 2a 65 69 56 61 72 3b 09  Tcl_Obj *eiVar;.
28e0: 09 2f 2a 20 63 61 63 68 65 64 20 72 65 66 20 74  ./* cached ref t
28f0: 6f 20 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 76 61  o ::errorInfo va
2900: 72 69 61 62 6c 65 2e 20 2a 2f 0a 20 20 20 20 20  riable. */.     
2910: 54 63 6c 5f 4f 62 6a 20 2a 65 72 72 6f 72 43 6f  Tcl_Obj *errorCo
2920: 64 65 3b 09 09 2f 2a 20 65 72 72 6f 72 43 6f 64  de;../* errorCod
2930: 65 20 76 61 6c 75 65 20 28 6e 6f 77 20 61 73 20  e value (now as 
2940: 61 20 54 63 6c 5f 4f 62 6a 29 2e 20 2a 2f 0a 20  a Tcl_Obj). */. 
2950: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 65 63 56      Tcl_Obj *ecV
2960: 61 72 3b 09 09 2f 2a 20 63 61 63 68 65 64 20 72  ar;../* cached r
2970: 65 66 20 74 6f 20 3a 3a 65 72 72 6f 72 49 6e 66  ef to ::errorInf
2980: 6f 20 76 61 72 69 61 62 6c 65 2e 20 2a 2f 0a 2b  o variable. */.+
2990: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 65 72 72      Tcl_Obj *err
29a0: 6f 72 53 74 61 63 6b 3b 09 2f 2a 20 5b 69 6e 66  orStack;./* [inf
29b0: 6f 20 65 72 72 6f 72 73 74 61 63 6b 5d 20 76 61  o errorstack] va
29c0: 6c 75 65 20 28 61 73 20 61 20 54 63 6c 5f 4f 62  lue (as a Tcl_Ob
29d0: 6a 29 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f  j). */.+    Tcl_
29e0: 4f 62 6a 20 2a 75 70 4c 69 74 65 72 61 6c 3b 09  Obj *upLiteral;.
29f0: 09 2f 2a 20 22 55 50 22 20 6c 69 74 65 72 61 6c  ./* "UP" literal
2a00: 20 66 6f 72 20 5b 69 6e 66 6f 20 65 72 72 6f 72   for [info error
2a10: 73 74 61 63 6b 5d 20 2a 2f 0a 2b 20 20 20 20 54  stack] */.+    T
2a20: 63 6c 5f 4f 62 6a 20 2a 63 61 6c 6c 4c 69 74 65  cl_Obj *callLite
2a30: 72 61 6c 3b 09 2f 2a 20 22 43 41 4c 4c 22 20 6c  ral;./* "CALL" l
2a40: 69 74 65 72 61 6c 20 66 6f 72 20 5b 69 6e 66 6f  iteral for [info
2a50: 20 65 72 72 6f 72 73 74 61 63 6b 5d 20 2a 2f 0a   errorstack] */.
2a60: 2b 20 20 20 20 69 6e 74 20 72 65 73 65 74 45 72  +    int resetEr
2a70: 72 6f 72 53 74 61 63 6b 3b 20 20 20 20 20 20 20  rorStack;       
2a80: 20 2f 2a 20 63 6f 6e 74 72 6f 6c 73 20 63 6c 65   /* controls cle
2a90: 61 6e 69 6e 67 20 75 70 20 6f 66 20 3a 3a 65 72  aning up of ::er
2aa0: 72 6f 72 53 74 61 63 6b 20 2a 2f 0a 20 20 20 20  rorStack */.    
2ab0: 20 69 6e 74 20 72 65 74 75 72 6e 4c 65 76 65 6c   int returnLevel
2ac0: 3b 09 09 2f 2a 20 5b 72 65 74 75 72 6e 20 2d 6c  ;../* [return -l
2ad0: 65 76 65 6c 5d 20 70 61 72 61 6d 65 74 65 72 2e  evel] parameter.
2ae0: 20 2a 2f 0a 20 0a 20 20 20 20 20 2f 2a 0a 49 6e   */. .     /*.In
2af0: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c  dex: generic/tcl
2b00: 4e 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d  Namesp.c.=======
2b10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2b30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2b40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
2b50: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
2b60: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
2b70: 74 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65  tclNamesp.c,v.re
2b80: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
2b90: 6e 20 31 2e 32 30 34 0a 64 69 66 66 20 2d 75 20  n 1.204.diff -u 
2ba0: 2d 72 31 2e 32 30 34 20 74 63 6c 4e 61 6d 65 73  -r1.204 tclNames
2bb0: 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f  p.c.--- generic/
2bc0: 74 63 6c 4e 61 6d 65 73 70 2e 63 09 35 20 4d 61  tclNamesp.c.5 Ma
2bd0: 72 20 32 30 31 30 20 31 34 3a 33 34 3a 30 34 20  r 2010 14:34:04 
2be0: 2d 30 30 30 30 09 31 2e 32 30 34 0a 2b 2b 2b 20  -0000.1.204.+++ 
2bf0: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73  generic/tclNames
2c00: 70 2e 63 09 33 31 20 4d 61 72 20 32 30 31 30 20  p.c.31 Mar 2010 
2c10: 31 35 3a 34 36 3a 30 34 20 2d 30 30 30 30 0a 40  15:46:04 -0000.@
2c20: 40 20 2d 34 39 33 32 2c 36 20 2b 34 39 33 32 2c  @ -4932,6 +4932,
2c30: 34 35 20 40 40 0a 20 09 09 20 20 20 20 54 43 4c  45 @@. ..    TCL
2c40: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 20  _GLOBAL_ONLY);. 
2c50: 09 7d 0a 20 20 20 20 20 7d 0a 2b 0a 2b 20 20 20  .}.     }.+.+   
2c60: 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 54 49 50 20   /*.+     * TIP 
2c70: 23 33 34 38 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a  #348.+     */.+.
2c80: 2b 20 20 20 20 69 66 20 28 54 63 6c 5f 49 73 53  +    if (Tcl_IsS
2c90: 68 61 72 65 64 28 69 50 74 72 2d 3e 65 72 72 6f  hared(iPtr->erro
2ca0: 72 53 74 61 63 6b 29 29 20 7b 0a 2b 20 20 20 20  rStack)) {.+    
2cb0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77      Tcl_Obj *new
2cc0: 4f 62 6a 3b 0a 2b 20 20 20 20 20 20 20 20 20 20  Obj;.+          
2cd0: 20 20 0a 2b 20 20 20 20 20 20 20 20 6e 65 77 4f    .+        newO
2ce0: 62 6a 20 3d 20 54 63 6c 5f 44 75 70 6c 69 63 61  bj = Tcl_Duplica
2cf0: 74 65 4f 62 6a 28 69 50 74 72 2d 3e 65 72 72 6f  teObj(iPtr->erro
2d00: 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20 20 20  rStack);.+      
2d10: 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75    Tcl_DecrRefCou
2d20: 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74  nt(iPtr->errorSt
2d30: 61 63 6b 29 3b 0a 2b 20 20 20 20 20 20 20 20 54  ack);.+        T
2d40: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28  cl_IncrRefCount(
2d50: 6e 65 77 4f 62 6a 29 3b 0a 2b 20 20 20 20 20 20  newObj);.+      
2d60: 20 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61    iPtr->errorSta
2d70: 63 6b 20 3d 20 6e 65 77 4f 62 6a 3b 0a 2b 20 20  ck = newObj;.+  
2d80: 20 20 7d 0a 2b 20 20 20 20 69 66 20 28 69 50 74    }.+    if (iPt
2d90: 72 2d 3e 72 65 73 65 74 45 72 72 6f 72 53 74 61  r->resetErrorSta
2da0: 63 6b 29 20 7b 0a 2b 09 69 6e 74 20 6c 65 6e 3b  ck) {.+.int len;
2db0: 0a 2b 0a 2b 20 20 20 20 20 20 20 20 69 50 74 72  .+.+        iPtr
2dc0: 2d 3e 72 65 73 65 74 45 72 72 6f 72 53 74 61 63  ->resetErrorStac
2dd0: 6b 20 3d 20 30 3b 0a 2b 09 54 63 6c 5f 4c 69 73  k = 0;.+.Tcl_Lis
2de0: 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72  tObjLength(inter
2df0: 70 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74  p, iPtr->errorSt
2e00: 61 63 6b 2c 20 26 6c 65 6e 29 3b 0a 2b 20 20 20  ack, &len);.+   
2e10: 20 20 20 20 20 2f 2a 20 72 65 73 65 74 20 77 68       /* reset wh
2e20: 69 6c 65 20 6b 65 65 70 69 6e 67 20 74 68 65 20  ile keeping the 
2e30: 6c 69 73 74 20 69 6e 74 72 65 70 20 61 73 20 6d  list intrep as m
2e40: 75 63 68 20 61 73 20 70 6f 73 73 69 62 6c 65 20  uch as possible 
2e50: 2a 2f 0a 2b 20 20 20 20 20 20 20 20 54 63 6c 5f  */.+        Tcl_
2e60: 4c 69 73 74 4f 62 6a 52 65 70 6c 61 63 65 28 69  ListObjReplace(i
2e70: 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 72 72  nterp, iPtr->err
2e80: 6f 72 53 74 61 63 6b 2c 20 30 2c 20 6c 65 6e 2c  orStack, 0, len,
2e90: 20 30 2c 20 4e 55 4c 4c 29 3b 0a 2b 20 20 20 20   0, NULL);.+    
2ea0: 7d 20 0a 2b 0a 2b 20 20 20 20 69 66 20 28 69 50  } .+.+    if (iP
2eb0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20  tr->varFramePtr 
2ec0: 21 3d 20 69 50 74 72 2d 3e 66 72 61 6d 65 50 74  != iPtr->framePt
2ed0: 72 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 2f 2a  r) {.+        /*
2ee0: 20 75 70 6c 65 76 65 6c 20 63 61 73 65 2c 20 5b   uplevel case, [
2ef0: 6c 61 70 70 65 6e 64 20 65 72 72 6f 72 73 74 61  lappend errorsta
2f00: 63 6b 20 55 50 20 24 72 65 6c 61 74 69 76 65 6c  ck UP $relativel
2f10: 65 76 65 6c 5d 20 2a 2f 0a 2b 20 20 20 20 20 20  evel] */.+      
2f20: 20 20 73 74 72 75 63 74 20 43 61 6c 6c 46 72 61    struct CallFra
2f30: 6d 65 20 2a 66 72 61 6d 65 3b 0a 2b 20 20 20 20  me *frame;.+    
2f40: 20 20 20 20 69 6e 74 20 6e 3b 0a 2b 0a 2b 20 20      int n;.+.+  
2f50: 20 20 20 20 20 20 66 6f 72 20 28 6e 3d 30 2c 20        for (n=0, 
2f60: 66 72 61 6d 65 3d 69 50 74 72 2d 3e 66 72 61 6d  frame=iPtr->fram
2f70: 65 50 74 72 3b 0a 2b 09 09 28 66 72 61 6d 65 20  ePtr;.+..(frame 
2f80: 26 26 20 28 66 72 61 6d 65 20 21 3d 20 69 50 74  && (frame != iPt
2f90: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 29 29  r->varFramePtr))
2fa0: 3b 0a 2b 09 09 6e 2b 2b 2c 20 66 72 61 6d 65 3d  ;.+..n++, frame=
2fb0: 66 72 61 6d 65 2d 3e 63 61 6c 6c 65 72 56 61 72  frame->callerVar
2fc0: 50 74 72 29 3b 0a 2b 20 20 20 20 20 20 20 20 54  Ptr);.+        T
2fd0: 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64  cl_ListObjAppend
2fe0: 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c 2c 20 69 50  Element(NULL, iP
2ff0: 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 2c 20  tr->errorStack, 
3000: 69 50 74 72 2d 3e 75 70 4c 69 74 65 72 61 6c 29  iPtr->upLiteral)
3010: 3b 0a 2b 20 20 20 20 20 20 20 20 54 63 6c 5f 4c  ;.+        Tcl_L
3020: 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d  istObjAppendElem
3030: 65 6e 74 28 4e 55 4c 4c 2c 20 69 50 74 72 2d 3e  ent(NULL, iPtr->
3040: 65 72 72 6f 72 53 74 61 63 6b 2c 20 54 63 6c 5f  errorStack, Tcl_
3050: 4e 65 77 49 6e 74 4f 62 6a 28 6e 29 29 3b 0a 2b  NewIntObj(n));.+
3060: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 69      } else if (i
3070: 50 74 72 2d 3e 66 72 61 6d 65 50 74 72 20 21 3d  Ptr->framePtr !=
3080: 20 69 50 74 72 2d 3e 72 6f 6f 74 46 72 61 6d 65   iPtr->rootFrame
3090: 50 74 72 29 20 7b 0a 2b 20 20 20 20 20 20 20 20  Ptr) {.+        
30a0: 2f 2a 20 6e 6f 72 6d 61 6c 20 63 61 73 65 2c 20  /* normal case, 
30b0: 5b 6c 61 70 70 65 6e 64 20 65 72 72 6f 72 73 74  [lappend errorst
30c0: 61 63 6b 20 43 41 4c 4c 20 5b 69 6e 66 6f 20 6c  ack CALL [info l
30d0: 65 76 65 6c 20 30 5d 5d 20 2a 2f 0a 2b 20 20 20  evel 0]] */.+   
30e0: 20 20 20 20 20 54 63 6c 5f 4c 69 73 74 4f 62 6a       Tcl_ListObj
30f0: 41 70 70 65 6e 64 45 6c 65 6d 65 6e 74 28 4e 55  AppendElement(NU
3100: 4c 4c 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53  LL, iPtr->errorS
3110: 74 61 63 6b 2c 20 69 50 74 72 2d 3e 63 61 6c 6c  tack, iPtr->call
3120: 4c 69 74 65 72 61 6c 29 3b 0a 2b 20 20 20 20 20  Literal);.+     
3130: 20 20 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 41 70     Tcl_ListObjAp
3140: 70 65 6e 64 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c  pendElement(NULL
3150: 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61  , iPtr->errorSta
3160: 63 6b 2c 0a 2b 20 20 20 20 20 20 20 20 20 20 20  ck,.+           
3170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3180: 20 20 20 20 20 20 54 63 6c 5f 4e 65 77 4c 69 73        Tcl_NewLis
3190: 74 4f 62 6a 28 69 50 74 72 2d 3e 76 61 72 46 72  tObj(iPtr->varFr
31a0: 61 6d 65 50 74 72 2d 3e 6f 62 6a 63 2c 0a 2b 20  amePtr->objc,.+ 
31b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
31e0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72  Ptr->varFramePtr
31f0: 2d 3e 6f 62 6a 76 29 29 3b 0a 2b 20 20 20 20 7d  ->objv));.+    }
3200: 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a 40 40 20 2d 34  . }. .. /*.@@ -4
3210: 39 33 39 2c 35 20 2b 34 39 37 38 2c 37 20 40 40  939,5 +4978,7 @@
3220: 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 2a  .  * mode: c.  *
3230: 20 63 2d 62 61 73 69 63 2d 6f 66 66 73 65 74 3a   c-basic-offset:
3240: 20 34 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c 75   4.  * fill-colu
3250: 6d 6e 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d 77  mn: 78.+ * tab-w
3260: 69 64 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 65  idth: 8.+ * inde
3270: 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e 69  nt-tabs-mode: ni
3280: 6c 0a 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f 0a  l.  * End:.  */.
3290: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
32a0: 63 6c 52 65 73 75 6c 74 2e 63 0a 3d 3d 3d 3d 3d  clResult.c.=====
32b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
32c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
32d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
32e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
32f0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
3300: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
3310: 63 2f 74 63 6c 52 65 73 75 6c 74 2e 63 2c 76 0a  c/tclResult.c,v.
3320: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
3330: 69 6f 6e 20 31 2e 36 30 0a 64 69 66 66 20 2d 75  ion 1.60.diff -u
3340: 20 2d 72 31 2e 36 30 20 74 63 6c 52 65 73 75 6c   -r1.60 tclResul
3350: 74 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f  t.c.--- generic/
3360: 74 63 6c 52 65 73 75 6c 74 2e 63 09 33 30 20 4d  tclResult.c.30 M
3370: 61 72 20 32 30 31 30 20 31 33 3a 31 37 3a 31 38  ar 2010 13:17:18
3380: 20 2d 30 30 30 30 09 31 2e 36 30 0a 2b 2b 2b 20   -0000.1.60.+++ 
3390: 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 75 6c  generic/tclResul
33a0: 74 2e 63 09 33 31 20 4d 61 72 20 32 30 31 30 20  t.c.31 Mar 2010 
33b0: 31 35 3a 34 36 3a 30 34 20 2d 30 30 30 30 0a 40  15:46:04 -0000.@
33c0: 40 20 2d 31 39 2c 37 20 2b 31 39 2c 37 20 40 40  @ -19,7 +19,7 @@
33d0: 0a 20 0a 20 65 6e 75 6d 20 72 65 74 75 72 6e 4b  . . enum returnK
33e0: 65 79 73 20 7b 0a 20 20 20 20 20 4b 45 59 5f 43  eys {.     KEY_C
33f0: 4f 44 45 2c 09 4b 45 59 5f 45 52 52 4f 52 43 4f  ODE,.KEY_ERRORCO
3400: 44 45 2c 09 4b 45 59 5f 45 52 52 4f 52 49 4e 46  DE,.KEY_ERRORINF
3410: 4f 2c 09 4b 45 59 5f 45 52 52 4f 52 4c 49 4e 45  O,.KEY_ERRORLINE
3420: 2c 0a 2d 20 20 20 20 4b 45 59 5f 4c 45 56 45 4c  ,.-    KEY_LEVEL
3430: 2c 09 4b 45 59 5f 4f 50 54 49 4f 4e 53 2c 09 4b  ,.KEY_OPTIONS,.K
3440: 45 59 5f 4c 41 53 54 0a 2b 20 20 20 20 4b 45 59  EY_LAST.+    KEY
3450: 5f 4c 45 56 45 4c 2c 09 4b 45 59 5f 4f 50 54 49  _LEVEL,.KEY_OPTI
3460: 4f 4e 53 2c 09 4b 45 59 5f 45 52 52 4f 52 53 54  ONS,.KEY_ERRORST
3470: 41 43 4b 2c 09 4b 45 59 5f 4c 41 53 54 0a 20 7d  ACK,.KEY_LAST. }
3480: 3b 0a 20 0a 20 2f 2a 0a 40 40 20 2d 34 36 2c 36  ;. . /*.@@ -46,6
3490: 20 2b 34 36 2c 38 20 40 40 0a 20 20 20 20 20 54   +46,8 @@.     T
34a0: 63 6c 5f 4f 62 6a 20 2a 65 72 72 6f 72 43 6f 64  cl_Obj *errorCod
34b0: 65 3b 0a 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20  e;.     Tcl_Obj 
34c0: 2a 72 65 74 75 72 6e 4f 70 74 73 3b 0a 20 20 20  *returnOpts;.   
34d0: 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 52 65    Tcl_Obj *objRe
34e0: 73 75 6c 74 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f  sult;.+    Tcl_O
34f0: 62 6a 20 2a 65 72 72 6f 72 53 74 61 63 6b 3b 0a  bj *errorStack;.
3500: 2b 20 20 20 20 69 6e 74 20 72 65 73 65 74 45 72  +    int resetEr
3510: 72 6f 72 53 74 61 63 6b 3b 0a 20 7d 20 49 6e 74  rorStack;. } Int
3520: 65 72 70 53 74 61 74 65 3b 0a 20 0c 0a 20 2f 2a  erpState;. .. /*
3530: 0a 40 40 20 2d 38 32 2c 36 20 2b 38 34 2c 38 20  .@@ -82,6 +84,8 
3540: 40 40 0a 20 20 20 20 20 73 74 61 74 65 50 74 72  @@.     statePtr
3550: 2d 3e 72 65 74 75 72 6e 4c 65 76 65 6c 20 3d 20  ->returnLevel = 
3560: 69 50 74 72 2d 3e 72 65 74 75 72 6e 4c 65 76 65  iPtr->returnLeve
3570: 6c 3b 0a 20 20 20 20 20 73 74 61 74 65 50 74 72  l;.     statePtr
3580: 2d 3e 72 65 74 75 72 6e 43 6f 64 65 20 3d 20 69  ->returnCode = i
3590: 50 74 72 2d 3e 72 65 74 75 72 6e 43 6f 64 65 3b  Ptr->returnCode;
35a0: 0a 20 20 20 20 20 73 74 61 74 65 50 74 72 2d 3e  .     statePtr->
35b0: 65 72 72 6f 72 49 6e 66 6f 20 3d 20 69 50 74 72  errorInfo = iPtr
35c0: 2d 3e 65 72 72 6f 72 49 6e 66 6f 3b 0a 2b 20 20  ->errorInfo;.+  
35d0: 20 20 73 74 61 74 65 50 74 72 2d 3e 65 72 72 6f    statePtr->erro
35e0: 72 53 74 61 63 6b 20 3d 20 69 50 74 72 2d 3e 65  rStack = iPtr->e
35f0: 72 72 6f 72 53 74 61 63 6b 3b 0a 2b 20 20 20 20  rrorStack;.+    
3600: 73 74 61 74 65 50 74 72 2d 3e 72 65 73 65 74 45  statePtr->resetE
3610: 72 72 6f 72 53 74 61 63 6b 20 3d 20 69 50 74 72  rrorStack = iPtr
3620: 2d 3e 72 65 73 65 74 45 72 72 6f 72 53 74 61 63  ->resetErrorStac
3630: 6b 3b 0a 20 20 20 20 20 69 66 20 28 73 74 61 74  k;.     if (stat
3640: 65 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29  ePtr->errorInfo)
3650: 20 7b 0a 20 09 54 63 6c 5f 49 6e 63 72 52 65 66   {. .Tcl_IncrRef
3660: 43 6f 75 6e 74 28 73 74 61 74 65 50 74 72 2d 3e  Count(statePtr->
3670: 65 72 72 6f 72 49 6e 66 6f 29 3b 0a 20 20 20 20  errorInfo);.    
3680: 20 7d 0a 40 40 20 2d 39 33 2c 36 20 2b 39 37 2c   }.@@ -93,6 +97,
3690: 39 20 40 40 0a 20 20 20 20 20 69 66 20 28 73 74  9 @@.     if (st
36a0: 61 74 65 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70  atePtr->returnOp
36b0: 74 73 29 20 7b 0a 20 09 54 63 6c 5f 49 6e 63 72  ts) {. .Tcl_Incr
36c0: 52 65 66 43 6f 75 6e 74 28 73 74 61 74 65 50 74  RefCount(statePt
36d0: 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73 29 3b 0a  r->returnOpts);.
36e0: 20 20 20 20 20 7d 0a 2b 20 20 20 20 69 66 20 28       }.+    if (
36f0: 73 74 61 74 65 50 74 72 2d 3e 65 72 72 6f 72 53  statePtr->errorS
3700: 74 61 63 6b 29 20 7b 0a 2b 09 54 63 6c 5f 49 6e  tack) {.+.Tcl_In
3710: 63 72 52 65 66 43 6f 75 6e 74 28 73 74 61 74 65  crRefCount(state
3720: 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29  Ptr->errorStack)
3730: 3b 0a 2b 20 20 20 20 7d 0a 20 20 20 20 20 73 74  ;.+    }.     st
3740: 61 74 65 50 74 72 2d 3e 6f 62 6a 52 65 73 75 6c  atePtr->objResul
3750: 74 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65  t = Tcl_GetObjRe
3760: 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 20 20  sult(interp);.  
3770: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f     Tcl_IncrRefCo
3780: 75 6e 74 28 73 74 61 74 65 50 74 72 2d 3e 6f 62  unt(statePtr->ob
3790: 6a 52 65 73 75 6c 74 29 3b 0a 20 20 20 20 20 72  jResult);.     r
37a0: 65 74 75 72 6e 20 28 54 63 6c 5f 49 6e 74 65 72  eturn (Tcl_Inter
37b0: 70 53 74 61 74 65 29 20 73 74 61 74 65 50 74 72  pState) statePtr
37c0: 3b 0a 40 40 20 2d 31 33 30 2c 36 20 2b 31 33 37  ;.@@ -130,6 +137
37d0: 2c 37 20 40 40 0a 20 0a 20 20 20 20 20 69 50 74  ,7 @@. .     iPt
37e0: 72 2d 3e 72 65 74 75 72 6e 4c 65 76 65 6c 20 3d  r->returnLevel =
37f0: 20 73 74 61 74 65 50 74 72 2d 3e 72 65 74 75 72   statePtr->retur
3800: 6e 4c 65 76 65 6c 3b 0a 20 20 20 20 20 69 50 74  nLevel;.     iPt
3810: 72 2d 3e 72 65 74 75 72 6e 43 6f 64 65 20 3d 20  r->returnCode = 
3820: 73 74 61 74 65 50 74 72 2d 3e 72 65 74 75 72 6e  statePtr->return
3830: 43 6f 64 65 3b 0a 2b 20 20 20 20 69 50 74 72 2d  Code;.+    iPtr-
3840: 3e 72 65 73 65 74 45 72 72 6f 72 53 74 61 63 6b  >resetErrorStack
3850: 20 3d 20 73 74 61 74 65 50 74 72 2d 3e 72 65 73   = statePtr->res
3860: 65 74 45 72 72 6f 72 53 74 61 63 6b 3b 0a 20 20  etErrorStack;.  
3870: 20 20 20 69 66 20 28 69 50 74 72 2d 3e 65 72 72     if (iPtr->err
3880: 6f 72 49 6e 66 6f 29 20 7b 0a 20 09 54 63 6c 5f  orInfo) {. .Tcl_
3890: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 74  DecrRefCount(iPt
38a0: 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29 3b 0a 20  r->errorInfo);. 
38b0: 20 20 20 20 7d 0a 40 40 20 2d 31 34 34 2c 36 20      }.@@ -144,6 
38c0: 2b 31 35 32 2c 31 33 20 40 40 0a 20 20 20 20 20  +152,13 @@.     
38d0: 69 66 20 28 69 50 74 72 2d 3e 65 72 72 6f 72 43  if (iPtr->errorC
38e0: 6f 64 65 29 20 7b 0a 20 09 54 63 6c 5f 49 6e 63  ode) {. .Tcl_Inc
38f0: 72 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e  rRefCount(iPtr->
3900: 65 72 72 6f 72 43 6f 64 65 29 3b 0a 20 20 20 20  errorCode);.    
3910: 20 7d 0a 2b 20 20 20 20 69 66 20 28 69 50 74 72   }.+    if (iPtr
3920: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 20 7b 0a  ->errorStack) {.
3930: 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75  +.Tcl_DecrRefCou
3940: 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74  nt(iPtr->errorSt
3950: 61 63 6b 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20  ack);.+    }.+  
3960: 20 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61    iPtr->errorSta
3970: 63 6b 20 3d 20 73 74 61 74 65 50 74 72 2d 3e 65  ck = statePtr->e
3980: 72 72 6f 72 53 74 61 63 6b 3b 0a 2b 20 20 20 20  rrorStack;.+    
3990: 69 66 20 28 69 50 74 72 2d 3e 65 72 72 6f 72 53  if (iPtr->errorS
39a0: 74 61 63 6b 29 20 7b 0a 2b 09 54 63 6c 5f 49 6e  tack) {.+.Tcl_In
39b0: 63 72 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d  crRefCount(iPtr-
39c0: 3e 65 72 72 6f 72 53 74 61 63 6b 29 3b 0a 2b 20  >errorStack);.+ 
39d0: 20 20 20 7d 0a 20 20 20 20 20 69 66 20 28 69 50     }.     if (iP
39e0: 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73 29 20  tr->returnOpts) 
39f0: 7b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 66 43  {. .Tcl_DecrRefC
3a00: 6f 75 6e 74 28 69 50 74 72 2d 3e 72 65 74 75 72  ount(iPtr->retur
3a10: 6e 4f 70 74 73 29 3b 0a 20 20 20 20 20 7d 0a 40  nOpts);.     }.@
3a20: 40 20 2d 31 38 38 2c 36 20 2b 32 30 33 2c 39 20  @ -188,6 +203,9 
3a30: 40 40 0a 20 20 20 20 20 69 66 20 28 73 74 61 74  @@.     if (stat
3a40: 65 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73  ePtr->returnOpts
3a50: 29 20 7b 0a 20 09 54 63 6c 5f 44 65 63 72 52 65  ) {. .Tcl_DecrRe
3a60: 66 43 6f 75 6e 74 28 73 74 61 74 65 50 74 72 2d  fCount(statePtr-
3a70: 3e 72 65 74 75 72 6e 4f 70 74 73 29 3b 0a 20 20  >returnOpts);.  
3a80: 20 20 20 7d 0a 2b 20 20 20 20 69 66 20 28 73 74     }.+    if (st
3a90: 61 74 65 50 74 72 2d 3e 65 72 72 6f 72 53 74 61  atePtr->errorSta
3aa0: 63 6b 29 20 7b 0a 2b 09 54 63 6c 5f 44 65 63 72  ck) {.+.Tcl_Decr
3ab0: 52 65 66 43 6f 75 6e 74 28 73 74 61 74 65 50 74  RefCount(statePt
3ac0: 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 3b 0a  r->errorStack);.
3ad0: 2b 20 20 20 20 7d 0a 20 20 20 20 20 54 63 6c 5f  +    }.     Tcl_
3ae0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 73 74 61  DecrRefCount(sta
3af0: 74 65 50 74 72 2d 3e 6f 62 6a 52 65 73 75 6c 74  tePtr->objResult
3b00: 29 3b 0a 20 20 20 20 20 63 6b 66 72 65 65 28 28  );.     ckfree((
3b10: 63 68 61 72 20 2a 29 20 73 74 61 74 65 50 74 72  char *) statePtr
3b20: 29 3b 0a 20 7d 0a 40 40 20 2d 39 32 34 2c 36 20  );. }.@@ -924,6 
3b30: 2b 39 34 32 2c 37 20 40 40 0a 20 09 54 63 6c 5f  +942,7 @@. .Tcl_
3b40: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 74  DecrRefCount(iPt
3b50: 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29 3b 0a 20  r->errorInfo);. 
3b60: 09 69 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f  .iPtr->errorInfo
3b70: 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 7d 0a   = NULL;.     }.
3b80: 2b 20 20 20 20 69 50 74 72 2d 3e 72 65 73 65 74  +    iPtr->reset
3b90: 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 31 3b 0a  ErrorStack = 1;.
3ba0: 20 20 20 20 20 69 50 74 72 2d 3e 72 65 74 75 72       iPtr->retur
3bb0: 6e 4c 65 76 65 6c 20 3d 20 31 3b 0a 20 20 20 20  nLevel = 1;.    
3bc0: 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 43 6f 64   iPtr->returnCod
3bd0: 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20  e = TCL_OK;.    
3be0: 20 69 66 20 28 69 50 74 72 2d 3e 72 65 74 75 72   if (iPtr->retur
3bf0: 6e 4f 70 74 73 29 20 7b 0a 40 40 20 2d 31 31 36  nOpts) {.@@ -116
3c00: 31 2c 36 20 2b 31 31 38 30 2c 37 20 40 40 0a 20  1,6 +1180,7 @@. 
3c10: 09 54 63 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74  .TclNewLiteralSt
3c20: 72 69 6e 67 4f 62 6a 28 6b 65 79 73 5b 4b 45 59  ringObj(keys[KEY
3c30: 5f 45 52 52 4f 52 43 4f 44 45 5d 2c 20 22 2d 65  _ERRORCODE], "-e
3c40: 72 72 6f 72 63 6f 64 65 22 29 3b 0a 20 09 54 63  rrorcode");. .Tc
3c50: 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e  lNewLiteralStrin
3c60: 67 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 45 52  gObj(keys[KEY_ER
3c70: 52 4f 52 49 4e 46 4f 5d 2c 20 22 2d 65 72 72 6f  RORINFO], "-erro
3c80: 72 69 6e 66 6f 22 29 3b 0a 20 09 54 63 6c 4e 65  rinfo");. .TclNe
3c90: 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67 4f 62  wLiteralStringOb
3ca0: 6a 28 6b 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52  j(keys[KEY_ERROR
3cb0: 4c 49 4e 45 5d 2c 20 22 2d 65 72 72 6f 72 6c 69  LINE], "-errorli
3cc0: 6e 65 22 29 3b 0a 2b 09 54 63 6c 4e 65 77 4c 69  ne");.+.TclNewLi
3cd0: 74 65 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b  teralStringObj(k
3ce0: 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41  eys[KEY_ERRORSTA
3cf0: 43 4b 5d 2c 22 2d 65 72 72 6f 72 73 74 61 63 6b  CK],"-errorstack
3d00: 22 29 3b 0a 20 09 54 63 6c 4e 65 77 4c 69 74 65  ");. .TclNewLite
3d10: 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b 65 79  ralStringObj(key
3d20: 73 5b 4b 45 59 5f 4c 45 56 45 4c 5d 2c 09 20 20  s[KEY_LEVEL],.  
3d30: 20 20 22 2d 6c 65 76 65 6c 22 29 3b 0a 20 09 54    "-level");. .T
3d40: 63 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69  clNewLiteralStri
3d50: 6e 67 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 4f  ngObj(keys[KEY_O
3d60: 50 54 49 4f 4e 53 5d 2c 20 20 20 22 2d 6f 70 74  PTIONS],   "-opt
3d70: 69 6f 6e 73 22 29 3b 0a 20 0a 40 40 20 2d 31 32  ions");. .@@ -12
3d80: 36 36 2c 36 20 2b 31 32 38 36 2c 33 31 20 40 40  66,6 +1286,31 @@
3d90: 0a 20 09 09 69 50 74 72 2d 3e 66 6c 61 67 73 20  . ..iPtr->flags 
3da0: 7c 3d 20 45 52 52 5f 41 4c 52 45 41 44 59 5f 4c  |= ERR_ALREADY_L
3db0: 4f 47 47 45 44 3b 0a 20 09 20 20 20 20 7d 0a 20  OGGED;. .    }. 
3dc0: 09 7d 0a 2b 09 54 63 6c 5f 44 69 63 74 4f 62 6a  .}.+.Tcl_DictObj
3dd0: 47 65 74 28 4e 55 4c 4c 2c 20 69 50 74 72 2d 3e  Get(NULL, iPtr->
3de0: 72 65 74 75 72 6e 4f 70 74 73 2c 20 6b 65 79 73  returnOpts, keys
3df0: 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43 4b 5d  [KEY_ERRORSTACK]
3e00: 2c 20 26 76 61 6c 75 65 50 74 72 29 3b 0a 2b 09  , &valuePtr);.+.
3e10: 69 66 20 28 76 61 6c 75 65 50 74 72 20 21 3d 20  if (valuePtr != 
3e20: 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 20 20 20  NULL) {.+       
3e30: 20 20 20 20 20 69 6e 74 20 6c 65 6e 2c 20 76 61       int len, va
3e40: 6c 75 65 4f 62 6a 63 3b 0a 2b 20 20 20 20 20 20  lueObjc;.+      
3e50: 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 2a        Tcl_Obj **
3e60: 76 61 6c 75 65 4f 62 6a 76 3b 0a 2b 0a 2b 20 20  valueObjv;.+.+  
3e70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 54 63            if (Tc
3e80: 6c 5f 49 73 53 68 61 72 65 64 28 69 50 74 72 2d  l_IsShared(iPtr-
3e90: 3e 65 72 72 6f 72 53 74 61 63 6b 29 29 20 7b 0a  >errorStack)) {.
3ea0: 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  +               
3eb0: 20 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 4f 62 6a   Tcl_Obj *newObj
3ec0: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.+             
3ed0: 20 20 20 0a 2b 20 20 20 20 20 20 20 20 20 20 20     .+           
3ee0: 20 20 20 20 20 6e 65 77 4f 62 6a 20 3d 20 54 63       newObj = Tc
3ef0: 6c 5f 44 75 70 6c 69 63 61 74 65 4f 62 6a 28 69  l_DuplicateObj(i
3f00: 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29  Ptr->errorStack)
3f10: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.+             
3f20: 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f     Tcl_DecrRefCo
3f30: 75 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53  unt(iPtr->errorS
3f40: 74 61 63 6b 29 3b 0a 2b 20 20 20 20 20 20 20 20  tack);.+        
3f50: 20 20 20 20 20 20 20 20 54 63 6c 5f 49 6e 63 72          Tcl_Incr
3f60: 52 65 66 43 6f 75 6e 74 28 6e 65 77 4f 62 6a 29  RefCount(newObj)
3f70: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.+             
3f80: 20 20 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74     iPtr->errorSt
3f90: 61 63 6b 20 3d 20 6e 65 77 4f 62 6a 3b 0a 2b 20  ack = newObj;.+ 
3fa0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 2b 20 20             }.+  
3fb0: 20 20 20 20 20 20 20 20 20 20 2f 2a 0a 2b 20 20            /*.+  
3fc0: 20 20 20 20 20 20 20 20 20 20 20 2a 20 4c 69 73             * Lis
3fd0: 74 20 65 78 74 72 61 63 74 69 6f 6e 20 64 6f 6e  t extraction don
3fe0: 65 20 61 66 74 65 72 20 64 75 70 6c 69 63 61 74  e after duplicat
3ff0: 69 6f 6e 20 74 6f 20 61 76 6f 69 64 20 6d 6f 76  ion to avoid mov
4000: 69 6e 67 20 74 68 65 20 72 75 67 0a 2b 20 20 20  ing the rug.+   
4010: 20 20 20 20 20 20 20 20 20 20 2a 20 69 66 20 73            * if s
4020: 6f 6d 65 6f 6e 65 20 64 6f 65 73 20 5b 72 65 74  omeone does [ret
4030: 75 72 6e 20 2d 65 72 72 6f 72 73 74 61 63 6b 20  urn -errorstack 
4040: 5b 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 6b  [info errorstack
4050: 5d 5d 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  ]].+            
4060: 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 20 20 20   */.+           
4070: 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 6a   if (Tcl_ListObj
4080: 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 65  GetElements(inte
4090: 72 70 2c 20 76 61 6c 75 65 50 74 72 2c 20 26 76  rp, valuePtr, &v
40a0: 61 6c 75 65 4f 62 6a 63 2c 20 26 76 61 6c 75 65  alueObjc, &value
40b0: 4f 62 6a 76 29 20 3d 3d 20 54 43 4c 5f 45 52 52  Objv) == TCL_ERR
40c0: 4f 52 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20  OR) {.+         
40d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 43         return TC
40e0: 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 20 20  L_ERROR;.+      
40f0: 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20        }.+       
4100: 20 20 20 20 20 69 50 74 72 2d 3e 72 65 73 65 74       iPtr->reset
4110: 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 30 3b 0a  ErrorStack = 0;.
4120: 2b 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6c  +            Tcl
4130: 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69  _ListObjLength(i
4140: 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 72 72  nterp, iPtr->err
4150: 6f 72 53 74 61 63 6b 2c 20 26 6c 65 6e 29 3b 0a  orStack, &len);.
4160: 2b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  +            /* 
4170: 72 65 73 65 74 20 77 68 69 6c 65 20 6b 65 65 70  reset while keep
4180: 69 6e 67 20 74 68 65 20 6c 69 73 74 20 69 6e 74  ing the list int
4190: 72 65 70 20 61 73 20 6d 75 63 68 20 61 73 20 70  rep as much as p
41a0: 6f 73 73 69 62 6c 65 20 2a 2f 0a 2b 20 20 20 20  ossible */.+    
41b0: 20 20 20 20 20 20 20 20 54 63 6c 5f 4c 69 73 74          Tcl_List
41c0: 4f 62 6a 52 65 70 6c 61 63 65 28 69 6e 74 65 72  ObjReplace(inter
41d0: 70 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74  p, iPtr->errorSt
41e0: 61 63 6b 2c 20 30 2c 20 6c 65 6e 2c 20 76 61 6c  ack, 0, len, val
41f0: 75 65 4f 62 6a 63 2c 20 76 61 6c 75 65 4f 62 6a  ueObjc, valueObj
4200: 76 29 3b 0a 2b 20 09 7d 0a 20 09 54 63 6c 5f 44  v);.+ .}. .Tcl_D
4210: 69 63 74 4f 62 6a 47 65 74 28 4e 55 4c 4c 2c 20  ictObjGet(NULL, 
4220: 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73  iPtr->returnOpts
4230: 2c 20 6b 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52  , keys[KEY_ERROR
4240: 43 4f 44 45 5d 2c 20 26 76 61 6c 75 65 50 74 72  CODE], &valuePtr
4250: 29 3b 0a 20 09 69 66 20 28 76 61 6c 75 65 50 74  );. .if (valuePt
4260: 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 20  r != NULL) {. . 
4270: 20 20 20 54 63 6c 5f 53 65 74 4f 62 6a 45 72 72     Tcl_SetObjErr
4280: 6f 72 43 6f 64 65 28 69 6e 74 65 72 70 2c 20 76  orCode(interp, v
4290: 61 6c 75 65 50 74 72 29 3b 0a 40 40 20 2d 31 34  aluePtr);.@@ -14
42a0: 32 39 2c 36 20 2b 31 34 37 34 2c 33 37 20 40 40  29,6 +1474,37 @@
42b0: 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f  .     }. .     /
42c0: 2a 0a 2b 20 20 20 20 20 2a 20 43 68 65 63 6b 20  *.+     * Check 
42d0: 66 6f 72 20 62 6f 67 75 73 20 2d 65 72 72 6f 72  for bogus -error
42e0: 73 74 61 63 6b 20 76 61 6c 75 65 2e 0a 2b 20 20  stack value..+  
42f0: 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20 54 63 6c     */.+.+    Tcl
4300: 5f 44 69 63 74 4f 62 6a 47 65 74 28 4e 55 4c 4c  _DictObjGet(NULL
4310: 2c 20 72 65 74 75 72 6e 4f 70 74 73 2c 20 6b 65  , returnOpts, ke
4320: 79 73 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43  ys[KEY_ERRORSTAC
4330: 4b 5d 2c 20 26 76 61 6c 75 65 50 74 72 29 3b 0a  K], &valuePtr);.
4340: 2b 20 20 20 20 69 66 20 28 76 61 6c 75 65 50 74  +    if (valuePt
4350: 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 69  r != NULL) {.+.i
4360: 6e 74 20 6c 65 6e 67 74 68 3b 0a 2b 0a 2b 09 69  nt length;.+.+.i
4370: 66 20 28 54 43 4c 5f 45 52 52 4f 52 20 3d 3d 20  f (TCL_ERROR == 
4380: 54 63 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74  Tcl_ListObjLengt
4390: 68 28 4e 55 4c 4c 2c 20 76 61 6c 75 65 50 74 72  h(NULL, valuePtr
43a0: 2c 20 26 6c 65 6e 67 74 68 20 29 29 20 7b 0a 2b  , &length )) {.+
43b0: 09 20 20 20 20 2f 2a 0a 2b 09 20 20 20 20 20 2a  .    /*.+.     *
43c0: 20 56 61 6c 75 65 20 69 73 20 6e 6f 74 20 61 20   Value is not a 
43d0: 6c 69 73 74 2c 20 77 68 69 63 68 20 69 73 20 69  list, which is i
43e0: 6c 6c 65 67 61 6c 20 66 6f 72 20 2d 65 72 72 6f  llegal for -erro
43f0: 72 73 74 61 63 6b 2e 0a 2b 09 20 20 20 20 20 2a  rstack..+.     *
4400: 2f 0a 2b 09 20 20 20 20 54 63 6c 5f 52 65 73 65  /.+.    Tcl_Rese
4410: 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b  tResult(interp);
4420: 0a 2b 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e  .+.    Tcl_Appen
4430: 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20  dResult(interp, 
4440: 22 62 61 64 20 2d 65 72 72 6f 72 73 74 61 63 6b  "bad -errorstack
4450: 20 76 61 6c 75 65 3a 20 22 0a 2b 09 09 09 20 20   value: ".+...  
4460: 20 20 20 22 65 78 70 65 63 74 65 64 20 61 20 6c     "expected a l
4470: 69 73 74 20 62 75 74 20 67 6f 74 20 5c 22 22 2c  ist but got \"",
4480: 0a 2b 09 09 09 20 20 20 20 20 54 63 6c 47 65 74  .+...     TclGet
4490: 53 74 72 69 6e 67 28 76 61 6c 75 65 50 74 72 29  String(valuePtr)
44a0: 2c 20 22 5c 22 22 2c 20 4e 55 4c 4c 29 3b 0a 2b  , "\"", NULL);.+
44b0: 09 20 20 20 20 54 63 6c 5f 53 65 74 45 72 72 6f  .    Tcl_SetErro
44c0: 72 43 6f 64 65 28 69 6e 74 65 72 70 2c 20 22 54  rCode(interp, "T
44d0: 43 4c 22 2c 20 22 52 45 53 55 4c 54 22 2c 20 22  CL", "RESULT", "
44e0: 4e 4f 4e 4c 49 53 54 5f 45 52 52 4f 52 53 54 41  NONLIST_ERRORSTA
44f0: 43 4b 22 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 20 20  CK", NULL);.+.  
4500: 20 20 67 6f 74 6f 20 65 72 72 6f 72 3b 0a 2b 09    goto error;.+.
4510: 7d 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 6c  }.+        if (l
4520: 65 6e 67 74 68 20 25 20 32 29 20 7b 0a 2b 20 20  ength % 2) {.+  
4530: 20 20 20 20 20 20 20 20 20 20 2f 2a 0a 2b 20 20            /*.+  
4540: 20 20 20 20 20 20 20 20 20 20 20 2a 20 45 72 72             * Err
4550: 6f 72 73 74 61 63 6b 20 6d 75 73 74 20 61 6c 77  orstack must alw
4560: 61 79 73 20 62 65 20 61 6e 20 65 76 65 6e 2d 73  ays be an even-s
4570: 69 7a 65 64 20 6c 69 73 74 0a 2b 20 20 20 20 20  ized list.+     
4580: 20 20 20 20 20 20 20 20 2a 2f 0a 2b 20 20 20 20          */.+    
4590: 20 20 20 20 20 20 20 20 54 63 6c 5f 52 65 73 65          Tcl_Rese
45a0: 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b  tResult(interp);
45b0: 0a 2b 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e  .+.    Tcl_Appen
45c0: 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20  dResult(interp, 
45d0: 22 66 6f 72 62 69 64 64 65 6e 20 6f 64 64 2d 73  "forbidden odd-s
45e0: 69 7a 65 64 20 6c 69 73 74 20 66 6f 72 20 2d 65  ized list for -e
45f0: 72 72 6f 72 73 74 61 63 6b 3a 20 5c 22 22 2c 0a  rrorstack: \"",.
4600: 2b 09 09 09 20 20 20 20 20 54 63 6c 47 65 74 53  +...     TclGetS
4610: 74 72 69 6e 67 28 76 61 6c 75 65 50 74 72 29 2c  tring(valuePtr),
4620: 20 22 5c 22 22 2c 20 4e 55 4c 4c 29 3b 0a 2b 09   "\"", NULL);.+.
4630: 20 20 20 20 54 63 6c 5f 53 65 74 45 72 72 6f 72      Tcl_SetError
4640: 43 6f 64 65 28 69 6e 74 65 72 70 2c 20 22 54 43  Code(interp, "TC
4650: 4c 22 2c 20 22 52 45 53 55 4c 54 22 2c 20 22 4f  L", "RESULT", "O
4660: 44 44 53 49 5a 45 44 4c 49 53 54 5f 45 52 52 4f  DDSIZEDLIST_ERRO
4670: 52 53 54 41 43 4b 22 2c 20 4e 55 4c 4c 29 3b 0a  RSTACK", NULL);.
4680: 2b 09 20 20 20 20 67 6f 74 6f 20 65 72 72 6f 72  +.    goto error
4690: 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20  ;.+        }.+  
46a0: 20 20 7d 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 20 20    }.+.+    /*.  
46b0: 20 20 20 20 2a 20 43 6f 6e 76 65 72 74 20 5b 72      * Convert [r
46c0: 65 74 75 72 6e 20 2d 63 6f 64 65 20 72 65 74 75  eturn -code retu
46d0: 72 6e 20 2d 6c 65 76 65 6c 20 58 5d 20 74 6f 20  rn -level X] to 
46e0: 5b 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 6f 6b  [return -code ok
46f0: 20 2d 6c 65 76 65 6c 20 58 2b 31 5d 0a 20 20 20   -level X+1].   
4700: 20 20 20 2a 2f 0a 20 0a 40 40 20 2d 31 35 30 35     */. .@@ -1505
4710: 2c 36 20 2b 31 35 38 31 2c 37 20 40 40 0a 20 0a  ,6 +1581,7 @@. .
4720: 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
4730: 3d 3d 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a  == TCL_ERROR) {.
4740: 20 09 54 63 6c 5f 41 64 64 4f 62 6a 45 72 72 6f   .Tcl_AddObjErro
4750: 72 49 6e 66 6f 28 69 6e 74 65 72 70 2c 20 22 22  rInfo(interp, ""
4760: 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 20 20 20 20  , -1);.+        
4770: 54 63 6c 5f 44 69 63 74 4f 62 6a 50 75 74 28 4e  Tcl_DictObjPut(N
4780: 55 4c 4c 2c 20 6f 70 74 69 6f 6e 73 2c 20 6b 65  ULL, options, ke
4790: 79 73 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43  ys[KEY_ERRORSTAC
47a0: 4b 5d 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53  K], iPtr->errorS
47b0: 74 61 63 6b 29 3b 0a 20 20 20 20 20 7d 0a 20 20  tack);.     }.  
47c0: 20 20 20 69 66 20 28 69 50 74 72 2d 3e 65 72 72     if (iPtr->err
47d0: 6f 72 43 6f 64 65 29 20 7b 0a 20 09 54 63 6c 5f  orCode) {. .Tcl_
47e0: 44 69 63 74 4f 62 6a 50 75 74 28 4e 55 4c 4c 2c  DictObjPut(NULL,
47f0: 20 6f 70 74 69 6f 6e 73 2c 20 6b 65 79 73 5b 4b   options, keys[K
4800: 45 59 5f 45 52 52 4f 52 43 4f 44 45 5d 2c 20 69  EY_ERRORCODE], i
4810: 50 74 72 2d 3e 65 72 72 6f 72 43 6f 64 65 29 3b  Ptr->errorCode);
4820: 0a 40 40 20 2d 31 36 33 36 2c 35 20 2b 31 37 31  .@@ -1636,5 +171
4830: 33 2c 37 20 40 40 0a 20 20 2a 20 6d 6f 64 65 3a  3,7 @@.  * mode:
4840: 20 63 0a 20 20 2a 20 63 2d 62 61 73 69 63 2d 6f   c.  * c-basic-o
4850: 66 66 73 65 74 3a 20 34 0a 20 20 2a 20 66 69 6c  ffset: 4.  * fil
4860: 6c 2d 63 6f 6c 75 6d 6e 3a 20 37 38 0a 2b 20 2a  l-column: 78.+ *
4870: 20 74 61 62 2d 77 69 64 74 68 3a 20 38 0a 2b 20   tab-width: 8.+ 
4880: 2a 20 69 6e 64 65 6e 74 2d 74 61 62 73 2d 6d 6f  * indent-tabs-mo
4890: 64 65 3a 20 6e 69 6c 0a 20 20 2a 20 45 6e 64 3a  de: nil.  * End:
48a0: 0a 20 20 2a 2f 0a 49 6e 64 65 78 3a 20 74 65 73  .  */.Index: tes
48b0: 74 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 0a 3d 3d  ts/cmdMZ.test.==
48c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
48d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
48e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
48f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4900: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73  =.RCS file: /cvs
4910: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73  root/tcl/tcl/tes
4920: 74 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 2c 76 0a  ts/cmdMZ.test,v.
4930: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
4940: 69 6f 6e 20 31 2e 32 39 0a 64 69 66 66 20 2d 75  ion 1.29.diff -u
4950: 20 2d 72 31 2e 32 39 20 63 6d 64 4d 5a 2e 74 65   -r1.29 cmdMZ.te
4960: 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 63 6d 64  st.--- tests/cmd
4970: 4d 5a 2e 74 65 73 74 09 33 31 20 4d 61 72 20 32  MZ.test.31 Mar 2
4980: 30 31 30 20 31 30 3a 32 39 3a 32 32 20 2d 30 30  010 10:29:22 -00
4990: 30 30 09 31 2e 32 39 0a 2b 2b 2b 20 74 65 73 74  00.1.29.+++ test
49a0: 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 09 33 31 20  s/cmdMZ.test.31 
49b0: 4d 61 72 20 32 30 31 30 20 31 35 3a 34 36 3a 30  Mar 2010 15:46:0
49c0: 34 20 2d 30 30 30 30 0a 40 40 20 2d 31 34 39 2c  4 -0000.@@ -149,
49d0: 31 31 20 2b 31 34 39 2c 31 31 20 40 40 0a 20 74  11 +149,11 @@. t
49e0: 65 73 74 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e  est cmdMZ-return
49f0: 2d 32 2e 39 20 7b 72 65 74 75 72 6e 20 6f 70 74  -2.9 {return opt
4a00: 69 6f 6e 20 68 61 6e 64 6c 69 6e 67 7d 20 2d 62  ion handling} -b
4a10: 6f 64 79 20 7b 0a 20 20 20 20 20 72 65 74 75 72  ody {.     retur
4a20: 6e 20 2d 6c 65 76 65 6c 20 30 20 2d 63 6f 64 65  n -level 0 -code
4a30: 20 31 30 0a 20 7d 20 2d 72 65 74 75 72 6e 43 6f   10. } -returnCo
4a40: 64 65 73 20 31 30 20 2d 72 65 73 75 6c 74 20 7b  des 10 -result {
4a50: 7d 0a 2d 74 65 73 74 20 63 6d 64 4d 5a 2d 72 65  }.-test cmdMZ-re
4a60: 74 75 72 6e 2d 32 2e 31 30 20 7b 72 65 74 75 72  turn-2.10 {retur
4a70: 6e 20 6f 70 74 69 6f 6e 20 68 61 6e 64 6c 69 6e  n option handlin
4a80: 67 7d 20 7b 0a 2b 74 65 73 74 20 63 6d 64 4d 5a  g} {.+test cmdMZ
4a90: 2d 72 65 74 75 72 6e 2d 32 2e 31 30 20 7b 72 65  -return-2.10 {re
4aa0: 74 75 72 6e 20 6f 70 74 69 6f 6e 20 68 61 6e 64  turn option hand
4ab0: 6c 69 6e 67 7d 20 2d 62 6f 64 79 20 7b 0a 20 20  ling} -body {.  
4ac0: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
4ad0: 72 65 74 75 72 6e 20 2d 6c 65 76 65 6c 20 30 20  return -level 0 
4ae0: 2d 63 6f 64 65 20 65 72 72 6f 72 7d 20 2d 3e 20  -code error} -> 
4af0: 66 6f 6f 5d 20 5b 64 69 63 74 53 6f 72 74 20 24  foo] [dictSort $
4b00: 66 6f 6f 5d 0a 2d 7d 20 7b 31 20 7b 2d 63 6f 64  foo].-} {1 {-cod
4b10: 65 20 31 20 2d 65 72 72 6f 72 63 6f 64 65 20 4e  e 1 -errorcode N
4b20: 4f 4e 45 20 2d 65 72 72 6f 72 69 6e 66 6f 20 7b  ONE -errorinfo {
4b30: 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20  .+} -match glob 
4b40: 2d 72 65 73 75 6c 74 20 7b 31 20 7b 2d 63 6f 64  -result {1 {-cod
4b50: 65 20 31 20 2d 65 72 72 6f 72 63 6f 64 65 20 4e  e 1 -errorcode N
4b60: 4f 4e 45 20 2d 65 72 72 6f 72 69 6e 66 6f 20 7b  ONE -errorinfo {
4b70: 0a 20 20 20 20 20 77 68 69 6c 65 20 65 78 65 63  .     while exec
4b80: 75 74 69 6e 67 0a 2d 22 72 65 74 75 72 6e 20 2d  uting.-"return -
4b90: 6c 65 76 65 6c 20 30 20 2d 63 6f 64 65 20 65 72  level 0 -code er
4ba0: 72 6f 72 22 7d 20 2d 65 72 72 6f 72 6c 69 6e 65  ror"} -errorline
4bb0: 20 31 20 2d 6c 65 76 65 6c 20 30 7d 7d 0a 2b 22   1 -level 0}}.+"
4bc0: 72 65 74 75 72 6e 20 2d 6c 65 76 65 6c 20 30 20  return -level 0 
4bd0: 2d 63 6f 64 65 20 65 72 72 6f 72 22 7d 20 2d 65  -code error"} -e
4be0: 72 72 6f 72 6c 69 6e 65 20 31 20 2d 65 72 72 6f  rrorline 1 -erro
4bf0: 72 73 74 61 63 6b 20 2a 20 2d 6c 65 76 65 6c 20  rstack * -level 
4c00: 30 7d 7d 0a 20 74 65 73 74 20 63 6d 64 4d 5a 2d  0}}. test cmdMZ-
4c10: 72 65 74 75 72 6e 2d 32 2e 31 31 20 7b 72 65 74  return-2.11 {ret
4c20: 75 72 6e 20 6f 70 74 69 6f 6e 20 68 61 6e 64 6c  urn option handl
4c30: 69 6e 67 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74  ing} {.     list
4c40: 20 5b 63 61 74 63 68 20 7b 72 65 74 75 72 6e 20   [catch {return 
4c50: 2d 6c 65 76 65 6c 20 30 20 2d 63 6f 64 65 20 62  -level 0 -code b
4c60: 72 65 61 6b 7d 20 2d 3e 20 66 6f 6f 5d 20 5b 64  reak} -> foo] [d
4c70: 69 63 74 53 6f 72 74 20 24 66 6f 6f 5d 0a 20 7d  ictSort $foo]. }
4c80: 20 7b 33 20 7b 2d 63 6f 64 65 20 33 20 2d 6c 65   {3 {-code 3 -le
4c90: 76 65 6c 20 30 7d 7d 0a 40 40 20 2d 31 39 33 2c  vel 0}}.@@ -193,
4ca0: 36 20 2b 31 39 33 2c 39 20 40 40 0a 20 7d 20 2d  6 +193,9 @@. } -
4cb0: 63 6c 65 61 6e 75 70 20 7b 0a 20 20 20 20 20 72  cleanup {.     r
4cc0: 65 6e 61 6d 65 20 70 20 7b 7d 0a 20 7d 20 2d 72  ename p {}. } -r
4cd0: 65 73 75 6c 74 20 7b 31 20 63 20 7b 61 20 62 7d  esult {1 c {a b}
4ce0: 7d 0a 2b 74 65 73 74 20 63 6d 64 4d 5a 2d 72 65  }.+test cmdMZ-re
4cf0: 74 75 72 6e 2d 32 2e 31 38 20 7b 72 65 74 75 72  turn-2.18 {retur
4d00: 6e 20 6f 70 74 69 6f 6e 20 68 61 6e 64 6c 69 6e  n option handlin
4d10: 67 7d 20 7b 0a 2b 20 20 20 20 6c 69 73 74 20 5b  g} {.+    list [
4d20: 63 61 74 63 68 20 7b 72 65 74 75 72 6e 20 2d 63  catch {return -c
4d30: 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72 6f 72  ode error -error
4d40: 73 74 61 63 6b 20 5b 6c 69 73 74 20 43 41 4c 4c  stack [list CALL
4d50: 20 61 20 43 41 4c 4c 20 62 5d 20 79 6f 7d 20 2d   a CALL b] yo} -
4d60: 3e 20 66 6f 6f 5d 20 5b 64 69 63 74 53 6f 72 74  > foo] [dictSort
4d70: 20 24 66 6f 6f 5d 20 5b 69 6e 66 6f 20 65 72 72   $foo] [info err
4d80: 6f 72 73 74 61 63 6b 5d 0a 2b 7d 20 7b 32 20 7b  orstack].+} {2 {
4d90: 2d 63 6f 64 65 20 31 20 2d 65 72 72 6f 72 63 6f  -code 1 -errorco
4da0: 64 65 20 4e 4f 4e 45 20 2d 65 72 72 6f 72 73 74  de NONE -errorst
4db0: 61 63 6b 20 7b 43 41 4c 4c 20 61 20 43 41 4c 4c  ack {CALL a CALL
4dc0: 20 62 7d 20 2d 6c 65 76 65 6c 20 31 7d 20 7b 43   b} -level 1} {C
4dd0: 41 4c 4c 20 61 20 43 41 4c 4c 20 62 7d 7d 0a 20  ALL a CALL b}}. 
4de0: 0a 20 23 20 43 68 65 63 6b 20 74 68 61 74 20 74  . # Check that t
4df0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61 20 5b  he result of a [
4e00: 72 65 74 75 72 6e 20 2d 6f 70 74 69 6f 6e 73 20  return -options 
4e10: 24 6f 70 74 73 20 24 72 65 73 75 6c 74 5d 20 69  $opts $result] i
4e20: 73 0a 20 23 20 69 6e 64 69 73 74 69 6e 67 75 69  s. # indistingui
4e30: 73 68 61 62 6c 65 20 66 72 6f 6d 20 74 68 61 74  shable from that
4e40: 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   of the original
4e50: 6c 79 20 63 61 75 67 68 74 20 73 63 72 69 70 74  ly caught script
4e60: 2c 20 6e 6f 20 6d 61 74 74 65 72 20 77 68 61 74  , no matter what
4e70: 0a 40 40 20 2d 32 31 31 2c 36 20 2b 32 31 34 2c  .@@ -211,6 +214,
4e80: 37 20 40 40 0a 20 20 20 20 20 63 6d 64 4d 5a 2d  7 @@.     cmdMZ-
4e90: 72 65 74 75 72 6e 2d 33 2e 31 30 20 7b 72 65 74  return-3.10 {ret
4ea0: 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20  urn -code error 
4eb0: 2d 65 72 72 6f 72 69 6e 66 6f 20 66 6f 6f 7d 0a  -errorinfo foo}.
4ec0: 20 20 20 20 20 63 6d 64 4d 5a 2d 72 65 74 75 72       cmdMZ-retur
4ed0: 6e 2d 33 2e 31 31 20 7b 72 65 74 75 72 6e 20 2d  n-3.11 {return -
4ee0: 63 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72 6f  code error -erro
4ef0: 72 69 6e 66 6f 20 66 6f 6f 20 2d 65 72 72 6f 72  rinfo foo -error
4f00: 63 6f 64 65 20 62 61 72 7d 0a 20 20 20 20 20 63  code bar}.     c
4f10: 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 33 2e 31 32  mdMZ-return-3.12
4f20: 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65   {return -code e
4f30: 72 72 6f 72 20 2d 65 72 72 6f 72 69 6e 66 6f 20  rror -errorinfo 
4f40: 66 6f 6f 20 2d 65 72 72 6f 72 63 6f 64 65 20 62  foo -errorcode b
4f50: 61 72 20 2d 65 72 72 6f 72 6c 69 6e 65 20 31 30  ar -errorline 10
4f60: 7d 0a 2b 20 20 20 20 63 6d 64 4d 5a 2d 72 65 74  }.+    cmdMZ-ret
4f70: 75 72 6e 2d 33 2e 31 32 2e 31 20 7b 72 65 74 75  urn-3.12.1 {retu
4f80: 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20 2d  rn -code error -
4f90: 65 72 72 6f 72 69 6e 66 6f 20 66 6f 6f 20 2d 65  errorinfo foo -e
4fa0: 72 72 6f 72 63 6f 64 65 20 62 61 72 20 2d 65 72  rrorcode bar -er
4fb0: 72 6f 72 6c 69 6e 65 20 31 30 20 2d 65 72 72 6f  rorline 10 -erro
4fc0: 72 73 74 61 63 6b 20 62 61 7a 7d 0a 20 20 20 20  rstack baz}.    
4fd0: 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 33 2e   cmdMZ-return-3.
4fe0: 31 33 20 7b 72 65 74 75 72 6e 20 2d 6f 70 74 69  13 {return -opti
4ff0: 6f 6e 73 20 7b 78 20 79 20 7a 20 32 7d 7d 0a 20  ons {x y z 2}}. 
5000: 20 20 20 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e      cmdMZ-return
5010: 2d 33 2e 31 34 20 7b 72 65 74 75 72 6e 20 2d 6c  -3.14 {return -l
5020: 65 76 65 6c 20 33 20 2d 63 6f 64 65 20 62 72 65  evel 3 -code bre
5030: 61 6b 20 73 64 66 7d 0a 20 7d 20 7b 0a 49 6e 64  ak sdf}. } {.Ind
5040: 65 78 3a 20 74 65 73 74 73 2f 65 72 72 6f 72 2e  ex: tests/error.
5050: 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  test.===========
5060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5090: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
50a0: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
50b0: 74 63 6c 2f 74 65 73 74 73 2f 65 72 72 6f 72 2e  tcl/tests/error.
50c0: 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e  test,v.retrievin
50d0: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 39 0a  g revision 1.29.
50e0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 39 20 65  diff -u -r1.29 e
50f0: 72 72 6f 72 2e 74 65 73 74 0a 2d 2d 2d 20 74 65  rror.test.--- te
5100: 73 74 73 2f 65 72 72 6f 72 2e 74 65 73 74 09 33  sts/error.test.3
5110: 31 20 4d 61 72 20 32 30 31 30 20 31 30 3a 32 39  1 Mar 2010 10:29
5120: 3a 32 32 20 2d 30 30 30 30 09 31 2e 32 39 0a 2b  :22 -0000.1.29.+
5130: 2b 2b 20 74 65 73 74 73 2f 65 72 72 6f 72 2e 74  ++ tests/error.t
5140: 65 73 74 09 33 31 20 4d 61 72 20 32 30 31 30 20  est.31 Mar 2010 
5150: 31 35 3a 34 36 3a 30 34 20 2d 30 30 30 30 0a 40  15:46:04 -0000.@
5160: 40 20 2d 31 36 39 2c 36 20 2b 31 36 39 2c 31 39  @ -169,6 +169,19
5170: 20 40 40 0a 20 20 20 20 20 6c 69 73 74 20 5b 63   @@.     list [c
5180: 61 74 63 68 20 7b 65 72 72 6f 72 20 6d 73 67 31  atch {error msg1
5190: 20 6d 73 67 32 20 7b 7d 7d 20 6d 73 67 5d 20 24   msg2 {}} msg] $
51a0: 6d 73 67 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f  msg $::errorInfo
51b0: 20 24 3a 3a 65 72 72 6f 72 43 6f 64 65 0a 20 7d   $::errorCode. }
51c0: 20 7b 31 20 6d 73 67 31 20 6d 73 67 32 20 7b 7d   {1 msg1 msg2 {}
51d0: 7d 0a 20 0a 2b 74 65 73 74 20 65 72 72 6f 72 2d  }. .+test error-
51e0: 34 2e 36 20 7b 65 72 72 6f 72 73 74 61 63 6b 20  4.6 {errorstack 
51f0: 76 69 61 20 69 6e 66 6f 20 7d 20 2d 62 6f 64 79  via info } -body
5200: 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 66 20 78   {.+    proc f x
5210: 20 7b 67 20 24 78 24 78 7d 0a 2b 20 20 20 20 70   {g $x$x}.+    p
5220: 72 6f 63 20 67 20 78 20 7b 65 72 72 6f 72 20 47  roc g x {error G
5230: 3a 24 78 7d 0a 2b 20 20 20 20 63 61 74 63 68 20  :$x}.+    catch 
5240: 7b 66 20 31 32 7d 0a 2b 20 20 20 20 69 6e 66 6f  {f 12}.+    info
5250: 20 65 72 72 6f 72 73 74 61 63 6b 0a 2b 7d 20 2d   errorstack.+} -
5260: 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75  match glob -resu
5270: 6c 74 20 7b 43 41 4c 4c 20 7b 67 20 31 32 31 32  lt {CALL {g 1212
5280: 7d 20 43 41 4c 4c 20 7b 66 20 31 32 7d 20 55 50  } CALL {f 12} UP
5290: 20 31 7d 0a 2b 74 65 73 74 20 65 72 72 6f 72 2d   1}.+test error-
52a0: 34 2e 37 20 7b 65 72 72 6f 72 73 74 61 63 6b 20  4.7 {errorstack 
52b0: 76 69 61 20 6f 70 74 69 6f 6e 73 20 64 69 63 74  via options dict
52c0: 20 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20   } -body {.+    
52d0: 70 72 6f 63 20 66 20 78 20 7b 67 20 24 78 24 78  proc f x {g $x$x
52e0: 7d 0a 2b 20 20 20 20 70 72 6f 63 20 67 20 78 20  }.+    proc g x 
52f0: 7b 65 72 72 6f 72 20 47 3a 24 78 7d 0a 2b 20 20  {error G:$x}.+  
5300: 20 20 63 61 74 63 68 20 7b 66 20 31 32 7d 20 6d    catch {f 12} m
5310: 20 64 0a 2b 20 20 20 20 64 69 63 74 20 67 65 74   d.+    dict get
5320: 20 24 64 20 2d 65 72 72 6f 72 73 74 61 63 6b 0a   $d -errorstack.
5330: 2b 7d 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d  +} -match glob -
5340: 72 65 73 75 6c 74 20 7b 43 41 4c 4c 20 7b 67 20  result {CALL {g 
5350: 31 32 31 32 7d 20 43 41 4c 4c 20 7b 66 20 31 32  1212} CALL {f 12
5360: 7d 20 55 50 20 31 7d 0a 2b 0a 20 23 20 45 72 72  } UP 1}.+. # Err
5370: 6f 72 73 20 69 6e 20 65 72 72 6f 72 20 63 6f 6d  ors in error com
5380: 6d 61 6e 64 20 69 74 73 65 6c 66 0a 20 0a 20 74  mand itself. . t
5390: 65 73 74 20 65 72 72 6f 72 2d 35 2e 31 20 7b 65  est error-5.1 {e
53a0: 72 72 6f 72 73 20 69 6e 20 65 72 72 6f 72 20 63  rrors in error c
53b0: 6f 6d 6d 61 6e 64 7d 20 7b 0a 40 40 20 2d 32 32  ommand} {.@@ -22
53c0: 33 2c 36 20 2b 32 33 36 2c 31 35 20 40 40 0a 20  3,6 +236,15 @@. 
53d0: 20 20 20 20 63 61 74 63 68 20 66 6f 6f 0a 20 20      catch foo.  
53e0: 20 20 20 6c 69 73 74 20 24 3a 3a 65 72 72 6f 72     list $::error
53f0: 43 6f 64 65 0a 20 7d 20 7b 4e 4f 4e 45 7d 0a 2b  Code. } {NONE}.+
5400: 74 65 73 74 20 65 72 72 6f 72 2d 36 2e 31 30 20  test error-6.10 
5410: 7b 63 61 74 63 68 20 6d 75 73 74 20 72 65 73 65  {catch must rese
5420: 74 20 65 72 72 6f 72 73 74 61 63 6b 7d 20 2d 62  t errorstack} -b
5430: 6f 64 79 20 7b 0a 2b 09 70 72 6f 63 20 66 20 78  ody {.+.proc f x
5440: 20 7b 67 20 24 78 24 78 7d 0a 2b 09 70 72 6f 63   {g $x$x}.+.proc
5450: 20 67 20 78 20 7b 65 72 72 6f 72 20 47 3a 24 78   g x {error G:$x
5460: 7d 0a 2b 09 63 61 74 63 68 20 7b 66 20 31 32 7d  }.+.catch {f 12}
5470: 0a 2b 09 73 65 74 20 65 31 20 5b 69 6e 66 6f 20  .+.set e1 [info 
5480: 65 72 72 6f 72 73 74 61 63 6b 5d 0a 2b 09 63 61  errorstack].+.ca
5490: 74 63 68 20 7b 66 20 31 33 7d 0a 2b 09 73 65 74  tch {f 13}.+.set
54a0: 20 65 32 20 5b 69 6e 66 6f 20 65 72 72 6f 72 73   e2 [info errors
54b0: 74 61 63 6b 5d 0a 2b 09 6c 69 73 74 20 24 65 31  tack].+.list $e1
54c0: 20 24 65 32 0a 2b 7d 20 2d 6d 61 74 63 68 20 67   $e2.+} -match g
54d0: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 7b 43 41  lob -result {{CA
54e0: 4c 4c 20 7b 67 20 31 32 31 32 7d 20 43 41 4c 4c  LL {g 1212} CALL
54f0: 20 7b 66 20 31 32 7d 20 55 50 20 31 7d 20 7b 43   {f 12} UP 1} {C
5500: 41 4c 4c 20 7b 67 20 31 33 31 33 7d 20 43 41 4c  ALL {g 1313} CAL
5510: 4c 20 7b 66 20 31 33 7d 20 55 50 20 31 7d 7d 0a  L {f 13} UP 1}}.
5520: 20 0a 20 74 65 73 74 20 65 72 72 6f 72 2d 37 2e   . test error-7.
5530: 31 20 7b 42 75 67 20 31 33 39 37 38 34 33 7d 20  1 {Bug 1397843} 
5540: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 76 61 72  -body {.     var
5550: 69 61 62 6c 65 20 63 6d 64 73 0a 49 6e 64 65 78  iable cmds.Index
5560: 3a 20 74 65 73 74 73 2f 65 78 65 63 75 74 65 2e  : tests/execute.
5570: 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  test.===========
5580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
55a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
55b0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
55c0: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
55d0: 74 63 6c 2f 74 65 73 74 73 2f 65 78 65 63 75 74  tcl/tests/execut
55e0: 65 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76  e.test,v.retriev
55f0: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 33  ing revision 1.3
5600: 34 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 33 34  4.diff -u -r1.34
5610: 20 65 78 65 63 75 74 65 2e 74 65 73 74 0a 2d 2d   execute.test.--
5620: 2d 20 74 65 73 74 73 2f 65 78 65 63 75 74 65 2e  - tests/execute.
5630: 74 65 73 74 09 31 36 20 4e 6f 76 20 32 30 30 39  test.16 Nov 2009
5640: 20 31 38 3a 30 30 3a 31 31 20 2d 30 30 30 30 09   18:00:11 -0000.
5650: 31 2e 33 34 0a 2b 2b 2b 20 74 65 73 74 73 2f 65  1.34.+++ tests/e
5660: 78 65 63 75 74 65 2e 74 65 73 74 09 33 31 20 4d  xecute.test.31 M
5670: 61 72 20 32 30 31 30 20 31 35 3a 34 36 3a 30 34  ar 2010 15:46:04
5680: 20 2d 30 30 30 30 0a 40 40 20 2d 39 35 36 2c 31   -0000.@@ -956,1
5690: 31 20 2b 39 35 36 2c 31 31 20 40 40 0a 20 20 20  1 +956,11 @@.   
56a0: 20 20 64 65 6d 6f 0a 20 7d 20 2d 63 6c 65 61 6e    demo. } -clean
56b0: 75 70 20 7b 0a 20 20 20 20 20 72 65 6e 61 6d 65  up {.     rename
56c0: 20 64 65 6d 6f 20 7b 7d 0a 2d 7d 20 2d 72 65 73   demo {}.-} -res
56d0: 75 6c 74 20 7b 2d 63 6f 64 65 20 31 20 2d 6c 65  ult {-code 1 -le
56e0: 76 65 6c 20 30 20 2d 65 72 72 6f 72 63 6f 64 65  vel 0 -errorcode
56f0: 20 4e 4f 4e 45 20 2d 65 72 72 6f 72 69 6e 66 6f   NONE -errorinfo
5700: 20 7b 46 4f 4f 0a 2b 7d 20 2d 6d 61 74 63 68 20   {FOO.+} -match 
5710: 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 2d 63  glob -result {-c
5720: 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20 30 20 2d  ode 1 -level 0 -
5730: 65 72 72 6f 72 73 74 61 63 6b 20 2a 20 2d 65 72  errorstack * -er
5740: 72 6f 72 63 6f 64 65 20 4e 4f 4e 45 20 2d 65 72  rorcode NONE -er
5750: 72 6f 72 69 6e 66 6f 20 7b 46 4f 4f 0a 20 20 20  rorinfo {FOO.   
5760: 20 20 77 68 69 6c 65 20 65 78 65 63 75 74 69 6e    while executin
5770: 67 0a 20 22 65 72 72 6f 72 20 46 4f 4f 22 0a 20  g. "error FOO". 
5780: 20 20 20 20 69 6e 76 6f 6b 65 64 20 66 72 6f 6d      invoked from
5790: 20 77 69 74 68 69 6e 0a 2d 22 63 61 74 63 68 20   within.-"catch 
57a0: 5b 6c 69 73 74 20 65 72 72 6f 72 20 46 4f 4f 5d  [list error FOO]
57b0: 20 6d 20 6f 22 7d 20 2d 65 72 72 6f 72 6c 69 6e   m o"} -errorlin
57c0: 65 20 32 7d 0a 2b 22 63 61 74 63 68 20 5c 5b 6c  e 2}.+"catch \[l
57d0: 69 73 74 20 65 72 72 6f 72 20 46 4f 4f 5c 5d 20  ist error FOO\] 
57e0: 6d 20 6f 22 7d 20 2d 65 72 72 6f 72 6c 69 6e 65  m o"} -errorline
57f0: 20 32 7d 0a 20 0a 20 74 65 73 74 20 65 78 65 63   2}. . test exec
5800: 75 74 65 2d 39 2e 31 20 7b 49 6e 74 65 72 70 20  ute-9.1 {Interp 
5810: 72 65 73 75 6c 74 20 72 65 73 65 74 74 69 6e 67  result resetting
5820: 20 5b 42 75 67 20 31 35 32 32 38 30 33 5d 7d 20   [Bug 1522803]} 
5830: 7b 0a 20 20 20 20 20 73 65 74 20 63 20 30 0a 49  {.     set c 0.I
5840: 6e 64 65 78 3a 20 74 65 73 74 73 2f 69 6e 66 6f  ndex: tests/info
5850: 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .test.==========
5860: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5870: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5880: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5890: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69  =========.RCS fi
58a0: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c  le: /cvsroot/tcl
58b0: 2f 74 63 6c 2f 74 65 73 74 73 2f 69 6e 66 6f 2e  /tcl/tests/info.
58c0: 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e  test,v.retrievin
58d0: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 37 35 0a  g revision 1.75.
58e0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 37 35 20 69  diff -u -r1.75 i
58f0: 6e 66 6f 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73  nfo.test.--- tes
5900: 74 73 2f 69 6e 66 6f 2e 74 65 73 74 09 31 30 20  ts/info.test.10 
5910: 46 65 62 20 32 30 31 30 20 32 33 3a 32 34 3a 32  Feb 2010 23:24:2
5920: 35 20 2d 30 30 30 30 09 31 2e 37 35 0a 2b 2b 2b  5 -0000.1.75.+++
5930: 20 74 65 73 74 73 2f 69 6e 66 6f 2e 74 65 73 74   tests/info.test
5940: 09 33 31 20 4d 61 72 20 32 30 31 30 20 31 35 3a  .31 Mar 2010 15:
5950: 34 36 3a 30 34 20 2d 30 30 30 30 0a 40 40 20 2d  46:04 -0000.@@ -
5960: 36 37 36 2c 31 36 20 2b 36 37 36 2c 31 36 20 40  676,16 +676,16 @
5970: 40 0a 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72  @. } -result {wr
5980: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
5990: 6c 64 20 62 65 20 22 69 6e 66 6f 20 73 75 62 63  ld be "info subc
59a0: 6f 6d 6d 61 6e 64 20 3f 61 72 67 20 2e 2e 2e 3f  ommand ?arg ...?
59b0: 22 7d 0a 20 74 65 73 74 20 69 6e 66 6f 2d 32 31  "}. test info-21
59c0: 2e 32 20 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75  .2 {miscellaneou
59d0: 73 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f  s error conditio
59e0: 6e 73 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ns} -returnCodes
59f0: 20 65 72 72 6f 72 20 2d 62 6f 64 79 20 7b 0a 20   error -body {. 
5a00: 20 20 20 20 69 6e 66 6f 20 67 6f 72 70 0a 2d 7d      info gorp.-}
5a10: 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77   -result {unknow
5a20: 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 73  n or ambiguous s
5a30: 75 62 63 6f 6d 6d 61 6e 64 20 22 67 6f 72 70 22  ubcommand "gorp"
5a40: 3a 20 6d 75 73 74 20 62 65 20 61 72 67 73 2c 20  : must be args, 
5a50: 62 6f 64 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64  body, class, cmd
5a60: 63 6f 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c  count, commands,
5a70: 20 63 6f 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75   complete, corou
5a80: 74 69 6e 65 2c 20 64 65 66 61 75 6c 74 2c 20 65  tine, default, e
5a90: 78 69 73 74 73 2c 20 66 72 61 6d 65 2c 20 66 75  xists, frame, fu
5aa0: 6e 63 74 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73  nctions, globals
5ab0: 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65  , hostname, leve
5ac0: 6c 2c 20 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64  l, library, load
5ad0: 65 64 2c 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65  ed, locals, name
5ae0: 6f 66 65 78 65 63 75 74 61 62 6c 65 2c 20 6f 62  ofexecutable, ob
5af0: 6a 65 63 74 2c 20 70 61 74 63 68 6c 65 76 65 6c  ject, patchlevel
5b00: 2c 20 70 72 6f 63 73 2c 20 73 63 72 69 70 74 2c  , procs, script,
5b10: 20 73 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73   sharedlibextens
5b20: 69 6f 6e 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c  ion, tclversion,
5b30: 20 6f 72 20 76 61 72 73 7d 0a 2b 7d 20 2d 72 65   or vars}.+} -re
5b40: 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72  sult {unknown or
5b50: 20 61 6d 62 69 67 75 6f 75 73 20 73 75 62 63 6f   ambiguous subco
5b60: 6d 6d 61 6e 64 20 22 67 6f 72 70 22 3a 20 6d 75  mmand "gorp": mu
5b70: 73 74 20 62 65 20 61 72 67 73 2c 20 62 6f 64 79  st be args, body
5b80: 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63 6f 75 6e  , class, cmdcoun
5b90: 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20 63 6f 6d  t, commands, com
5ba0: 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74 69 6e 65  plete, coroutine
5bb0: 2c 20 64 65 66 61 75 6c 74 2c 20 65 72 72 6f 72  , default, error
5bc0: 73 74 61 63 6b 2c 20 65 78 69 73 74 73 2c 20 66  stack, exists, f
5bd0: 72 61 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 73 2c  rame, functions,
5be0: 20 67 6c 6f 62 61 6c 73 2c 20 68 6f 73 74 6e 61   globals, hostna
5bf0: 6d 65 2c 20 6c 65 76 65 6c 2c 20 6c 69 62 72 61  me, level, libra
5c00: 72 79 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f 63 61  ry, loaded, loca
5c10: 6c 73 2c 20 6e 61 6d 65 6f 66 65 78 65 63 75 74  ls, nameofexecut
5c20: 61 62 6c 65 2c 20 6f 62 6a 65 63 74 2c 20 70 61  able, object, pa
5c30: 74 63 68 6c 65 76 65 6c 2c 20 70 72 6f 63 73 2c  tchlevel, procs,
5c40: 20 73 63 72 69 70 74 2c 20 73 68 61 72 65 64 6c   script, sharedl
5c50: 69 62 65 78 74 65 6e 73 69 6f 6e 2c 20 74 63 6c  ibextension, tcl
5c60: 76 65 72 73 69 6f 6e 2c 20 6f 72 20 76 61 72 73  version, or vars
5c70: 7d 0a 20 74 65 73 74 20 69 6e 66 6f 2d 32 31 2e  }. test info-21.
5c80: 33 20 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73  3 {miscellaneous
5c90: 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e   error condition
5ca0: 73 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  s} -returnCodes 
5cb0: 65 72 72 6f 72 20 2d 62 6f 64 79 20 7b 0a 20 20  error -body {.  
5cc0: 20 20 20 69 6e 66 6f 20 63 0a 2d 7d 20 2d 72 65     info c.-} -re
5cd0: 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72  sult {unknown or
5ce0: 20 61 6d 62 69 67 75 6f 75 73 20 73 75 62 63 6f   ambiguous subco
5cf0: 6d 6d 61 6e 64 20 22 63 22 3a 20 6d 75 73 74 20  mmand "c": must 
5d00: 62 65 20 61 72 67 73 2c 20 62 6f 64 79 2c 20 63  be args, body, c
5d10: 6c 61 73 73 2c 20 63 6d 64 63 6f 75 6e 74 2c 20  lass, cmdcount, 
5d20: 63 6f 6d 6d 61 6e 64 73 2c 20 63 6f 6d 70 6c 65  commands, comple
5d30: 74 65 2c 20 63 6f 72 6f 75 74 69 6e 65 2c 20 64  te, coroutine, d
5d40: 65 66 61 75 6c 74 2c 20 65 78 69 73 74 73 2c 20  efault, exists, 
5d50: 66 72 61 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 73  frame, functions
5d60: 2c 20 67 6c 6f 62 61 6c 73 2c 20 68 6f 73 74 6e  , globals, hostn
5d70: 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 6c 69 62 72  ame, level, libr
5d80: 61 72 79 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f 63  ary, loaded, loc
5d90: 61 6c 73 2c 20 6e 61 6d 65 6f 66 65 78 65 63 75  als, nameofexecu
5da0: 74 61 62 6c 65 2c 20 6f 62 6a 65 63 74 2c 20 70  table, object, p
5db0: 61 74 63 68 6c 65 76 65 6c 2c 20 70 72 6f 63 73  atchlevel, procs
5dc0: 2c 20 73 63 72 69 70 74 2c 20 73 68 61 72 65 64  , script, shared
5dd0: 6c 69 62 65 78 74 65 6e 73 69 6f 6e 2c 20 74 63  libextension, tc
5de0: 6c 76 65 72 73 69 6f 6e 2c 20 6f 72 20 76 61 72  lversion, or var
5df0: 73 7d 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 7b 75  s}.+} -result {u
5e00: 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67 75  nknown or ambigu
5e10: 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22  ous subcommand "
5e20: 63 22 3a 20 6d 75 73 74 20 62 65 20 61 72 67 73  c": must be args
5e30: 2c 20 62 6f 64 79 2c 20 63 6c 61 73 73 2c 20 63  , body, class, c
5e40: 6d 64 63 6f 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64  mdcount, command
5e50: 73 2c 20 63 6f 6d 70 6c 65 74 65 2c 20 63 6f 72  s, complete, cor
5e60: 6f 75 74 69 6e 65 2c 20 64 65 66 61 75 6c 74 2c  outine, default,
5e70: 20 65 72 72 6f 72 73 74 61 63 6b 2c 20 65 78 69   errorstack, exi
5e80: 73 74 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e 63  sts, frame, func
5e90: 74 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c 20  tions, globals, 
5ea0: 68 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c  hostname, level,
5eb0: 20 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64 65 64   library, loaded
5ec0: 2c 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f 66  , locals, nameof
5ed0: 65 78 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a 65  executable, obje
5ee0: 63 74 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c 20  ct, patchlevel, 
5ef0: 70 72 6f 63 73 2c 20 73 63 72 69 70 74 2c 20 73  procs, script, s
5f00: 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69 6f  haredlibextensio
5f10: 6e 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20 6f  n, tclversion, o
5f20: 72 20 76 61 72 73 7d 0a 20 74 65 73 74 20 69 6e  r vars}. test in
5f30: 66 6f 2d 32 31 2e 34 20 7b 6d 69 73 63 65 6c 6c  fo-21.4 {miscell
5f40: 61 6e 65 6f 75 73 20 65 72 72 6f 72 20 63 6f 6e  aneous error con
5f50: 64 69 74 69 6f 6e 73 7d 20 2d 72 65 74 75 72 6e  ditions} -return
5f60: 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 62 6f 64  Codes error -bod
5f70: 79 20 7b 0a 20 20 20 20 20 69 6e 66 6f 20 6c 0a  y {.     info l.
5f80: 2d 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e  -} -result {unkn
5f90: 6f 77 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73  own or ambiguous
5fa0: 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 6c 22 3a   subcommand "l":
5fb0: 20 6d 75 73 74 20 62 65 20 61 72 67 73 2c 20 62   must be args, b
5fc0: 6f 64 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63  ody, class, cmdc
5fd0: 6f 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20  ount, commands, 
5fe0: 63 6f 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74  complete, corout
5ff0: 69 6e 65 2c 20 64 65 66 61 75 6c 74 2c 20 65 78  ine, default, ex
6000: 69 73 74 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e  ists, frame, fun
6010: 63 74 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c  ctions, globals,
6020: 20 68 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c   hostname, level
6030: 2c 20 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64 65  , library, loade
6040: 64 2c 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f  d, locals, nameo
6050: 66 65 78 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a  fexecutable, obj
6060: 65 63 74 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c  ect, patchlevel,
6070: 20 70 72 6f 63 73 2c 20 73 63 72 69 70 74 2c 20   procs, script, 
6080: 73 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69  sharedlibextensi
6090: 6f 6e 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20  on, tclversion, 
60a0: 6f 72 20 76 61 72 73 7d 0a 2b 7d 20 2d 72 65 73  or vars}.+} -res
60b0: 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20  ult {unknown or 
60c0: 61 6d 62 69 67 75 6f 75 73 20 73 75 62 63 6f 6d  ambiguous subcom
60d0: 6d 61 6e 64 20 22 6c 22 3a 20 6d 75 73 74 20 62  mand "l": must b
60e0: 65 20 61 72 67 73 2c 20 62 6f 64 79 2c 20 63 6c  e args, body, cl
60f0: 61 73 73 2c 20 63 6d 64 63 6f 75 6e 74 2c 20 63  ass, cmdcount, c
6100: 6f 6d 6d 61 6e 64 73 2c 20 63 6f 6d 70 6c 65 74  ommands, complet
6110: 65 2c 20 63 6f 72 6f 75 74 69 6e 65 2c 20 64 65  e, coroutine, de
6120: 66 61 75 6c 74 2c 20 65 72 72 6f 72 73 74 61 63  fault, errorstac
6130: 6b 2c 20 65 78 69 73 74 73 2c 20 66 72 61 6d 65  k, exists, frame
6140: 2c 20 66 75 6e 63 74 69 6f 6e 73 2c 20 67 6c 6f  , functions, glo
6150: 62 61 6c 73 2c 20 68 6f 73 74 6e 61 6d 65 2c 20  bals, hostname, 
6160: 6c 65 76 65 6c 2c 20 6c 69 62 72 61 72 79 2c 20  level, library, 
6170: 6c 6f 61 64 65 64 2c 20 6c 6f 63 61 6c 73 2c 20  loaded, locals, 
6180: 6e 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65  nameofexecutable
6190: 2c 20 6f 62 6a 65 63 74 2c 20 70 61 74 63 68 6c  , object, patchl
61a0: 65 76 65 6c 2c 20 70 72 6f 63 73 2c 20 73 63 72  evel, procs, scr
61b0: 69 70 74 2c 20 73 68 61 72 65 64 6c 69 62 65 78  ipt, sharedlibex
61c0: 74 65 6e 73 69 6f 6e 2c 20 74 63 6c 76 65 72 73  tension, tclvers
61d0: 69 6f 6e 2c 20 6f 72 20 76 61 72 73 7d 0a 20 74  ion, or vars}. t
61e0: 65 73 74 20 69 6e 66 6f 2d 32 31 2e 35 20 7b 6d  est info-21.5 {m
61f0: 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 65 72 72  iscellaneous err
6200: 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 2d  or conditions} -
6210: 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f  returnCodes erro
6220: 72 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 69  r -body {.     i
6230: 6e 66 6f 20 73 0a 2d 7d 20 2d 72 65 73 75 6c 74  nfo s.-} -result
6240: 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62   {unknown or amb
6250: 69 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e  iguous subcomman
6260: 64 20 22 73 22 3a 20 6d 75 73 74 20 62 65 20 61  d "s": must be a
6270: 72 67 73 2c 20 62 6f 64 79 2c 20 63 6c 61 73 73  rgs, body, class
6280: 2c 20 63 6d 64 63 6f 75 6e 74 2c 20 63 6f 6d 6d  , cmdcount, comm
6290: 61 6e 64 73 2c 20 63 6f 6d 70 6c 65 74 65 2c 20  ands, complete, 
62a0: 63 6f 72 6f 75 74 69 6e 65 2c 20 64 65 66 61 75  coroutine, defau
62b0: 6c 74 2c 20 65 78 69 73 74 73 2c 20 66 72 61 6d  lt, exists, fram
62c0: 65 2c 20 66 75 6e 63 74 69 6f 6e 73 2c 20 67 6c  e, functions, gl
62d0: 6f 62 61 6c 73 2c 20 68 6f 73 74 6e 61 6d 65 2c  obals, hostname,
62e0: 20 6c 65 76 65 6c 2c 20 6c 69 62 72 61 72 79 2c   level, library,
62f0: 20 6c 6f 61 64 65 64 2c 20 6c 6f 63 61 6c 73 2c   loaded, locals,
6300: 20 6e 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c   nameofexecutabl
6310: 65 2c 20 6f 62 6a 65 63 74 2c 20 70 61 74 63 68  e, object, patch
6320: 6c 65 76 65 6c 2c 20 70 72 6f 63 73 2c 20 73 63  level, procs, sc
6330: 72 69 70 74 2c 20 73 68 61 72 65 64 6c 69 62 65  ript, sharedlibe
6340: 78 74 65 6e 73 69 6f 6e 2c 20 74 63 6c 76 65 72  xtension, tclver
6350: 73 69 6f 6e 2c 20 6f 72 20 76 61 72 73 7d 0a 2b  sion, or vars}.+
6360: 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f  } -result {unkno
6370: 77 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20  wn or ambiguous 
6380: 73 75 62 63 6f 6d 6d 61 6e 64 20 22 73 22 3a 20  subcommand "s": 
6390: 6d 75 73 74 20 62 65 20 61 72 67 73 2c 20 62 6f  must be args, bo
63a0: 64 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63 6f  dy, class, cmdco
63b0: 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20 63  unt, commands, c
63c0: 6f 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74 69  omplete, corouti
63d0: 6e 65 2c 20 64 65 66 61 75 6c 74 2c 20 65 72 72  ne, default, err
63e0: 6f 72 73 74 61 63 6b 2c 20 65 78 69 73 74 73 2c  orstack, exists,
63f0: 20 66 72 61 6d 65 2c 20 66 75 6e 63 74 69 6f 6e   frame, function
6400: 73 2c 20 67 6c 6f 62 61 6c 73 2c 20 68 6f 73 74  s, globals, host
6410: 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 6c 69 62  name, level, lib
6420: 72 61 72 79 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f  rary, loaded, lo
6430: 63 61 6c 73 2c 20 6e 61 6d 65 6f 66 65 78 65 63  cals, nameofexec
6440: 75 74 61 62 6c 65 2c 20 6f 62 6a 65 63 74 2c 20  utable, object, 
6450: 70 61 74 63 68 6c 65 76 65 6c 2c 20 70 72 6f 63  patchlevel, proc
6460: 73 2c 20 73 63 72 69 70 74 2c 20 73 68 61 72 65  s, script, share
6470: 64 6c 69 62 65 78 74 65 6e 73 69 6f 6e 2c 20 74  dlibextension, t
6480: 63 6c 76 65 72 73 69 6f 6e 2c 20 6f 72 20 76 61  clversion, or va
6490: 72 73 7d 0a 20 0a 20 23 23 0a 20 23 20 23 23 23  rs}. . ##. # ###
64a0: 20 23 23 23 20 23 23 23 20 23 23 23 23 23 23 23   ### ### #######
64b0: 23 23 20 23 23 23 23 23 23 23 23 23 20 23 23 23  ## ######### ###
64c0: 23 23 23 23 23 23 0a 49 6e 64 65 78 3a 20 74 65  ######.Index: te
64d0: 73 74 73 2f 69 6e 69 74 2e 74 65 73 74 0a 3d 3d  sts/init.test.==
64e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
64f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6510: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6520: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73  =.RCS file: /cvs
6530: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73  root/tcl/tcl/tes
6540: 74 73 2f 69 6e 69 74 2e 74 65 73 74 2c 76 0a 72  ts/init.test,v.r
6550: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
6560: 6f 6e 20 31 2e 32 31 0a 64 69 66 66 20 2d 75 20  on 1.21.diff -u 
6570: 2d 72 31 2e 32 31 20 69 6e 69 74 2e 74 65 73 74  -r1.21 init.test
6580: 0a 2d 2d 2d 20 74 65 73 74 73 2f 69 6e 69 74 2e  .--- tests/init.
6590: 74 65 73 74 09 31 36 20 4e 6f 76 20 32 30 30 39  test.16 Nov 2009
65a0: 20 31 38 3a 30 30 3a 31 31 20 2d 30 30 30 30 09   18:00:11 -0000.
65b0: 31 2e 32 31 0a 2b 2b 2b 20 74 65 73 74 73 2f 69  1.21.+++ tests/i
65c0: 6e 69 74 2e 74 65 73 74 09 33 31 20 4d 61 72 20  nit.test.31 Mar 
65d0: 32 30 31 30 20 31 35 3a 34 36 3a 30 34 20 2d 30  2010 15:46:04 -0
65e0: 30 30 30 0a 40 40 20 2d 31 38 31 2c 37 20 2b 31  000.@@ -181,7 +1
65f0: 38 31 2c 37 20 40 40 0a 20 20 20 20 20 6c 69 73  81,7 @@.     lis
6600: 74 20 24 63 6f 64 65 20 24 66 6f 6f 20 24 62 61  t $code $foo $ba
6610: 72 20 24 63 6f 64 65 32 20 24 66 6f 6f 32 20 24  r $code2 $foo2 $
6620: 62 61 72 32 0a 20 7d 20 2d 63 6c 65 61 6e 75 70  bar2. } -cleanup
6630: 20 7b 0a 20 20 20 20 20 75 6e 73 65 74 20 3a 3a   {.     unset ::
6640: 61 75 74 6f 5f 69 6e 64 65 78 28 3a 3a 78 78 78  auto_index(::xxx
6650: 29 0a 2d 7d 20 2d 72 65 73 75 6c 74 20 7b 32 20  ).-} -result {2 
6660: 78 78 78 20 7b 2d 65 72 72 6f 72 63 6f 64 65 20  xxx {-errorcode 
6670: 4e 4f 4e 45 20 2d 63 6f 64 65 20 31 20 2d 6c 65  NONE -code 1 -le
6680: 76 65 6c 20 31 7d 20 32 20 78 78 78 20 7b 2d 63  vel 1} 2 xxx {-c
6690: 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20 31 20 2d  ode 1 -level 1 -
66a0: 65 72 72 6f 72 63 6f 64 65 20 4e 4f 4e 45 7d 7d  errorcode NONE}}
66b0: 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20  .+} -match glob 
66c0: 2d 72 65 73 75 6c 74 20 7b 32 20 78 78 78 20 7b  -result {2 xxx {
66d0: 2d 65 72 72 6f 72 63 6f 64 65 20 4e 4f 4e 45 20  -errorcode NONE 
66e0: 2d 63 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20 31  -code 1 -level 1
66f0: 7d 20 32 20 78 78 78 20 7b 2d 63 6f 64 65 20 31  } 2 xxx {-code 1
6700: 20 2d 6c 65 76 65 6c 20 31 20 2d 65 72 72 6f 72   -level 1 -error
6710: 63 6f 64 65 20 4e 4f 4e 45 7d 7d 0a 20 0c 0a 20  code NONE}}. .. 
6720: 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 20 7d 09  cleanupTests. }.
6730: 3b 23 20 20 45 6e 64 20 6f 66 20 5b 69 6e 74 65  ;#  End of [inte
6740: 72 70 20 65 76 61 6c 20 24 74 65 73 74 49 6e 74  rp eval $testInt
6750: 65 72 70 5d 0a 49 6e 64 65 78 3a 20 74 65 73 74  erp].Index: test
6760: 73 2f 72 65 73 75 6c 74 2e 74 65 73 74 0a 3d 3d  s/result.test.==
6770: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6780: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6790: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
67a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
67b0: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73  =.RCS file: /cvs
67c0: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73  root/tcl/tcl/tes
67d0: 74 73 2f 72 65 73 75 6c 74 2e 74 65 73 74 2c 76  ts/result.test,v
67e0: 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69  .retrieving revi
67f0: 73 69 6f 6e 20 31 2e 31 36 0a 64 69 66 66 20 2d  sion 1.16.diff -
6800: 75 20 2d 72 31 2e 31 36 20 72 65 73 75 6c 74 2e  u -r1.16 result.
6810: 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 72  test.--- tests/r
6820: 65 73 75 6c 74 2e 74 65 73 74 09 32 34 20 4d 61  esult.test.24 Ma
6830: 72 20 32 30 31 30 20 31 35 3a 33 33 3a 31 34 20  r 2010 15:33:14 
6840: 2d 30 30 30 30 09 31 2e 31 36 0a 2b 2b 2b 20 74  -0000.1.16.+++ t
6850: 65 73 74 73 2f 72 65 73 75 6c 74 2e 74 65 73 74  ests/result.test
6860: 09 33 31 20 4d 61 72 20 32 30 31 30 20 31 35 3a  .31 Mar 2010 15:
6870: 34 36 3a 30 34 20 2d 30 30 30 30 0a 40 40 20 2d  46:04 -0000.@@ -
6880: 31 33 35 2c 36 20 2b 31 33 35 2c 31 34 20 40 40  135,6 +135,14 @@
6890: 0a 20 20 20 20 20 20 63 61 74 63 68 20 7b 72 65  .      catch {re
68a0: 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72  turn -code error
68b0: 20 2d 65 72 72 6f 72 63 6f 64 65 20 7b 7b 7d 61   -errorcode {{}a
68c0: 7d 20 65 65 6b 7d 20 6d 0a 20 20 20 20 20 20 73  } eek} m.      s
68d0: 65 74 20 6d 0a 20 7d 20 7b 62 61 64 20 2d 65 72  et m. } {bad -er
68e0: 72 6f 72 63 6f 64 65 20 76 61 6c 75 65 3a 20 65  rorcode value: e
68f0: 78 70 65 63 74 65 64 20 61 20 6c 69 73 74 20 62  xpected a list b
6900: 75 74 20 67 6f 74 20 22 7b 7d 61 22 7d 0a 2b 74  ut got "{}a"}.+t
6910: 65 73 74 20 72 65 73 75 6c 74 2d 36 2e 34 20 7b  est result-6.4 {
6920: 6e 6f 6e 2d 6c 69 73 74 20 2d 65 72 72 6f 72 73  non-list -errors
6930: 74 61 63 6b 7d 20 7b 0a 2b 20 20 20 20 20 63 61  tack} {.+     ca
6940: 74 63 68 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64  tch {return -cod
6950: 65 20 65 72 72 6f 72 20 2d 65 72 72 6f 72 73 74  e error -errorst
6960: 61 63 6b 20 7b 7b 7d 61 7d 20 65 65 6b 7d 20 6d  ack {{}a} eek} m
6970: 20 6f 0a 2b 20 20 20 20 20 6c 69 73 74 20 24 6d   o.+     list $m
6980: 20 5b 64 69 63 74 20 67 65 74 20 24 6f 20 2d 65   [dict get $o -e
6990: 72 72 6f 72 63 6f 64 65 5d 20 5b 64 69 63 74 20  rrorcode] [dict 
69a0: 67 65 74 20 24 6f 20 2d 65 72 72 6f 72 73 74 61  get $o -errorsta
69b0: 63 6b 5d 0a 2b 7d 20 7b 7b 62 61 64 20 2d 65 72  ck].+} {{bad -er
69c0: 72 6f 72 73 74 61 63 6b 20 76 61 6c 75 65 3a 20  rorstack value: 
69d0: 65 78 70 65 63 74 65 64 20 61 20 6c 69 73 74 20  expected a list 
69e0: 62 75 74 20 67 6f 74 20 22 7b 7d 61 22 7d 20 7b  but got "{}a"} {
69f0: 54 43 4c 20 52 45 53 55 4c 54 20 4e 4f 4e 4c 49  TCL RESULT NONLI
6a00: 53 54 5f 45 52 52 4f 52 53 54 41 43 4b 7d 20 7b  ST_ERRORSTACK} {
6a10: 55 50 20 31 7d 7d 0a 2b 74 65 73 74 20 72 65 73  UP 1}}.+test res
6a20: 75 6c 74 2d 36 2e 35 20 7b 6f 64 64 2d 73 69 7a  ult-6.5 {odd-siz
6a30: 65 64 2d 6c 69 73 74 20 2d 65 72 72 6f 72 73 74  ed-list -errorst
6a40: 61 63 6b 7d 20 7b 0a 2b 20 20 20 20 20 63 61 74  ack} {.+     cat
6a50: 63 68 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65  ch {return -code
6a60: 20 65 72 72 6f 72 20 2d 65 72 72 6f 72 73 74 61   error -errorsta
6a70: 63 6b 20 61 20 65 65 6b 7d 20 6d 20 6f 0a 2b 20  ck a eek} m o.+ 
6a80: 20 20 20 20 6c 69 73 74 20 24 6d 20 5b 64 69 63      list $m [dic
6a90: 74 20 67 65 74 20 24 6f 20 2d 65 72 72 6f 72 63  t get $o -errorc
6aa0: 6f 64 65 5d 20 5b 64 69 63 74 20 67 65 74 20 24  ode] [dict get $
6ab0: 6f 20 2d 65 72 72 6f 72 73 74 61 63 6b 5d 0a 2b  o -errorstack].+
6ac0: 7d 20 7b 7b 66 6f 72 62 69 64 64 65 6e 20 6f 64  } {{forbidden od
6ad0: 64 2d 73 69 7a 65 64 20 6c 69 73 74 20 66 6f 72  d-sized list for
6ae0: 20 2d 65 72 72 6f 72 73 74 61 63 6b 3a 20 22 61   -errorstack: "a
6af0: 22 7d 20 7b 54 43 4c 20 52 45 53 55 4c 54 20 4f  "} {TCL RESULT O
6b00: 44 44 53 49 5a 45 44 4c 49 53 54 5f 45 52 52 4f  DDSIZEDLIST_ERRO
6b10: 52 53 54 41 43 4b 7d 20 7b 55 50 20 31 7d 7d 0a  RSTACK} {UP 1}}.
6b20: 20 23 20 63 6c 65 61 6e 75 70 0a 20 63 6c 65 61   # cleanup. clea
6b30: 6e 75 70 54 65 73 74 73 0a 20 72 65 74 75 72 6e  nupTests. return
6b40: 0a                                               .