diff options
| author | sebres <sebres@users.sourceforge.net> | 2024-07-14 19:03:38 (GMT) |
|---|---|---|
| committer | sebres <sebres@users.sourceforge.net> | 2024-07-14 19:03:38 (GMT) |
| commit | c3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3 (patch) | |
| tree | 52d859bb54018f238c05280ea9db33dab0ca1f3e | |
| parent | a1039fff264296e9f3132a9354f8b84e2a732cf9 (diff) | |
| download | tcl-c3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3.zip tcl-c3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3.tar.gz tcl-c3950a63f7dfe3f754ab1cb5195dbe3a5f28ece3.tar.bz2 | |
amend to [3d8bf31bdc], ultimately fixes [0e4b7fce57]: [info vars] should not resolve global vars in namespace by simple pattern too (see info-19.8 test);
added tests covering the behaviour
| -rw-r--r-- | generic/tclVar.c | 11 | ||||
| -rw-r--r-- | tests/info.test | 23 |
2 files changed, 23 insertions, 11 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c index 053b1a1..e939797 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -5998,7 +5998,6 @@ TclInfoVarsCmd( Tcl_HashSearch search; Var *varPtr; Namespace *nsPtr; - Namespace *globalNsPtr = (Namespace *) Tcl_GetGlobalNamespace(interp); Namespace *currNsPtr = (Namespace *) Tcl_GetCurrentNamespace(interp); Tcl_Obj *listPtr, *elemObjPtr, *varNamePtr; int specificNsInPattern = 0;/* Init. to avoid compiler warning. */ @@ -6079,16 +6078,6 @@ TclInfoVarsCmd( } Tcl_ListObjAppendElement(interp, listPtr, elemObjPtr); } - } else if ((nsPtr != globalNsPtr) && !specificNsInPattern) { - varPtr = VarHashFindVar(&globalNsPtr->varTable, - simplePatternPtr); - if (varPtr) { - if (!TclIsVarUndefined(varPtr) - || TclIsVarNamespaceVar(varPtr)) { - Tcl_ListObjAppendElement(interp, listPtr, - VarHashGetKey(varPtr)); - } - } } } else { /* diff --git a/tests/info.test b/tests/info.test index 38fa5f2..42ceafc 100644 --- a/tests/info.test +++ b/tests/info.test @@ -2396,6 +2396,29 @@ test info-33.35 {{*}, literal, simple, bytecompiled} -body { } -result {type source line 2389 file info.test cmd {info frame 0} proc ::foo::bar level 0} # ------------------------------------------------------------------------- + +test info-19.7 {info vars: bug [0e4b7fce57], TIP #278 - no global vars resolve} -setup { + catch {namespace delete x} +} -body { + namespace eval x {info vars} +} -cleanup { + namespace delete x +} -result {} +test info-19.8 {info vars: bug [0e4b7fce57], TIP #278 - no global vars resolve} -setup { + catch {namespace delete x} +} -body { + namespace eval x {info vars tcl_platform} +} -cleanup { + namespace delete x +} -result {} +test info-19.9 {info vars: global vars resolved by pattern} -setup { + catch {namespace delete x} +} -body { + namespace eval x {info vars ::tcl_platform} +} -cleanup { + namespace delete x +} -result {::tcl_platform} + namespace eval ::testinfocmdtype { apply {cmds { foreach c $cmds {rename $c {}} |
