Tcl Source Code

Hex Artifact Content
Login

Artifact 6a20ea9bcc04cc74aaf6fd39165fe1b7c9c795a1:

Attachment "errorstack13.patch" to ticket [2868499fff] added by ferrieux 2010-03-24 22:58:05.
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 70 20 2d 75 20 2d 70 20 2d 72 31 2e 32 33   -p -u -p -r1.23
00b0: 20 63 61 74 63 68 2e 6e 0a 2d 2d 2d 20 64 6f 63   catch.n.--- doc
00c0: 2f 63 61 74 63 68 2e 6e 09 31 33 20 4a 61 6e 20  /catch.n.13 Jan 
00d0: 32 30 31 30 20 31 32 3a 30 38 3a 33 30 20 2d 30  2010 12:08:30 -0
00e0: 30 30 30 09 31 2e 32 33 0a 2b 2b 2b 20 64 6f 63  000.1.23.+++ doc
00f0: 2f 63 61 74 63 68 2e 6e 09 32 34 20 4d 61 72 20  /catch.n.24 Mar 
0100: 32 30 31 30 20 31 35 3a 35 35 3a 34 37 20 2d 30  2010 15:55:47 -0
0110: 30 30 30 0a 40 40 20 2d 35 34 2c 32 32 20 2b 35  000.@@ -54,22 +5
0120: 34 2c 33 33 20 40 40 20 4f 6e 6c 79 20 77 68 65  4,33 @@ Only whe
0130: 6e 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64  n the return cod
0140: 65 20 69 73 20 5c 66 42 54 43 4c 5f 52 45 54 55  e is \fBTCL_RETU
0150: 0a 20 74 68 65 20 5c 66 42 5c 2d 6c 65 76 65 6c  . the \fB\-level
0160: 5c 66 52 20 61 6e 64 20 5c 66 42 5c 2d 63 6f 64  \fR and \fB\-cod
0170: 65 5c 66 52 20 65 6e 74 72 69 65 73 20 62 65 20  e\fR entries be 
0180: 73 6f 6d 65 74 68 69 6e 67 20 65 6c 73 65 2c 20  something else, 
0190: 61 73 0a 20 66 75 72 74 68 65 72 20 64 65 73 63  as. further desc
01a0: 72 69 62 65 64 20 69 6e 20 74 68 65 20 64 6f 63  ribed in the doc
01b0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74  umentation for t
01c0: 68 65 20 5c 66 42 72 65 74 75 72 6e 5c 66 52 20  he \fBreturn\fR 
01d0: 63 6f 6d 6d 61 6e 64 2e 0a 20 2e 50 50 0a 2d 57  command.. .PP.-W
01e0: 68 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 63  hen the return c
01f0: 6f 64 65 20 66 72 6f 6d 20 65 76 61 6c 75 61 74  ode from evaluat
0200: 69 6f 6e 20 6f 66 20 5c 66 49 73 63 72 69 70 74  ion of \fIscript
0210: 5c 66 52 20 69 73 20 5c 66 42 54 43 4c 5f 45 52  \fR is \fBTCL_ER
0220: 52 4f 52 5c 66 52 2c 0a 2d 74 68 72 65 65 20 61  ROR\fR,.-three a
0230: 64 64 69 74 69 6f 6e 61 6c 20 65 6e 74 72 69 65  dditional entrie
0240: 73 20 61 72 65 20 64 65 66 69 6e 65 64 20 69 6e  s are defined in
0250: 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20   the dictionary 
0260: 6f 66 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e  of return option
0270: 73 0a 2d 73 74 6f 72 65 64 20 69 6e 20 5c 66 49  s.-stored in \fI
0280: 6f 70 74 69 6f 6e 73 56 61 72 4e 61 6d 65 5c 66  optionsVarName\f
0290: 52 3a 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66  R: \fB\-errorinf
02a0: 6f 5c 66 52 2c 20 5c 66 42 5c 2d 65 72 72 6f 72  o\fR, \fB\-error
02b0: 63 6f 64 65 5c 66 52 2c 20 0a 2d 61 6e 64 20 5c  code\fR, .-and \
02c0: 66 42 5c 2d 65 72 72 6f 72 6c 69 6e 65 5c 66 52  fB\-errorline\fR
02d0: 2e 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  .  The value of 
02e0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e  the \fB\-errorin
02f0: 66 6f 5c 66 52 20 65 6e 74 72 79 0a 2d 69 73 20  fo\fR entry.-is 
0300: 61 20 66 6f 72 6d 61 74 74 65 64 20 73 74 61 63  a formatted stac
0310: 6b 20 74 72 61 63 65 20 63 6f 6e 74 61 69 6e 69  k trace containi
0320: 6e 67 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74  ng more informat
0330: 69 6f 6e 20 61 62 6f 75 74 0a 2d 74 68 65 20 63  ion about.-the c
0340: 6f 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68 20  ontext in which 
0350: 74 68 65 20 65 72 72 6f 72 20 68 61 70 70 65 6e  the error happen
0360: 65 64 2e 20 20 54 68 65 20 66 6f 72 6d 61 74 74  ed.  The formatt
0370: 65 64 20 73 74 61 63 6b 0a 2d 74 72 61 63 65 20  ed stack.-trace 
0380: 69 73 20 6d 65 61 6e 74 20 74 6f 20 62 65 20 72  is meant to be r
0390: 65 61 64 20 62 79 20 61 20 70 65 72 73 6f 6e 2e  ead by a person.
03a0: 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66 0a 2d    The value of.-
03b0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 63 6f  the \fB\-errorco
03c0: 64 65 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61  de\fR entry is a
03d0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
03e0: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0a  ation about the.
03f0: 2d 65 72 72 6f 72 20 73 74 6f 72 65 64 20 61 73  -error stored as
0400: 20 61 20 6c 69 73 74 2e 20 20 54 68 65 20 5c 66   a list.  The \f
0410: 42 5c 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20  B\-errorcode\fR 
0420: 76 61 6c 75 65 20 69 73 20 6d 65 61 6e 74 20 74  value is meant t
0430: 6f 0a 2d 62 65 20 66 75 72 74 68 65 72 20 70 72  o.-be further pr
0440: 6f 63 65 73 73 65 64 20 62 79 20 70 72 6f 67 72  ocessed by progr
0450: 61 6d 73 2c 20 61 6e 64 20 6d 61 79 20 6e 6f 74  ams, and may not
0460: 20 62 65 20 70 61 72 74 69 63 75 6c 61 72 6c 79   be particularly
0470: 0a 2d 72 65 61 64 61 62 6c 65 20 62 79 20 70 65  .-readable by pe
0480: 6f 70 6c 65 2e 20 20 54 68 65 20 76 61 6c 75 65  ople.  The value
0490: 20 6f 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72   of the \fB\-err
04a0: 6f 72 6c 69 6e 65 5c 66 52 20 65 6e 74 72 79 0a  orline\fR entry.
04b0: 2d 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69  -is an integer i
04c0: 6e 64 69 63 61 74 69 6e 67 20 77 68 69 63 68 20  ndicating which 
04d0: 6c 69 6e 65 20 6f 66 20 5c 66 49 73 63 72 69 70  line of \fIscrip
04e0: 74 5c 66 52 20 77 61 73 20 62 65 69 6e 67 0a 2d  t\fR was being.-
04f0: 65 76 61 6c 75 61 74 65 64 20 77 68 65 6e 20 74  evaluated when t
0500: 68 65 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65  he error occurre
0510: 64 2e 20 20 54 68 65 20 76 61 6c 75 65 73 20 6f  d.  The values o
0520: 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72  f the \fB\-error
0530: 69 6e 66 6f 5c 66 52 0a 2d 61 6e 64 20 5c 66 42  info\fR.-and \fB
0540: 5c 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20 65  \-errorcode\fR e
0550: 6e 74 72 69 65 73 20 6f 66 20 74 68 65 20 6d 6f  ntries of the mo
0560: 73 74 20 72 65 63 65 6e 74 20 65 72 72 6f 72 20  st recent error 
0570: 61 72 65 20 61 6c 73 6f 0a 2d 61 76 61 69 6c 61  are also.-availa
0580: 62 6c 65 20 61 73 20 76 61 6c 75 65 73 20 6f 66  ble as values of
0590: 20 74 68 65 20 67 6c 6f 62 61 6c 20 76 61 72 69   the global vari
05a0: 61 62 6c 65 73 20 5c 66 42 3a 3a 65 72 72 6f 72  ables \fB::error
05b0: 49 6e 66 6f 5c 66 52 0a 2d 61 6e 64 20 5c 66 42  Info\fR.-and \fB
05c0: 3a 3a 65 72 72 6f 72 43 6f 64 65 5c 66 52 20 72  ::errorCode\fR r
05d0: 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 2b 57 68  espectively..+Wh
05e0: 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f  en the return co
05f0: 64 65 20 66 72 6f 6d 20 65 76 61 6c 75 61 74 69  de from evaluati
0600: 6f 6e 20 6f 66 20 5c 66 49 73 63 72 69 70 74 5c  on of \fIscript\
0610: 66 52 20 69 73 0a 2b 5c 66 42 54 43 4c 5f 45 52  fR is.+\fBTCL_ER
0620: 52 4f 52 5c 66 52 2c 20 66 6f 75 72 20 61 64 64  ROR\fR, four add
0630: 69 74 69 6f 6e 61 6c 20 65 6e 74 72 69 65 73 20  itional entries 
0640: 61 72 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74  are defined in t
0650: 68 65 20 64 69 63 74 69 6f 6e 61 72 79 0a 2b 6f  he dictionary.+o
0660: 66 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 73  f return options
0670: 20 73 74 6f 72 65 64 20 69 6e 20 5c 66 49 6f 70   stored in \fIop
0680: 74 69 6f 6e 73 56 61 72 4e 61 6d 65 5c 66 52 3a  tionsVarName\fR:
0690: 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66 6f 5c   \fB\-errorinfo\
06a0: 66 52 2c 0a 2b 5c 66 42 5c 2d 65 72 72 6f 72 63  fR,.+\fB\-errorc
06b0: 6f 64 65 5c 66 52 2c 20 5c 66 42 5c 2d 65 72 72  ode\fR, \fB\-err
06c0: 6f 72 6c 69 6e 65 5c 66 52 2c 20 61 6e 64 20 5c  orline\fR, and \
06d0: 66 42 5c 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66  fB\-errorstack\f
06e0: 52 2e 20 20 54 68 65 0a 2b 76 61 6c 75 65 20 6f  R.  The.+value o
06f0: 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72  f the \fB\-error
0700: 69 6e 66 6f 5c 66 52 20 65 6e 74 72 79 20 69 73  info\fR entry is
0710: 20 61 20 66 6f 72 6d 61 74 74 65 64 20 73 74 61   a formatted sta
0720: 63 6b 20 74 72 61 63 65 0a 2b 63 6f 6e 74 61 69  ck trace.+contai
0730: 6e 69 6e 67 20 6d 6f 72 65 20 69 6e 66 6f 72 6d  ning more inform
0740: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20  ation about the 
0750: 63 6f 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68  context in which
0760: 20 74 68 65 20 65 72 72 6f 72 0a 2b 68 61 70 70   the error.+happ
0770: 65 6e 65 64 2e 20 20 54 68 65 20 66 6f 72 6d 61  ened.  The forma
0780: 74 74 65 64 20 73 74 61 63 6b 20 74 72 61 63 65  tted stack trace
0790: 20 69 73 20 6d 65 61 6e 74 20 74 6f 20 62 65 20   is meant to be 
07a0: 72 65 61 64 20 62 79 20 61 20 70 65 72 73 6f 6e  read by a person
07b0: 2e 0a 2b 54 68 65 20 76 61 6c 75 65 20 6f 66 20  ..+The value of 
07c0: 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 63 6f  the \fB\-errorco
07d0: 64 65 5c 66 52 20 65 6e 74 72 79 20 69 73 20 61  de\fR entry is a
07e0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
07f0: 61 74 69 6f 6e 0a 2b 61 62 6f 75 74 20 74 68 65  ation.+about the
0800: 20 65 72 72 6f 72 20 73 74 6f 72 65 64 20 61 73   error stored as
0810: 20 61 20 6c 69 73 74 2e 20 20 54 68 65 20 5c 66   a list.  The \f
0820: 42 5c 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52 20  B\-errorcode\fR 
0830: 76 61 6c 75 65 20 69 73 0a 2b 6d 65 61 6e 74 20  value is.+meant 
0840: 74 6f 20 62 65 20 66 75 72 74 68 65 72 20 70 72  to be further pr
0850: 6f 63 65 73 73 65 64 20 62 79 20 70 72 6f 67 72  ocessed by progr
0860: 61 6d 73 2c 20 61 6e 64 20 6d 61 79 20 6e 6f 74  ams, and may not
0870: 20 62 65 20 70 61 72 74 69 63 75 6c 61 72 6c 79   be particularly
0880: 0a 2b 72 65 61 64 61 62 6c 65 20 62 79 20 70 65  .+readable by pe
0890: 6f 70 6c 65 2e 20 20 54 68 65 20 76 61 6c 75 65  ople.  The value
08a0: 20 6f 66 20 74 68 65 20 5c 66 42 5c 2d 65 72 72   of the \fB\-err
08b0: 6f 72 6c 69 6e 65 5c 66 52 20 65 6e 74 72 79 20  orline\fR entry 
08c0: 69 73 20 61 6e 0a 2b 69 6e 74 65 67 65 72 20 69  is an.+integer i
08d0: 6e 64 69 63 61 74 69 6e 67 20 77 68 69 63 68 20  ndicating which 
08e0: 6c 69 6e 65 20 6f 66 20 5c 66 49 73 63 72 69 70  line of \fIscrip
08f0: 74 5c 66 52 20 77 61 73 20 62 65 69 6e 67 20 65  t\fR was being e
0900: 76 61 6c 75 61 74 65 64 20 77 68 65 6e 0a 2b 74  valuated when.+t
0910: 68 65 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65  he error occurre
0920: 64 2e 20 20 54 68 65 20 76 61 6c 75 65 20 6f 66  d.  The value of
0930: 20 74 68 65 20 5c 66 42 5c 2d 65 72 72 6f 72 73   the \fB\-errors
0940: 74 61 63 6b 5c 66 52 20 65 6e 74 72 79 20 69 73  tack\fR entry is
0950: 20 61 0a 2b 6c 69 73 74 20 6f 66 20 6c 69 73 74   a.+list of list
0960: 73 20 6d 61 64 65 20 6f 66 20 74 68 65 20 66 75  s made of the fu
0970: 6e 63 74 69 6f 6e 20 6e 61 6d 65 73 20 61 6e 64  nction names and
0980: 20 61 72 67 75 6d 65 6e 74 73 20 61 74 20 65 61   arguments at ea
0990: 63 68 20 6c 65 76 65 6c 0a 2b 66 72 6f 6d 20 74  ch level.+from t
09a0: 68 65 20 63 61 6c 6c 20 73 74 61 63 6b 20 77 68  he call stack wh
09b0: 65 6e 20 74 68 65 20 65 72 72 6f 72 20 6f 63 63  en the error occ
09c0: 75 72 72 65 64 2e 20 49 74 20 64 69 66 66 65 72  urred. It differ
09d0: 73 20 66 72 6f 6d 0a 2b 2d 65 72 72 6f 72 69 6e  s from.+-errorin
09e0: 66 6f 20 69 6e 20 74 68 61 74 20 28 31 29 20 69  fo in that (1) i
09f0: 74 20 69 73 20 61 20 74 72 75 65 20 6c 69 73 74  t is a true list
0a00: 20 6f 66 20 6c 69 73 74 73 2c 20 66 6f 72 20 65   of lists, for e
0a10: 61 73 79 0a 2b 70 72 6f 67 72 61 6d 6d 61 74 69  asy.+programmati
0a20: 63 20 61 63 63 65 73 73 20 77 69 74 68 6f 75 74  c access without
0a30: 20 70 61 72 73 69 6e 67 2c 20 28 32 29 20 69 74   parsing, (2) it
0a40: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 74 72   contains the tr
0a50: 75 65 0a 2b 28 73 75 62 73 74 69 74 75 74 65 64  ue.+(substituted
0a60: 29 20 76 61 6c 75 65 73 20 70 61 73 73 65 64 20  ) values passed 
0a70: 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73  to the functions
0a80: 2c 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65  , instead of the
0a90: 20 73 74 61 74 69 63 0a 2b 74 65 78 74 20 6f 66   static.+text of
0aa0: 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 73 69 74   the calling sit
0ab0: 65 73 2c 20 61 6e 64 20 28 33 29 20 69 74 20 69  es, and (3) it i
0ac0: 73 20 63 6f 61 72 73 65 72 2d 67 72 61 69 6e 65  s coarser-graine
0ad0: 64 2c 20 77 69 74 68 20 6f 6e 6c 79 0a 2b 6f 6e  d, with only.+on
0ae0: 65 20 65 6c 65 6d 65 6e 74 20 70 65 72 20 73 74  e element per st
0af0: 61 63 6b 20 66 72 61 6d 65 20 28 6c 69 6b 65 20  ack frame (like 
0b00: 70 72 6f 63 73 3b 20 6e 6f 20 73 65 70 61 72 61  procs; no separa
0b10: 74 65 20 65 6c 65 6d 65 6e 74 73 20 66 6f 72 0a  te elements for.
0b20: 2b 5b 66 6f 72 65 61 63 68 5d 20 63 6f 6e 73 74  +[foreach] const
0b30: 72 75 63 74 73 20 66 6f 72 20 65 78 61 6d 70 6c  ructs for exampl
0b40: 65 29 2e 0a 2b 0a 2b 54 68 65 20 76 61 6c 75 65  e)..+.+The value
0b50: 73 20 6f 66 20 74 68 65 20 5c 66 42 5c 2d 65 72  s of the \fB\-er
0b60: 72 6f 72 69 6e 66 6f 5c 66 52 20 61 6e 64 20 5c  rorinfo\fR and \
0b70: 66 42 5c 2d 65 72 72 6f 72 63 6f 64 65 5c 66 52  fB\-errorcode\fR
0b80: 20 65 6e 74 72 69 65 73 20 6f 66 0a 2b 74 68 65   entries of.+the
0b90: 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 65 72 72   most recent err
0ba0: 6f 72 20 61 72 65 20 61 6c 73 6f 20 61 76 61 69  or are also avai
0bb0: 6c 61 62 6c 65 20 61 73 20 76 61 6c 75 65 73 20  lable as values 
0bc0: 6f 66 20 74 68 65 20 67 6c 6f 62 61 6c 0a 2b 76  of the global.+v
0bd0: 61 72 69 61 62 6c 65 73 20 5c 66 42 3a 3a 65 72  ariables \fB::er
0be0: 72 6f 72 49 6e 66 6f 5c 66 52 20 61 6e 64 20 5c  rorInfo\fR and \
0bf0: 66 42 3a 3a 65 72 72 6f 72 43 6f 64 65 5c 66 52  fB::errorCode\fR
0c00: 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54   respectively. T
0c10: 68 65 0a 2b 76 61 6c 75 65 20 6f 66 20 74 68 65  he.+value of the
0c20: 20 5c 66 42 5c 2d 65 72 72 6f 72 73 74 61 63 6b   \fB\-errorstack
0c30: 5c 66 52 20 65 6e 74 72 79 20 73 75 72 66 61 63  \fR entry surfac
0c40: 65 73 20 61 73 20 5c 66 42 69 6e 66 6f 0a 2b 65  es as \fBinfo.+e
0c50: 72 72 6f 72 73 74 61 63 6b 5c 66 52 2e 0a 20 2e  rrorstack\fR.. .
0c60: 50 50 0a 20 54 63 6c 20 70 61 63 6b 61 67 65 73  PP. Tcl packages
0c70: 20 6d 61 79 20 70 72 6f 76 69 64 65 20 63 6f 6d   may provide com
0c80: 6d 61 6e 64 73 20 74 68 61 74 20 73 65 74 20 6f  mands that set o
0c90: 74 68 65 72 20 65 6e 74 72 69 65 73 20 69 6e 20  ther entries in 
0ca0: 74 68 65 0a 20 64 69 63 74 69 6f 6e 61 72 79 20  the. dictionary 
0cb0: 6f 66 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e  of return option
0cc0: 73 2c 20 61 6e 64 20 74 68 65 20 5c 66 42 72 65  s, and the \fBre
0cd0: 74 75 72 6e 5c 66 52 20 63 6f 6d 6d 61 6e 64 20  turn\fR command 
0ce0: 6d 61 79 20 62 65 0a 49 6e 64 65 78 3a 20 64 6f  may be.Index: do
0cf0: 63 2f 69 6e 66 6f 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d  c/info.n.=======
0d00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0d10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0d20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0d30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
0d40: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
0d50: 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 69 6e 66 6f  tcl/tcl/doc/info
0d60: 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20  .n,v.retrieving 
0d70: 72 65 76 69 73 69 6f 6e 20 31 2e 33 36 0a 64 69  revision 1.36.di
0d80: 66 66 20 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d  ff -u -p -u -p -
0d90: 72 31 2e 33 36 20 69 6e 66 6f 2e 6e 0a 2d 2d 2d  r1.36 info.n.---
0da0: 20 64 6f 63 2f 69 6e 66 6f 2e 6e 09 32 34 20 4d   doc/info.n.24 M
0db0: 61 72 20 32 30 31 30 20 31 33 3a 32 31 3a 31 31  ar 2010 13:21:11
0dc0: 20 2d 30 30 30 30 09 31 2e 33 36 0a 2b 2b 2b 20   -0000.1.36.+++ 
0dd0: 64 6f 63 2f 69 6e 66 6f 2e 6e 09 32 34 20 4d 61  doc/info.n.24 Ma
0de0: 72 20 32 30 31 30 20 31 35 3a 35 35 3a 34 37 20  r 2010 15:55:47 
0df0: 2d 30 30 30 30 0a 40 40 20 2d 39 34 2c 36 20 2b  -0000.@@ -94,6 +
0e00: 39 34 2c 31 36 20 40 40 20 64 6f 65 73 20 6e 6f  94,16 @@ does no
0e10: 74 20 68 61 76 65 20 61 20 64 65 66 61 75 6c 74  t have a default
0e20: 20 76 61 6c 75 65 20 74 68 65 6e 20 74 68 65 20   value then the 
0e30: 63 0a 20 4f 74 68 65 72 77 69 73 65 20 69 74 20  c. Otherwise it 
0e40: 72 65 74 75 72 6e 73 20 5c 66 42 31 5c 66 52 20  returns \fB1\fR 
0e50: 61 6e 64 20 70 6c 61 63 65 73 20 74 68 65 20 64  and places the d
0e60: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20  efault value of 
0e70: 5c 66 49 61 72 67 5c 66 52 0a 20 69 6e 74 6f 20  \fIarg\fR. into 
0e80: 76 61 72 69 61 62 6c 65 20 5c 66 49 76 61 72 6e  variable \fIvarn
0e90: 61 6d 65 5c 66 52 2e 0a 20 2e 54 50 0a 2b 5c 66  ame\fR.. .TP.+\f
0ea0: 42 69 6e 66 6f 20 65 72 72 6f 72 73 74 61 63 6b  Binfo errorstack
0eb0: 20 5c 66 52 3f 5c 66 49 69 6e 74 65 72 70 5c 66   \fR?\fIinterp\f
0ec0: 52 3f 0a 2b 2e 0a 2b 52 65 74 75 72 6e 73 20 61  R?.+..+Returns a
0ed0: 20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 20 6d   list of lists m
0ee0: 61 64 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74  ade of the funct
0ef0: 69 6f 6e 20 6e 61 6d 65 73 20 61 6e 64 20 61 72  ion names and ar
0f00: 67 75 6d 65 6e 74 73 20 61 74 0a 2b 65 61 63 68  guments at.+each
0f10: 20 6c 65 76 65 6c 20 66 72 6f 6d 20 74 68 65 20   level from the 
0f20: 63 61 6c 6c 20 73 74 61 63 6b 20 6f 66 20 74 68  call stack of th
0f30: 65 20 6c 61 73 74 20 65 72 72 6f 72 20 69 6e 20  e last error in 
0f40: 74 68 65 20 67 69 76 65 6e 0a 2b 5c 66 49 69 6e  the given.+\fIin
0f50: 74 65 72 70 5c 66 52 2c 20 6f 72 20 69 6e 20 74  terp\fR, or in t
0f60: 68 65 20 63 75 72 72 65 6e 74 20 6f 6e 65 20 69  he current one i
0f70: 66 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 2e  f not specified.
0f80: 20 20 54 68 69 73 0a 2b 69 6e 66 6f 72 6d 61 74    This.+informat
0f90: 69 6f 6e 20 69 73 20 61 6c 73 6f 20 70 72 65 73  ion is also pres
0fa0: 65 6e 74 20 69 6e 20 74 68 65 20 2d 65 72 72 6f  ent in the -erro
0fb0: 72 73 74 61 63 6b 20 65 6e 74 72 79 20 6f 66 20  rstack entry of 
0fc0: 74 68 65 20 6f 70 74 69 6f 6e 73 0a 2b 64 69 63  the options.+dic
0fd0: 74 69 6f 6e 61 72 79 20 72 65 74 75 72 6e 65 64  tionary returned
0fe0: 20 62 79 20 33 2d 61 72 67 20 5c 66 42 63 61 74   by 3-arg \fBcat
0ff0: 63 68 5c 66 52 3b 20 5c 66 42 69 6e 66 6f 20 65  ch\fR; \fBinfo e
1000: 72 72 6f 72 73 74 61 63 6b 5c 66 52 20 69 73 20  rrorstack\fR is 
1010: 61 0a 2b 63 6f 6e 76 65 6e 69 65 6e 74 20 77 61  a.+convenient wa
1020: 79 20 6f 66 20 72 65 74 72 69 65 76 69 6e 67 20  y of retrieving 
1030: 69 74 20 66 6f 72 20 75 6e 63 61 75 67 68 74 20  it for uncaught 
1040: 65 72 72 6f 72 73 20 61 74 20 74 6f 70 6c 65 76  errors at toplev
1050: 65 6c 20 69 6e 20 61 6e 0a 2b 69 6e 74 65 72 61  el in an.+intera
1060: 63 74 69 76 65 20 74 63 6c 73 68 2e 0a 2b 2e 54  ctive tclsh..+.T
1070: 50 0a 20 5c 66 42 69 6e 66 6f 20 65 78 69 73 74  P. \fBinfo exist
1080: 73 20 5c 66 49 76 61 72 4e 61 6d 65 5c 66 52 0a  s \fIvarName\fR.
1090: 20 2e 0a 20 52 65 74 75 72 6e 73 20 5c 66 42 31   .. Returns \fB1
10a0: 5c 66 52 20 69 66 20 74 68 65 20 76 61 72 69 61  \fR if the varia
10b0: 62 6c 65 20 6e 61 6d 65 64 20 5c 66 49 76 61 72  ble named \fIvar
10c0: 4e 61 6d 65 5c 66 52 20 65 78 69 73 74 73 20 69  Name\fR exists i
10d0: 6e 20 74 68 65 0a 49 6e 64 65 78 3a 20 64 6f 63  n the.Index: doc
10e0: 2f 72 65 74 75 72 6e 2e 6e 0a 3d 3d 3d 3d 3d 3d  /return.n.======
10f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1110: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
1130: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
1140: 2f 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 72 65 74  /tcl/tcl/doc/ret
1150: 75 72 6e 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69  urn.n,v.retrievi
1160: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 35  ng revision 1.25
1170: 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 75 20 2d  .diff -u -p -u -
1180: 70 20 2d 72 31 2e 32 35 20 72 65 74 75 72 6e 2e  p -r1.25 return.
1190: 6e 0a 2d 2d 2d 20 64 6f 63 2f 72 65 74 75 72 6e  n.--- doc/return
11a0: 2e 6e 09 32 30 20 4a 61 6e 20 32 30 31 30 20 31  .n.20 Jan 2010 1
11b0: 33 3a 34 32 3a 31 37 20 2d 30 30 30 30 09 31 2e  3:42:17 -0000.1.
11c0: 32 35 0a 2b 2b 2b 20 64 6f 63 2f 72 65 74 75 72  25.+++ doc/retur
11d0: 6e 2e 6e 09 32 34 20 4d 61 72 20 32 30 31 30 20  n.n.24 Mar 2010 
11e0: 31 35 3a 35 35 3a 34 37 20 2d 30 30 30 30 0a 40  15:55:47 -0000.@
11f0: 40 20 2d 31 33 38 2c 36 20 2b 31 33 38 2c 32 32  @ -138,6 +138,22
1200: 20 40 40 20 74 68 65 20 76 61 6c 75 65 20 6f 66   @@ the value of
1210: 20 5c 66 42 5c 2d 65 72 72 6f 72 69 6e 66 6f 5c   \fB\-errorinfo\
1220: 66 52 20 69 6e 20 61 20 72 65 74 75 0a 20 62 79  fR in a retu. by
1230: 20 74 68 65 20 5c 66 42 63 61 74 63 68 5c 66 52   the \fBcatch\fR
1240: 20 63 6f 6d 6d 61 6e 64 20 28 6f 72 20 66 72 6f   command (or fro
1250: 6d 20 74 68 65 20 63 6f 70 79 20 6f 66 20 74 68  m the copy of th
1260: 61 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 20  at information. 
1270: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 67 6c  stored in the gl
1280: 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20 5c 66  obal variable \f
1290: 42 65 72 72 6f 72 49 6e 66 6f 5c 66 52 29 2e 0a  BerrorInfo\fR)..
12a0: 20 2e 54 50 0a 2b 5c 66 42 5c 2d 65 72 72 6f 72   .TP.+\fB\-error
12b0: 73 74 61 63 6b 20 5c 66 49 6c 69 73 74 5c 66 52  stack \fIlist\fR
12c0: 0a 2b 2e 0a 2b 54 68 65 20 5c 66 42 5c 2d 65 72  .+..+The \fB\-er
12d0: 72 6f 72 73 74 61 63 6b 5c 66 52 20 6f 70 74 69  rorstack\fR opti
12e0: 6f 6e 20 72 65 63 65 69 76 65 73 20 73 70 65 63  on receives spec
12f0: 69 61 6c 20 74 72 65 61 74 6d 65 6e 74 20 6f 6e  ial treatment on
1300: 6c 79 20 77 68 65 6e 20 74 68 65 20 76 61 6c 75  ly when the valu
1310: 65 0a 2b 6f 66 20 74 68 65 20 5c 66 42 5c 2d 63  e.+of the \fB\-c
1320: 6f 64 65 5c 66 52 20 6f 70 74 69 6f 6e 20 69 73  ode\fR option is
1330: 20 5c 66 42 54 43 4c 5f 45 52 52 4f 52 5c 66 52   \fBTCL_ERROR\fR
1340: 2e 20 20 54 68 65 6e 20 5c 66 49 6c 69 73 74 5c  .  Then \fIlist\
1350: 66 52 20 69 73 20 74 68 65 20 69 6e 69 74 69 61  fR is the initia
1360: 6c 0a 2b 65 72 72 6f 72 20 73 74 61 63 6b 2c 20  l.+error stack, 
1370: 72 65 63 6f 72 64 69 6e 67 20 61 63 74 75 61 6c  recording actual
1380: 20 61 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 73   argument values
1390: 20 70 61 73 73 65 64 20 74 6f 20 65 61 63 68 20   passed to each 
13a0: 70 72 6f 63 20 6c 65 76 65 6c 2e 20 20 54 68 65  proc level.  The
13b0: 20 65 72 72 6f 72 20 73 74 61 63 6b 20 77 69 6c   error stack wil
13c0: 6c 0a 2b 61 6c 73 6f 20 62 65 20 72 65 61 63 68  l.+also be reach
13d0: 61 62 6c 65 20 74 68 72 6f 75 67 68 20 5b 69 6e  able through [in
13e0: 66 6f 20 65 72 72 6f 72 73 74 61 63 6b 5d 2e 0a  fo errorstack]..
13f0: 2b 49 66 20 6e 6f 20 5c 66 42 5c 2d 65 72 72 6f  +If no \fB\-erro
1400: 72 73 74 61 63 6b 5c 66 52 20 6f 70 74 69 6f 6e  rstack\fR option
1410: 20 69 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20   is provided to 
1420: 5c 66 42 72 65 74 75 72 6e 5c 66 52 20 77 68 65  \fBreturn\fR whe
1430: 6e 0a 2b 74 68 65 20 5c 66 42 5c 2d 63 6f 64 65  n.+the \fB\-code
1440: 20 65 72 72 6f 72 5c 66 52 20 6f 70 74 69 6f 6e   error\fR option
1450: 20 69 73 20 70 72 6f 76 69 64 65 64 2c 20 54 63   is provided, Tc
1460: 6c 20 77 69 6c 6c 20 70 72 6f 76 69 64 65 20 69  l will provide i
1470: 74 73 20 6f 77 6e 0a 2b 69 6e 69 74 69 61 6c 20  ts own.+initial 
1480: 65 72 72 6f 72 20 73 74 61 63 6b 20 69 6e 20 74  error stack in t
1490: 68 65 20 65 6e 74 72 79 20 66 6f 72 20 5c 66 42  he entry for \fB
14a0: 5c 2d 65 72 72 6f 72 73 74 61 63 6b 5c 66 52 2e  \-errorstack\fR.
14b0: 20 20 54 63 6c 27 73 0a 2b 69 6e 69 74 69 61 6c    Tcl's.+initial
14c0: 20 65 72 72 6f 72 20 73 74 61 63 6b 20 77 69 6c   error stack wil
14d0: 6c 20 69 6e 63 6c 75 64 65 20 6f 6e 6c 79 20 74  l include only t
14e0: 68 65 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 70  he call to the p
14f0: 72 6f 63 65 64 75 72 65 2c 20 61 6e 64 0a 2b 73  rocedure, and.+s
1500: 74 61 63 6b 20 75 6e 77 69 6e 64 69 6e 67 20 77  tack unwinding w
1510: 69 6c 6c 20 61 70 70 65 6e 64 20 69 6e 66 6f 72  ill append infor
1520: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 68 69 67  mation about hig
1530: 68 65 72 20 73 74 61 63 6b 20 6c 65 76 65 6c 73  her stack levels
1540: 2c 20 62 75 74 0a 2b 74 68 65 72 65 20 77 69 6c  , but.+there wil
1550: 6c 20 62 65 20 6e 6f 20 69 6e 66 6f 72 6d 61 74  l be no informat
1560: 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 63 6f  ion about the co
1570: 6e 74 65 78 74 20 6f 66 20 74 68 65 20 65 72 72  ntext of the err
1580: 6f 72 20 77 69 74 68 69 6e 0a 2b 74 68 65 20 70  or within.+the p
1590: 72 6f 63 65 64 75 72 65 2e 20 20 54 79 70 69 63  rocedure.  Typic
15a0: 61 6c 6c 79 20 74 68 65 20 5c 66 49 6c 69 73 74  ally the \fIlist
15b0: 5c 66 52 20 76 61 6c 75 65 20 69 73 20 73 75 70  \fR value is sup
15c0: 70 6c 69 65 64 20 66 72 6f 6d 0a 2b 74 68 65 20  plied from.+the 
15d0: 76 61 6c 75 65 20 6f 66 20 5c 66 42 5c 2d 65 72  value of \fB\-er
15e0: 72 6f 72 73 74 61 63 6b 5c 66 52 20 69 6e 20 61  rorstack\fR in a
15f0: 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 73 20   return options 
1600: 64 69 63 74 69 6f 6e 61 72 79 20 63 61 70 74 75  dictionary captu
1610: 72 65 64 0a 2b 62 79 20 74 68 65 20 5c 66 42 63  red.+by the \fBc
1620: 61 74 63 68 5c 66 52 20 63 6f 6d 6d 61 6e 64 20  atch\fR command 
1630: 28 6f 72 20 66 72 6f 6d 20 74 68 65 20 63 6f 70  (or from the cop
1640: 79 20 6f 66 20 74 68 61 74 20 69 6e 66 6f 72 6d  y of that inform
1650: 61 74 69 6f 6e 20 66 72 6f 6d 20 5b 69 6e 66 6f  ation from [info
1660: 20 65 72 72 6f 72 73 74 61 63 6b 5d 29 2e 0a 2b   errorstack])..+
1670: 2e 54 50 0a 20 5c 66 42 5c 2d 6c 65 76 65 6c 20  .TP. \fB\-level 
1680: 5c 66 49 6c 65 76 65 6c 5c 66 52 0a 20 2e 0a 20  \fIlevel\fR. .. 
1690: 54 68 65 20 5c 66 42 5c 2d 6c 65 76 65 6c 5c 66  The \fB\-level\f
16a0: 52 20 61 6e 64 20 5c 66 42 5c 2d 63 6f 64 65 5c  R and \fB\-code\
16b0: 66 52 20 6f 70 74 69 6f 6e 73 20 77 6f 72 6b 20  fR options work 
16c0: 74 6f 67 65 74 68 65 72 20 74 6f 20 73 65 74 20  together to set 
16d0: 74 68 65 20 72 65 74 75 72 6e 0a 49 6e 64 65 78  the return.Index
16e0: 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 73  : generic/tclBas
16f0: 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ic.c.===========
1700: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1710: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1720: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1730: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
1740: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
1750: 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 42  tcl/generic/tclB
1760: 61 73 69 63 2e 63 2c 76 0a 72 65 74 72 69 65 76  asic.c,v.retriev
1770: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 34  ing revision 1.4
1780: 34 39 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 75  49.diff -u -p -u
1790: 20 2d 70 20 2d 72 31 2e 34 34 39 20 74 63 6c 42   -p -r1.449 tclB
17a0: 61 73 69 63 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72  asic.c.--- gener
17b0: 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 09 31 39  ic/tclBasic.c.19
17c0: 20 4d 61 72 20 32 30 31 30 20 31 31 3a 35 34 3a   Mar 2010 11:54:
17d0: 30 36 20 2d 30 30 30 30 09 31 2e 34 34 39 0a 2b  06 -0000.1.449.+
17e0: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 61  ++ generic/tclBa
17f0: 73 69 63 2e 63 09 32 34 20 4d 61 72 20 32 30 31  sic.c.24 Mar 201
1800: 30 20 31 35 3a 35 35 3a 34 38 20 2d 30 30 30 30  0 15:55:48 -0000
1810: 0a 40 40 20 2d 35 32 39 2c 36 20 2b 35 32 39 2c  .@@ -529,6 +529,
1820: 31 31 20 40 40 20 54 63 6c 5f 43 72 65 61 74 65  11 @@ Tcl_Create
1830: 49 6e 74 65 72 70 28 76 6f 69 64 29 0a 20 20 20  Interp(void).   
1840: 20 20 69 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66    iPtr->errorInf
1850: 6f 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 54  o = NULL;.     T
1860: 63 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69  clNewLiteralStri
1870: 6e 67 4f 62 6a 28 69 50 74 72 2d 3e 65 69 56 61  ngObj(iPtr->eiVa
1880: 72 2c 20 22 3a 3a 65 72 72 6f 72 49 6e 66 6f 22  r, "::errorInfo"
1890: 29 3b 0a 20 20 20 20 20 54 63 6c 5f 49 6e 63 72  );.     Tcl_Incr
18a0: 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65  RefCount(iPtr->e
18b0: 69 56 61 72 29 3b 0a 2b 20 20 20 20 69 50 74 72  iVar);.+    iPtr
18c0: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 20 3d 20 54  ->errorStack = T
18d0: 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 30 2c  cl_NewListObj(0,
18e0: 20 4e 55 4c 4c 29 3b 0a 2b 20 20 20 20 54 63 6c   NULL);.+    Tcl
18f0: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 50  _IncrRefCount(iP
1900: 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 3b  tr->errorStack);
1910: 0a 2b 20 20 20 20 69 50 74 72 2d 3e 72 65 73 65  .+    iPtr->rese
1920: 74 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 31 3b  tErrorStack = 1;
1930: 0a 2b 20 20 20 20 54 63 6c 4e 65 77 4c 69 74 65  .+    TclNewLite
1940: 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 69 50 74  ralStringObj(iPt
1950: 72 2d 3e 75 70 6c 65 76 65 6c 4c 69 74 65 72 61  r->uplevelLitera
1960: 6c 2c 22 75 70 6c 65 76 65 6c 22 29 3b 0a 2b 20  l,"uplevel");.+ 
1970: 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f     Tcl_IncrRefCo
1980: 75 6e 74 28 69 50 74 72 2d 3e 75 70 6c 65 76 65  unt(iPtr->upleve
1990: 6c 4c 69 74 65 72 61 6c 29 3b 0a 20 20 20 20 20  lLiteral);.     
19a0: 69 50 74 72 2d 3e 65 72 72 6f 72 43 6f 64 65 20  iPtr->errorCode 
19b0: 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 54 63 6c  = NULL;.     Tcl
19c0: 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67  NewLiteralString
19d0: 4f 62 6a 28 69 50 74 72 2d 3e 65 63 56 61 72 2c  Obj(iPtr->ecVar,
19e0: 20 22 3a 3a 65 72 72 6f 72 43 6f 64 65 22 29 3b   "::errorCode");
19f0: 0a 20 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65  .     Tcl_IncrRe
1a00: 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65 63 56  fCount(iPtr->ecV
1a10: 61 72 29 3b 0a 40 40 20 2d 31 34 36 37 2c 36 20  ar);.@@ -1467,6 
1a20: 2b 31 34 37 32 2c 38 20 40 40 20 44 65 6c 65 74  +1472,8 @@ Delet
1a30: 65 49 6e 74 65 72 70 50 72 6f 63 28 0a 20 09 54  eInterpProc(. .T
1a40: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
1a50: 69 50 74 72 2d 3e 65 72 72 6f 72 49 6e 66 6f 29  iPtr->errorInfo)
1a60: 3b 0a 20 09 69 50 74 72 2d 3e 65 72 72 6f 72 49  ;. .iPtr->errorI
1a70: 6e 66 6f 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20  nfo = NULL;.    
1a80: 20 7d 0a 2b 20 20 20 20 54 63 6c 5f 44 65 63 72   }.+    Tcl_Decr
1a90: 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65  RefCount(iPtr->e
1aa0: 72 72 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20  rrorStack);.+   
1ab0: 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e   Tcl_DecrRefCoun
1ac0: 74 28 69 50 74 72 2d 3e 75 70 6c 65 76 65 6c 4c  t(iPtr->uplevelL
1ad0: 69 74 65 72 61 6c 29 3b 0a 20 20 20 20 20 69 66  iteral);.     if
1ae0: 20 28 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f 70   (iPtr->returnOp
1af0: 74 73 29 20 7b 0a 20 09 54 63 6c 5f 44 65 63 72  ts) {. .Tcl_Decr
1b00: 52 65 66 43 6f 75 6e 74 28 69 50 74 72 2d 3e 72  RefCount(iPtr->r
1b10: 65 74 75 72 6e 4f 70 74 73 29 3b 0a 20 20 20 20  eturnOpts);.    
1b20: 20 7d 0a 40 40 20 2d 38 39 34 33 2c 35 20 2b 38   }.@@ -8943,5 +8
1b30: 39 35 30 2c 37 20 40 40 20 54 63 6c 49 6e 66 6f  950,7 @@ TclInfo
1b40: 43 6f 72 6f 75 74 69 6e 65 43 6d 64 28 0a 20 20  CoroutineCmd(.  
1b50: 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 2a 20 63 2d  * mode: c.  * c-
1b60: 62 61 73 69 63 2d 6f 66 66 73 65 74 3a 20 34 0a  basic-offset: 4.
1b70: 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 3a    * fill-column:
1b80: 20 37 38 0a 2b 20 2a 20 74 61 62 2d 77 69 64 74   78.+ * tab-widt
1b90: 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 65 6e 74 2d  h: 8.+ * indent-
1ba0: 74 61 62 73 2d 6d 6f 64 65 3a 20 6e 69 6c 0a 20  tabs-mode: nil. 
1bb0: 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f 0a 49 6e 64   * End:.  */.Ind
1bc0: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 43  ex: generic/tclC
1bd0: 6d 64 49 4c 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d  mdIL.c.=========
1be0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1bf0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66  ==========.RCS f
1c20: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63  ile: /cvsroot/tc
1c30: 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63  l/tcl/generic/tc
1c40: 6c 43 6d 64 49 4c 2e 63 2c 76 0a 72 65 74 72 69  lCmdIL.c,v.retri
1c50: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
1c60: 2e 31 38 30 0a 64 69 66 66 20 2d 75 20 2d 70 20  .180.diff -u -p 
1c70: 2d 75 20 2d 70 20 2d 72 31 2e 31 38 30 20 74 63  -u -p -r1.180 tc
1c80: 6c 43 6d 64 49 4c 2e 63 0a 2d 2d 2d 20 67 65 6e  lCmdIL.c.--- gen
1c90: 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e 63 09  eric/tclCmdIL.c.
1ca0: 35 20 4d 61 72 20 32 30 31 30 20 31 34 3a 33 34  5 Mar 2010 14:34
1cb0: 3a 30 33 20 2d 30 30 30 30 09 31 2e 31 38 30 0a  :03 -0000.1.180.
1cc0: 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 43  +++ generic/tclC
1cd0: 6d 64 49 4c 2e 63 09 32 34 20 4d 61 72 20 32 30  mdIL.c.24 Mar 20
1ce0: 31 30 20 31 35 3a 35 35 3a 34 38 20 2d 30 30 30  10 15:55:48 -000
1cf0: 30 0a 40 40 20 2d 31 31 38 2c 36 20 2b 31 31 38  0.@@ -118,6 +118
1d00: 2c 39 20 40 40 20 73 74 61 74 69 63 20 69 6e 74  ,9 @@ static int
1d10: 09 09 49 6e 66 6f 43 6f 6d 70 6c 65 74 65 43 6d  ..InfoCompleteCm
1d20: 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 0a 20  d(ClientData d. 
1d30: 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c  ...    int objc,
1d40: 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20   Tcl_Obj *const 
1d50: 6f 62 6a 76 5b 5d 29 3b 0a 20 73 74 61 74 69 63  objv[]);. static
1d60: 20 69 6e 74 09 09 49 6e 66 6f 44 65 66 61 75 6c   int..InfoDefaul
1d70: 74 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20  tCmd(ClientData 
1d80: 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72  dummy, Tcl_Inter
1d90: 70 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20  p *interp,. ... 
1da0: 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c     int objc, Tcl
1db0: 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a 76  _Obj *const objv
1dc0: 5b 5d 29 3b 0a 2b 2f 2a 20 54 49 50 20 23 33 34  []);.+/* TIP #34
1dd0: 38 20 2d 20 4e 65 77 20 27 69 6e 66 6f 27 20 73  8 - New 'info' s
1de0: 75 62 63 6f 6d 6d 61 6e 64 20 27 65 72 72 6f 72  ubcommand 'error
1df0: 73 74 61 63 6b 27 20 2a 2f 0a 2b 73 74 61 74 69  stack' */.+stati
1e00: 63 20 69 6e 74 09 09 49 6e 66 6f 45 72 72 6f 72  c int..InfoError
1e10: 53 74 61 63 6b 43 6d 64 28 43 6c 69 65 6e 74 44  StackCmd(ClientD
1e20: 61 74 61 20 64 75 6d 6d 79 2c 20 54 63 6c 5f 49  ata dummy, Tcl_I
1e30: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2b  nterp *interp,.+
1e40: 09 09 09 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c  ...    int objc,
1e50: 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20   Tcl_Obj *const 
1e60: 6f 62 6a 76 5b 5d 29 3b 0a 20 2f 2a 20 54 49 50  objv[]);. /* TIP
1e70: 20 23 32 38 30 20 2d 20 4e 65 77 20 27 69 6e 66   #280 - New 'inf
1e80: 6f 27 20 73 75 62 63 6f 6d 6d 61 6e 64 20 27 66  o' subcommand 'f
1e90: 72 61 6d 65 27 20 2a 2f 0a 20 73 74 61 74 69 63  rame' */. static
1ea0: 20 69 6e 74 09 09 49 6e 66 6f 46 72 61 6d 65 43   int..InfoFrameC
1eb0: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75  md(ClientData du
1ec0: 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 20  mmy, Tcl_Interp 
1ed0: 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20  *interp,. ...   
1ee0: 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f   int objc, Tcl_O
1ef0: 62 6a 20 2a 63 6f 6e 73 74 20 6f 62 6a 76 5b 5d  bj *const objv[]
1f00: 29 3b 0a 40 40 20 2d 31 36 34 2c 36 20 2b 31 36  );.@@ -164,6 +16
1f10: 37 2c 37 20 40 40 20 73 74 61 74 69 63 20 63 6f  7,7 @@ static co
1f20: 6e 73 74 20 45 6e 73 65 6d 62 6c 65 49 6d 70 6c  nst EnsembleImpl
1f30: 4d 61 70 20 64 65 66 61 75 6c 74 49 6e 66 6f 0a  Map defaultInfo.
1f40: 20 20 20 20 20 7b 22 63 6f 6d 70 6c 65 74 65 22       {"complete"
1f50: 2c 09 20 20 20 49 6e 66 6f 43 6f 6d 70 6c 65 74  ,.   InfoComplet
1f60: 65 43 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c 20  eCmd,.    NULL, 
1f70: 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20 20 20  NULL, NULL},.   
1f80: 20 20 7b 22 63 6f 72 6f 75 74 69 6e 65 22 2c 09    {"coroutine",.
1f90: 20 20 20 54 63 6c 49 6e 66 6f 43 6f 72 6f 75 74     TclInfoCorout
1fa0: 69 6e 65 43 6d 64 2c 20 20 20 20 20 4e 55 4c 4c  ineCmd,     NULL
1fb0: 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20  , NULL, NULL},. 
1fc0: 20 20 20 20 7b 22 64 65 66 61 75 6c 74 22 2c 09      {"default",.
1fd0: 09 20 20 20 49 6e 66 6f 44 65 66 61 75 6c 74 43  .   InfoDefaultC
1fe0: 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c 20 4e 55  md,.    NULL, NU
1ff0: 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 2b 20 20 20 20  LL, NULL},.+    
2000: 7b 22 65 72 72 6f 72 73 74 61 63 6b 22 2c 09 20  {"errorstack",. 
2010: 20 20 49 6e 66 6f 45 72 72 6f 72 53 74 61 63 6b    InfoErrorStack
2020: 43 6d 64 2c 09 20 20 20 20 4e 55 4c 4c 2c 20 4e  Cmd,.    NULL, N
2030: 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20 20 20 20  ULL, NULL},.    
2040: 20 7b 22 65 78 69 73 74 73 22 2c 09 09 20 20 20   {"exists",..   
2050: 54 63 6c 49 6e 66 6f 45 78 69 73 74 73 43 6d 64  TclInfoExistsCmd
2060: 2c 09 20 20 20 20 54 63 6c 43 6f 6d 70 69 6c 65  ,.    TclCompile
2070: 49 6e 66 6f 45 78 69 73 74 73 43 6d 64 2c 20 4e  InfoExistsCmd, N
2080: 55 4c 4c 2c 20 4e 55 4c 4c 7d 2c 0a 20 20 20 20  ULL, NULL},.    
2090: 20 7b 22 66 72 61 6d 65 22 2c 09 09 20 20 20 49   {"frame",..   I
20a0: 6e 66 6f 46 72 61 6d 65 43 6d 64 2c 09 20 20 20  nfoFrameCmd,.   
20b0: 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c   NULL, NULL, NUL
20c0: 4c 7d 2c 0a 20 20 20 20 20 7b 22 66 75 6e 63 74  L},.     {"funct
20d0: 69 6f 6e 73 22 2c 09 20 20 20 49 6e 66 6f 46 75  ions",.   InfoFu
20e0: 6e 63 74 69 6f 6e 73 43 6d 64 2c 09 20 20 20 20  nctionsCmd,.    
20f0: 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c  NULL, NULL, NULL
2100: 7d 2c 0a 40 40 20 2d 31 30 32 32 2c 36 20 2b 31  },.@@ -1022,6 +1
2110: 30 32 36 2c 35 35 20 40 40 20 49 6e 66 6f 44 65  026,55 @@ InfoDe
2120: 66 61 75 6c 74 43 6d 64 28 0a 20 2f 2a 0a 20 20  faultCmd(. /*.  
2130: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
2140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 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 0a 20 20 2a 0a 2b 20 2a 20  -------.  *.+ * 
2180: 49 6e 66 6f 45 72 72 6f 72 53 74 61 63 6b 43 6d  InfoErrorStackCm
2190: 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 43 61 6c  d --.+ *.+ *.Cal
21a0: 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  led to implement
21b0: 20 74 68 65 20 22 69 6e 66 6f 20 65 72 72 6f 72   the "info error
21c0: 73 74 61 63 6b 22 20 63 6f 6d 6d 61 6e 64 20 74  stack" command t
21d0: 68 61 74 20 72 65 74 75 72 6e 73 20 69 6e 66 6f  hat returns info
21e0: 72 6d 61 74 69 6f 6e 0a 2b 20 2a 09 61 62 6f 75  rmation.+ *.abou
21f0: 74 20 74 68 65 20 6c 61 73 74 20 65 72 72 6f 72  t the last error
2200: 27 73 20 63 61 6c 6c 20 73 74 61 63 6b 2e 20 48  's call stack. H
2210: 61 6e 64 6c 65 73 20 74 68 65 20 66 6f 6c 6c 6f  andles the follo
2220: 77 69 6e 67 20 73 79 6e 74 61 78 3a 0a 2b 20 2a  wing syntax:.+ *
2230: 0a 2b 20 2a 09 20 20 20 20 69 6e 66 6f 20 65 72  .+ *.    info er
2240: 72 6f 72 73 74 61 63 6b 20 3f 69 6e 74 65 72 70  rorstack ?interp
2250: 3f 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74  ?.+ *.+ * Result
2260: 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 54  s:.+ *.Returns T
2270: 43 4c 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73  CL_OK if success
2280: 66 75 6c 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f  ful and TCL_ERRO
2290: 52 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e  R if there is an
22a0: 20 65 72 72 6f 72 2e 0a 2b 20 2a 0a 2b 20 2a 20   error..+ *.+ * 
22b0: 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b 20  Side effects:.+ 
22c0: 2a 09 52 65 74 75 72 6e 73 20 61 20 72 65 73 75  *.Returns a resu
22d0: 6c 74 20 69 6e 20 74 68 65 20 69 6e 74 65 72 70  lt in the interp
22e0: 72 65 74 65 72 27 73 20 72 65 73 75 6c 74 20 6f  reter's result o
22f0: 62 6a 65 63 74 2e 20 49 66 20 74 68 65 72 65 20  bject. If there 
2300: 69 73 20 61 6e 0a 2b 20 2a 09 65 72 72 6f 72 2c  is an.+ *.error,
2310: 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61   the result is a
2320: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  n error message.
2330: 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d  .+ *.+ *--------
2340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2350: 2d 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 0a 2b  --------------.+
2380: 20 2a 2f 0a 2b 0a 2b 73 74 61 74 69 63 20 69 6e   */.+.+static in
2390: 74 0a 2b 49 6e 66 6f 45 72 72 6f 72 53 74 61 63  t.+InfoErrorStac
23a0: 6b 43 6d 64 28 0a 2b 20 20 20 20 43 6c 69 65 6e  kCmd(.+    Clien
23b0: 74 44 61 74 61 20 64 75 6d 6d 79 2c 09 09 2f 2a  tData dummy,../*
23c0: 20 4e 6f 74 20 75 73 65 64 2e 20 2a 2f 0a 2b 20   Not used. */.+ 
23d0: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69     Tcl_Interp *i
23e0: 6e 74 65 72 70 2c 09 09 2f 2a 20 43 75 72 72 65  nterp,../* Curre
23f0: 6e 74 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20  nt interpreter. 
2400: 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 6f 62 6a 63  */.+    int objc
2410: 2c 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66  ,.../* Number of
2420: 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 2b   arguments. */.+
2430: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e      Tcl_Obj *con
2440: 73 74 20 6f 62 6a 76 5b 5d 29 09 2f 2a 20 41 72  st objv[])./* Ar
2450: 67 75 6d 65 6e 74 20 6f 62 6a 65 63 74 73 2e 20  gument objects. 
2460: 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 54 63 6c 5f 49  */.+{.+    Tcl_I
2470: 6e 74 65 72 70 20 2a 74 61 72 67 65 74 3b 0a 2b  nterp *target;.+
2480: 20 20 20 20 49 6e 74 65 72 70 20 2a 69 50 74 72      Interp *iPtr
2490: 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 28 6f 62  ;.+.+    if ((ob
24a0: 6a 63 20 21 3d 20 31 29 20 26 26 20 28 6f 62 6a  jc != 1) && (obj
24b0: 63 20 21 3d 20 32 29 29 20 7b 0a 2b 09 54 63 6c  c != 2)) {.+.Tcl
24c0: 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e  _WrongNumArgs(in
24d0: 74 65 72 70 2c 20 31 2c 20 6f 62 6a 76 2c 20 22  terp, 1, objv, "
24e0: 3f 69 6e 74 65 72 70 3f 22 29 3b 0a 2b 09 72 65  ?interp?");.+.re
24f0: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a  turn TCL_ERROR;.
2500: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 0a 2b 20 20  +    }.+    .+  
2510: 20 20 74 61 72 67 65 74 20 3d 20 69 6e 74 65 72    target = inter
2520: 70 3b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a 63  p;.+    if (objc
2530: 20 3d 3d 20 32 29 20 7b 0a 2b 20 20 20 20 20 20   == 2) {.+      
2540: 20 20 74 61 72 67 65 74 20 3d 20 54 63 6c 5f 47    target = Tcl_G
2550: 65 74 53 6c 61 76 65 28 69 6e 74 65 72 70 2c 20  etSlave(interp, 
2560: 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f 62  Tcl_GetString(ob
2570: 6a 76 5b 31 5d 29 29 3b 0a 2b 20 20 20 20 20 20  jv[1]));.+      
2580: 20 20 69 66 20 28 74 61 72 67 65 74 20 3d 3d 20    if (target == 
2590: 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 20 20 20  NULL) {.+       
25a0: 20 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f       return TCL_
25b0: 45 52 52 4f 52 3b 0a 2b 20 20 20 20 20 20 20 20  ERROR;.+        
25c0: 7d 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20  }.+    }.+.+    
25d0: 69 50 74 72 20 3d 20 28 49 6e 74 65 72 70 20 2a  iPtr = (Interp *
25e0: 29 20 74 61 72 67 65 74 3b 0a 2b 20 20 20 20 54  ) target;.+    T
25f0: 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28  cl_SetObjResult(
2600: 69 6e 74 65 72 70 2c 20 69 50 74 72 2d 3e 65 72  interp, iPtr->er
2610: 72 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20  rorStack);.+    
2620: 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c  .+    return TCL
2630: 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b  _OK;.+}.+..+/*.+
2640: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
2650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 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 0a 2b 20 2a 0a 20 20 2a  --------.+ *.  *
2690: 20 54 63 6c 49 6e 66 6f 45 78 69 73 74 73 43 6d   TclInfoExistsCm
26a0: 64 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 43 61 6c  d --.  *.  *.Cal
26b0: 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  led to implement
26c0: 20 74 68 65 20 22 69 6e 66 6f 20 65 78 69 73 74   the "info exist
26d0: 73 22 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20  s" command that 
26e0: 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68  determines wheth
26f0: 65 72 0a 40 40 20 2d 34 34 30 31 2c 35 20 2b 34  er.@@ -4401,5 +4
2700: 34 35 34 2c 37 20 40 40 20 53 65 6c 65 63 74 4f  454,7 @@ SelectO
2710: 62 6a 46 72 6f 6d 53 75 62 6c 69 73 74 28 0a 20  bjFromSublist(. 
2720: 20 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 2a 20 63   * mode: c.  * c
2730: 2d 62 61 73 69 63 2d 6f 66 66 73 65 74 3a 20 34  -basic-offset: 4
2740: 0a 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e  .  * fill-column
2750: 3a 20 37 38 0a 2b 20 2a 20 74 61 62 2d 77 69 64  : 78.+ * tab-wid
2760: 74 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 65 6e 74  th: 8.+ * indent
2770: 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e 69 6c 0a  -tabs-mode: nil.
2780: 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f 0a 49 6e    * End:.  */.In
2790: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c  dex: generic/tcl
27a0: 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  Int.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 0a 52 43 53 20 66 69  =========.RCS fi
27f0: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c  le: /cvsroot/tcl
2800: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c  /tcl/generic/tcl
2810: 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 65 76 69  Int.h,v.retrievi
2820: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 34 36  ng revision 1.46
2830: 35 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 75 20  5.diff -u -p -u 
2840: 2d 70 20 2d 72 31 2e 34 36 35 20 74 63 6c 49 6e  -p -r1.465 tclIn
2850: 74 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f  t.h.--- generic/
2860: 74 63 6c 49 6e 74 2e 68 09 31 39 20 4d 61 72 20  tclInt.h.19 Mar 
2870: 32 30 31 30 20 31 31 3a 35 34 3a 30 37 20 2d 30  2010 11:54:07 -0
2880: 30 30 30 09 31 2e 34 36 35 0a 2b 2b 2b 20 67 65  000.1.465.+++ ge
2890: 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 09 32  neric/tclInt.h.2
28a0: 34 20 4d 61 72 20 32 30 31 30 20 31 35 3a 35 35  4 Mar 2010 15:55
28b0: 3a 34 38 20 2d 30 30 30 30 0a 40 40 20 2d 31 39  :48 -0000.@@ -19
28c0: 38 34 2c 36 20 2b 31 39 38 34 2c 39 20 40 40 20  84,6 +1984,9 @@ 
28d0: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 49  typedef struct I
28e0: 6e 74 65 72 70 20 7b 0a 20 20 20 20 20 54 63 6c  nterp {.     Tcl
28f0: 5f 4f 62 6a 20 2a 65 69 56 61 72 3b 09 09 2f 2a  _Obj *eiVar;../*
2900: 20 63 61 63 68 65 64 20 72 65 66 20 74 6f 20 3a   cached ref to :
2910: 3a 65 72 72 6f 72 49 6e 66 6f 20 76 61 72 69 61  :errorInfo varia
2920: 62 6c 65 2e 20 2a 2f 0a 20 20 20 20 20 54 63 6c  ble. */.     Tcl
2930: 5f 4f 62 6a 20 2a 65 72 72 6f 72 43 6f 64 65 3b  _Obj *errorCode;
2940: 09 09 2f 2a 20 65 72 72 6f 72 43 6f 64 65 20 76  ../* errorCode v
2950: 61 6c 75 65 20 28 6e 6f 77 20 61 73 20 61 20 54  alue (now as a T
2960: 63 6c 5f 4f 62 6a 29 2e 20 2a 2f 0a 20 20 20 20  cl_Obj). */.    
2970: 20 54 63 6c 5f 4f 62 6a 20 2a 65 63 56 61 72 3b   Tcl_Obj *ecVar;
2980: 09 09 2f 2a 20 63 61 63 68 65 64 20 72 65 66 20  ../* cached ref 
2990: 74 6f 20 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 76  to ::errorInfo v
29a0: 61 72 69 61 62 6c 65 2e 20 2a 2f 0a 2b 20 20 20  ariable. */.+   
29b0: 20 54 63 6c 5f 4f 62 6a 20 2a 65 72 72 6f 72 53   Tcl_Obj *errorS
29c0: 74 61 63 6b 3b 09 2f 2a 20 5b 69 6e 66 6f 20 65  tack;./* [info e
29d0: 72 72 6f 72 73 74 61 63 6b 5d 20 76 61 6c 75 65  rrorstack] value
29e0: 20 28 61 73 20 61 20 54 63 6c 5f 4f 62 6a 29 2e   (as a Tcl_Obj).
29f0: 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a   */.+    Tcl_Obj
2a00: 20 2a 75 70 6c 65 76 65 6c 4c 69 74 65 72 61 6c   *uplevelLiteral
2a10: 3b 09 2f 2a 20 22 75 70 6c 65 76 65 6c 22 20 6c  ;./* "uplevel" l
2a20: 69 74 65 72 61 6c 20 66 6f 72 20 5b 69 6e 66 6f  iteral for [info
2a30: 20 65 72 72 6f 72 73 74 61 63 6b 5d 20 2a 2f 0a   errorstack] */.
2a40: 2b 20 20 20 20 69 6e 74 20 72 65 73 65 74 45 72  +    int resetEr
2a50: 72 6f 72 53 74 61 63 6b 3b 20 20 20 20 20 20 20  rorStack;       
2a60: 20 2f 2a 20 63 6f 6e 74 72 6f 6c 73 20 63 6c 65   /* controls cle
2a70: 61 6e 69 6e 67 20 75 70 20 6f 66 20 3a 3a 65 72  aning up of ::er
2a80: 72 6f 72 53 74 61 63 6b 20 2a 2f 0a 20 20 20 20  rorStack */.    
2a90: 20 69 6e 74 20 72 65 74 75 72 6e 4c 65 76 65 6c   int returnLevel
2aa0: 3b 09 09 2f 2a 20 5b 72 65 74 75 72 6e 20 2d 6c  ;../* [return -l
2ab0: 65 76 65 6c 5d 20 70 61 72 61 6d 65 74 65 72 2e  evel] parameter.
2ac0: 20 2a 2f 0a 20 0a 20 20 20 20 20 2f 2a 0a 49 6e   */. .     /*.In
2ad0: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c  dex: generic/tcl
2ae0: 4e 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d  Namesp.c.=======
2af0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2b00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
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 0a 52 43 53  ============.RCS
2b30: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
2b40: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
2b50: 74 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65  tclNamesp.c,v.re
2b60: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
2b70: 6e 20 31 2e 32 30 34 0a 64 69 66 66 20 2d 75 20  n 1.204.diff -u 
2b80: 2d 70 20 2d 75 20 2d 70 20 2d 72 31 2e 32 30 34  -p -u -p -r1.204
2b90: 20 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 2d 2d 2d   tclNamesp.c.---
2ba0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65   generic/tclName
2bb0: 73 70 2e 63 09 35 20 4d 61 72 20 32 30 31 30 20  sp.c.5 Mar 2010 
2bc0: 31 34 3a 33 34 3a 30 34 20 2d 30 30 30 30 09 31  14:34:04 -0000.1
2bd0: 2e 32 30 34 0a 2b 2b 2b 20 67 65 6e 65 72 69 63  .204.+++ generic
2be0: 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 09 32 34 20  /tclNamesp.c.24 
2bf0: 4d 61 72 20 32 30 31 30 20 31 35 3a 35 35 3a 34  Mar 2010 15:55:4
2c00: 39 20 2d 30 30 30 30 0a 40 40 20 2d 34 38 37 33  9 -0000.@@ -4873
2c10: 2c 37 20 2b 34 38 37 33 2c 37 20 40 40 20 54 63  ,7 +4873,7 @@ Tc
2c20: 6c 5f 4c 6f 67 43 6f 6d 6d 61 6e 64 49 6e 66 6f  l_LogCommandInfo
2c30: 28 0a 20 7b 0a 20 20 20 20 20 72 65 67 69 73 74  (. {.     regist
2c40: 65 72 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70  er const char *p
2c50: 3b 0a 20 20 20 20 20 49 6e 74 65 72 70 20 2a 69  ;.     Interp *i
2c60: 50 74 72 20 3d 20 28 49 6e 74 65 72 70 20 2a 29  Ptr = (Interp *)
2c70: 20 69 6e 74 65 72 70 3b 0a 2d 20 20 20 20 69 6e   interp;.-    in
2c80: 74 20 6f 76 65 72 66 6c 6f 77 2c 20 6c 69 6d 69  t overflow, limi
2c90: 74 20 3d 20 31 35 30 3b 0a 2b 20 20 20 20 69 6e  t = 150;.+    in
2ca0: 74 20 6f 76 65 72 66 6c 6f 77 2c 20 6c 69 6d 69  t overflow, limi
2cb0: 74 20 3d 20 31 35 30 2c 20 6c 65 6e 3b 0a 20 20  t = 150, len;.  
2cc0: 20 20 20 56 61 72 20 2a 76 61 72 50 74 72 2c 20     Var *varPtr, 
2cd0: 2a 61 72 72 61 79 50 74 72 3b 0a 20 0a 20 20 20  *arrayPtr;. .   
2ce0: 20 20 69 66 20 28 69 50 74 72 2d 3e 66 6c 61 67    if (iPtr->flag
2cf0: 73 20 26 20 45 52 52 5f 41 4c 52 45 41 44 59 5f  s & ERR_ALREADY_
2d00: 4c 4f 47 47 45 44 29 20 7b 0a 40 40 20 2d 34 39  LOGGED) {.@@ -49
2d10: 33 32 2c 36 20 2b 34 39 33 32 2c 34 37 20 40 40  32,6 +4932,47 @@
2d20: 20 54 63 6c 5f 4c 6f 67 43 6f 6d 6d 61 6e 64 49   Tcl_LogCommandI
2d30: 6e 66 6f 28 0a 20 09 09 20 20 20 20 54 43 4c 5f  nfo(. ..    TCL_
2d40: 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 20 09  GLOBAL_ONLY);. .
2d50: 7d 0a 20 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20  }.     }.+.+    
2d60: 2f 2a 0a 2b 20 20 20 20 20 2a 20 54 49 50 20 23  /*.+     * TIP #
2d70: 33 34 38 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a 2b  348.+     */.+.+
2d80: 20 20 20 20 69 66 20 28 54 63 6c 5f 49 73 53 68      if (Tcl_IsSh
2d90: 61 72 65 64 28 69 50 74 72 2d 3e 65 72 72 6f 72  ared(iPtr->error
2da0: 53 74 61 63 6b 29 29 20 7b 0a 2b 20 20 20 20 20  Stack)) {.+     
2db0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 4f     Tcl_Obj *newO
2dc0: 62 6a 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20  bj;.+           
2dd0: 20 0a 2b 20 20 20 20 20 20 20 20 6e 65 77 4f 62   .+        newOb
2de0: 6a 20 3d 20 54 63 6c 5f 44 75 70 6c 69 63 61 74  j = Tcl_Duplicat
2df0: 65 4f 62 6a 28 69 50 74 72 2d 3e 65 72 72 6f 72  eObj(iPtr->error
2e00: 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20 20 20 20  Stack);.+       
2e10: 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e   Tcl_DecrRefCoun
2e20: 74 28 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61  t(iPtr->errorSta
2e30: 63 6b 29 3b 0a 2b 20 20 20 20 20 20 20 20 54 63  ck);.+        Tc
2e40: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6e  l_IncrRefCount(n
2e50: 65 77 4f 62 6a 29 3b 0a 2b 20 20 20 20 20 20 20  ewObj);.+       
2e60: 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63   iPtr->errorStac
2e70: 6b 20 3d 20 6e 65 77 4f 62 6a 3b 0a 2b 20 20 20  k = newObj;.+   
2e80: 20 7d 0a 2b 20 20 20 20 54 63 6c 5f 4c 69 73 74   }.+    Tcl_List
2e90: 4f 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72 70  ObjLength(interp
2ea0: 2c 20 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61  , iPtr->errorSta
2eb0: 63 6b 2c 20 26 6c 65 6e 29 3b 0a 2b 20 20 20 20  ck, &len);.+    
2ec0: 69 66 20 28 69 50 74 72 2d 3e 72 65 73 65 74 45  if (iPtr->resetE
2ed0: 72 72 6f 72 53 74 61 63 6b 29 20 7b 0a 2b 20 20  rrorStack) {.+  
2ee0: 20 20 20 20 20 20 69 50 74 72 2d 3e 72 65 73 65        iPtr->rese
2ef0: 74 45 72 72 6f 72 53 74 61 63 6b 20 3d 20 30 3b  tErrorStack = 0;
2f00: 0a 2b 20 20 20 20 20 20 20 20 2f 2a 20 72 65 73  .+        /* res
2f10: 65 74 20 77 68 69 6c 65 20 6b 65 65 70 69 6e 67  et while keeping
2f20: 20 74 68 65 20 6c 69 73 74 20 69 6e 74 72 65 70   the list intrep
2f30: 20 61 73 20 6d 75 63 68 20 61 73 20 70 6f 73 73   as much as poss
2f40: 69 62 6c 65 20 2a 2f 0a 2b 20 20 20 20 20 20 20  ible */.+       
2f50: 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 52 65 70 6c   Tcl_ListObjRepl
2f60: 61 63 65 28 69 6e 74 65 72 70 2c 20 69 50 74 72  ace(interp, iPtr
2f70: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 2c 20 30 2c  ->errorStack, 0,
2f80: 20 6c 65 6e 2c 20 30 2c 20 4e 55 4c 4c 29 3b 0a   len, 0, NULL);.
2f90: 2b 20 20 20 20 20 20 20 20 6c 65 6e 3d 30 3b 0a  +        len=0;.
2fa0: 2b 20 20 20 20 7d 20 0a 2b 20 20 20 20 69 66 20  +    } .+    if 
2fb0: 28 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50  (iPtr->varFrameP
2fc0: 74 72 20 21 3d 20 69 50 74 72 2d 3e 72 6f 6f 74  tr != iPtr->root
2fd0: 46 72 61 6d 65 50 74 72 29 20 7b 0a 2b 20 20 20  FramePtr) {.+   
2fe0: 20 20 20 20 20 69 66 20 28 69 50 74 72 2d 3e 76       if (iPtr->v
2ff0: 61 72 46 72 61 6d 65 50 74 72 20 3d 3d 20 69 50  arFramePtr == iP
3000: 74 72 2d 3e 66 72 61 6d 65 50 74 72 29 20 7b 0a  tr->framePtr) {.
3010: 2b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  +            /* 
3020: 6e 6f 72 6d 61 6c 20 63 61 73 65 2c 20 5b 6c 61  normal case, [la
3030: 70 70 65 6e 64 20 65 72 72 6f 72 73 74 61 63 6b  ppend errorstack
3040: 20 5b 69 6e 66 6f 20 6c 65 76 65 6c 20 30 5d 5d   [info level 0]]
3050: 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 20 20 20   */.+           
3060: 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 70 65   Tcl_ListObjAppe
3070: 6e 64 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c 2c 0a  ndElement(NULL,.
3080: 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  +               
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 20 20 20 20 20 20 69 50 74 72 2d 3e 65 72 72 6f        iPtr->erro
30b0: 72 53 74 61 63 6b 2c 0a 2b 20 20 20 20 20 20 20  rStack,.+       
30c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 63                Tc
30e0: 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 69 50 74  l_NewListObj(iPt
30f0: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e  r->varFramePtr->
3100: 6f 62 6a 63 2c 0a 2b 20 20 20 20 20 20 20 20 20  objc,.+         
3110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3130: 20 20 20 20 20 20 20 20 20 20 20 69 50 74 72 2d             iPtr-
3140: 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6f 62  >varFramePtr->ob
3150: 6a 76 29 29 3b 0a 2b 20 20 20 20 20 20 20 20 7d  jv));.+        }
3160: 20 65 6c 73 65 20 7b 0a 2b 20 20 20 20 20 20 20   else {.+       
3170: 20 20 20 20 20 2f 2a 20 75 70 6c 65 76 65 6c 20       /* uplevel 
3180: 63 61 73 65 2c 20 5b 6c 61 70 70 65 6e 64 20 65  case, [lappend e
3190: 72 72 6f 72 73 74 61 63 6b 20 5b 6c 69 73 74 20  rrorstack [list 
31a0: 75 70 6c 65 76 65 6c 20 24 72 65 6c 61 74 69 76  uplevel $relativ
31b0: 65 6c 65 76 65 6c 5d 5d 20 2a 2f 0a 2b 20 20 20  elevel]] */.+   
31c0: 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20           struct 
31d0: 43 61 6c 6c 46 72 61 6d 65 20 2a 66 72 61 6d 65  CallFrame *frame
31e0: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 69  ;.+            i
31f0: 6e 74 20 6e 3b 0a 2b 20 20 20 20 20 20 20 20 20  nt n;.+         
3200: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 69 72     Tcl_Obj *pair
3210: 5b 32 5d 3b 0a 2b 0a 2b 20 20 20 20 20 20 20 20  [2];.+.+        
3220: 20 20 20 20 66 6f 72 28 6e 3d 30 20 2c 20 66 72      for(n=0 , fr
3230: 61 6d 65 3d 69 50 74 72 2d 3e 66 72 61 6d 65 50  ame=iPtr->frameP
3240: 74 72 3b 20 28 66 72 61 6d 65 20 26 26 20 28 66  tr; (frame && (f
3250: 72 61 6d 65 20 21 3d 20 69 50 74 72 2d 3e 76 61  rame != iPtr->va
3260: 72 46 72 61 6d 65 50 74 72 29 29 3b 20 6e 2b 2b  rFramePtr)); n++
3270: 20 2c 20 66 72 61 6d 65 3d 66 72 61 6d 65 2d 3e   , frame=frame->
3280: 63 61 6c 6c 65 72 56 61 72 50 74 72 29 3b 0a 2b  callerVarPtr);.+
3290: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 69 72              pair
32a0: 5b 30 5d 20 3d 20 69 50 74 72 2d 3e 75 70 6c 65  [0] = iPtr->uple
32b0: 76 65 6c 4c 69 74 65 72 61 6c 3b 0a 2b 20 20 20  velLiteral;.+   
32c0: 20 20 20 20 20 20 20 20 20 70 61 69 72 5b 31 5d           pair[1]
32d0: 20 3d 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a   = Tcl_NewIntObj
32e0: 28 6e 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20  (n);.+          
32f0: 20 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 70    Tcl_ListObjApp
3300: 65 6e 64 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c 2c  endElement(NULL,
3310: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .+              
3320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3330: 20 20 20 20 20 20 20 69 50 74 72 2d 3e 65 72 72         iPtr->err
3340: 6f 72 53 74 61 63 6b 2c 0a 2b 20 20 20 20 20 20  orStack,.+      
3350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
3370: 63 6c 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 32 2c  cl_NewListObj(2,
3380: 70 61 69 72 29 29 3b 0a 2b 20 20 20 20 20 20 20  pair));.+       
3390: 20 7d 0a 2b 20 20 20 20 7d 0a 20 7d 0a 20 0c 0a   }.+    }. }. ..
33a0: 20 2f 2a 0a 40 40 20 2d 34 39 33 39 2c 35 20 2b   /*.@@ -4939,5 +
33b0: 34 39 38 30 2c 37 20 40 40 20 54 63 6c 5f 4c 6f  4980,7 @@ Tcl_Lo
33c0: 67 43 6f 6d 6d 61 6e 64 49 6e 66 6f 28 0a 20 20  gCommandInfo(.  
33d0: 2a 20 6d 6f 64 65 3a 20 63 0a 20 20 2a 20 63 2d  * mode: c.  * c-
33e0: 62 61 73 69 63 2d 6f 66 66 73 65 74 3a 20 34 0a  basic-offset: 4.
33f0: 20 20 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 3a    * fill-column:
3400: 20 37 38 0a 2b 20 2a 20 74 61 62 2d 77 69 64 74   78.+ * tab-widt
3410: 68 3a 20 38 0a 2b 20 2a 20 69 6e 64 65 6e 74 2d  h: 8.+ * indent-
3420: 74 61 62 73 2d 6d 6f 64 65 3a 20 6e 69 6c 0a 20  tabs-mode: nil. 
3430: 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f 0a 49 6e 64   * End:.  */.Ind
3440: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 52  ex: generic/tclR
3450: 65 73 75 6c 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d  esult.c.========
3460: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3480: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
34a0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
34b0: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74  cl/tcl/generic/t
34c0: 63 6c 52 65 73 75 6c 74 2e 63 2c 76 0a 72 65 74  clResult.c,v.ret
34d0: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
34e0: 20 31 2e 35 38 0a 64 69 66 66 20 2d 75 20 2d 70   1.58.diff -u -p
34f0: 20 2d 75 20 2d 70 20 2d 72 31 2e 35 38 20 74 63   -u -p -r1.58 tc
3500: 6c 52 65 73 75 6c 74 2e 63 0a 2d 2d 2d 20 67 65  lResult.c.--- ge
3510: 6e 65 72 69 63 2f 74 63 6c 52 65 73 75 6c 74 2e  neric/tclResult.
3520: 63 09 32 34 20 4d 61 72 20 32 30 31 30 20 31 35  c.24 Mar 2010 15
3530: 3a 33 33 3a 31 34 20 2d 30 30 30 30 09 31 2e 35  :33:14 -0000.1.5
3540: 38 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63  8.+++ generic/tc
3550: 6c 52 65 73 75 6c 74 2e 63 09 32 34 20 4d 61 72  lResult.c.24 Mar
3560: 20 32 30 31 30 20 31 35 3a 35 35 3a 34 39 20 2d   2010 15:55:49 -
3570: 30 30 30 30 0a 40 40 20 2d 31 39 2c 37 20 2b 31  0000.@@ -19,7 +1
3580: 39 2c 37 20 40 40 0a 20 0a 20 65 6e 75 6d 20 72  9,7 @@. . enum r
3590: 65 74 75 72 6e 4b 65 79 73 20 7b 0a 20 20 20 20  eturnKeys {.    
35a0: 20 4b 45 59 5f 43 4f 44 45 2c 09 4b 45 59 5f 45   KEY_CODE,.KEY_E
35b0: 52 52 4f 52 43 4f 44 45 2c 09 4b 45 59 5f 45 52  RRORCODE,.KEY_ER
35c0: 52 4f 52 49 4e 46 4f 2c 09 4b 45 59 5f 45 52 52  RORINFO,.KEY_ERR
35d0: 4f 52 4c 49 4e 45 2c 0a 2d 20 20 20 20 4b 45 59  ORLINE,.-    KEY
35e0: 5f 4c 45 56 45 4c 2c 09 4b 45 59 5f 4f 50 54 49  _LEVEL,.KEY_OPTI
35f0: 4f 4e 53 2c 09 4b 45 59 5f 4c 41 53 54 0a 2b 20  ONS,.KEY_LAST.+ 
3600: 20 20 20 4b 45 59 5f 4c 45 56 45 4c 2c 09 4b 45     KEY_LEVEL,.KE
3610: 59 5f 4f 50 54 49 4f 4e 53 2c 09 4b 45 59 5f 45  Y_OPTIONS,.KEY_E
3620: 52 52 4f 52 53 54 41 43 4b 2c 09 4b 45 59 5f 4c  RRORSTACK,.KEY_L
3630: 41 53 54 0a 20 7d 3b 0a 20 0a 20 2f 2a 0a 40 40  AST. };. . /*.@@
3640: 20 2d 39 32 34 2c 36 20 2b 39 32 34 2c 37 20 40   -924,6 +924,7 @
3650: 40 20 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c  @ Tcl_ResetResul
3660: 74 28 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 66  t(. .Tcl_DecrRef
3670: 43 6f 75 6e 74 28 69 50 74 72 2d 3e 65 72 72 6f  Count(iPtr->erro
3680: 72 49 6e 66 6f 29 3b 0a 20 09 69 50 74 72 2d 3e  rInfo);. .iPtr->
3690: 65 72 72 6f 72 49 6e 66 6f 20 3d 20 4e 55 4c 4c  errorInfo = NULL
36a0: 3b 0a 20 20 20 20 20 7d 0a 2b 20 20 20 20 69 50  ;.     }.+    iP
36b0: 74 72 2d 3e 72 65 73 65 74 45 72 72 6f 72 53 74  tr->resetErrorSt
36c0: 61 63 6b 20 3d 20 31 3b 0a 20 20 20 20 20 69 50  ack = 1;.     iP
36d0: 74 72 2d 3e 72 65 74 75 72 6e 4c 65 76 65 6c 20  tr->returnLevel 
36e0: 3d 20 31 3b 0a 20 20 20 20 20 69 50 74 72 2d 3e  = 1;.     iPtr->
36f0: 72 65 74 75 72 6e 43 6f 64 65 20 3d 20 54 43 4c  returnCode = TCL
3700: 5f 4f 4b 3b 0a 20 20 20 20 20 69 66 20 28 69 50  _OK;.     if (iP
3710: 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73 29 20  tr->returnOpts) 
3720: 7b 0a 40 40 20 2d 31 31 36 31 2c 36 20 2b 31 31  {.@@ -1161,6 +11
3730: 36 32 2c 37 20 40 40 20 47 65 74 4b 65 79 73 28  62,7 @@ GetKeys(
3740: 76 6f 69 64 29 0a 20 09 54 63 6c 4e 65 77 4c 69  void). .TclNewLi
3750: 74 65 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b  teralStringObj(k
3760: 65 79 73 5b 4b 45 59 5f 45 52 52 4f 52 43 4f 44  eys[KEY_ERRORCOD
3770: 45 5d 2c 20 22 2d 65 72 72 6f 72 63 6f 64 65 22  E], "-errorcode"
3780: 29 3b 0a 20 09 54 63 6c 4e 65 77 4c 69 74 65 72  );. .TclNewLiter
3790: 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b 65 79 73  alStringObj(keys
37a0: 5b 4b 45 59 5f 45 52 52 4f 52 49 4e 46 4f 5d 2c  [KEY_ERRORINFO],
37b0: 20 22 2d 65 72 72 6f 72 69 6e 66 6f 22 29 3b 0a   "-errorinfo");.
37c0: 20 09 54 63 6c 4e 65 77 4c 69 74 65 72 61 6c 53   .TclNewLiteralS
37d0: 74 72 69 6e 67 4f 62 6a 28 6b 65 79 73 5b 4b 45  tringObj(keys[KE
37e0: 59 5f 45 52 52 4f 52 4c 49 4e 45 5d 2c 20 22 2d  Y_ERRORLINE], "-
37f0: 65 72 72 6f 72 6c 69 6e 65 22 29 3b 0a 2b 09 54  errorline");.+.T
3800: 63 6c 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69  clNewLiteralStri
3810: 6e 67 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 45  ngObj(keys[KEY_E
3820: 52 52 4f 52 53 54 41 43 4b 5d 2c 22 2d 65 72 72  RRORSTACK],"-err
3830: 6f 72 73 74 61 63 6b 22 29 3b 0a 20 09 54 63 6c  orstack");. .Tcl
3840: 4e 65 77 4c 69 74 65 72 61 6c 53 74 72 69 6e 67  NewLiteralString
3850: 4f 62 6a 28 6b 65 79 73 5b 4b 45 59 5f 4c 45 56  Obj(keys[KEY_LEV
3860: 45 4c 5d 2c 09 20 20 20 20 22 2d 6c 65 76 65 6c  EL],.    "-level
3870: 22 29 3b 0a 20 09 54 63 6c 4e 65 77 4c 69 74 65  ");. .TclNewLite
3880: 72 61 6c 53 74 72 69 6e 67 4f 62 6a 28 6b 65 79  ralStringObj(key
3890: 73 5b 4b 45 59 5f 4f 50 54 49 4f 4e 53 5d 2c 20  s[KEY_OPTIONS], 
38a0: 20 20 22 2d 6f 70 74 69 6f 6e 73 22 29 3b 0a 20    "-options");. 
38b0: 0a 40 40 20 2d 31 32 36 36 2c 36 20 2b 31 32 36  .@@ -1266,6 +126
38c0: 38 2c 33 31 20 40 40 20 54 63 6c 50 72 6f 63 65  8,31 @@ TclProce
38d0: 73 73 52 65 74 75 72 6e 28 0a 20 09 09 69 50 74  ssReturn(. ..iPt
38e0: 72 2d 3e 66 6c 61 67 73 20 7c 3d 20 45 52 52 5f  r->flags |= ERR_
38f0: 41 4c 52 45 41 44 59 5f 4c 4f 47 47 45 44 3b 0a  ALREADY_LOGGED;.
3900: 20 09 20 20 20 20 7d 0a 20 09 7d 0a 2b 09 54 63   .    }. .}.+.Tc
3910: 6c 5f 44 69 63 74 4f 62 6a 47 65 74 28 4e 55 4c  l_DictObjGet(NUL
3920: 4c 2c 20 69 50 74 72 2d 3e 72 65 74 75 72 6e 4f  L, iPtr->returnO
3930: 70 74 73 2c 20 6b 65 79 73 5b 4b 45 59 5f 45 52  pts, keys[KEY_ER
3940: 52 4f 52 53 54 41 43 4b 5d 2c 20 26 76 61 6c 75  RORSTACK], &valu
3950: 65 50 74 72 29 3b 0a 2b 09 69 66 20 28 76 61 6c  ePtr);.+.if (val
3960: 75 65 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b  uePtr != NULL) {
3970: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  .+            in
3980: 74 20 6c 65 6e 2c 20 76 61 6c 75 65 4f 62 6a 63  t len, valueObjc
3990: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 54  ;.+            T
39a0: 63 6c 5f 4f 62 6a 20 2a 2a 76 61 6c 75 65 4f 62  cl_Obj **valueOb
39b0: 6a 76 3b 0a 2b 0a 2b 20 20 20 20 20 20 20 20 20  jv;.+.+         
39c0: 20 20 20 69 66 20 28 54 63 6c 5f 49 73 53 68 61     if (Tcl_IsSha
39d0: 72 65 64 28 69 50 74 72 2d 3e 65 72 72 6f 72 53  red(iPtr->errorS
39e0: 74 61 63 6b 29 29 20 7b 0a 2b 20 20 20 20 20 20  tack)) {.+      
39f0: 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62            Tcl_Ob
3a00: 6a 20 2a 6e 65 77 4f 62 6a 3b 0a 2b 20 20 20 20  j *newObj;.+    
3a10: 20 20 20 20 20 20 20 20 20 20 20 20 0a 2b 20 20              .+  
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
3a30: 77 4f 62 6a 20 3d 20 54 63 6c 5f 44 75 70 6c 69  wObj = Tcl_Dupli
3a40: 63 61 74 65 4f 62 6a 28 69 50 74 72 2d 3e 65 72  cateObj(iPtr->er
3a50: 72 6f 72 53 74 61 63 6b 29 3b 0a 2b 20 20 20 20  rorStack);.+    
3a60: 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f              Tcl_
3a70: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 69 50 74  DecrRefCount(iPt
3a80: 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29 3b 0a  r->errorStack);.
3a90: 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  +               
3aa0: 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e   Tcl_IncrRefCoun
3ab0: 74 28 6e 65 77 4f 62 6a 29 3b 0a 2b 20 20 20 20  t(newObj);.+    
3ac0: 20 20 20 20 20 20 20 20 20 20 20 20 69 50 74 72              iPtr
3ad0: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 20 3d 20 6e  ->errorStack = n
3ae0: 65 77 4f 62 6a 3b 0a 2b 20 20 20 20 20 20 20 20  ewObj;.+        
3af0: 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20 20 20      }.+         
3b00: 20 20 20 2f 2a 0a 2b 20 20 20 20 20 20 20 20 20     /*.+         
3b10: 20 20 20 20 2a 20 4c 69 73 74 20 65 78 74 72 61      * List extra
3b20: 63 74 69 6f 6e 20 64 6f 6e 65 20 61 66 74 65 72  ction done after
3b30: 20 64 75 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20   duplication to 
3b40: 61 76 6f 69 64 20 6d 6f 76 69 6e 67 20 74 68 65  avoid moving the
3b50: 20 72 75 67 0a 2b 20 20 20 20 20 20 20 20 20 20   rug.+          
3b60: 20 20 20 2a 20 69 66 20 73 6f 6d 65 6f 6e 65 20     * if someone 
3b70: 64 6f 65 73 20 5b 72 65 74 75 72 6e 20 2d 65 72  does [return -er
3b80: 72 6f 72 73 74 61 63 6b 20 5b 69 6e 66 6f 20 65  rorstack [info e
3b90: 72 72 6f 72 73 74 61 63 6b 5d 5d 0a 2b 20 20 20  rrorstack]].+   
3ba0: 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 2b 20 20            */.+  
3bb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 54 63            if (Tc
3bc0: 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 6d  l_ListObjGetElem
3bd0: 65 6e 74 73 28 69 6e 74 65 72 70 2c 20 76 61 6c  ents(interp, val
3be0: 75 65 50 74 72 2c 20 26 76 61 6c 75 65 4f 62 6a  uePtr, &valueObj
3bf0: 63 2c 20 26 76 61 6c 75 65 4f 62 6a 76 29 20 3d  c, &valueObjv) =
3c00: 3d 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a 2b  = TCL_ERROR) {.+
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c20: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
3c30: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;.+            }
3c40: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 69 50  .+            iP
3c50: 74 72 2d 3e 72 65 73 65 74 45 72 72 6f 72 53 74  tr->resetErrorSt
3c60: 61 63 6b 20 3d 20 30 3b 0a 2b 20 20 20 20 20 20  ack = 0;.+      
3c70: 20 20 20 20 20 20 54 63 6c 5f 4c 69 73 74 4f 62        Tcl_ListOb
3c80: 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72 70 2c 20  jLength(interp, 
3c90: 69 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b  iPtr->errorStack
3ca0: 2c 20 26 6c 65 6e 29 3b 0a 2b 20 20 20 20 20 20  , &len);.+      
3cb0: 20 20 20 20 20 20 2f 2a 20 72 65 73 65 74 20 77        /* reset w
3cc0: 68 69 6c 65 20 6b 65 65 70 69 6e 67 20 74 68 65  hile keeping the
3cd0: 20 6c 69 73 74 20 69 6e 74 72 65 70 20 61 73 20   list intrep as 
3ce0: 6d 75 63 68 20 61 73 20 70 6f 73 73 69 62 6c 65  much as possible
3cf0: 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 20 20 20   */.+           
3d00: 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 52 65 70 6c   Tcl_ListObjRepl
3d10: 61 63 65 28 69 6e 74 65 72 70 2c 20 69 50 74 72  ace(interp, iPtr
3d20: 2d 3e 65 72 72 6f 72 53 74 61 63 6b 2c 20 30 2c  ->errorStack, 0,
3d30: 20 6c 65 6e 2c 20 76 61 6c 75 65 4f 62 6a 63 2c   len, valueObjc,
3d40: 20 76 61 6c 75 65 4f 62 6a 76 29 3b 0a 2b 20 09   valueObjv);.+ .
3d50: 7d 0a 20 09 54 63 6c 5f 44 69 63 74 4f 62 6a 47  }. .Tcl_DictObjG
3d60: 65 74 28 4e 55 4c 4c 2c 20 69 50 74 72 2d 3e 72  et(NULL, iPtr->r
3d70: 65 74 75 72 6e 4f 70 74 73 2c 20 6b 65 79 73 5b  eturnOpts, keys[
3d80: 4b 45 59 5f 45 52 52 4f 52 43 4f 44 45 5d 2c 20  KEY_ERRORCODE], 
3d90: 26 76 61 6c 75 65 50 74 72 29 3b 0a 20 09 69 66  &valuePtr);. .if
3da0: 20 28 76 61 6c 75 65 50 74 72 20 21 3d 20 4e 55   (valuePtr != NU
3db0: 4c 4c 29 20 7b 0a 20 09 20 20 20 20 54 63 6c 5f  LL) {. .    Tcl_
3dc0: 53 65 74 4f 62 6a 45 72 72 6f 72 43 6f 64 65 28  SetObjErrorCode(
3dd0: 69 6e 74 65 72 70 2c 20 76 61 6c 75 65 50 74 72  interp, valuePtr
3de0: 29 3b 0a 40 40 20 2d 31 34 34 37 2c 36 20 2b 31  );.@@ -1447,6 +1
3df0: 34 37 34 2c 32 37 20 40 40 20 54 63 6c 4d 65 72  474,27 @@ TclMer
3e00: 67 65 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28  geReturnOptions(
3e10: 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f  .     }. .     /
3e20: 2a 0a 2b 20 20 20 20 20 2a 20 43 68 65 63 6b 20  *.+     * Check 
3e30: 66 6f 72 20 62 6f 67 75 73 20 2d 65 72 72 6f 72  for bogus -error
3e40: 73 74 61 63 6b 20 76 61 6c 75 65 2e 0a 2b 20 20  stack value..+  
3e50: 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20 54 63 6c     */.+.+    Tcl
3e60: 5f 44 69 63 74 4f 62 6a 47 65 74 28 4e 55 4c 4c  _DictObjGet(NULL
3e70: 2c 20 72 65 74 75 72 6e 4f 70 74 73 2c 20 6b 65  , returnOpts, ke
3e80: 79 73 5b 4b 45 59 5f 45 52 52 4f 52 53 54 41 43  ys[KEY_ERRORSTAC
3e90: 4b 5d 2c 20 26 76 61 6c 75 65 50 74 72 29 3b 0a  K], &valuePtr);.
3ea0: 2b 20 20 20 20 69 66 20 28 76 61 6c 75 65 50 74  +    if (valuePt
3eb0: 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 69  r != NULL) {.+.i
3ec0: 6e 74 20 6c 65 6e 67 74 68 3b 0a 2b 0a 2b 09 69  nt length;.+.+.i
3ed0: 66 20 28 54 43 4c 5f 45 52 52 4f 52 20 3d 3d 20  f (TCL_ERROR == 
3ee0: 54 63 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74  Tcl_ListObjLengt
3ef0: 68 28 4e 55 4c 4c 2c 20 76 61 6c 75 65 50 74 72  h(NULL, valuePtr
3f00: 2c 20 26 6c 65 6e 67 74 68 20 29 29 20 7b 0a 2b  , &length )) {.+
3f10: 09 20 20 20 20 2f 2a 0a 2b 09 20 20 20 20 20 2a  .    /*.+.     *
3f20: 20 56 61 6c 75 65 20 69 73 20 6e 6f 74 20 61 20   Value is not a 
3f30: 6c 69 73 74 2c 20 77 68 69 63 68 20 69 73 20 69  list, which is i
3f40: 6c 6c 65 67 61 6c 20 66 6f 72 20 2d 65 72 72 6f  llegal for -erro
3f50: 72 73 74 61 63 6b 2e 0a 2b 09 20 20 20 20 20 2a  rstack..+.     *
3f60: 2f 0a 2b 09 20 20 20 20 54 63 6c 5f 52 65 73 65  /.+.    Tcl_Rese
3f70: 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b  tResult(interp);
3f80: 0a 2b 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e  .+.    Tcl_Appen
3f90: 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20  dResult(interp, 
3fa0: 22 62 61 64 20 2d 65 72 72 6f 72 73 74 61 63 6b  "bad -errorstack
3fb0: 20 76 61 6c 75 65 3a 20 22 0a 2b 09 09 09 20 20   value: ".+...  
3fc0: 20 20 20 22 65 78 70 65 63 74 65 64 20 61 20 6c     "expected a l
3fd0: 69 73 74 20 62 75 74 20 67 6f 74 20 5c 22 22 2c  ist but got \"",
3fe0: 0a 2b 09 09 09 20 20 20 20 20 54 63 6c 47 65 74  .+...     TclGet
3ff0: 53 74 72 69 6e 67 28 76 61 6c 75 65 50 74 72 29  String(valuePtr)
4000: 2c 20 22 5c 22 22 2c 20 4e 55 4c 4c 29 3b 0a 2b  , "\"", NULL);.+
4010: 09 20 20 20 20 54 63 6c 5f 53 65 74 45 72 72 6f  .    Tcl_SetErro
4020: 72 43 6f 64 65 28 69 6e 74 65 72 70 2c 20 22 54  rCode(interp, "T
4030: 43 4c 22 2c 20 22 52 45 53 55 4c 54 22 2c 20 22  CL", "RESULT", "
4040: 4e 4f 4e 4c 49 53 54 5f 45 52 52 4f 52 53 54 41  NONLIST_ERRORSTA
4050: 43 4b 22 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 20 20  CK", NULL);.+.  
4060: 20 20 67 6f 74 6f 20 65 72 72 6f 72 3b 0a 2b 09    goto error;.+.
4070: 7d 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20  }.+    }.+.+    
4080: 2f 2a 0a 20 20 20 20 20 20 2a 20 43 6f 6e 76 65  /*.      * Conve
4090: 72 74 20 5b 72 65 74 75 72 6e 20 2d 63 6f 64 65  rt [return -code
40a0: 20 72 65 74 75 72 6e 20 2d 6c 65 76 65 6c 20 58   return -level X
40b0: 5d 20 74 6f 20 5b 72 65 74 75 72 6e 20 2d 63 6f  ] to [return -co
40c0: 64 65 20 6f 6b 20 2d 6c 65 76 65 6c 20 58 2b 31  de ok -level X+1
40d0: 5d 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 40 40 20  ].      */. .@@ 
40e0: 2d 31 35 32 33 2c 36 20 2b 31 35 37 31 2c 37 20  -1523,6 +1571,7 
40f0: 40 40 20 54 63 6c 5f 47 65 74 52 65 74 75 72 6e  @@ Tcl_GetReturn
4100: 4f 70 74 69 6f 6e 73 28 0a 20 0a 20 20 20 20 20  Options(. .     
4110: 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 54 43  if (result == TC
4120: 4c 5f 45 52 52 4f 52 29 20 7b 0a 20 09 54 63 6c  L_ERROR) {. .Tcl
4130: 5f 41 64 64 4f 62 6a 45 72 72 6f 72 49 6e 66 6f  _AddObjErrorInfo
4140: 28 69 6e 74 65 72 70 2c 20 22 22 2c 20 2d 31 29  (interp, "", -1)
4150: 3b 0a 2b 20 20 20 20 20 20 20 20 54 63 6c 5f 44  ;.+        Tcl_D
4160: 69 63 74 4f 62 6a 50 75 74 28 4e 55 4c 4c 2c 20  ictObjPut(NULL, 
4170: 6f 70 74 69 6f 6e 73 2c 20 6b 65 79 73 5b 4b 45  options, keys[KE
4180: 59 5f 45 52 52 4f 52 53 54 41 43 4b 5d 2c 20 69  Y_ERRORSTACK], i
4190: 50 74 72 2d 3e 65 72 72 6f 72 53 74 61 63 6b 29  Ptr->errorStack)
41a0: 3b 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 69 66  ;.     }.     if
41b0: 20 28 69 50 74 72 2d 3e 65 72 72 6f 72 43 6f 64   (iPtr->errorCod
41c0: 65 29 20 7b 0a 20 09 54 63 6c 5f 44 69 63 74 4f  e) {. .Tcl_DictO
41d0: 62 6a 50 75 74 28 4e 55 4c 4c 2c 20 6f 70 74 69  bjPut(NULL, opti
41e0: 6f 6e 73 2c 20 6b 65 79 73 5b 4b 45 59 5f 45 52  ons, keys[KEY_ER
41f0: 52 4f 52 43 4f 44 45 5d 2c 20 69 50 74 72 2d 3e  RORCODE], iPtr->
4200: 65 72 72 6f 72 43 6f 64 65 29 3b 0a 40 40 20 2d  errorCode);.@@ -
4210: 31 36 35 34 2c 35 20 2b 31 37 30 33 2c 37 20 40  1654,5 +1703,7 @
4220: 40 20 54 63 6c 5f 54 72 61 6e 73 66 65 72 52 65  @ Tcl_TransferRe
4230: 73 75 6c 74 28 0a 20 20 2a 20 6d 6f 64 65 3a 20  sult(.  * mode: 
4240: 63 0a 20 20 2a 20 63 2d 62 61 73 69 63 2d 6f 66  c.  * c-basic-of
4250: 66 73 65 74 3a 20 34 0a 20 20 2a 20 66 69 6c 6c  fset: 4.  * fill
4260: 2d 63 6f 6c 75 6d 6e 3a 20 37 38 0a 2b 20 2a 20  -column: 78.+ * 
4270: 74 61 62 2d 77 69 64 74 68 3a 20 38 0a 2b 20 2a  tab-width: 8.+ *
4280: 20 69 6e 64 65 6e 74 2d 74 61 62 73 2d 6d 6f 64   indent-tabs-mod
4290: 65 3a 20 6e 69 6c 0a 20 20 2a 20 45 6e 64 3a 0a  e: nil.  * End:.
42a0: 20 20 2a 2f 0a 49 6e 64 65 78 3a 20 74 65 73 74    */.Index: test
42b0: 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 0a 3d 3d 3d  s/cmdMZ.test.===
42c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
42d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
42e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
42f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4300: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72  .RCS file: /cvsr
4310: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74  oot/tcl/tcl/test
4320: 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 2c 76 0a 72  s/cmdMZ.test,v.r
4330: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
4340: 6f 6e 20 31 2e 32 38 0a 64 69 66 66 20 2d 75 20  on 1.28.diff -u 
4350: 2d 70 20 2d 75 20 2d 70 20 2d 72 31 2e 32 38 20  -p -u -p -r1.28 
4360: 63 6d 64 4d 5a 2e 74 65 73 74 0a 2d 2d 2d 20 74  cmdMZ.test.--- t
4370: 65 73 74 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 09  ests/cmdMZ.test.
4380: 31 36 20 4e 6f 76 20 32 30 30 39 20 31 38 3a 30  16 Nov 2009 18:0
4390: 30 3a 31 31 20 2d 30 30 30 30 09 31 2e 32 38 0a  0:11 -0000.1.28.
43a0: 2b 2b 2b 20 74 65 73 74 73 2f 63 6d 64 4d 5a 2e  +++ tests/cmdMZ.
43b0: 74 65 73 74 09 32 34 20 4d 61 72 20 32 30 31 30  test.24 Mar 2010
43c0: 20 31 35 3a 35 35 3a 34 39 20 2d 30 30 30 30 0a   15:55:49 -0000.
43d0: 40 40 20 2d 31 34 39 2c 31 31 20 2b 31 34 39 2c  @@ -149,11 +149,
43e0: 31 31 20 40 40 20 74 65 73 74 20 63 6d 64 4d 5a  11 @@ test cmdMZ
43f0: 2d 72 65 74 75 72 6e 2d 32 2e 38 20 7b 72 65 74  -return-2.8 {ret
4400: 75 72 6e 20 6f 70 74 69 6f 6e 20 68 61 6e 0a 20  urn option han. 
4410: 74 65 73 74 20 63 6d 64 4d 5a 2d 72 65 74 75 72  test cmdMZ-retur
4420: 6e 2d 32 2e 39 20 7b 72 65 74 75 72 6e 20 6f 70  n-2.9 {return op
4430: 74 69 6f 6e 20 68 61 6e 64 6c 69 6e 67 7d 20 2d  tion handling} -
4440: 62 6f 64 79 20 7b 0a 20 20 20 20 20 72 65 74 75  body {.     retu
4450: 72 6e 20 2d 6c 65 76 65 6c 20 30 20 2d 63 6f 64  rn -level 0 -cod
4460: 65 20 31 30 0a 20 7d 20 2d 72 65 74 75 72 6e 43  e 10. } -returnC
4470: 6f 64 65 73 20 31 30 20 2d 72 65 73 75 6c 74 20  odes 10 -result 
4480: 7b 7d 0a 2d 74 65 73 74 20 63 6d 64 4d 5a 2d 72  {}.-test cmdMZ-r
4490: 65 74 75 72 6e 2d 32 2e 31 30 20 7b 72 65 74 75  eturn-2.10 {retu
44a0: 72 6e 20 6f 70 74 69 6f 6e 20 68 61 6e 64 6c 69  rn option handli
44b0: 6e 67 7d 20 7b 0a 2b 74 65 73 74 20 63 6d 64 4d  ng} {.+test cmdM
44c0: 5a 2d 72 65 74 75 72 6e 2d 32 2e 31 30 20 7b 72  Z-return-2.10 {r
44d0: 65 74 75 72 6e 20 6f 70 74 69 6f 6e 20 68 61 6e  eturn option han
44e0: 64 6c 69 6e 67 7d 20 2d 62 6f 64 79 20 7b 0a 20  dling} -body {. 
44f0: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
4500: 7b 72 65 74 75 72 6e 20 2d 6c 65 76 65 6c 20 30  {return -level 0
4510: 20 2d 63 6f 64 65 20 65 72 72 6f 72 7d 20 2d 3e   -code error} ->
4520: 20 66 6f 6f 5d 20 5b 64 69 63 74 53 6f 72 74 20   foo] [dictSort 
4530: 24 66 6f 6f 5d 0a 2d 7d 20 7b 31 20 7b 2d 63 6f  $foo].-} {1 {-co
4540: 64 65 20 31 20 2d 65 72 72 6f 72 63 6f 64 65 20  de 1 -errorcode 
4550: 4e 4f 4e 45 20 2d 65 72 72 6f 72 69 6e 66 6f 20  NONE -errorinfo 
4560: 7b 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 6c 6f 62  {.+} -match glob
4570: 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b 2d 63 6f   -result {1 {-co
4580: 64 65 20 31 20 2d 65 72 72 6f 72 63 6f 64 65 20  de 1 -errorcode 
4590: 4e 4f 4e 45 20 2d 65 72 72 6f 72 69 6e 66 6f 20  NONE -errorinfo 
45a0: 7b 0a 20 20 20 20 20 77 68 69 6c 65 20 65 78 65  {.     while exe
45b0: 63 75 74 69 6e 67 0a 2d 22 72 65 74 75 72 6e 20  cuting.-"return 
45c0: 2d 6c 65 76 65 6c 20 30 20 2d 63 6f 64 65 20 65  -level 0 -code e
45d0: 72 72 6f 72 22 7d 20 2d 65 72 72 6f 72 6c 69 6e  rror"} -errorlin
45e0: 65 20 31 20 2d 6c 65 76 65 6c 20 30 7d 7d 0a 2b  e 1 -level 0}}.+
45f0: 22 72 65 74 75 72 6e 20 2d 6c 65 76 65 6c 20 30  "return -level 0
4600: 20 2d 63 6f 64 65 20 65 72 72 6f 72 22 7d 20 2d   -code error"} -
4610: 65 72 72 6f 72 6c 69 6e 65 20 31 20 2d 65 72 72  errorline 1 -err
4620: 6f 72 73 74 61 63 6b 20 2a 20 2d 6c 65 76 65 6c  orstack * -level
4630: 20 30 7d 7d 0a 20 74 65 73 74 20 63 6d 64 4d 5a   0}}. test cmdMZ
4640: 2d 72 65 74 75 72 6e 2d 32 2e 31 31 20 7b 72 65  -return-2.11 {re
4650: 74 75 72 6e 20 6f 70 74 69 6f 6e 20 68 61 6e 64  turn option hand
4660: 6c 69 6e 67 7d 20 7b 0a 20 20 20 20 20 6c 69 73  ling} {.     lis
4670: 74 20 5b 63 61 74 63 68 20 7b 72 65 74 75 72 6e  t [catch {return
4680: 20 2d 6c 65 76 65 6c 20 30 20 2d 63 6f 64 65 20   -level 0 -code 
4690: 62 72 65 61 6b 7d 20 2d 3e 20 66 6f 6f 5d 20 5b  break} -> foo] [
46a0: 64 69 63 74 53 6f 72 74 20 24 66 6f 6f 5d 0a 20  dictSort $foo]. 
46b0: 7d 20 7b 33 20 7b 2d 63 6f 64 65 20 33 20 2d 6c  } {3 {-code 3 -l
46c0: 65 76 65 6c 20 30 7d 7d 0a 40 40 20 2d 31 39 33  evel 0}}.@@ -193
46d0: 2c 36 20 2b 31 39 33 2c 39 20 40 40 20 74 65 73  ,6 +193,9 @@ tes
46e0: 74 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 32  t cmdMZ-return-2
46f0: 2e 31 37 20 7b 72 65 74 75 72 6e 20 6f 70 74 6f  .17 {return opto
4700: 6e 20 68 61 6e 0a 20 7d 20 2d 63 6c 65 61 6e 75  n han. } -cleanu
4710: 70 20 7b 0a 20 20 20 20 20 72 65 6e 61 6d 65 20  p {.     rename 
4720: 70 20 7b 7d 0a 20 7d 20 2d 72 65 73 75 6c 74 20  p {}. } -result 
4730: 7b 31 20 63 20 7b 61 20 62 7d 7d 0a 2b 74 65 73  {1 c {a b}}.+tes
4740: 74 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 32  t cmdMZ-return-2
4750: 2e 31 38 20 7b 72 65 74 75 72 6e 20 6f 70 74 69  .18 {return opti
4760: 6f 6e 20 68 61 6e 64 6c 69 6e 67 7d 20 7b 0a 2b  on handling} {.+
4770: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
4780: 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72  {return -code er
4790: 72 6f 72 20 2d 65 72 72 6f 72 73 74 61 63 6b 20  ror -errorstack 
47a0: 5b 6c 69 73 74 20 61 20 62 20 63 5d 20 79 6f 7d  [list a b c] yo}
47b0: 20 2d 3e 20 66 6f 6f 5d 20 5b 64 69 63 74 53 6f   -> foo] [dictSo
47c0: 72 74 20 24 66 6f 6f 5d 20 5b 69 6e 66 6f 20 65  rt $foo] [info e
47d0: 72 72 6f 72 73 74 61 63 6b 5d 0a 2b 7d 20 7b 32  rrorstack].+} {2
47e0: 20 7b 2d 63 6f 64 65 20 31 20 2d 65 72 72 6f 72   {-code 1 -error
47f0: 63 6f 64 65 20 4e 4f 4e 45 20 2d 65 72 72 6f 72  code NONE -error
4800: 73 74 61 63 6b 20 7b 61 20 62 20 63 7d 20 2d 6c  stack {a b c} -l
4810: 65 76 65 6c 20 31 7d 20 7b 61 20 62 20 63 7d 7d  evel 1} {a b c}}
4820: 0a 20 0a 20 23 20 43 68 65 63 6b 20 74 68 61 74  . . # Check that
4830: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61   the result of a
4840: 20 5b 72 65 74 75 72 6e 20 2d 6f 70 74 69 6f 6e   [return -option
4850: 73 20 24 6f 70 74 73 20 24 72 65 73 75 6c 74 5d  s $opts $result]
4860: 20 69 73 0a 20 23 20 69 6e 64 69 73 74 69 6e 67   is. # indisting
4870: 75 69 73 68 61 62 6c 65 20 66 72 6f 6d 20 74 68  uishable from th
4880: 61 74 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  at of the origin
4890: 61 6c 6c 79 20 63 61 75 67 68 74 20 73 63 72 69  ally caught scri
48a0: 70 74 2c 20 6e 6f 20 6d 61 74 74 65 72 20 77 68  pt, no matter wh
48b0: 61 74 0a 40 40 20 2d 32 31 31 2c 36 20 2b 32 31  at.@@ -211,6 +21
48c0: 34 2c 37 20 40 40 20 66 6f 72 65 61 63 68 20 7b  4,7 @@ foreach {
48d0: 74 65 73 74 69 64 20 73 63 72 69 70 74 7d 20 7b  testid script} {
48e0: 0a 20 20 20 20 20 63 6d 64 4d 5a 2d 72 65 74 75  .     cmdMZ-retu
48f0: 72 6e 2d 33 2e 31 30 20 7b 72 65 74 75 72 6e 20  rn-3.10 {return 
4900: 2d 63 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72  -code error -err
4910: 6f 72 69 6e 66 6f 20 66 6f 6f 7d 0a 20 20 20 20  orinfo foo}.    
4920: 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 33 2e   cmdMZ-return-3.
4930: 31 31 20 7b 72 65 74 75 72 6e 20 2d 63 6f 64 65  11 {return -code
4940: 20 65 72 72 6f 72 20 2d 65 72 72 6f 72 69 6e 66   error -errorinf
4950: 6f 20 66 6f 6f 20 2d 65 72 72 6f 72 63 6f 64 65  o foo -errorcode
4960: 20 62 61 72 7d 0a 20 20 20 20 20 63 6d 64 4d 5a   bar}.     cmdMZ
4970: 2d 72 65 74 75 72 6e 2d 33 2e 31 32 20 7b 72 65  -return-3.12 {re
4980: 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72  turn -code error
4990: 20 2d 65 72 72 6f 72 69 6e 66 6f 20 66 6f 6f 20   -errorinfo foo 
49a0: 2d 65 72 72 6f 72 63 6f 64 65 20 62 61 72 20 2d  -errorcode bar -
49b0: 65 72 72 6f 72 6c 69 6e 65 20 31 30 7d 0a 2b 20  errorline 10}.+ 
49c0: 20 20 20 63 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d     cmdMZ-return-
49d0: 33 2e 31 32 2e 31 20 7b 72 65 74 75 72 6e 20 2d  3.12.1 {return -
49e0: 63 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72 6f  code error -erro
49f0: 72 69 6e 66 6f 20 66 6f 6f 20 2d 65 72 72 6f 72  rinfo foo -error
4a00: 63 6f 64 65 20 62 61 72 20 2d 65 72 72 6f 72 6c  code bar -errorl
4a10: 69 6e 65 20 31 30 20 2d 65 72 72 6f 72 73 74 61  ine 10 -errorsta
4a20: 63 6b 20 62 61 7a 7d 0a 20 20 20 20 20 63 6d 64  ck baz}.     cmd
4a30: 4d 5a 2d 72 65 74 75 72 6e 2d 33 2e 31 33 20 7b  MZ-return-3.13 {
4a40: 72 65 74 75 72 6e 20 2d 6f 70 74 69 6f 6e 73 20  return -options 
4a50: 7b 78 20 79 20 7a 20 32 7d 7d 0a 20 20 20 20 20  {x y z 2}}.     
4a60: 63 6d 64 4d 5a 2d 72 65 74 75 72 6e 2d 33 2e 31  cmdMZ-return-3.1
4a70: 34 20 7b 72 65 74 75 72 6e 20 2d 6c 65 76 65 6c  4 {return -level
4a80: 20 33 20 2d 63 6f 64 65 20 62 72 65 61 6b 20 73   3 -code break s
4a90: 64 66 7d 0a 20 7d 20 7b 0a 49 6e 64 65 78 3a 20  df}. } {.Index: 
4aa0: 74 65 73 74 73 2f 65 72 72 6f 72 2e 74 65 73 74  tests/error.test
4ab0: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .===============
4ac0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4ad0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4ae0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4af0: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ====.RCS file: /
4b00: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
4b10: 74 65 73 74 73 2f 65 72 72 6f 72 2e 74 65 73 74  tests/error.test
4b20: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
4b30: 76 69 73 69 6f 6e 20 31 2e 32 38 0a 64 69 66 66  vision 1.28.diff
4b40: 20 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d 72 31   -u -p -u -p -r1
4b50: 2e 32 38 20 65 72 72 6f 72 2e 74 65 73 74 0a 2d  .28 error.test.-
4b60: 2d 2d 20 74 65 73 74 73 2f 65 72 72 6f 72 2e 74  -- tests/error.t
4b70: 65 73 74 09 32 33 20 4d 61 72 20 32 30 31 30 20  est.23 Mar 2010 
4b80: 31 32 3a 35 38 3a 33 39 20 2d 30 30 30 30 09 31  12:58:39 -0000.1
4b90: 2e 32 38 0a 2b 2b 2b 20 74 65 73 74 73 2f 65 72  .28.+++ tests/er
4ba0: 72 6f 72 2e 74 65 73 74 09 32 34 20 4d 61 72 20  ror.test.24 Mar 
4bb0: 32 30 31 30 20 31 35 3a 35 35 3a 34 39 20 2d 30  2010 15:55:49 -0
4bc0: 30 30 30 0a 40 40 20 2d 31 36 39 2c 36 20 2b 31  000.@@ -169,6 +1
4bd0: 36 39 2c 31 39 20 40 40 20 74 65 73 74 20 65 72  69,19 @@ test er
4be0: 72 6f 72 2d 34 2e 35 20 7b 65 72 72 6f 72 49 6e  ror-4.5 {errorIn
4bf0: 66 6f 20 61 6e 64 20 65 72 72 6f 72 43 6f 64 65  fo and errorCode
4c00: 20 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74   .     list [cat
4c10: 63 68 20 7b 65 72 72 6f 72 20 6d 73 67 31 20 6d  ch {error msg1 m
4c20: 73 67 32 20 7b 7d 7d 20 6d 73 67 5d 20 24 6d 73  sg2 {}} msg] $ms
4c30: 67 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 24  g $::errorInfo $
4c40: 3a 3a 65 72 72 6f 72 43 6f 64 65 0a 20 7d 20 7b  ::errorCode. } {
4c50: 31 20 6d 73 67 31 20 6d 73 67 32 20 7b 7d 7d 0a  1 msg1 msg2 {}}.
4c60: 20 0a 2b 74 65 73 74 20 65 72 72 6f 72 2d 34 2e   .+test error-4.
4c70: 36 20 7b 65 72 72 6f 72 73 74 61 63 6b 20 76 69  6 {errorstack vi
4c80: 61 20 69 6e 66 6f 20 7d 20 2d 62 6f 64 79 20 7b  a info } -body {
4c90: 0a 2b 20 20 20 20 70 72 6f 63 20 66 20 78 20 7b  .+    proc f x {
4ca0: 67 20 24 78 24 78 7d 0a 2b 20 20 20 20 70 72 6f  g $x$x}.+    pro
4cb0: 63 20 67 20 78 20 7b 65 72 72 6f 72 20 47 3a 24  c g x {error G:$
4cc0: 78 7d 0a 2b 20 20 20 20 63 61 74 63 68 20 7b 66  x}.+    catch {f
4cd0: 20 31 32 7d 0a 2b 20 20 20 20 69 6e 66 6f 20 65   12}.+    info e
4ce0: 72 72 6f 72 73 74 61 63 6b 0a 2b 7d 20 2d 6d 61  rrorstack.+} -ma
4cf0: 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74  tch glob -result
4d00: 20 7b 7b 67 20 31 32 31 32 7d 20 7b 66 20 31 32   {{g 1212} {f 12
4d10: 7d 20 7b 75 70 6c 65 76 65 6c 20 31 7d 7d 0a 2b  } {uplevel 1}}.+
4d20: 74 65 73 74 20 65 72 72 6f 72 2d 34 2e 37 20 7b  test error-4.7 {
4d30: 65 72 72 6f 72 73 74 61 63 6b 20 76 69 61 20 6f  errorstack via o
4d40: 70 74 69 6f 6e 73 20 64 69 63 74 20 7d 20 2d 62  ptions dict } -b
4d50: 6f 64 79 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20  ody {.+    proc 
4d60: 66 20 78 20 7b 67 20 24 78 24 78 7d 0a 2b 20 20  f x {g $x$x}.+  
4d70: 20 20 70 72 6f 63 20 67 20 78 20 7b 65 72 72 6f    proc g x {erro
4d80: 72 20 47 3a 24 78 7d 0a 2b 20 20 20 20 63 61 74  r G:$x}.+    cat
4d90: 63 68 20 7b 66 20 31 32 7d 20 6d 20 64 0a 2b 20  ch {f 12} m d.+ 
4da0: 20 20 20 64 69 63 74 20 67 65 74 20 24 64 20 2d     dict get $d -
4db0: 65 72 72 6f 72 73 74 61 63 6b 0a 2b 7d 20 2d 6d  errorstack.+} -m
4dc0: 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c  atch glob -resul
4dd0: 74 20 7b 7b 67 20 31 32 31 32 7d 20 7b 66 20 31  t {{g 1212} {f 1
4de0: 32 7d 20 7b 75 70 6c 65 76 65 6c 20 31 7d 7d 0a  2} {uplevel 1}}.
4df0: 2b 0a 20 23 20 45 72 72 6f 72 73 20 69 6e 20 65  +. # Errors in e
4e00: 72 72 6f 72 20 63 6f 6d 6d 61 6e 64 20 69 74 73  rror command its
4e10: 65 6c 66 0a 20 0a 20 74 65 73 74 20 65 72 72 6f  elf. . test erro
4e20: 72 2d 35 2e 31 20 7b 65 72 72 6f 72 73 20 69 6e  r-5.1 {errors in
4e30: 20 65 72 72 6f 72 20 63 6f 6d 6d 61 6e 64 7d 20   error command} 
4e40: 7b 0a 40 40 20 2d 32 32 33 2c 36 20 2b 32 33 36  {.@@ -223,6 +236
4e50: 2c 31 35 20 40 40 20 74 65 73 74 20 65 72 72 6f  ,15 @@ test erro
4e60: 72 2d 36 2e 39 20 7b 63 61 74 63 68 20 6d 75 73  r-6.9 {catch mus
4e70: 74 20 72 65 73 65 74 20 65 72 72 6f 72 20 73 0a  t reset error s.
4e80: 20 20 20 20 20 63 61 74 63 68 20 66 6f 6f 0a 20       catch foo. 
4e90: 20 20 20 20 6c 69 73 74 20 24 3a 3a 65 72 72 6f      list $::erro
4ea0: 72 43 6f 64 65 0a 20 7d 20 7b 4e 4f 4e 45 7d 0a  rCode. } {NONE}.
4eb0: 2b 74 65 73 74 20 65 72 72 6f 72 2d 36 2e 31 30  +test error-6.10
4ec0: 20 7b 63 61 74 63 68 20 6d 75 73 74 20 72 65 73   {catch must res
4ed0: 65 74 20 65 72 72 6f 72 73 74 61 63 6b 7d 20 2d  et errorstack} -
4ee0: 62 6f 64 79 20 7b 0a 2b 09 70 72 6f 63 20 66 20  body {.+.proc f 
4ef0: 78 20 7b 67 20 24 78 24 78 7d 0a 2b 09 70 72 6f  x {g $x$x}.+.pro
4f00: 63 20 67 20 78 20 7b 65 72 72 6f 72 20 47 3a 24  c g x {error G:$
4f10: 78 7d 0a 2b 09 63 61 74 63 68 20 7b 66 20 31 32  x}.+.catch {f 12
4f20: 7d 0a 2b 09 73 65 74 20 65 31 20 5b 69 6e 66 6f  }.+.set e1 [info
4f30: 20 65 72 72 6f 72 73 74 61 63 6b 5d 0a 2b 09 63   errorstack].+.c
4f40: 61 74 63 68 20 7b 66 20 31 33 7d 0a 2b 09 73 65  atch {f 13}.+.se
4f50: 74 20 65 32 20 5b 69 6e 66 6f 20 65 72 72 6f 72  t e2 [info error
4f60: 73 74 61 63 6b 5d 0a 2b 09 6c 69 73 74 20 24 65  stack].+.list $e
4f70: 31 20 24 65 32 0a 2b 7d 20 2d 6d 61 74 63 68 20  1 $e2.+} -match 
4f80: 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 7b 7b  glob -result {{{
4f90: 67 20 31 32 31 32 7d 20 7b 66 20 31 32 7d 20 7b  g 1212} {f 12} {
4fa0: 75 70 6c 65 76 65 6c 20 31 7d 7d 20 7b 7b 67 20  uplevel 1}} {{g 
4fb0: 31 33 31 33 7d 20 7b 66 20 31 33 7d 20 7b 75 70  1313} {f 13} {up
4fc0: 6c 65 76 65 6c 20 31 7d 7d 7d 0a 20 0a 20 74 65  level 1}}}. . te
4fd0: 73 74 20 65 72 72 6f 72 2d 37 2e 31 20 7b 42 75  st error-7.1 {Bu
4fe0: 67 20 31 33 39 37 38 34 33 7d 20 2d 62 6f 64 79  g 1397843} -body
4ff0: 20 7b 0a 20 20 20 20 20 76 61 72 69 61 62 6c 65   {.     variable
5000: 20 63 6d 64 73 0a 49 6e 64 65 78 3a 20 74 65 73   cmds.Index: tes
5010: 74 73 2f 65 78 65 63 75 74 65 2e 74 65 73 74 0a  ts/execute.test.
5020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5060: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
5070: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74  vsroot/tcl/tcl/t
5080: 65 73 74 73 2f 65 78 65 63 75 74 65 2e 74 65 73  ests/execute.tes
5090: 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72  t,v.retrieving r
50a0: 65 76 69 73 69 6f 6e 20 31 2e 33 34 0a 64 69 66  evision 1.34.dif
50b0: 66 20 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d 72  f -u -p -u -p -r
50c0: 31 2e 33 34 20 65 78 65 63 75 74 65 2e 74 65 73  1.34 execute.tes
50d0: 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 65 78 65 63  t.--- tests/exec
50e0: 75 74 65 2e 74 65 73 74 09 31 36 20 4e 6f 76 20  ute.test.16 Nov 
50f0: 32 30 30 39 20 31 38 3a 30 30 3a 31 31 20 2d 30  2009 18:00:11 -0
5100: 30 30 30 09 31 2e 33 34 0a 2b 2b 2b 20 74 65 73  000.1.34.+++ tes
5110: 74 73 2f 65 78 65 63 75 74 65 2e 74 65 73 74 09  ts/execute.test.
5120: 32 34 20 4d 61 72 20 32 30 31 30 20 31 35 3a 35  24 Mar 2010 15:5
5130: 35 3a 34 39 20 2d 30 30 30 30 0a 40 40 20 2d 39  5:49 -0000.@@ -9
5140: 35 36 2c 31 31 20 2b 39 35 36 2c 31 31 20 40 40  56,11 +956,11 @@
5150: 20 74 65 73 74 20 65 78 65 63 75 74 65 2d 38 2e   test execute-8.
5160: 35 20 7b 42 75 67 20 32 30 33 38 30 36 39 7d 20  5 {Bug 2038069} 
5170: 2d 73 65 74 75 70 20 7b 0a 20 20 20 20 20 64 65  -setup {.     de
5180: 6d 6f 0a 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b  mo. } -cleanup {
5190: 0a 20 20 20 20 20 72 65 6e 61 6d 65 20 64 65 6d  .     rename dem
51a0: 6f 20 7b 7d 0a 2d 7d 20 2d 72 65 73 75 6c 74 20  o {}.-} -result 
51b0: 7b 2d 63 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20  {-code 1 -level 
51c0: 30 20 2d 65 72 72 6f 72 63 6f 64 65 20 4e 4f 4e  0 -errorcode NON
51d0: 45 20 2d 65 72 72 6f 72 69 6e 66 6f 20 7b 46 4f  E -errorinfo {FO
51e0: 4f 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 6c 6f 62  O.+} -match glob
51f0: 20 2d 72 65 73 75 6c 74 20 7b 2d 63 6f 64 65 20   -result {-code 
5200: 31 20 2d 6c 65 76 65 6c 20 30 20 2d 65 72 72 6f  1 -level 0 -erro
5210: 72 73 74 61 63 6b 20 2a 20 2d 65 72 72 6f 72 63  rstack * -errorc
5220: 6f 64 65 20 4e 4f 4e 45 20 2d 65 72 72 6f 72 69  ode NONE -errori
5230: 6e 66 6f 20 7b 46 4f 4f 0a 20 20 20 20 20 77 68  nfo {FOO.     wh
5240: 69 6c 65 20 65 78 65 63 75 74 69 6e 67 0a 20 22  ile executing. "
5250: 65 72 72 6f 72 20 46 4f 4f 22 0a 20 20 20 20 20  error FOO".     
5260: 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69 74  invoked from wit
5270: 68 69 6e 0a 2d 22 63 61 74 63 68 20 5b 6c 69 73  hin.-"catch [lis
5280: 74 20 65 72 72 6f 72 20 46 4f 4f 5d 20 6d 20 6f  t error FOO] m o
5290: 22 7d 20 2d 65 72 72 6f 72 6c 69 6e 65 20 32 7d  "} -errorline 2}
52a0: 0a 2b 22 63 61 74 63 68 20 5c 5b 6c 69 73 74 20  .+"catch \[list 
52b0: 65 72 72 6f 72 20 46 4f 4f 5c 5d 20 6d 20 6f 22  error FOO\] m o"
52c0: 7d 20 2d 65 72 72 6f 72 6c 69 6e 65 20 32 7d 0a  } -errorline 2}.
52d0: 20 0a 20 74 65 73 74 20 65 78 65 63 75 74 65 2d   . test execute-
52e0: 39 2e 31 20 7b 49 6e 74 65 72 70 20 72 65 73 75  9.1 {Interp resu
52f0: 6c 74 20 72 65 73 65 74 74 69 6e 67 20 5b 42 75  lt resetting [Bu
5300: 67 20 31 35 32 32 38 30 33 5d 7d 20 7b 0a 20 20  g 1522803]} {.  
5310: 20 20 20 73 65 74 20 63 20 30 0a 49 6e 64 65 78     set c 0.Index
5320: 3a 20 74 65 73 74 73 2f 69 6e 66 6f 2e 74 65 73  : tests/info.tes
5330: 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  t.==============
5340: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5370: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
5380: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
5390: 2f 74 65 73 74 73 2f 69 6e 66 6f 2e 74 65 73 74  /tests/info.test
53a0: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
53b0: 76 69 73 69 6f 6e 20 31 2e 37 35 0a 64 69 66 66  vision 1.75.diff
53c0: 20 2d 75 20 2d 70 20 2d 75 20 2d 70 20 2d 72 31   -u -p -u -p -r1
53d0: 2e 37 35 20 69 6e 66 6f 2e 74 65 73 74 0a 2d 2d  .75 info.test.--
53e0: 2d 20 74 65 73 74 73 2f 69 6e 66 6f 2e 74 65 73  - tests/info.tes
53f0: 74 09 31 30 20 46 65 62 20 32 30 31 30 20 32 33  t.10 Feb 2010 23
5400: 3a 32 34 3a 32 35 20 2d 30 30 30 30 09 31 2e 37  :24:25 -0000.1.7
5410: 35 0a 2b 2b 2b 20 74 65 73 74 73 2f 69 6e 66 6f  5.+++ tests/info
5420: 2e 74 65 73 74 09 32 34 20 4d 61 72 20 32 30 31  .test.24 Mar 201
5430: 30 20 31 35 3a 35 35 3a 34 39 20 2d 30 30 30 30  0 15:55:49 -0000
5440: 0a 40 40 20 2d 36 37 36 2c 31 36 20 2b 36 37 36  .@@ -676,16 +676
5450: 2c 31 36 20 40 40 20 74 65 73 74 20 69 6e 66 6f  ,16 @@ test info
5460: 2d 32 31 2e 31 20 7b 6d 69 73 63 65 6c 6c 61 6e  -21.1 {miscellan
5470: 65 6f 75 73 20 65 72 72 6f 72 20 63 6f 6e 64 0a  eous error cond.
5480: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e   } -result {wron
5490: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64  g # args: should
54a0: 20 62 65 20 22 69 6e 66 6f 20 73 75 62 63 6f 6d   be "info subcom
54b0: 6d 61 6e 64 20 3f 61 72 67 20 2e 2e 2e 3f 22 7d  mand ?arg ...?"}
54c0: 0a 20 74 65 73 74 20 69 6e 66 6f 2d 32 31 2e 32  . test info-21.2
54d0: 20 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20   {miscellaneous 
54e0: 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73  error conditions
54f0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65  } -returnCodes e
5500: 72 72 6f 72 20 2d 62 6f 64 79 20 7b 0a 20 20 20  rror -body {.   
5510: 20 20 69 6e 66 6f 20 67 6f 72 70 0a 2d 7d 20 2d    info gorp.-} -
5520: 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20  result {unknown 
5530: 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 73 75 62  or ambiguous sub
5540: 63 6f 6d 6d 61 6e 64 20 22 67 6f 72 70 22 3a 20  command "gorp": 
5550: 6d 75 73 74 20 62 65 20 61 72 67 73 2c 20 62 6f  must be args, bo
5560: 64 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63 6f  dy, class, cmdco
5570: 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20 63  unt, commands, c
5580: 6f 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74 69  omplete, corouti
5590: 6e 65 2c 20 64 65 66 61 75 6c 74 2c 20 65 78 69  ne, default, exi
55a0: 73 74 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e 63  sts, frame, func
55b0: 74 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c 20  tions, globals, 
55c0: 68 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c  hostname, level,
55d0: 20 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64 65 64   library, loaded
55e0: 2c 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f 66  , locals, nameof
55f0: 65 78 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a 65  executable, obje
5600: 63 74 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c 20  ct, patchlevel, 
5610: 70 72 6f 63 73 2c 20 73 63 72 69 70 74 2c 20 73  procs, script, s
5620: 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69 6f  haredlibextensio
5630: 6e 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20 6f  n, tclversion, o
5640: 72 20 76 61 72 73 7d 0a 2b 7d 20 2d 72 65 73 75  r vars}.+} -resu
5650: 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61  lt {unknown or a
5660: 6d 62 69 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d  mbiguous subcomm
5670: 61 6e 64 20 22 67 6f 72 70 22 3a 20 6d 75 73 74  and "gorp": must
5680: 20 62 65 20 61 72 67 73 2c 20 62 6f 64 79 2c 20   be args, body, 
5690: 63 6c 61 73 73 2c 20 63 6d 64 63 6f 75 6e 74 2c  class, cmdcount,
56a0: 20 63 6f 6d 6d 61 6e 64 73 2c 20 63 6f 6d 70 6c   commands, compl
56b0: 65 74 65 2c 20 63 6f 72 6f 75 74 69 6e 65 2c 20  ete, coroutine, 
56c0: 64 65 66 61 75 6c 74 2c 20 65 72 72 6f 72 73 74  default, errorst
56d0: 61 63 6b 2c 20 65 78 69 73 74 73 2c 20 66 72 61  ack, exists, fra
56e0: 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 73 2c 20 67  me, functions, g
56f0: 6c 6f 62 61 6c 73 2c 20 68 6f 73 74 6e 61 6d 65  lobals, hostname
5700: 2c 20 6c 65 76 65 6c 2c 20 6c 69 62 72 61 72 79  , level, library
5710: 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f 63 61 6c 73  , loaded, locals
5720: 2c 20 6e 61 6d 65 6f 66 65 78 65 63 75 74 61 62  , nameofexecutab
5730: 6c 65 2c 20 6f 62 6a 65 63 74 2c 20 70 61 74 63  le, object, patc
5740: 68 6c 65 76 65 6c 2c 20 70 72 6f 63 73 2c 20 73  hlevel, procs, s
5750: 63 72 69 70 74 2c 20 73 68 61 72 65 64 6c 69 62  cript, sharedlib
5760: 65 78 74 65 6e 73 69 6f 6e 2c 20 74 63 6c 76 65  extension, tclve
5770: 72 73 69 6f 6e 2c 20 6f 72 20 76 61 72 73 7d 0a  rsion, or vars}.
5780: 20 74 65 73 74 20 69 6e 66 6f 2d 32 31 2e 33 20   test info-21.3 
5790: 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 65  {miscellaneous e
57a0: 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 7d  rror conditions}
57b0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72   -returnCodes er
57c0: 72 6f 72 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20  ror -body {.    
57d0: 20 69 6e 66 6f 20 63 0a 2d 7d 20 2d 72 65 73 75   info c.-} -resu
57e0: 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61  lt {unknown or a
57f0: 6d 62 69 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d  mbiguous subcomm
5800: 61 6e 64 20 22 63 22 3a 20 6d 75 73 74 20 62 65  and "c": must be
5810: 20 61 72 67 73 2c 20 62 6f 64 79 2c 20 63 6c 61   args, body, cla
5820: 73 73 2c 20 63 6d 64 63 6f 75 6e 74 2c 20 63 6f  ss, cmdcount, co
5830: 6d 6d 61 6e 64 73 2c 20 63 6f 6d 70 6c 65 74 65  mmands, complete
5840: 2c 20 63 6f 72 6f 75 74 69 6e 65 2c 20 64 65 66  , coroutine, def
5850: 61 75 6c 74 2c 20 65 78 69 73 74 73 2c 20 66 72  ault, exists, fr
5860: 61 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 73 2c 20  ame, functions, 
5870: 67 6c 6f 62 61 6c 73 2c 20 68 6f 73 74 6e 61 6d  globals, hostnam
5880: 65 2c 20 6c 65 76 65 6c 2c 20 6c 69 62 72 61 72  e, level, librar
5890: 79 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f 63 61 6c  y, loaded, local
58a0: 73 2c 20 6e 61 6d 65 6f 66 65 78 65 63 75 74 61  s, nameofexecuta
58b0: 62 6c 65 2c 20 6f 62 6a 65 63 74 2c 20 70 61 74  ble, object, pat
58c0: 63 68 6c 65 76 65 6c 2c 20 70 72 6f 63 73 2c 20  chlevel, procs, 
58d0: 73 63 72 69 70 74 2c 20 73 68 61 72 65 64 6c 69  script, sharedli
58e0: 62 65 78 74 65 6e 73 69 6f 6e 2c 20 74 63 6c 76  bextension, tclv
58f0: 65 72 73 69 6f 6e 2c 20 6f 72 20 76 61 72 73 7d  ersion, or vars}
5900: 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b  .+} -result {unk
5910: 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75  nown or ambiguou
5920: 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 63 22  s subcommand "c"
5930: 3a 20 6d 75 73 74 20 62 65 20 61 72 67 73 2c 20  : must be args, 
5940: 62 6f 64 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64  body, class, cmd
5950: 63 6f 75 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c  count, commands,
5960: 20 63 6f 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75   complete, corou
5970: 74 69 6e 65 2c 20 64 65 66 61 75 6c 74 2c 20 65  tine, default, e
5980: 72 72 6f 72 73 74 61 63 6b 2c 20 65 78 69 73 74  rrorstack, exist
5990: 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e 63 74 69  s, frame, functi
59a0: 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c 20 68 6f  ons, globals, ho
59b0: 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 6c  stname, level, l
59c0: 69 62 72 61 72 79 2c 20 6c 6f 61 64 65 64 2c 20  ibrary, loaded, 
59d0: 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f 66 65 78  locals, nameofex
59e0: 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a 65 63 74  ecutable, object
59f0: 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c 20 70 72  , patchlevel, pr
5a00: 6f 63 73 2c 20 73 63 72 69 70 74 2c 20 73 68 61  ocs, script, sha
5a10: 72 65 64 6c 69 62 65 78 74 65 6e 73 69 6f 6e 2c  redlibextension,
5a20: 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20 6f 72 20   tclversion, or 
5a30: 76 61 72 73 7d 0a 20 74 65 73 74 20 69 6e 66 6f  vars}. test info
5a40: 2d 32 31 2e 34 20 7b 6d 69 73 63 65 6c 6c 61 6e  -21.4 {miscellan
5a50: 65 6f 75 73 20 65 72 72 6f 72 20 63 6f 6e 64 69  eous error condi
5a60: 74 69 6f 6e 73 7d 20 2d 72 65 74 75 72 6e 43 6f  tions} -returnCo
5a70: 64 65 73 20 65 72 72 6f 72 20 2d 62 6f 64 79 20  des error -body 
5a80: 7b 0a 20 20 20 20 20 69 6e 66 6f 20 6c 0a 2d 7d  {.     info l.-}
5a90: 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77   -result {unknow
5aa0: 6e 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 73  n or ambiguous s
5ab0: 75 62 63 6f 6d 6d 61 6e 64 20 22 6c 22 3a 20 6d  ubcommand "l": m
5ac0: 75 73 74 20 62 65 20 61 72 67 73 2c 20 62 6f 64  ust be args, bod
5ad0: 79 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63 6f 75  y, class, cmdcou
5ae0: 6e 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20 63 6f  nt, commands, co
5af0: 6d 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74 69 6e  mplete, coroutin
5b00: 65 2c 20 64 65 66 61 75 6c 74 2c 20 65 78 69 73  e, default, exis
5b10: 74 73 2c 20 66 72 61 6d 65 2c 20 66 75 6e 63 74  ts, frame, funct
5b20: 69 6f 6e 73 2c 20 67 6c 6f 62 61 6c 73 2c 20 68  ions, globals, h
5b30: 6f 73 74 6e 61 6d 65 2c 20 6c 65 76 65 6c 2c 20  ostname, level, 
5b40: 6c 69 62 72 61 72 79 2c 20 6c 6f 61 64 65 64 2c  library, loaded,
5b50: 20 6c 6f 63 61 6c 73 2c 20 6e 61 6d 65 6f 66 65   locals, nameofe
5b60: 78 65 63 75 74 61 62 6c 65 2c 20 6f 62 6a 65 63  xecutable, objec
5b70: 74 2c 20 70 61 74 63 68 6c 65 76 65 6c 2c 20 70  t, patchlevel, p
5b80: 72 6f 63 73 2c 20 73 63 72 69 70 74 2c 20 73 68  rocs, script, sh
5b90: 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69 6f 6e  aredlibextension
5ba0: 2c 20 74 63 6c 76 65 72 73 69 6f 6e 2c 20 6f 72  , tclversion, or
5bb0: 20 76 61 72 73 7d 0a 2b 7d 20 2d 72 65 73 75 6c   vars}.+} -resul
5bc0: 74 20 7b 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d  t {unknown or am
5bd0: 62 69 67 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61  biguous subcomma
5be0: 6e 64 20 22 6c 22 3a 20 6d 75 73 74 20 62 65 20  nd "l": must be 
5bf0: 61 72 67 73 2c 20 62 6f 64 79 2c 20 63 6c 61 73  args, body, clas
5c00: 73 2c 20 63 6d 64 63 6f 75 6e 74 2c 20 63 6f 6d  s, cmdcount, com
5c10: 6d 61 6e 64 73 2c 20 63 6f 6d 70 6c 65 74 65 2c  mands, complete,
5c20: 20 63 6f 72 6f 75 74 69 6e 65 2c 20 64 65 66 61   coroutine, defa
5c30: 75 6c 74 2c 20 65 72 72 6f 72 73 74 61 63 6b 2c  ult, errorstack,
5c40: 20 65 78 69 73 74 73 2c 20 66 72 61 6d 65 2c 20   exists, frame, 
5c50: 66 75 6e 63 74 69 6f 6e 73 2c 20 67 6c 6f 62 61  functions, globa
5c60: 6c 73 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 6c 65  ls, hostname, le
5c70: 76 65 6c 2c 20 6c 69 62 72 61 72 79 2c 20 6c 6f  vel, library, lo
5c80: 61 64 65 64 2c 20 6c 6f 63 61 6c 73 2c 20 6e 61  aded, locals, na
5c90: 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 2c 20  meofexecutable, 
5ca0: 6f 62 6a 65 63 74 2c 20 70 61 74 63 68 6c 65 76  object, patchlev
5cb0: 65 6c 2c 20 70 72 6f 63 73 2c 20 73 63 72 69 70  el, procs, scrip
5cc0: 74 2c 20 73 68 61 72 65 64 6c 69 62 65 78 74 65  t, sharedlibexte
5cd0: 6e 73 69 6f 6e 2c 20 74 63 6c 76 65 72 73 69 6f  nsion, tclversio
5ce0: 6e 2c 20 6f 72 20 76 61 72 73 7d 0a 20 74 65 73  n, or vars}. tes
5cf0: 74 20 69 6e 66 6f 2d 32 31 2e 35 20 7b 6d 69 73  t info-21.5 {mis
5d00: 63 65 6c 6c 61 6e 65 6f 75 73 20 65 72 72 6f 72  cellaneous error
5d10: 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 2d 72 65   conditions} -re
5d20: 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20  turnCodes error 
5d30: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 20 69 6e 66  -body {.     inf
5d40: 6f 20 73 0a 2d 7d 20 2d 72 65 73 75 6c 74 20 7b  o s.-} -result {
5d50: 75 6e 6b 6e 6f 77 6e 20 6f 72 20 61 6d 62 69 67  unknown or ambig
5d60: 75 6f 75 73 20 73 75 62 63 6f 6d 6d 61 6e 64 20  uous subcommand 
5d70: 22 73 22 3a 20 6d 75 73 74 20 62 65 20 61 72 67  "s": must be arg
5d80: 73 2c 20 62 6f 64 79 2c 20 63 6c 61 73 73 2c 20  s, body, class, 
5d90: 63 6d 64 63 6f 75 6e 74 2c 20 63 6f 6d 6d 61 6e  cmdcount, comman
5da0: 64 73 2c 20 63 6f 6d 70 6c 65 74 65 2c 20 63 6f  ds, complete, co
5db0: 72 6f 75 74 69 6e 65 2c 20 64 65 66 61 75 6c 74  routine, default
5dc0: 2c 20 65 78 69 73 74 73 2c 20 66 72 61 6d 65 2c  , exists, frame,
5dd0: 20 66 75 6e 63 74 69 6f 6e 73 2c 20 67 6c 6f 62   functions, glob
5de0: 61 6c 73 2c 20 68 6f 73 74 6e 61 6d 65 2c 20 6c  als, hostname, l
5df0: 65 76 65 6c 2c 20 6c 69 62 72 61 72 79 2c 20 6c  evel, library, l
5e00: 6f 61 64 65 64 2c 20 6c 6f 63 61 6c 73 2c 20 6e  oaded, locals, n
5e10: 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 2c  ameofexecutable,
5e20: 20 6f 62 6a 65 63 74 2c 20 70 61 74 63 68 6c 65   object, patchle
5e30: 76 65 6c 2c 20 70 72 6f 63 73 2c 20 73 63 72 69  vel, procs, scri
5e40: 70 74 2c 20 73 68 61 72 65 64 6c 69 62 65 78 74  pt, sharedlibext
5e50: 65 6e 73 69 6f 6e 2c 20 74 63 6c 76 65 72 73 69  ension, tclversi
5e60: 6f 6e 2c 20 6f 72 20 76 61 72 73 7d 0a 2b 7d 20  on, or vars}.+} 
5e70: 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e  -result {unknown
5e80: 20 6f 72 20 61 6d 62 69 67 75 6f 75 73 20 73 75   or ambiguous su
5e90: 62 63 6f 6d 6d 61 6e 64 20 22 73 22 3a 20 6d 75  bcommand "s": mu
5ea0: 73 74 20 62 65 20 61 72 67 73 2c 20 62 6f 64 79  st be args, body
5eb0: 2c 20 63 6c 61 73 73 2c 20 63 6d 64 63 6f 75 6e  , class, cmdcoun
5ec0: 74 2c 20 63 6f 6d 6d 61 6e 64 73 2c 20 63 6f 6d  t, commands, com
5ed0: 70 6c 65 74 65 2c 20 63 6f 72 6f 75 74 69 6e 65  plete, coroutine
5ee0: 2c 20 64 65 66 61 75 6c 74 2c 20 65 72 72 6f 72  , default, error
5ef0: 73 74 61 63 6b 2c 20 65 78 69 73 74 73 2c 20 66  stack, exists, f
5f00: 72 61 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 73 2c  rame, functions,
5f10: 20 67 6c 6f 62 61 6c 73 2c 20 68 6f 73 74 6e 61   globals, hostna
5f20: 6d 65 2c 20 6c 65 76 65 6c 2c 20 6c 69 62 72 61  me, level, libra
5f30: 72 79 2c 20 6c 6f 61 64 65 64 2c 20 6c 6f 63 61  ry, loaded, loca
5f40: 6c 73 2c 20 6e 61 6d 65 6f 66 65 78 65 63 75 74  ls, nameofexecut
5f50: 61 62 6c 65 2c 20 6f 62 6a 65 63 74 2c 20 70 61  able, object, pa
5f60: 74 63 68 6c 65 76 65 6c 2c 20 70 72 6f 63 73 2c  tchlevel, procs,
5f70: 20 73 63 72 69 70 74 2c 20 73 68 61 72 65 64 6c   script, sharedl
5f80: 69 62 65 78 74 65 6e 73 69 6f 6e 2c 20 74 63 6c  ibextension, tcl
5f90: 76 65 72 73 69 6f 6e 2c 20 6f 72 20 76 61 72 73  version, or vars
5fa0: 7d 0a 20 0a 20 23 23 0a 20 23 20 23 23 23 20 23  }. . ##. # ### #
5fb0: 23 23 20 23 23 23 20 23 23 23 23 23 23 23 23 23  ## ### #########
5fc0: 20 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23   ######### #####
5fd0: 23 23 23 23 0a 49 6e 64 65 78 3a 20 74 65 73 74  ####.Index: test
5fe0: 73 2f 69 6e 69 74 2e 74 65 73 74 0a 3d 3d 3d 3d  s/init.test.====
5ff0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6000: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6010: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
6030: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
6040: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73  ot/tcl/tcl/tests
6050: 2f 69 6e 69 74 2e 74 65 73 74 2c 76 0a 72 65 74  /init.test,v.ret
6060: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
6070: 20 31 2e 32 31 0a 64 69 66 66 20 2d 75 20 2d 70   1.21.diff -u -p
6080: 20 2d 75 20 2d 70 20 2d 72 31 2e 32 31 20 69 6e   -u -p -r1.21 in
6090: 69 74 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74  it.test.--- test
60a0: 73 2f 69 6e 69 74 2e 74 65 73 74 09 31 36 20 4e  s/init.test.16 N
60b0: 6f 76 20 32 30 30 39 20 31 38 3a 30 30 3a 31 31  ov 2009 18:00:11
60c0: 20 2d 30 30 30 30 09 31 2e 32 31 0a 2b 2b 2b 20   -0000.1.21.+++ 
60d0: 74 65 73 74 73 2f 69 6e 69 74 2e 74 65 73 74 09  tests/init.test.
60e0: 32 34 20 4d 61 72 20 32 30 31 30 20 31 35 3a 35  24 Mar 2010 15:5
60f0: 35 3a 34 39 20 2d 30 30 30 30 0a 40 40 20 2d 31  5:49 -0000.@@ -1
6100: 38 31 2c 37 20 2b 31 38 31 2c 37 20 40 40 20 74  81,7 +181,7 @@ t
6110: 65 73 74 20 69 6e 69 74 2d 35 2e 30 20 7b 72 65  est init-5.0 {re
6120: 74 75 72 6e 20 6f 70 74 69 6f 6e 73 20 70 61 73  turn options pas
6130: 73 65 64 20 74 68 72 0a 20 20 20 20 20 6c 69 73  sed thr.     lis
6140: 74 20 24 63 6f 64 65 20 24 66 6f 6f 20 24 62 61  t $code $foo $ba
6150: 72 20 24 63 6f 64 65 32 20 24 66 6f 6f 32 20 24  r $code2 $foo2 $
6160: 62 61 72 32 0a 20 7d 20 2d 63 6c 65 61 6e 75 70  bar2. } -cleanup
6170: 20 7b 0a 20 20 20 20 20 75 6e 73 65 74 20 3a 3a   {.     unset ::
6180: 61 75 74 6f 5f 69 6e 64 65 78 28 3a 3a 78 78 78  auto_index(::xxx
6190: 29 0a 2d 7d 20 2d 72 65 73 75 6c 74 20 7b 32 20  ).-} -result {2 
61a0: 78 78 78 20 7b 2d 65 72 72 6f 72 63 6f 64 65 20  xxx {-errorcode 
61b0: 4e 4f 4e 45 20 2d 63 6f 64 65 20 31 20 2d 6c 65  NONE -code 1 -le
61c0: 76 65 6c 20 31 7d 20 32 20 78 78 78 20 7b 2d 63  vel 1} 2 xxx {-c
61d0: 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20 31 20 2d  ode 1 -level 1 -
61e0: 65 72 72 6f 72 63 6f 64 65 20 4e 4f 4e 45 7d 7d  errorcode NONE}}
61f0: 0a 2b 7d 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20  .+} -match glob 
6200: 2d 72 65 73 75 6c 74 20 7b 32 20 78 78 78 20 7b  -result {2 xxx {
6210: 2d 65 72 72 6f 72 63 6f 64 65 20 4e 4f 4e 45 20  -errorcode NONE 
6220: 2d 63 6f 64 65 20 31 20 2d 6c 65 76 65 6c 20 31  -code 1 -level 1
6230: 7d 20 32 20 78 78 78 20 7b 2d 63 6f 64 65 20 31  } 2 xxx {-code 1
6240: 20 2d 6c 65 76 65 6c 20 31 20 2d 65 72 72 6f 72   -level 1 -error
6250: 63 6f 64 65 20 4e 4f 4e 45 7d 7d 0a 20 0c 0a 20  code NONE}}. .. 
6260: 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 20 7d 09  cleanupTests. }.
6270: 3b 23 20 20 45 6e 64 20 6f 66 20 5b 69 6e 74 65  ;#  End of [inte
6280: 72 70 20 65 76 61 6c 20 24 74 65 73 74 49 6e 74  rp eval $testInt
6290: 65 72 70 5d 0a 49 6e 64 65 78 3a 20 74 65 73 74  erp].Index: test
62a0: 73 2f 72 65 73 75 6c 74 2e 74 65 73 74 0a 3d 3d  s/result.test.==
62b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
62c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
62d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
62e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
62f0: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73  =.RCS file: /cvs
6300: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73  root/tcl/tcl/tes
6310: 74 73 2f 72 65 73 75 6c 74 2e 74 65 73 74 2c 76  ts/result.test,v
6320: 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69  .retrieving revi
6330: 73 69 6f 6e 20 31 2e 31 36 0a 64 69 66 66 20 2d  sion 1.16.diff -
6340: 75 20 2d 70 20 2d 75 20 2d 70 20 2d 72 31 2e 31  u -p -u -p -r1.1
6350: 36 20 72 65 73 75 6c 74 2e 74 65 73 74 0a 2d 2d  6 result.test.--
6360: 2d 20 74 65 73 74 73 2f 72 65 73 75 6c 74 2e 74  - tests/result.t
6370: 65 73 74 09 32 34 20 4d 61 72 20 32 30 31 30 20  est.24 Mar 2010 
6380: 31 35 3a 33 33 3a 31 34 20 2d 30 30 30 30 09 31  15:33:14 -0000.1
6390: 2e 31 36 0a 2b 2b 2b 20 74 65 73 74 73 2f 72 65  .16.+++ tests/re
63a0: 73 75 6c 74 2e 74 65 73 74 09 32 34 20 4d 61 72  sult.test.24 Mar
63b0: 20 32 30 31 30 20 31 35 3a 35 35 3a 34 39 20 2d   2010 15:55:49 -
63c0: 30 30 30 30 0a 40 40 20 2d 31 33 35 2c 36 20 2b  0000.@@ -135,6 +
63d0: 31 33 35 2c 31 30 20 40 40 20 74 65 73 74 20 72  135,10 @@ test r
63e0: 65 73 75 6c 74 2d 36 2e 33 20 7b 42 75 67 20 32  esult-6.3 {Bug 2
63f0: 33 38 33 30 30 35 7d 20 7b 0a 20 20 20 20 20 20  383005} {.      
6400: 63 61 74 63 68 20 7b 72 65 74 75 72 6e 20 2d 63  catch {return -c
6410: 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72 6f 72  ode error -error
6420: 63 6f 64 65 20 7b 7b 7d 61 7d 20 65 65 6b 7d 20  code {{}a} eek} 
6430: 6d 0a 20 20 20 20 20 20 73 65 74 20 6d 0a 20 7d  m.      set m. }
6440: 20 7b 62 61 64 20 2d 65 72 72 6f 72 63 6f 64 65   {bad -errorcode
6450: 20 76 61 6c 75 65 3a 20 65 78 70 65 63 74 65 64   value: expected
6460: 20 61 20 6c 69 73 74 20 62 75 74 20 67 6f 74 20   a list but got 
6470: 22 7b 7d 61 22 7d 0a 2b 74 65 73 74 20 72 65 73  "{}a"}.+test res
6480: 75 6c 74 2d 36 2e 34 20 7b 6e 6f 6e 2d 6c 69 73  ult-6.4 {non-lis
6490: 74 20 2d 65 72 72 6f 72 73 74 61 63 6b 7d 20 7b  t -errorstack} {
64a0: 0a 2b 20 20 20 20 20 63 61 74 63 68 20 7b 72 65  .+     catch {re
64b0: 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72  turn -code error
64c0: 20 2d 65 72 72 6f 72 73 74 61 63 6b 20 7b 7b 7d   -errorstack {{}
64d0: 61 7d 20 65 65 6b 7d 20 6d 20 6f 0a 2b 20 20 20  a} eek} m o.+   
64e0: 20 20 6c 69 73 74 20 24 6d 20 5b 64 69 63 74 20    list $m [dict 
64f0: 67 65 74 20 24 6f 20 2d 65 72 72 6f 72 63 6f 64  get $o -errorcod
6500: 65 5d 20 5b 64 69 63 74 20 67 65 74 20 24 6f 20  e] [dict get $o 
6510: 2d 65 72 72 6f 72 73 74 61 63 6b 5d 0a 2b 7d 20  -errorstack].+} 
6520: 7b 7b 62 61 64 20 2d 65 72 72 6f 72 73 74 61 63  {{bad -errorstac
6530: 6b 20 76 61 6c 75 65 3a 20 65 78 70 65 63 74 65  k value: expecte
6540: 64 20 61 20 6c 69 73 74 20 62 75 74 20 67 6f 74  d a list but got
6550: 20 22 7b 7d 61 22 7d 20 7b 54 43 4c 20 52 45 53   "{}a"} {TCL RES
6560: 55 4c 54 20 4e 4f 4e 4c 49 53 54 5f 45 52 52 4f  ULT NONLIST_ERRO
6570: 52 53 54 41 43 4b 7d 20 7b 7d 7d 0a 20 23 20 63  RSTACK} {}}. # c
6580: 6c 65 61 6e 75 70 0a 20 63 6c 65 61 6e 75 70 54  leanup. cleanupT
6590: 65 73 74 73 0a 20 72 65 74 75 72 6e 0a           ests. return.