Attachment "1275435.patch" to
ticket [1275435fff]
added by
dgp
2006-01-18 23:38:01.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d 65 73 Index: doc/names
0010: 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d pace.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 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 73 70 l/tcl/doc/namesp
0080: 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 ace.n,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 38 ng revision 1.18
00a0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 38 20 .diff -u -r1.18
00b0: 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d 2d 20 namespace.n.---
00c0: 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e 6e 09 doc/namespace.n.
00d0: 33 30 20 4d 61 79 20 32 30 30 35 20 30 30 3a 30 30 May 2005 00:0
00e0: 34 3a 34 35 20 2d 30 30 30 30 09 31 2e 31 38 0a 4:45 -0000.1.18.
00f0: 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 +++ doc/namespac
0100: 65 2e 6e 09 31 38 20 4a 61 6e 20 32 30 30 36 20 e.n.18 Jan 2006
0110: 31 36 3a 33 37 3a 30 31 20 2d 30 30 30 30 0a 40 16:37:01 -0000.@
0120: 40 20 2d 32 34 39 2c 36 20 2b 32 34 39 2c 31 33 @ -249,6 +249,13
0130: 20 40 40 0a 20 49 74 20 64 6f 65 73 20 6e 6f 74 @@. It does not
0140: 20 63 68 65 63 6b 20 77 68 65 74 68 65 72 20 74 check whether t
0150: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 6e 61 6d he namespace nam
0160: 65 73 20 61 72 65 2c 20 69 6e 20 66 61 63 74 2c es are, in fact,
0170: 0a 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 63 . the names of c
0180: 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 urrently defined
0190: 20 6e 61 6d 65 73 70 61 63 65 73 2e 0a 20 2e 54 namespaces.. .T
01a0: 50 0a 2b 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 P.+\fBnamespace
01b0: 75 70 76 61 72 5c 66 52 20 5c 66 49 6e 61 6d 65 upvar\fR \fIname
01c0: 73 70 61 63 65 5c 66 52 20 5c 66 49 6f 74 68 65 space\fR \fIothe
01d0: 72 56 61 72 20 6d 79 56 61 72 20 5c 66 52 3f 5c rVar myVar \fR?\
01e0: 66 49 6f 74 68 65 72 56 61 72 20 6d 79 56 61 72 fIotherVar myVar
01f0: 20 5c 66 52 2e 2e 2e 0a 2b 54 68 69 73 20 63 6f \fR....+This co
0200: 6d 6d 61 6e 64 20 61 72 72 61 6e 67 65 73 20 66 mmand arranges f
0210: 6f 72 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6c or one or more l
0220: 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 73 20 69 ocal variables i
0230: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 2b 70 n the current.+p
0240: 72 6f 63 65 64 75 72 65 20 74 6f 20 72 65 66 65 rocedure to refe
0250: 72 20 74 6f 20 76 61 72 69 61 62 6c 65 73 20 69 r to variables i
0260: 6e 20 5c 66 49 6e 61 6d 65 73 70 61 63 65 5c 66 n \fInamespace\f
0270: 52 2e 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 0a R. The command .
0280: 2b 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 75 70 +\fBnamespace up
0290: 76 61 72 20 24 6e 73 20 61 20 62 5c 66 52 20 68 var $ns a b\fR h
02a0: 61 73 20 74 68 65 20 73 61 6d 65 20 62 65 68 61 as the same beha
02b0: 76 69 6f 75 72 20 61 73 0a 2b 5c 66 42 75 70 76 viour as.+\fBupv
02c0: 61 72 20 30 20 24 6e 73 3a 3a 61 20 62 5c 66 52 ar 0 $ns::a b\fR
02d0: 2e 20 20 0a 2b 5c 66 42 6e 61 6d 65 73 70 61 63 . .+\fBnamespac
02e0: 65 20 75 70 76 61 72 5c 66 52 20 72 65 74 75 72 e upvar\fR retur
02f0: 6e 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 ns an empty stri
0300: 6e 67 2e 0a 2b 2e 54 50 0a 20 5c 66 42 6e 61 6d ng..+.TP. \fBnam
0310: 65 73 70 61 63 65 20 77 68 69 63 68 5c 66 52 20 espace which\fR
0320: 3f 5c 2d 5c 66 42 63 6f 6d 6d 61 6e 64 5c 66 52 ?\-\fBcommand\fR
0330: 3f 20 3f 5c 2d 5c 66 42 76 61 72 69 61 62 6c 65 ? ?\-\fBvariable
0340: 5c 66 52 3f 20 5c 66 49 6e 61 6d 65 5c 66 52 0a \fR? \fIname\fR.
0350: 20 4c 6f 6f 6b 73 20 75 70 20 5c 66 49 6e 61 6d Looks up \fInam
0360: 65 5c 66 52 20 61 73 20 65 69 74 68 65 72 20 61 e\fR as either a
0370: 20 63 6f 6d 6d 61 6e 64 20 6f 72 20 76 61 72 69 command or vari
0380: 61 62 6c 65 0a 20 61 6e 64 20 72 65 74 75 72 6e able. and return
0390: 73 20 69 74 73 20 66 75 6c 6c 79 2d 71 75 61 6c s its fully-qual
03a0: 69 66 69 65 64 20 6e 61 6d 65 2e 0a 40 40 20 2d ified name..@@ -
03b0: 38 31 32 2c 37 20 2b 38 31 39 2c 37 20 40 40 0a 812,7 +819,7 @@.
03c0: 20 2e 43 45 0a 20 0a 20 2e 53 48 20 22 53 45 45 .CE. . .SH "SEE
03d0: 20 41 4c 53 4f 22 0a 2d 69 6e 74 65 72 70 28 6e ALSO".-interp(n
03e0: 29 2c 20 76 61 72 69 61 62 6c 65 28 6e 29 0a 2b ), variable(n).+
03f0: 69 6e 74 65 72 70 28 6e 29 2c 20 75 70 76 61 72 interp(n), upvar
0400: 28 6e 29 2c 20 76 61 72 69 61 62 6c 65 28 6e 29 (n), variable(n)
0410: 0a 20 0a 20 2e 53 48 20 4b 45 59 57 4f 52 44 53 . . .SH KEYWORDS
0420: 0a 20 63 6f 6d 6d 61 6e 64 2c 20 65 6e 73 65 6d . command, ensem
0430: 62 6c 65 2c 20 65 78 70 6f 72 74 65 64 2c 20 69 ble, exported, i
0440: 6e 74 65 72 6e 61 6c 2c 20 76 61 72 69 61 62 6c nternal, variabl
0450: 65 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 e.Index: generic
0460: 2f 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d /tclInt.h.======
0470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0480: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
04a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 =============.RC
04b0: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 S file: /cvsroot
04c0: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 /tcl/tcl/generic
04d0: 2f 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 /tclInt.h,v.retr
04e0: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 ieving revision
04f0: 31 2e 32 36 34 0a 64 69 66 66 20 2d 75 20 2d 72 1.264.diff -u -r
0500: 31 2e 32 36 34 20 74 63 6c 49 6e 74 2e 68 0a 2d 1.264 tclInt.h.-
0510: 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e -- generic/tclIn
0520: 74 2e 68 09 32 37 20 44 65 63 20 32 30 30 35 20 t.h.27 Dec 2005
0530: 32 30 3a 31 34 3a 30 39 20 2d 30 30 30 30 09 31 20:14:09 -0000.1
0540: 2e 32 36 34 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 .264.+++ generic
0550: 2f 74 63 6c 49 6e 74 2e 68 09 31 38 20 4a 61 6e /tclInt.h.18 Jan
0560: 20 32 30 30 36 20 31 36 3a 33 37 3a 30 32 20 2d 2006 16:37:02 -
0570: 30 30 30 30 0a 40 40 20 2d 32 31 31 38 2c 36 20 0000.@@ -2118,6
0580: 2b 32 31 31 38 2c 39 20 40 40 0a 20 4d 4f 44 55 +2118,9 @@. MODU
0590: 4c 45 5f 53 43 4f 50 45 20 69 6e 74 09 54 63 6c LE_SCOPE int.Tcl
05a0: 4f 62 6a 49 6e 76 6f 6b 65 4e 61 6d 65 73 70 61 ObjInvokeNamespa
05b0: 63 65 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 ce(Tcl_Interp *i
05c0: 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20 20 69 nterp,. ... i
05d0: 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a nt objc, Tcl_Obj
05e0: 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 2c 0a *CONST objv[],.
05f0: 20 09 09 09 20 20 20 20 54 63 6c 5f 4e 61 6d 65 ... Tcl_Name
0600: 73 70 61 63 65 20 2a 6e 73 50 74 72 2c 20 69 6e space *nsPtr, in
0610: 74 20 66 6c 61 67 73 29 3b 0a 2b 4d 4f 44 55 4c t flags);.+MODUL
0620: 45 5f 53 43 4f 50 45 20 69 6e 74 09 54 63 6c 50 E_SCOPE int.TclP
0630: 74 72 4d 61 6b 65 55 70 76 61 72 20 28 54 63 6c trMakeUpvar (Tcl
0640: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c _Interp *interp,
0650: 0a 2b 09 09 09 20 20 20 20 56 61 72 20 2a 6f 74 .+... Var *ot
0660: 68 65 72 50 31 50 74 72 2c 20 43 4f 4e 53 54 20 herP1Ptr, CONST
0670: 63 68 61 72 20 2a 6d 79 4e 61 6d 65 2c 0a 2b 09 char *myName,.+.
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0690: 20 20 20 20 69 6e 74 20 6d 79 46 6c 61 67 73 2c int myFlags,
06a0: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0a 20 4d 4f int index);. MO
06b0: 44 55 4c 45 5f 53 43 4f 50 45 20 69 6e 74 09 54 DULE_SCOPE int.T
06c0: 63 6c 4f 62 6a 50 72 69 6e 74 66 28 54 63 6c 5f clObjPrintf(Tcl_
06d0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 Interp *interp,
06e0: 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 2c Tcl_Obj *objPtr,
06f0: 0a 20 09 09 09 20 20 20 20 43 4f 4e 53 54 20 63 . ... CONST c
0700: 68 61 72 20 2a 66 6f 72 6d 61 74 2c 20 2e 2e 2e har *format, ...
0710: 29 3b 0a 20 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 );. MODULE_SCOPE
0720: 20 69 6e 74 09 54 63 6c 50 61 72 73 65 42 61 63 int.TclParseBac
0730: 6b 73 6c 61 73 68 28 43 4f 4e 53 54 20 63 68 61 kslash(CONST cha
0740: 72 20 2a 73 72 63 2c 0a 49 6e 64 65 78 3a 20 67 r *src,.Index: g
0750: 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 eneric/tclNamesp
0760: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .c.=============
0770: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0780: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0790: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
07a0: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a ======.RCS file:
07b0: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 /cvsroot/tcl/tc
07c0: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d l/generic/tclNam
07d0: 65 73 70 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 esp.c,v.retrievi
07e0: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 39 31 ng revision 1.91
07f0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 39 31 20 .diff -u -r1.91
0800: 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 2d 2d 2d 20 tclNamesp.c.---
0810: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 generic/tclNames
0820: 70 2e 63 09 31 31 20 4a 61 6e 20 32 30 30 36 20 p.c.11 Jan 2006
0830: 31 37 3a 33 34 3a 35 33 20 2d 30 30 30 30 09 31 17:34:53 -0000.1
0840: 2e 39 31 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f .91.+++ generic/
0850: 74 63 6c 4e 61 6d 65 73 70 2e 63 09 31 38 20 4a tclNamesp.c.18 J
0860: 61 6e 20 32 30 30 36 20 31 36 3a 33 37 3a 30 32 an 2006 16:37:02
0870: 20 2d 30 30 30 30 0a 40 40 20 2d 32 32 38 2c 36 -0000.@@ -228,6
0880: 20 2b 32 32 38 2c 38 20 40 40 0a 20 09 09 09 20 +228,8 @@. ...
0890: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 Tcl_Interp *i
08a0: 6e 74 65 72 70 2c 69 6e 74 20 6f 62 6a 63 2c 54 nterp,int objc,T
08b0: 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 cl_Obj *CONST ob
08c0: 6a 76 5b 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 jv[]);. static i
08d0: 6e 74 09 09 4e 61 6d 65 73 70 61 63 65 54 61 69 nt..NamespaceTai
08e0: 6c 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 lCmd(ClientData
08f0: 64 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 dummy, Tcl_Inter
0900: 70 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 p *interp,. ...
0910: 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c int objc, Tcl
0920: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 _Obj *CONST objv
0930: 5b 5d 29 3b 0a 2b 73 74 61 74 69 63 20 69 6e 74 []);.+static int
0940: 09 09 4e 61 6d 65 73 70 61 63 65 55 70 76 61 72 ..NamespaceUpvar
0950: 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 Cmd(ClientData d
0960: 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 ummy, Tcl_Interp
0970: 20 2a 69 6e 74 65 72 70 2c 0a 2b 09 09 09 20 20 *interp,.+...
0980: 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f int objc, Tcl_
0990: 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b Obj *CONST objv[
09a0: 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 ]);. static int.
09b0: 09 4e 61 6d 65 73 70 61 63 65 57 68 69 63 68 43 .NamespaceWhichC
09c0: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 md(ClientData du
09d0: 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 20 mmy, Tcl_Interp
09e0: 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20 *interp,. ...
09f0: 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f int objc, Tcl_O
0a00: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d bj *CONST objv[]
0a10: 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 09 );. static int..
0a20: 53 65 74 4e 73 4e 61 6d 65 46 72 6f 6d 41 6e 79 SetNsNameFromAny
0a30: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 (Tcl_Interp *int
0a40: 65 72 70 2c 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 erp, Tcl_Obj *ob
0a50: 6a 50 74 72 29 3b 0a 40 40 20 2d 32 38 39 36 2c jPtr);.@@ -2896,
0a60: 31 33 20 2b 32 38 39 38 2c 31 33 20 40 40 0a 20 13 +2898,13 @@.
0a70: 09 22 63 68 69 6c 64 72 65 6e 22 2c 20 22 63 6f ."children", "co
0a80: 64 65 22 2c 20 22 63 75 72 72 65 6e 74 22 2c 20 de", "current",
0a90: 22 64 65 6c 65 74 65 22 2c 20 22 65 6e 73 65 6d "delete", "ensem
0aa0: 62 6c 65 22 2c 0a 20 09 22 65 76 61 6c 22 2c 20 ble",. ."eval",
0ab0: 22 65 78 69 73 74 73 22 2c 20 22 65 78 70 6f 72 "exists", "expor
0ac0: 74 22 2c 20 22 66 6f 72 67 65 74 22 2c 20 22 69 t", "forget", "i
0ad0: 6d 70 6f 72 74 22 2c 0a 20 09 22 69 6e 73 63 6f mport",. ."insco
0ae0: 70 65 22 2c 20 22 6f 72 69 67 69 6e 22 2c 20 22 pe", "origin", "
0af0: 70 61 72 65 6e 74 22 2c 20 22 70 61 74 68 22 2c parent", "path",
0b00: 20 22 71 75 61 6c 69 66 69 65 72 73 22 2c 0a 2d "qualifiers",.-
0b10: 09 22 74 61 69 6c 22 2c 20 22 77 68 69 63 68 22 ."tail", "which"
0b20: 2c 20 4e 55 4c 4c 0a 2b 09 22 74 61 69 6c 22 2c , NULL.+."tail",
0b30: 20 22 75 70 76 61 72 22 2c 20 22 77 68 69 63 68 "upvar", "which
0b40: 22 2c 20 4e 55 4c 4c 0a 20 20 20 20 20 7d 3b 0a ", NULL. };.
0b50: 20 20 20 20 20 65 6e 75 6d 20 4e 53 53 75 62 43 enum NSSubC
0b60: 6d 64 49 64 78 20 7b 0a 20 09 4e 53 43 68 69 6c mdIdx {. .NSChil
0b70: 64 72 65 6e 49 64 78 2c 20 4e 53 43 6f 64 65 49 drenIdx, NSCodeI
0b80: 64 78 2c 20 4e 53 43 75 72 72 65 6e 74 49 64 78 dx, NSCurrentIdx
0b90: 2c 20 4e 53 44 65 6c 65 74 65 49 64 78 2c 20 4e , NSDeleteIdx, N
0ba0: 53 45 6e 73 65 6d 62 6c 65 49 64 78 2c 0a 20 09 SEnsembleIdx,. .
0bb0: 4e 53 45 76 61 6c 49 64 78 2c 20 4e 53 45 78 69 NSEvalIdx, NSExi
0bc0: 73 74 73 49 64 78 2c 20 4e 53 45 78 70 6f 72 74 stsIdx, NSExport
0bd0: 49 64 78 2c 20 4e 53 46 6f 72 67 65 74 49 64 78 Idx, NSForgetIdx
0be0: 2c 20 4e 53 49 6d 70 6f 72 74 49 64 78 2c 0a 20 , NSImportIdx,.
0bf0: 09 4e 53 49 6e 73 63 6f 70 65 49 64 78 2c 20 4e .NSInscopeIdx, N
0c00: 53 4f 72 69 67 69 6e 49 64 78 2c 20 4e 53 50 61 SOriginIdx, NSPa
0c10: 72 65 6e 74 49 64 78 2c 20 4e 53 50 61 74 68 49 rentIdx, NSPathI
0c20: 64 78 2c 20 4e 53 51 75 61 6c 69 66 69 65 72 73 dx, NSQualifiers
0c30: 49 64 78 2c 0a 2d 09 4e 53 54 61 69 6c 49 64 78 Idx,.-.NSTailIdx
0c40: 2c 20 4e 53 57 68 69 63 68 49 64 78 0a 2b 09 4e , NSWhichIdx.+.N
0c50: 53 54 61 69 6c 49 64 78 2c 20 4e 53 55 70 76 61 STailIdx, NSUpva
0c60: 72 49 64 78 2c 20 4e 53 57 68 69 63 68 49 64 78 rIdx, NSWhichIdx
0c70: 0a 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 69 6e . };. in
0c80: 74 20 69 6e 64 65 78 2c 20 72 65 73 75 6c 74 3b t index, result;
0c90: 0a 20 0a 40 40 20 2d 32 39 36 39 2c 36 20 2b 32 . .@@ -2969,6 +2
0ca0: 39 37 31 2c 39 20 40 40 0a 20 09 62 72 65 61 6b 971,9 @@. .break
0cb0: 3b 0a 20 20 20 20 20 63 61 73 65 20 4e 53 54 61 ;. case NSTa
0cc0: 69 6c 49 64 78 3a 0a 20 09 72 65 73 75 6c 74 20 ilIdx:. .result
0cd0: 3d 20 4e 61 6d 65 73 70 61 63 65 54 61 69 6c 43 = NamespaceTailC
0ce0: 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 md(clientData, i
0cf0: 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62 6a nterp, objc, obj
0d00: 76 29 3b 0a 2b 09 62 72 65 61 6b 3b 09 0a 2b 20 v);.+.break;..+
0d10: 20 20 20 63 61 73 65 20 4e 53 55 70 76 61 72 49 case NSUpvarI
0d20: 64 78 3a 0a 2b 09 72 65 73 75 6c 74 20 3d 20 4e dx:.+.result = N
0d30: 61 6d 65 73 70 61 63 65 55 70 76 61 72 43 6d 64 amespaceUpvarCmd
0d40: 28 63 6c 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 (clientData, int
0d50: 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 erp, objc, objv)
0d60: 3b 0a 20 09 62 72 65 61 6b 3b 0a 20 20 20 20 20 ;. .break;.
0d70: 63 61 73 65 20 4e 53 57 68 69 63 68 49 64 78 3a case NSWhichIdx:
0d80: 0a 20 09 72 65 73 75 6c 74 20 3d 20 4e 61 6d 65 . .result = Name
0d90: 73 70 61 63 65 57 68 69 63 68 43 6d 64 28 63 6c spaceWhichCmd(cl
0da0: 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 ientData, interp
0db0: 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 40 , objc, objv);.@
0dc0: 40 20 2d 34 33 33 32 2c 36 20 2b 34 33 33 37 2c @ -4332,6 +4337,
0dd0: 38 31 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 81 @@. /*. *---
0de0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0e20: 2d 2d 2d 0a 20 20 2a 0a 2b 20 2a 20 4e 61 6d 65 ---. *.+ * Name
0e30: 73 70 61 63 65 55 70 76 61 72 43 6d 64 20 2d 2d spaceUpvarCmd --
0e40: 0a 2b 20 2a 0a 2b 20 2a 09 49 6e 76 6f 6b 65 64 .+ *.+ *.Invoked
0e50: 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 to implement th
0e60: 65 20 22 6e 61 6d 65 73 70 61 63 65 20 75 70 76 e "namespace upv
0e70: 61 72 22 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 61 ar" command, tha
0e80: 74 20 63 72 65 61 74 65 73 0a 2b 20 2a 09 76 61 t creates.+ *.va
0e90: 72 69 61 62 6c 65 73 20 69 6e 20 74 68 65 20 63 riables in the c
0ea0: 75 72 72 65 6e 74 20 73 63 6f 70 65 20 6c 69 6e urrent scope lin
0eb0: 6b 65 64 20 74 6f 20 76 61 72 69 61 62 6c 65 73 ked to variables
0ec0: 20 69 6e 20 61 6e 6f 74 68 65 72 0a 2b 20 2a 09 in another.+ *.
0ed0: 6e 61 6d 65 73 70 61 63 65 2e 20 48 61 6e 64 6c namespace. Handl
0ee0: 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 es the following
0ef0: 20 73 79 6e 74 61 78 3a 0a 2b 20 2a 0a 2b 20 2a syntax:.+ *.+ *
0f00: 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 75 . namespace u
0f10: 70 76 61 72 20 6e 73 20 6f 74 68 65 72 56 61 72 pvar ns otherVar
0f20: 20 6d 79 56 61 72 20 3f 6f 74 68 65 72 56 61 72 myVar ?otherVar
0f30: 20 6d 79 56 61 72 20 2e 2e 2e 3f 0a 2b 20 2a 0a myVar ...?.+ *.
0f40: 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a + * Results:.+ *
0f50: 09 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f 4b 20 .Returns TCL_OK
0f60: 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 61 if successful, a
0f70: 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 69 66 20 nd TCL_ERROR if
0f80: 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 20 77 72 anything goes wr
0f90: 6f 6e 67 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 ong..+ *.+ * Sid
0fa0: 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 43 e effects:.+ *.C
0fb0: 72 65 61 74 65 73 20 6e 65 77 20 76 61 72 69 61 reates new varia
0fc0: 62 6c 65 73 20 69 6e 20 74 68 65 20 63 75 72 72 bles in the curr
0fd0: 65 6e 74 20 73 63 6f 70 65 2c 20 6c 69 6e 6b 65 ent scope, linke
0fe0: 64 20 74 6f 20 74 68 65 0a 2b 20 2a 20 20 20 20 d to the.+ *
0ff0: 20 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 corresponding
1000: 76 61 72 69 61 62 6c 65 73 20 69 6e 20 74 68 65 variables in the
1010: 20 73 74 69 70 75 6c 61 74 65 64 20 6e 6d 61 6d stipulated nmam
1020: 65 73 70 61 63 65 2e 0a 2b 20 2a 20 20 20 20 20 espace..+ *
1030: 20 49 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 If anything goe
1040: 73 20 77 72 6f 6e 67 2c 20 74 68 65 20 72 65 73 s wrong, the res
1050: 75 6c 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 ult is an error
1060: 6d 65 73 73 61 67 65 2e 0a 2b 20 2a 0a 2b 20 2a message..+ *.+ *
1070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
10a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
10b0: 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 73 ------.+ */.+.+s
10c0: 74 61 74 69 63 20 69 6e 74 0a 2b 4e 61 6d 65 73 tatic int.+Names
10d0: 70 61 63 65 55 70 76 61 72 43 6d 64 28 64 75 6d paceUpvarCmd(dum
10e0: 6d 79 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 my, interp, objc
10f0: 2c 20 6f 62 6a 76 29 0a 2b 20 20 20 20 43 6c 69 , objv).+ Cli
1100: 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 3b 09 09 entData dummy;..
1110: 09 2f 2a 20 4e 6f 74 20 75 73 65 64 2e 20 2a 2f ./* Not used. */
1120: 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 .+ Tcl_Interp
1130: 20 2a 69 6e 74 65 72 70 3b 09 09 09 2f 2a 20 43 *interp;.../* C
1140: 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 urrent interpret
1150: 65 72 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 er. */.+ int
1160: 6f 62 6a 63 3b 09 09 09 09 2f 2a 20 4e 75 6d 62 objc;..../* Numb
1170: 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e er of arguments.
1180: 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a */.+ Tcl_Obj
1190: 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 3b 09 *CONST objv[];.
11a0: 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 6f 62 6a ./* Argument obj
11b0: 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 ects. */.+{.+
11c0: 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a Tcl_Namespace *
11d0: 6e 73 50 74 72 3b 0a 2b 20 20 20 20 69 6e 74 20 nsPtr;.+ int
11e0: 72 65 73 75 6c 74 3b 0a 2b 20 20 20 20 56 61 72 result;.+ Var
11f0: 20 2a 6f 74 68 65 72 50 74 72 2c 20 2a 61 72 72 *otherPtr, *arr
1200: 61 79 50 74 72 3b 0a 2b 20 20 20 20 63 68 61 72 ayPtr;.+ char
1210: 20 2a 6d 79 4e 61 6d 65 3b 0a 2b 20 20 20 20 43 *myName;.+ C
1220: 61 6c 6c 46 72 61 6d 65 20 66 72 61 6d 65 2c 20 allFrame frame,
1230: 2a 66 72 61 6d 65 50 74 72 20 3d 20 26 66 72 61 *framePtr = &fra
1240: 6d 65 3b 0a 2b 20 20 20 20 0a 2b 20 20 20 20 69 me;.+ .+ i
1250: 66 20 28 6f 62 6a 63 20 3c 20 35 20 7c 7c 20 21 f (objc < 5 || !
1260: 28 6f 62 6a 63 20 26 20 31 29 29 20 7b 0a 2b 09 (objc & 1)) {.+.
1270: 54 63 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 Tcl_WrongNumArgs
1280: 28 69 6e 74 65 72 70 2c 20 32 2c 20 6f 62 6a 76 (interp, 2, objv
1290: 2c 20 22 6e 73 20 6f 74 68 65 72 56 61 72 20 6d , "ns otherVar m
12a0: 79 56 61 72 20 3f 6f 74 68 65 72 56 61 72 20 6d yVar ?otherVar m
12b0: 79 56 61 72 20 2e 2e 2e 3f 22 29 3b 0a 2b 09 72 yVar ...?");.+.r
12c0: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b eturn TCL_ERROR;
12d0: 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 72 .+ }.+.+ r
12e0: 65 73 75 6c 74 20 3d 20 54 63 6c 47 65 74 4e 61 esult = TclGetNa
12f0: 6d 65 73 70 61 63 65 46 72 6f 6d 4f 62 6a 28 69 mespaceFromObj(i
1300: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 32 5d 2c 20 nterp, objv[2],
1310: 26 6e 73 50 74 72 29 3b 0a 2b 20 20 20 20 69 66 &nsPtr);.+ if
1320: 20 28 72 65 73 75 6c 74 20 21 3d 20 54 43 4c 5f (result != TCL_
1330: 4f 4b 29 20 7b 0a 2b 09 72 65 74 75 72 6e 20 54 OK) {.+.return T
1340: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d CL_ERROR;.+ }
1350: 0a 2b 0a 2b 20 20 20 20 6f 62 6a 63 20 2d 3d 20 .+.+ objc -=
1360: 33 3b 0a 2b 20 20 20 20 6f 62 6a 76 20 2b 3d 20 3;.+ objv +=
1370: 33 3b 0a 2b 20 20 20 20 0a 2b 20 20 20 20 66 6f 3;.+ .+ fo
1380: 72 20 28 3b 20 6f 62 6a 63 3e 30 20 3b 20 6f 62 r (; objc>0 ; ob
1390: 6a 63 2d 3d 32 2c 20 6f 62 6a 76 2b 3d 32 29 20 jc-=2, objv+=2)
13a0: 7b 0a 2b 09 2f 2a 0a 2b 09 20 2a 20 4c 6f 63 61 {.+./*.+. * Loca
13b0: 74 65 20 74 68 65 20 6f 74 68 65 72 20 76 61 72 te the other var
13c0: 69 61 62 6c 65 0a 2b 09 20 2a 2f 0a 2b 09 54 63 iable.+. */.+.Tc
13d0: 6c 5f 50 75 73 68 43 61 6c 6c 46 72 61 6d 65 28 l_PushCallFrame(
13e0: 69 6e 74 65 72 70 2c 20 28 54 63 6c 5f 43 61 6c interp, (Tcl_Cal
13f0: 6c 46 72 61 6d 65 20 2a 29 20 66 72 61 6d 65 50 lFrame *) frameP
1400: 74 72 2c 20 6e 73 50 74 72 2c 20 30 29 3b 0a 2b tr, nsPtr, 0);.+
1410: 09 6f 74 68 65 72 50 74 72 20 3d 20 54 63 6c 4f .otherPtr = TclO
1420: 62 6a 4c 6f 6f 6b 75 70 56 61 72 28 69 6e 74 65 bjLookupVar(inte
1430: 72 70 2c 20 6f 62 6a 76 5b 30 5d 2c 20 4e 55 4c rp, objv[0], NUL
1440: 4c 2c 0a 2b 09 09 28 54 43 4c 5f 4e 41 4d 45 53 L,.+..(TCL_NAMES
1450: 50 41 43 45 5f 4f 4e 4c 59 20 7c 20 54 43 4c 5f PACE_ONLY | TCL_
1460: 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 29 2c 20 LEAVE_ERR_MSG),
1470: 22 61 63 63 65 73 73 22 2c 0a 2b 09 09 2f 2a 63 "access",.+../*c
1480: 72 65 61 74 65 50 61 72 74 31 2a 2f 20 31 2c 20 reatePart1*/ 1,
1490: 2f 2a 63 72 65 61 74 65 50 61 72 74 32 2a 2f 20 /*createPart2*/
14a0: 31 2c 20 26 61 72 72 61 79 50 74 72 29 3b 0a 2b 1, &arrayPtr);.+
14b0: 09 69 66 20 28 6f 74 68 65 72 50 74 72 20 3d 3d .if (otherPtr ==
14c0: 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 20 72 NULL) {.+. r
14d0: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b eturn TCL_ERROR;
14e0: 0a 2b 09 7d 0a 2b 09 54 63 6c 5f 50 6f 70 43 61 .+.}.+.Tcl_PopCa
14f0: 6c 6c 46 72 61 6d 65 28 69 6e 74 65 72 70 29 3b llFrame(interp);
1500: 0a 2b 0a 2b 09 2f 2a 0a 2b 09 20 2a 20 43 72 65 .+.+./*.+. * Cre
1510: 61 74 65 20 74 68 65 20 6e 65 77 20 76 61 72 69 ate the new vari
1520: 61 62 6c 65 20 61 6e 64 20 6c 69 6e 6b 20 69 74 able and link it
1530: 20 74 6f 20 6f 74 68 65 72 50 74 72 0a 2b 09 20 to otherPtr.+.
1540: 2a 2f 0a 2b 09 0a 2b 09 6d 79 4e 61 6d 65 20 3d */.+..+.myName =
1550: 20 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f 62 TclGetString(ob
1560: 6a 76 5b 31 5d 29 3b 0a 2b 09 72 65 73 75 6c 74 jv[1]);.+.result
1570: 20 3d 20 54 63 6c 50 74 72 4d 61 6b 65 55 70 76 = TclPtrMakeUpv
1580: 61 72 28 69 6e 74 65 72 70 2c 20 6f 74 68 65 72 ar(interp, other
1590: 50 74 72 2c 20 6d 79 4e 61 6d 65 2c 20 30 2c 20 Ptr, myName, 0,
15a0: 2d 31 29 3b 0a 2b 09 69 66 20 28 72 65 73 75 6c -1);.+.if (resul
15b0: 74 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b t != TCL_OK) {.+
15c0: 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f . return TCL_
15d0: 45 52 52 4f 52 3b 0a 2b 09 7d 0a 2b 20 20 20 20 ERROR;.+.}.+
15e0: 7d 0a 2b 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 }.+.+ return
15f0: 54 43 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f TCL_OK;.+}.+..+/
1600: 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *.+ *-----------
1610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1630: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a -----------.+ *.
1650: 20 20 2a 20 4e 61 6d 65 73 70 61 63 65 57 68 69 * NamespaceWhi
1660: 63 68 43 6d 64 20 2d 2d 0a 20 20 2a 0a 20 20 2a chCmd --. *. *
1670: 09 49 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 6c .Invoked to impl
1680: 65 6d 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 73 ement the "names
1690: 70 61 63 65 20 77 68 69 63 68 22 20 63 6f 6d 6d pace which" comm
16a0: 61 6e 64 20 74 68 61 74 20 72 65 74 75 72 6e 73 and that returns
16b0: 20 74 68 65 0a 49 6e 64 65 78 3a 20 67 65 6e 65 the.Index: gene
16c0: 72 69 63 2f 74 63 6c 56 61 72 2e 63 0a 3d 3d 3d ric/tclVar.c.===
16d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
16e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
16f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1700: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1710: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
1720: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 oot/tcl/tcl/gene
1730: 72 69 63 2f 74 63 6c 56 61 72 2e 63 2c 76 0a 72 ric/tclVar.c,v.r
1740: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 etrieving revisi
1750: 6f 6e 20 31 2e 31 31 37 0a 64 69 66 66 20 2d 75 on 1.117.diff -u
1760: 20 2d 72 31 2e 31 31 37 20 74 63 6c 56 61 72 2e -r1.117 tclVar.
1770: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 c.--- generic/tc
1780: 6c 56 61 72 2e 63 09 32 37 20 4e 6f 76 20 32 30 lVar.c.27 Nov 20
1790: 30 35 20 30 32 3a 33 33 3a 34 39 20 2d 30 30 30 05 02:33:49 -000
17a0: 30 09 31 2e 31 31 37 0a 2b 2b 2b 20 67 65 6e 65 0.1.117.+++ gene
17b0: 72 69 63 2f 74 63 6c 56 61 72 2e 63 09 31 38 20 ric/tclVar.c.18
17c0: 4a 61 6e 20 32 30 30 36 20 31 36 3a 33 37 3a 30 Jan 2006 16:37:0
17d0: 33 20 2d 30 30 30 30 0a 40 40 20 2d 33 32 30 34 3 -0000.@@ -3204
17e0: 2c 31 30 20 2b 33 32 30 34 2c 38 20 40 40 0a 20 ,10 +3204,8 @@.
17f0: 09 09 09 09 20 2a 20 73 63 61 6c 61 72 2c 20 74 .... * scalar, t
1800: 68 69 73 20 69 73 20 69 74 73 20 69 6e 64 65 78 his is its index
1810: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 2d 31 20 . Otherwise, -1
1820: 2a 2f 0a 20 7b 0a 20 20 20 20 20 49 6e 74 65 72 */. {. Inter
1830: 70 20 2a 69 50 74 72 20 3d 20 28 49 6e 74 65 72 p *iPtr = (Inter
1840: 70 20 2a 29 20 69 6e 74 65 72 70 3b 0a 2d 20 20 p *) interp;.-
1850: 20 20 56 61 72 20 2a 6f 74 68 65 72 50 74 72 2c Var *otherPtr,
1860: 20 2a 76 61 72 50 74 72 2c 20 2a 61 72 72 61 79 *varPtr, *array
1870: 50 74 72 3b 0a 2b 20 20 20 20 56 61 72 20 2a 6f Ptr;.+ Var *o
1880: 74 68 65 72 50 74 72 2c 20 2a 61 72 72 61 79 50 therPtr, *arrayP
1890: 74 72 3b 0a 20 20 20 20 20 43 61 6c 6c 46 72 61 tr;. CallFra
18a0: 6d 65 20 2a 76 61 72 46 72 61 6d 65 50 74 72 3b me *varFramePtr;
18b0: 0a 2d 20 20 20 20 43 4f 4e 53 54 20 63 68 61 72 .- CONST char
18c0: 20 2a 65 72 72 4d 73 67 3b 0a 2d 20 20 20 20 43 *errMsg;.- C
18d0: 4f 4e 53 54 20 63 68 61 72 20 2a 70 3b 0a 20 0a ONST char *p;. .
18e0: 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 /*. *
18f0: 46 69 6e 64 20 22 6f 74 68 65 72 22 20 69 6e 20 Find "other" in
1900: 22 66 72 61 6d 65 50 74 72 22 2e 20 49 66 20 6e "framePtr". If n
1910: 6f 74 20 6c 6f 6f 6b 69 6e 67 20 75 70 20 6f 74 ot looking up ot
1920: 68 65 72 20 69 6e 20 6a 75 73 74 20 74 68 65 20 her in just the
1930: 63 75 72 72 65 6e 74 0a 40 40 20 2d 33 32 32 39 current.@@ -3229
1940: 2c 33 30 20 2b 33 32 32 37 2c 37 34 20 40 40 0a ,30 +3227,74 @@.
1950: 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 .return TCL_ERR
1960: 4f 52 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 OR;. }. .-
1970: 20 20 69 66 20 28 69 6e 64 65 78 20 3e 3d 20 30 if (index >= 0
1980: 29 20 7b 0a 2d 09 69 66 20 28 21 28 76 61 72 46 ) {.-.if (!(varF
1990: 72 61 6d 65 50 74 72 2d 3e 69 73 50 72 6f 63 43 ramePtr->isProcC
19a0: 61 6c 6c 46 72 61 6d 65 20 26 20 46 52 41 4d 45 allFrame & FRAME
19b0: 5f 49 53 5f 50 52 4f 43 29 29 20 7b 0a 2d 09 20 _IS_PROC)) {.-.
19c0: 20 20 20 54 63 6c 5f 50 61 6e 69 63 28 22 4f 62 Tcl_Panic("Ob
19d0: 6a 4d 61 6b 65 55 70 76 61 72 20 63 61 6c 6c 65 jMakeUpvar calle
19e0: 64 20 77 69 74 68 20 61 6e 20 69 6e 64 65 78 20 d with an index
19f0: 6f 75 74 73 69 64 65 20 66 72 6f 6d 20 61 20 70 outside from a p
1a00: 72 6f 63 2e 5c 6e 22 29 3b 0a 2d 09 7d 0a 2d 09 roc.\n");.-.}.-.
1a10: 76 61 72 50 74 72 20 3d 20 26 28 76 61 72 46 72 varPtr = &(varFr
1a20: 61 6d 65 50 74 72 2d 3e 63 6f 6d 70 69 6c 65 64 amePtr->compiled
1a30: 4c 6f 63 61 6c 73 5b 69 6e 64 65 78 5d 29 3b 0a Locals[index]);.
1a40: 2d 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2d 09 - } else {.-.
1a50: 2f 2a 0a 2d 09 20 2a 20 43 68 65 63 6b 20 74 68 /*.-. * Check th
1a60: 61 74 20 77 65 20 61 72 65 20 6e 6f 74 20 74 72 at we are not tr
1a70: 79 69 6e 67 20 74 6f 20 63 72 65 61 74 65 20 61 ying to create a
1a80: 20 6e 61 6d 65 73 70 61 63 65 20 76 61 72 20 6c namespace var l
1a90: 69 6e 6b 65 64 20 74 6f 20 61 0a 2d 09 20 2a 20 inked to a.-. *
1aa0: 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 20 69 local variable i
1ab0: 6e 20 61 20 70 72 6f 63 65 64 75 72 65 2e 20 49 n a procedure. I
1ac0: 66 20 77 65 20 61 6c 6c 6f 77 65 64 20 74 68 69 f we allowed thi
1ad0: 73 2c 20 74 68 65 20 6c 6f 63 61 6c 0a 2d 09 20 s, the local.-.
1ae0: 2a 20 76 61 72 69 61 62 6c 65 20 69 6e 20 74 68 * variable in th
1af0: 65 20 73 68 6f 72 74 65 72 2d 6c 69 76 65 64 20 e shorter-lived
1b00: 70 72 6f 63 65 64 75 72 65 20 66 72 61 6d 65 20 procedure frame
1b10: 63 6f 75 6c 64 20 67 6f 20 61 77 61 79 20 6c 65 could go away le
1b20: 61 76 69 6e 67 0a 2d 09 20 2a 20 74 68 65 20 6e aving.-. * the n
1b30: 61 6d 65 73 70 61 63 65 20 76 61 72 27 73 20 72 amespace var's r
1b40: 65 66 65 72 65 6e 63 65 20 69 6e 76 61 6c 69 64 eference invalid
1b50: 2e 0a 2d 09 20 2a 2f 0a 2b 20 20 20 20 2f 2a 0a ..-. */.+ /*.
1b60: 2b 20 20 20 20 20 2a 20 43 68 65 63 6b 20 74 68 + * Check th
1b70: 61 74 20 77 65 20 61 72 65 20 6e 6f 74 20 74 72 at we are not tr
1b80: 79 69 6e 67 20 74 6f 20 63 72 65 61 74 65 20 61 ying to create a
1b90: 20 6e 61 6d 65 73 70 61 63 65 20 76 61 72 20 6c namespace var l
1ba0: 69 6e 6b 65 64 20 74 6f 20 61 0a 2b 20 20 20 20 inked to a.+
1bb0: 20 2a 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c * local variabl
1bc0: 65 20 69 6e 20 61 20 70 72 6f 63 65 64 75 72 65 e in a procedure
1bd0: 2e 20 49 66 20 77 65 20 61 6c 6c 6f 77 65 64 20 . If we allowed
1be0: 74 68 69 73 2c 20 74 68 65 20 6c 6f 63 61 6c 0a this, the local.
1bf0: 2b 20 20 20 20 20 2a 20 76 61 72 69 61 62 6c 65 + * variable
1c00: 20 69 6e 20 74 68 65 20 73 68 6f 72 74 65 72 2d in the shorter-
1c10: 6c 69 76 65 64 20 70 72 6f 63 65 64 75 72 65 20 lived procedure
1c20: 66 72 61 6d 65 20 63 6f 75 6c 64 20 67 6f 20 61 frame could go a
1c30: 77 61 79 20 6c 65 61 76 69 6e 67 0a 2b 20 20 20 way leaving.+
1c40: 20 20 2a 20 74 68 65 20 6e 61 6d 65 73 70 61 63 * the namespac
1c50: 65 20 76 61 72 27 73 20 72 65 66 65 72 65 6e 63 e var's referenc
1c60: 65 20 69 6e 76 61 6c 69 64 2e 0a 2b 20 20 20 20 e invalid..+
1c70: 20 2a 2f 0a 20 0a 2b 20 20 20 20 69 66 20 28 69 */. .+ if (i
1c80: 6e 64 65 78 20 3c 20 30 29 20 7b 0a 20 09 69 66 ndex < 0) {. .if
1c90: 20 28 28 28 6f 74 68 65 72 50 32 20 3f 20 61 72 (((otherP2 ? ar
1ca0: 72 61 79 50 74 72 2d 3e 6e 73 50 74 72 20 3a 20 rayPtr->nsPtr :
1cb0: 6f 74 68 65 72 50 74 72 2d 3e 6e 73 50 74 72 29 otherPtr->nsPtr)
1cc0: 20 3d 3d 20 4e 55 4c 4c 29 0a 2d 09 20 20 20 20 == NULL).-.
1cd0: 26 26 20 28 28 6d 79 46 6c 61 67 73 20 26 20 28 && ((myFlags & (
1ce0: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 20 TCL_GLOBAL_ONLY
1cf0: 7c 20 54 43 4c 5f 4e 41 4d 45 53 50 41 43 45 5f | TCL_NAMESPACE_
1d00: 4f 4e 4c 59 29 29 0a 2d 09 09 7c 7c 20 28 76 61 ONLY)).-..|| (va
1d10: 72 46 72 61 6d 65 50 74 72 20 3d 3d 20 4e 55 4c rFramePtr == NUL
1d20: 4c 29 0a 2d 09 09 7c 7c 20 21 28 76 61 72 46 72 L).-..|| !(varFr
1d30: 61 6d 65 50 74 72 2d 3e 69 73 50 72 6f 63 43 61 amePtr->isProcCa
1d40: 6c 6c 46 72 61 6d 65 20 26 20 46 52 41 4d 45 5f llFrame & FRAME_
1d50: 49 53 5f 50 52 4f 43 29 0a 2d 09 09 7c 7c 20 28 IS_PROC).-..|| (
1d60: 73 74 72 73 74 72 28 6d 79 4e 61 6d 65 2c 20 22 strstr(myName, "
1d70: 3a 3a 22 29 20 21 3d 20 4e 55 4c 4c 29 29 29 20 ::") != NULL)))
1d80: 7b 0a 2b 09 09 26 26 20 28 28 6d 79 46 6c 61 67 {.+..&& ((myFlag
1d90: 73 20 26 20 28 54 43 4c 5f 47 4c 4f 42 41 4c 5f s & (TCL_GLOBAL_
1da0: 4f 4e 4c 59 20 7c 20 54 43 4c 5f 4e 41 4d 45 53 ONLY | TCL_NAMES
1db0: 50 41 43 45 5f 4f 4e 4c 59 29 29 0a 2b 09 09 09 PACE_ONLY)).+...
1dc0: 7c 7c 20 28 76 61 72 46 72 61 6d 65 50 74 72 20 || (varFramePtr
1dd0: 3d 3d 20 4e 55 4c 4c 29 0a 2b 09 09 09 7c 7c 20 == NULL).+...||
1de0: 21 28 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 69 !(varFramePtr->i
1df0: 73 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 20 26 sProcCallFrame &
1e00: 20 46 52 41 4d 45 5f 49 53 5f 50 52 4f 43 29 0a FRAME_IS_PROC).
1e10: 2b 09 09 09 7c 7c 20 28 73 74 72 73 74 72 28 6d +...|| (strstr(m
1e20: 79 4e 61 6d 65 2c 20 22 3a 3a 22 29 20 21 3d 20 yName, "::") !=
1e30: 4e 55 4c 4c 29 29 29 20 7b 0a 20 09 20 20 20 20 NULL))) {. .
1e40: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 Tcl_AppendResult
1e50: 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 20 ((Tcl_Interp *)
1e60: 69 50 74 72 2c 20 22 62 61 64 20 76 61 72 69 61 iPtr, "bad varia
1e70: 62 6c 65 20 6e 61 6d 65 20 5c 22 22 2c 0a 20 09 ble name \"",. .
1e80: 09 20 20 20 20 6d 79 4e 61 6d 65 2c 20 22 5c 22 . myName, "\"
1e90: 3a 20 75 70 76 61 72 20 77 6f 6e 27 74 20 63 72 : upvar won't cr
1ea0: 65 61 74 65 20 6e 61 6d 65 73 70 61 63 65 20 76 eate namespace v
1eb0: 61 72 69 61 62 6c 65 20 74 68 61 74 20 22 2c 0a ariable that ",.
1ec0: 20 09 09 20 20 20 20 22 72 65 66 65 72 73 20 74 .. "refers t
1ed0: 6f 20 70 72 6f 63 65 64 75 72 65 20 76 61 72 69 o procedure vari
1ee0: 61 62 6c 65 22 2c 20 4e 55 4c 4c 29 3b 0a 20 09 able", NULL);. .
1ef0: 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 return TCL_E
1f00: 52 52 4f 52 3b 0a 20 09 7d 0a 2b 20 20 20 20 7d RROR;. .}.+ }
1f10: 0a 20 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 . .+ return T
1f20: 63 6c 50 74 72 4d 61 6b 65 55 70 76 61 72 28 69 clPtrMakeUpvar(i
1f30: 6e 74 65 72 70 2c 20 6f 74 68 65 72 50 74 72 2c nterp, otherPtr,
1f40: 20 6d 79 4e 61 6d 65 2c 20 6d 79 46 6c 61 67 73 myName, myFlags
1f50: 2c 20 69 6e 64 65 78 29 3b 0a 2b 7d 0a 2b 0a 2b , index);.+}.+.+
1f60: 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d ..+/*.+ *-------
1f70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
1fb0: 2b 20 2a 0a 2b 20 2a 20 54 63 6c 50 74 72 4d 61 + *.+ * TclPtrMa
1fc0: 6b 65 55 70 76 61 72 20 2d 2d 0a 2b 20 2a 0a 2b keUpvar --.+ *.+
1fd0: 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64 75 72 *.This procedur
1fe0: 65 20 64 6f 65 73 20 61 6c 6c 20 6f 66 20 74 68 e does all of th
1ff0: 65 20 77 6f 72 6b 20 6f 66 20 74 68 65 20 22 67 e work of the "g
2000: 6c 6f 62 61 6c 22 20 61 6e 64 20 22 75 70 76 61 lobal" and "upva
2010: 72 22 0a 2b 20 2a 09 63 6f 6d 6d 61 6e 64 73 2e r".+ *.commands.
2020: 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 .+ *.+ * Results
2030: 3a 0a 2b 20 2a 09 41 20 73 74 61 6e 64 61 72 64 :.+ *.A standard
2040: 20 54 63 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 Tcl completion
2050: 63 6f 64 65 2e 20 49 66 20 61 6e 20 65 72 72 6f code. If an erro
2060: 72 20 6f 63 63 75 72 73 20 74 68 65 6e 20 61 6e r occurs then an
2070: 20 65 72 72 6f 72 0a 2b 20 2a 09 6d 65 73 73 61 error.+ *.messa
2080: 67 65 20 69 73 20 6c 65 66 74 20 69 6e 20 69 50 ge is left in iP
2090: 74 72 2d 3e 72 65 73 75 6c 74 2e 0a 2b 20 2a 0a tr->result..+ *.
20a0: 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 + * Side effects
20b0: 3a 0a 2b 20 2a 09 54 68 65 20 76 61 72 69 61 62 :.+ *.The variab
20c0: 6c 65 20 67 69 76 65 6e 20 62 79 20 6d 79 4e 61 le given by myNa
20d0: 6d 65 20 69 73 20 6c 69 6e 6b 65 64 20 74 6f 20 me is linked to
20e0: 74 68 65 20 76 61 72 69 61 62 6c 65 20 69 6e 20 the variable in
20f0: 66 72 61 6d 65 50 74 72 0a 2b 20 2a 09 67 69 76 framePtr.+ *.giv
2100: 65 6e 20 62 79 20 6f 74 68 65 72 50 31 20 61 6e en by otherP1 an
2110: 64 20 6f 74 68 65 72 50 32 2c 20 73 6f 20 74 68 d otherP2, so th
2120: 61 74 20 72 65 66 65 72 65 6e 63 65 73 20 74 6f at references to
2130: 20 6d 79 4e 61 6d 65 20 61 72 65 0a 2b 20 2a 09 myName are.+ *.
2140: 72 65 64 69 72 65 63 74 65 64 20 74 6f 20 74 68 redirected to th
2150: 65 20 6f 74 68 65 72 20 76 61 72 69 61 62 6c 65 e other variable
2160: 20 6c 69 6b 65 20 61 20 73 79 6d 62 6f 6c 69 63 like a symbolic
2170: 20 6c 69 6e 6b 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d link..+ *.+ *--
2180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
21a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
21b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
21c0: 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 20 0a 2b 69 6e ----.+ */.+ .+in
21d0: 74 0a 2b 54 63 6c 50 74 72 4d 61 6b 65 55 70 76 t.+TclPtrMakeUpv
21e0: 61 72 28 69 6e 74 65 72 70 2c 20 6f 74 68 65 72 ar(interp, other
21f0: 50 74 72 2c 20 6d 79 4e 61 6d 65 2c 20 6d 79 46 Ptr, myName, myF
2200: 6c 61 67 73 2c 20 69 6e 64 65 78 29 0a 2b 20 20 lags, index).+
2210: 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e Tcl_Interp *in
2220: 74 65 72 70 3b 09 09 2f 2a 20 49 6e 74 65 72 70 terp;../* Interp
2230: 72 65 74 65 72 20 63 6f 6e 74 61 69 6e 69 6e 67 reter containing
2240: 20 76 61 72 69 61 62 6c 65 73 2e 20 55 73 65 64 variables. Used
2250: 20 66 6f 72 0a 2b 09 09 09 09 20 2a 20 65 72 72 for.+.... * err
2260: 6f 72 20 6d 65 73 73 61 67 65 73 2c 20 74 6f 6f or messages, too
2270: 2e 20 2a 2f 0a 2b 20 20 20 20 56 61 72 20 2a 6f . */.+ Var *o
2280: 74 68 65 72 50 74 72 3b 20 20 20 20 20 20 20 20 therPtr;
2290: 20 20 20 20 20 20 2f 2a 20 50 6f 69 6e 74 65 72 /* Pointer
22a0: 20 74 6f 20 74 68 65 20 76 61 72 69 61 62 6c 65 to the variable
22b0: 20 62 65 69 6e 67 20 6c 69 6e 6b 65 64 2d 74 6f being linked-to
22c0: 20 2a 2f 0a 2b 20 20 20 20 43 4f 4e 53 54 20 63 */.+ CONST c
22d0: 68 61 72 20 2a 6d 79 4e 61 6d 65 3b 09 09 2f 2a har *myName;../*
22e0: 20 4e 61 6d 65 20 6f 66 20 76 61 72 69 61 62 6c Name of variabl
22f0: 65 20 77 68 69 63 68 20 77 69 6c 6c 20 72 65 66 e which will ref
2300: 65 72 20 74 6f 0a 2b 09 09 09 09 20 2a 20 6f 74 er to.+.... * ot
2310: 68 65 72 50 31 2f 6f 74 68 65 72 50 32 2e 20 4d herP1/otherP2. M
2320: 75 73 74 20 62 65 20 61 20 73 63 61 6c 61 72 2e ust be a scalar.
2330: 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 6d 79 46 */.+ int myF
2340: 6c 61 67 73 3b 09 09 2f 2a 20 30 2c 20 54 43 4c lags;../* 0, TCL
2350: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 20 6f 72 20 _GLOBAL_ONLY or
2360: 54 43 4c 5f 4e 41 4d 45 53 50 41 43 45 5f 4f 4e TCL_NAMESPACE_ON
2370: 4c 59 3a 0a 2b 09 09 09 09 20 2a 20 69 6e 64 69 LY:.+.... * indi
2380: 63 61 74 65 73 20 73 63 6f 70 65 20 6f 66 20 6d cates scope of m
2390: 79 4e 61 6d 65 2e 20 2a 2f 0a 2b 20 20 20 20 69 yName. */.+ i
23a0: 6e 74 20 69 6e 64 65 78 3b 09 09 09 2f 2a 20 49 nt index;.../* I
23b0: 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 74 f the variable t
23c0: 6f 20 62 65 20 6c 69 6e 6b 65 64 20 69 73 20 61 o be linked is a
23d0: 6e 20 69 6e 64 65 78 65 64 0a 2b 09 09 09 09 20 n indexed.+....
23e0: 2a 20 73 63 61 6c 61 72 2c 20 74 68 69 73 20 69 * scalar, this i
23f0: 73 20 69 74 73 20 69 6e 64 65 78 2e 20 4f 74 68 s its index. Oth
2400: 65 72 77 69 73 65 2c 20 2d 31 20 2a 2f 0a 2b 7b erwise, -1 */.+{
2410: 0a 2b 20 20 20 20 49 6e 74 65 72 70 20 2a 69 50 .+ Interp *iP
2420: 74 72 20 3d 20 28 49 6e 74 65 72 70 20 2a 29 20 tr = (Interp *)
2430: 69 6e 74 65 72 70 3b 0a 2b 20 20 20 20 43 61 6c interp;.+ Cal
2440: 6c 46 72 61 6d 65 20 2a 76 61 72 46 72 61 6d 65 lFrame *varFrame
2450: 50 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 Ptr = iPtr->varF
2460: 72 61 6d 65 50 74 72 3b 0a 2b 20 20 20 20 56 61 ramePtr;.+ Va
2470: 72 20 2a 76 61 72 50 74 72 3b 0a 2b 20 20 20 20 r *varPtr;.+
2480: 43 4f 4e 53 54 20 63 68 61 72 20 2a 65 72 72 4d CONST char *errM
2490: 73 67 3b 0a 2b 20 20 20 20 43 4f 4e 53 54 20 63 sg;.+ CONST c
24a0: 68 61 72 20 2a 70 3b 20 20 20 20 0a 2b 20 20 20 har *p; .+
24b0: 20 0a 2b 20 20 20 20 69 66 20 28 69 6e 64 65 78 .+ if (index
24c0: 20 3e 3d 20 30 29 20 7b 0a 2b 09 69 66 20 28 21 >= 0) {.+.if (!
24d0: 28 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 69 73 (varFramePtr->is
24e0: 50 72 6f 63 43 61 6c 6c 46 72 61 6d 65 20 26 20 ProcCallFrame &
24f0: 46 52 41 4d 45 5f 49 53 5f 50 52 4f 43 29 29 20 FRAME_IS_PROC))
2500: 7b 0a 2b 09 20 20 20 20 54 63 6c 5f 50 61 6e 69 {.+. Tcl_Pani
2510: 63 28 22 4f 62 6a 4d 61 6b 65 55 70 76 61 72 20 c("ObjMakeUpvar
2520: 63 61 6c 6c 65 64 20 77 69 74 68 20 61 6e 20 69 called with an i
2530: 6e 64 65 78 20 6f 75 74 73 69 64 65 20 66 72 6f ndex outside fro
2540: 6d 20 61 20 70 72 6f 63 2e 5c 6e 22 29 3b 0a 2b m a proc.\n");.+
2550: 09 7d 0a 2b 09 76 61 72 50 74 72 20 3d 20 26 28 .}.+.varPtr = &(
2560: 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 63 6f 6d varFramePtr->com
2570: 70 69 6c 65 64 4c 6f 63 61 6c 73 5b 69 6e 64 65 piledLocals[inde
2580: 78 5d 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 x]);.+ } else
2590: 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 44 6f 20 {. ./*. . * Do
25a0: 6e 6f 74 20 70 65 72 6d 69 74 20 74 68 65 20 6e not permit the n
25b0: 65 77 20 76 61 72 69 61 62 6c 65 20 74 6f 20 6c ew variable to l
25c0: 6f 6f 6b 20 6c 69 6b 65 20 61 6e 20 61 72 72 61 ook like an arra
25d0: 79 20 72 65 66 65 72 65 6e 63 65 2c 20 61 73 0a y reference, as.
25e0: 20 09 20 2a 20 69 74 20 77 69 6c 6c 20 6e 6f 74 . * it will not
25f0: 20 62 65 20 72 65 61 63 68 61 62 6c 65 20 69 6e be reachable in
2600: 20 74 68 61 74 20 63 61 73 65 20 5b 42 75 67 20 that case [Bug
2610: 36 30 30 38 31 32 2c 20 54 49 50 20 31 38 34 5d 600812, TIP 184]
2620: 2e 20 54 68 65 0a 49 6e 64 65 78 3a 20 74 65 73 . The.Index: tes
2630: 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 ts/namespace.tes
2640: 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d t.==============
2650: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2660: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2670: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2680: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 =====.RCS file:
2690: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c /cvsroot/tcl/tcl
26a0: 2f 74 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 /tests/namespace
26b0: 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 .test,v.retrievi
26c0: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 30 ng revision 1.50
26d0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 35 30 20 .diff -u -r1.50
26e0: 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 2d namespace.test.-
26f0: 2d 2d 20 74 65 73 74 73 2f 6e 61 6d 65 73 70 61 -- tests/namespa
2700: 63 65 2e 74 65 73 74 09 39 20 4a 61 6e 20 32 30 ce.test.9 Jan 20
2710: 30 36 20 31 38 3a 33 35 3a 30 31 20 2d 30 30 30 06 18:35:01 -000
2720: 30 09 31 2e 35 30 0a 2b 2b 2b 20 74 65 73 74 73 0.1.50.+++ tests
2730: 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 09 /namespace.test.
2740: 31 38 20 4a 61 6e 20 32 30 30 36 20 31 36 3a 33 18 Jan 2006 16:3
2750: 37 3a 30 34 20 2d 30 30 30 30 0a 40 40 20 2d 31 7:04 -0000.@@ -1
2760: 38 2c 36 20 2b 31 38 2c 31 31 20 40 40 0a 20 20 8,6 +18,11 @@.
2770: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 namespace imp
2780: 6f 72 74 20 2d 66 6f 72 63 65 20 3a 3a 74 63 6c ort -force ::tcl
2790: 74 65 73 74 3a 3a 2a 0a 20 7d 0a 20 0a 2b 23 0a test::*. }. .+#.
27a0: 2b 23 20 52 45 4d 41 52 4b 3a 20 74 68 65 20 74 +# REMARK: the t
27b0: 65 73 74 73 20 66 6f 72 20 27 6e 61 6d 65 73 70 ests for 'namesp
27c0: 61 63 65 20 75 70 76 61 72 27 20 61 72 65 20 6e ace upvar' are n
27d0: 6f 74 20 64 6f 6e 65 20 68 65 72 65 2e 20 54 68 ot done here. Th
27e0: 65 79 20 61 72 65 20 74 6f 20 62 65 0a 2b 23 20 ey are to be.+#
27f0: 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 66 69 6c found in the fil
2800: 65 20 27 75 70 76 61 72 2e 74 65 73 74 27 2e 0a e 'upvar.test'..
2810: 2b 23 0a 2b 0a 20 23 20 43 6c 65 61 72 20 6f 75 +#.+. # Clear ou
2820: 74 20 61 6e 79 20 6e 61 6d 65 73 70 61 63 65 73 t any namespaces
2830: 20 63 61 6c 6c 65 64 20 74 65 73 74 5f 6e 73 5f called test_ns_
2840: 2a 0a 20 63 61 74 63 68 20 7b 6e 61 6d 65 73 70 *. catch {namesp
2850: 61 63 65 20 64 65 6c 65 74 65 20 7b 65 78 70 61 ace delete {expa
2860: 6e 64 7d 5b 6e 61 6d 65 73 70 61 63 65 20 63 68 nd}[namespace ch
2870: 69 6c 64 72 65 6e 20 3a 3a 20 74 65 73 74 5f 6e ildren :: test_n
2880: 73 5f 2a 5d 7d 0a 20 0a 40 40 20 2d 38 37 31 2c s_*]}. .@@ -871,
2890: 39 20 2b 38 37 36 2c 39 20 40 40 0a 20 20 20 20 9 +876,9 @@.
28a0: 20 63 61 74 63 68 20 7b 6e 61 6d 65 73 70 61 63 catch {namespac
28b0: 65 20 64 65 6c 65 74 65 20 7b 65 78 70 61 6e 64 e delete {expand
28c0: 7d 5b 6e 61 6d 65 73 70 61 63 65 20 63 68 69 6c }[namespace chil
28d0: 64 72 65 6e 20 3a 3a 20 74 65 73 74 5f 6e 73 5f dren :: test_ns_
28e0: 2a 5d 7d 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 *]}. list [c
28f0: 61 74 63 68 20 7b 6e 61 6d 65 73 70 61 63 65 7d atch {namespace}
2900: 20 6d 73 67 5d 20 24 6d 73 67 0a 20 7d 20 7b 31 msg] $msg. } {1
2910: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 {wrong # args:
2920: 73 68 6f 75 6c 64 20 62 65 20 22 6e 61 6d 65 73 should be "names
2930: 70 61 63 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 pace subcommand
2940: 3f 61 72 67 20 2e 2e 2e 3f 22 7d 7d 0a 2d 74 65 ?arg ...?"}}.-te
2950: 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 30 2e st namespace-20.
2960: 32 20 7b 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 2 {Tcl_Namespace
2970: 4f 62 6a 43 6d 64 2c 20 62 61 64 20 73 75 62 63 ObjCmd, bad subc
2980: 6f 6d 6d 61 6e 64 7d 20 7b 0a 2d 20 20 20 20 6c ommand} {.- l
2990: 69 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d 65 ist [catch {name
29a0: 73 70 61 63 65 20 77 6f 6d 62 61 74 20 7b 7d 7d space wombat {}}
29b0: 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 msg] $msg.-} {1
29c0: 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f {bad option "wo
29d0: 6d 62 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63 mbat": must be c
29e0: 68 69 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63 hildren, code, c
29f0: 75 72 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20 urrent, delete,
2a00: 65 6e 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20 ensemble, eval,
2a10: 65 78 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20 exists, export,
2a20: 66 6f 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20 forget, import,
2a30: 69 6e 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c inscope, origin,
2a40: 20 70 61 72 65 6e 74 2c 20 70 61 74 68 2c 20 71 parent, path, q
2a50: 75 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c ualifiers, tail,
2a60: 20 6f 72 20 77 68 69 63 68 7d 7d 0a 2b 74 65 73 or which}}.+tes
2a70: 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 30 2e 32 t namespace-20.2
2a80: 20 7b 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 4f {Tcl_NamespaceO
2a90: 62 6a 43 6d 64 2c 20 62 61 64 20 73 75 62 63 6f bjCmd, bad subco
2aa0: 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 2b mmand} -body {.+
2ab0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 77 6f namespace wo
2ac0: 6d 62 61 74 20 7b 7d 0a 2b 7d 20 2d 72 65 74 75 mbat {}.+} -retu
2ad0: 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d rnCodes error -m
2ae0: 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c atch glob -resul
2af0: 74 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 t {bad option "w
2b00: 6f 6d 62 61 74 22 3a 20 6d 75 73 74 20 62 65 20 ombat": must be
2b10: 2a 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 *}. test namespa
2b20: 63 65 2d 32 30 2e 33 20 7b 54 63 6c 5f 4e 61 6d ce-20.3 {Tcl_Nam
2b30: 65 73 70 61 63 65 4f 62 6a 43 6d 64 2c 20 61 62 espaceObjCmd, ab
2b40: 62 72 65 76 69 61 74 69 6f 6e 73 20 61 72 65 20 breviations are
2b50: 6f 6b 61 79 7d 20 7b 0a 20 20 20 20 20 6e 61 6d okay} {. nam
2b60: 65 73 70 61 63 65 20 63 68 20 3a 3a 20 74 65 73 espace ch :: tes
2b70: 74 5f 6e 73 5f 2a 0a 20 7d 20 7b 7d 0a 40 40 20 t_ns_*. } {}.@@
2b80: 2d 39 37 38 2c 39 20 2b 39 38 33 2c 39 20 40 40 -978,9 +983,9 @@
2b90: 0a 20 20 20 20 20 63 61 74 63 68 20 7b 6e 61 6d . catch {nam
2ba0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 7b 65 espace delete {e
2bb0: 78 70 61 6e 64 7d 5b 6e 61 6d 65 73 70 61 63 65 xpand}[namespace
2bc0: 20 63 68 69 6c 64 72 65 6e 20 3a 3a 20 74 65 73 children :: tes
2bd0: 74 5f 6e 73 5f 2a 5d 7d 0a 20 20 20 20 20 6c 69 t_ns_*]}. li
2be0: 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d 65 73 st [catch {names
2bf0: 70 61 63 65 20 65 76 61 6c 7d 20 6d 73 67 5d 20 pace eval} msg]
2c00: 24 6d 73 67 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e $msg. } {1 {wron
2c10: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 g # args: should
2c20: 20 62 65 20 22 6e 61 6d 65 73 70 61 63 65 20 65 be "namespace e
2c30: 76 61 6c 20 6e 61 6d 65 20 61 72 67 20 3f 61 72 val name arg ?ar
2c40: 67 2e 2e 2e 3f 22 7d 7d 0a 2d 74 65 73 74 20 6e g...?"}}.-test n
2c50: 61 6d 65 73 70 61 63 65 2d 32 35 2e 32 20 7b 4e amespace-25.2 {N
2c60: 61 6d 65 73 70 61 63 65 45 76 61 6c 43 6d 64 2c amespaceEvalCmd,
2c70: 20 62 61 64 20 61 72 67 73 7d 20 7b 0a 2d 20 20 bad args} {.-
2c80: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6e list [catch {n
2c90: 61 6d 65 73 70 61 63 65 20 74 65 73 74 5f 6e 73 amespace test_ns
2ca0: 5f 31 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d _1} msg] $msg.-}
2cb0: 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 {1 {bad option
2cc0: 22 74 65 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 73 "test_ns_1": mus
2cd0: 74 20 62 65 20 63 68 69 6c 64 72 65 6e 2c 20 63 t be children, c
2ce0: 6f 64 65 2c 20 63 75 72 72 65 6e 74 2c 20 64 65 ode, current, de
2cf0: 6c 65 74 65 2c 20 65 6e 73 65 6d 62 6c 65 2c 20 lete, ensemble,
2d00: 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 78 eval, exists, ex
2d10: 70 6f 72 74 2c 20 66 6f 72 67 65 74 2c 20 69 6d port, forget, im
2d20: 70 6f 72 74 2c 20 69 6e 73 63 6f 70 65 2c 20 6f port, inscope, o
2d30: 72 69 67 69 6e 2c 20 70 61 72 65 6e 74 2c 20 70 rigin, parent, p
2d40: 61 74 68 2c 20 71 75 61 6c 69 66 69 65 72 73 2c ath, qualifiers,
2d50: 20 74 61 69 6c 2c 20 6f 72 20 77 68 69 63 68 7d tail, or which}
2d60: 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }.+test namespac
2d70: 65 2d 32 35 2e 32 20 7b 4e 61 6d 65 73 70 61 63 e-25.2 {Namespac
2d80: 65 45 76 61 6c 43 6d 64 2c 20 62 61 64 20 61 72 eEvalCmd, bad ar
2d90: 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 gs} -body {.+
2da0: 20 6e 61 6d 65 73 70 61 63 65 20 74 65 73 74 5f namespace test_
2db0: 6e 73 5f 31 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 ns_1.+} -returnC
2dc0: 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 odes error -matc
2dd0: 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b h glob -result {
2de0: 62 61 64 20 6f 70 74 69 6f 6e 20 22 74 65 73 74 bad option "test
2df0: 5f 6e 73 5f 31 22 3a 20 6d 75 73 74 20 62 65 20 _ns_1": must be
2e00: 2a 7d 0a 20 63 61 74 63 68 20 7b 75 6e 73 65 74 *}. catch {unset
2e10: 20 76 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 v}. test namesp
2e20: 61 63 65 2d 32 35 2e 33 20 7b 4e 61 6d 65 73 70 ace-25.3 {Namesp
2e30: 61 63 65 45 76 61 6c 43 6d 64 2c 20 6e 65 77 20 aceEvalCmd, new
2e40: 6e 61 6d 65 73 70 61 63 65 7d 20 7b 0a 20 20 20 namespace} {.
2e50: 20 20 73 65 74 20 76 20 31 32 33 0a 49 6e 64 65 set v 123.Inde
2e60: 78 3a 20 74 65 73 74 73 2f 75 70 76 61 72 2e 74 x: tests/upvar.t
2e70: 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d est.============
2e80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2e90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2ea0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2eb0: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 =======.RCS file
2ec0: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 : /cvsroot/tcl/t
2ed0: 63 6c 2f 74 65 73 74 73 2f 75 70 76 61 72 2e 74 cl/tests/upvar.t
2ee0: 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 est,v.retrieving
2ef0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 30 0a 64 revision 1.10.d
2f00: 69 66 66 20 2d 75 20 2d 72 31 2e 31 30 20 75 70 iff -u -r1.10 up
2f10: 76 61 72 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 var.test.--- tes
2f20: 74 73 2f 75 70 76 61 72 2e 74 65 73 74 09 31 39 ts/upvar.test.19
2f30: 20 4d 61 79 20 32 30 30 34 20 31 30 3a 34 36 3a May 2004 10:46:
2f40: 32 37 20 2d 30 30 30 30 09 31 2e 31 30 0a 2b 2b 27 -0000.1.10.++
2f50: 2b 20 74 65 73 74 73 2f 75 70 76 61 72 2e 74 65 + tests/upvar.te
2f60: 73 74 09 31 38 20 4a 61 6e 20 32 30 30 36 20 31 st.18 Jan 2006 1
2f70: 36 3a 33 37 3a 30 34 20 2d 30 30 30 30 0a 40 40 6:37:04 -0000.@@
2f80: 20 2d 31 2c 34 20 2b 31 2c 34 20 40 40 0a 2d 23 -1,4 +1,4 @@.-#
2f90: 20 43 6f 6d 6d 61 6e 64 73 20 63 6f 76 65 72 65 Commands covere
2fa0: 64 3a 20 20 75 70 76 61 72 0a 2b 23 20 43 6f 6d d: upvar.+# Com
2fb0: 6d 61 6e 64 73 20 63 6f 76 65 72 65 64 3a 20 20 mands covered:
2fc0: 27 75 70 76 61 72 27 2c 20 27 6e 61 6d 65 73 70 'upvar', 'namesp
2fd0: 61 63 65 20 75 70 76 61 72 27 0a 20 23 0a 20 23 ace upvar'. #. #
2fe0: 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 This file conta
2ff0: 69 6e 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e ins a collection
3000: 20 6f 66 20 74 65 73 74 73 20 66 6f 72 20 6f 6e of tests for on
3010: 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 e or more of the
3020: 20 54 63 6c 0a 20 23 20 62 75 69 6c 74 2d 69 6e Tcl. # built-in
3030: 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 53 6f 75 72 commands. Sour
3040: 63 69 6e 67 20 74 68 69 73 20 66 69 6c 65 20 69 cing this file i
3050: 6e 74 6f 20 54 63 6c 20 72 75 6e 73 20 74 68 65 nto Tcl runs the
3060: 20 74 65 73 74 73 20 61 6e 64 0a 40 40 20 2d 34 tests and.@@ -4
3070: 30 35 2c 36 20 2b 34 30 35 2c 35 30 20 40 40 0a 05,6 +405,50 @@.
3080: 20 7d 20 7b 31 32 33 34 7d 0a 20 63 61 74 63 68 } {1234}. catch
3090: 20 7b 75 6e 73 65 74 20 61 7d 0a 20 0a 2b 0a 2b {unset a}. .+.+
30a0: 23 0a 2b 23 20 54 65 73 74 73 20 66 6f 72 20 27 #.+# Tests for '
30b0: 6e 61 6d 65 73 70 61 63 65 20 75 70 76 61 72 27 namespace upvar'
30c0: 2e 20 41 73 20 74 68 65 20 69 6d 70 6c 65 6d 65 . As the impleme
30d0: 6e 74 61 74 69 6f 6e 20 69 73 20 65 73 73 65 6e ntation is essen
30e0: 74 69 61 6c 6c 79 20 74 68 65 20 73 61 6d 65 20 tially the same
30f0: 61 73 0a 2b 23 20 66 6f 72 20 27 75 70 76 61 72 as.+# for 'upvar
3100: 27 2c 20 77 65 20 6f 6e 6c 79 20 74 65 73 74 20 ', we only test
3110: 74 68 61 74 20 74 68 65 20 76 61 72 69 61 62 6c that the variabl
3120: 65 73 20 61 72 65 20 6c 69 6e 6b 65 64 20 63 6f es are linked co
3130: 72 72 65 63 74 6c 79 2e 20 49 65 2c 20 77 65 0a rrectly. Ie, we.
3140: 2b 23 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 +# assume that t
3150: 68 65 20 62 65 68 61 76 69 6f 75 72 20 6f 66 20 he behaviour of
3160: 76 61 72 69 61 62 6c 65 73 20 6f 6e 63 65 20 74 variables once t
3170: 68 65 20 6c 69 6e 6b 20 69 73 20 65 73 74 61 62 he link is estab
3180: 6c 69 73 68 65 64 20 68 61 73 20 0a 2b 23 20 61 lished has .+# a
3190: 6c 72 65 61 64 79 20 62 65 65 6e 20 74 65 73 74 lready been test
31a0: 65 64 20 61 62 6f 76 65 2e 0a 2b 23 0a 2b 0a 2b ed above..+#.+.+
31b0: 23 20 43 6c 65 61 72 20 6f 75 74 20 61 6e 79 20 # Clear out any
31c0: 6e 61 6d 65 73 70 61 63 65 73 20 63 61 6c 6c 65 namespaces calle
31d0: 64 20 74 65 73 74 5f 6e 73 5f 2a 0a 2b 63 61 74 d test_ns_*.+cat
31e0: 63 68 20 7b 6e 61 6d 65 73 70 61 63 65 20 64 65 ch {namespace de
31f0: 6c 65 74 65 20 7b 65 78 70 61 6e 64 7d 5b 6e 61 lete {expand}[na
3200: 6d 65 73 70 61 63 65 20 63 68 69 6c 64 72 65 6e mespace children
3210: 20 3a 3a 20 74 65 73 74 5f 6e 73 5f 2a 5d 7d 0a :: test_ns_*]}.
3220: 2b 0a 2b 6e 61 6d 65 73 70 61 63 65 20 65 76 61 +.+namespace eva
3230: 6c 20 74 65 73 74 5f 6e 73 5f 30 20 7b 0a 2b 20 l test_ns_0 {.+
3240: 20 20 20 76 61 72 69 61 62 6c 65 20 78 20 74 65 variable x te
3250: 73 74 5f 6e 73 5f 30 0a 2b 7d 0a 2b 0a 2b 6e 61 st_ns_0.+}.+.+na
3260: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 74 65 73 mespace eval tes
3270: 74 5f 6e 73 5f 31 20 7b 0a 2b 20 20 20 20 76 61 t_ns_1 {.+ va
3280: 72 69 61 62 6c 65 20 78 20 74 65 73 74 5f 6e 73 riable x test_ns
3290: 5f 31 0a 2b 7d 0a 2b 0a 2b 6e 61 6d 65 73 70 61 _1.+}.+.+namespa
32a0: 63 65 20 65 76 61 6c 20 74 65 73 74 5f 6e 73 5f ce eval test_ns_
32b0: 32 20 7b 7d 0a 2b 0a 2b 73 65 74 20 78 20 74 65 2 {}.+.+set x te
32c0: 73 74 5f 67 6c 6f 62 61 6c 0a 2b 0a 2b 74 65 73 st_global.+.+tes
32d0: 74 20 75 70 76 61 72 2d 4e 53 2d 31 2e 31 20 7b t upvar-NS-1.1 {
32e0: 6e 73 75 70 76 61 72 20 6c 69 6e 6b 73 20 74 6f nsupvar links to
32f0: 20 63 6f 72 72 65 63 74 20 76 61 72 69 61 62 6c correct variabl
3300: 65 7d 20 5c 0a 2b 20 20 20 20 2d 62 6f 64 79 20 e} \.+ -body
3310: 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 65 76 {.+.namespace ev
3320: 61 6c 20 74 65 73 74 5f 6e 73 5f 32 20 7b 0a 2b al test_ns_2 {.+
3330: 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 75 . namespace u
3340: 70 76 61 72 20 3a 3a 74 65 73 74 5f 6e 73 5f 30 pvar ::test_ns_0
3350: 20 78 20 77 0a 2b 09 20 20 20 20 73 65 74 20 77 x w.+. set w
3360: 0a 2b 09 7d 0a 2b 20 20 20 20 7d 20 5c 0a 2b 20 .+.}.+ } \.+
3370: 20 20 20 2d 72 65 73 75 6c 74 20 7b 74 65 73 74 -result {test
3380: 5f 6e 73 5f 30 7d 0a 2b 0a 2b 74 65 73 74 20 75 _ns_0}.+.+test u
3390: 70 76 61 72 2d 4e 53 2d 31 2e 32 20 7b 6e 73 75 pvar-NS-1.2 {nsu
33a0: 70 76 61 72 20 6c 69 6e 6b 73 20 74 6f 20 63 6f pvar links to co
33b0: 72 72 65 63 74 20 76 61 72 69 61 62 6c 65 7d 20 rrect variable}
33c0: 5c 0a 2b 20 20 20 20 2d 62 6f 64 79 20 7b 0a 2b \.+ -body {.+
33d0: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
33e0: 74 65 73 74 5f 6e 73 5f 32 20 7b 0a 2b 09 20 20 test_ns_2 {.+.
33f0: 20 20 70 72 6f 63 20 61 20 7b 7d 20 7b 0a 2b 09 proc a {} {.+.
3400: 09 6e 61 6d 65 73 70 61 63 65 20 75 70 76 61 72 .namespace upvar
3410: 20 3a 3a 74 65 73 74 5f 6e 73 5f 30 20 78 20 77 ::test_ns_0 x w
3420: 0a 2b 09 09 73 65 74 20 77 0a 2b 09 20 20 20 20 .+..set w.+.
3430: 7d 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 5b }.+. return [
3440: 61 5d 5b 72 65 6e 61 6d 65 20 61 20 7b 7d 5d 0a a][rename a {}].
3450: 2b 09 7d 0a 2b 20 20 20 20 7d 20 5c 0a 2b 20 20 +.}.+ } \.+
3460: 20 20 2d 72 65 73 75 6c 74 20 7b 74 65 73 74 5f -result {test_
3470: 6e 73 5f 30 7d 0a 2b 0a 20 23 20 63 6c 65 61 6e ns_0}.+. # clean
3480: 75 70 0a 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 up. ::tcltest::c
3490: 6c 65 61 6e 75 70 54 65 73 74 73 0a 20 72 65 74 leanupTests. ret
34a0: 75 72 6e 0a urn.