diff options
author | hobbs <hobbs> | 2001-09-19 18:17:54 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2001-09-19 18:17:54 (GMT) |
commit | 93f8aa9a4503e99c92cc046261e09d99e638c188 (patch) | |
tree | bd67a555349bc2a086720174d0243daff86a7c77 /tests/if.test | |
parent | eaecbc2b998c46334ae14212a09eadfce713b4ab (diff) | |
download | tcl-93f8aa9a4503e99c92cc046261e09d99e638c188.zip tcl-93f8aa9a4503e99c92cc046261e09d99e638c188.tar.gz tcl-93f8aa9a4503e99c92cc046261e09d99e638c188.tar.bz2 |
* generic/tclCompCmds.c (TclCompileStringCmd): INST_STR_MATCH -
Updated to Int1 instruction type and added special case to use
INST_STR_EQ instead when no glob chars are specified in a static
string.
* tests/{for.test,foreach.test,if.test,while.test}:
* generic/tclCompCmds.c (TclCompileForCmd, TclCompileForeachCmd,
TclCompileIfCmd, TclCompileWhileCmd): Corrected the overaggressive
compiling of loop bodies enclosed in ""s. [Bug #219166] (msofer)
Diffstat (limited to 'tests/if.test')
-rw-r--r-- | tests/if.test | 69 |
1 files changed, 52 insertions, 17 deletions
diff --git a/tests/if.test b/tests/if.test index b6ea1e3..5cb269d 100644 --- a/tests/if.test +++ b/tests/if.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: if.test,v 1.5 2000/04/10 17:19:00 ericm Exp $ +# RCS: @(#) $Id: if.test,v 1.6 2001/09/19 18:17:54 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1013,34 +1013,69 @@ test if-9.1 {if cmd with namespace qualifiers} { # Test for incorrect "double evaluation semantics" -test if-10.1 {delayed substitution of then body} {knownBug} { +test if-10.1 {delayed substitution of then body} { set j 0 - if {[incr j] == 1} " + set if if + # this is not compiled + $if {[incr j] == 1} " set result $j " - set result -} {0} -test if-10.2 {delayed substitution of elseif expression} {knownBug} { + # this will be compiled + proc p {} { + set j 0 + if {[incr j]} " + set result $j + " + set result + } + append result [p] +} {00} +test if-10.2 {delayed substitution of elseif expression} { set j 0 - if {[incr j] == 0} { + set if if + # this is not compiled + $if {[incr j] == 0} { set result badthen } elseif "$j == 1" { set result badelseif } else { - set result ok + set result 0 } - set result -} {ok} -test if-10.3 {delayed substitution of elseif body} {knownBug} { + # this will be compiled + proc p {} { + set j 0 + if {[incr j] == 0} { + set result badthen + } elseif "$j == 1" { + set result badelseif + } else { + set result 0 + } + set result + } + append result [p] +} {00} +test if-10.3 {delayed substitution of elseif body} { set j 0 - if {[incr j] == 0} { + set if if + # this is not compiled + $if {[incr j] == 0} { set result badthen } elseif {1} " set result $j " - set result -} {0} -test if-10.4 {delayed substitution of else body} {knownBug} { + # this will be compiled + proc p {} { + set j 0 + if {[incr j] == 0} { + set result badthen + } elseif {1} " + set result $j + " + } + append result [p] +} {00} +test if-10.4 {delayed substitution of else body} { set j 0 if {[incr j] == 0} { set result badthen @@ -1049,13 +1084,13 @@ test if-10.4 {delayed substitution of else body} {knownBug} { " set result } {0} -test if-10.5 {substituted control words} {knownBug} { +test if-10.5 {substituted control words} { set then then; proc then {} {return badthen} set else else; proc else {} {return badelse} set elseif elseif; proc elseif {} {return badelseif} list [catch {if 1 $then {if 0 {} $elseif 1 {if 0 {} $else {list ok}}}} a] $a } {0 ok} -test if-10.6 {double invocation of variable traces} {knownBug} { +test if-10.6 {double invocation of variable traces} { set iftracecounter 0 proc iftraceproc {args} { upvar #0 iftracecounter counter |