diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2012-02-15 10:01:34 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2012-02-15 10:01:34 (GMT) |
commit | 3aa1601f2afddd655694ff5cd8541c0572736c3c (patch) | |
tree | cbdc6a0031b4954092cd8a0cefe6fc5cb16a890f /tests | |
parent | 32fb8662953b599dd793aea06f5d2938ae4973ae (diff) | |
parent | 5ab653feb0f92621dfa72b70722477353ae22c75 (diff) | |
download | tcl-3aa1601f2afddd655694ff5cd8541c0572736c3c.zip tcl-3aa1601f2afddd655694ff5cd8541c0572736c3c.tar.gz tcl-3aa1601f2afddd655694ff5cd8541c0572736c3c.tar.bz2 |
* generic/tclCompCmds.c (TclCompileDictForCmd): [Bug 3487626]: Fix
crash in compilation of [dict for] when its implementation command is
used directly rather than through the ensemble.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/dict.test | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/dict.test b/tests/dict.test index 5a2b609..5277cf6 100644 --- a/tests/dict.test +++ b/tests/dict.test @@ -1470,6 +1470,57 @@ test dict-22.23 {dict with: compiled} { return $a,$b }} } 1,2 + +proc linenumber {} { + dict get [info frame -1] line +} +test dict-23.1 {dict compilation crash: Bug 3487626} { + apply {n { + set e {} + set k {} + dict for {a b} {c {d {e {f g}}}} { + ::tcl::dict::for {h i} $b { + dict update i e j { + ::tcl::dict::update j f k { + return [expr {$n - [linenumber]}] + } + } + } + } + }} [linenumber] +} 5 +test dict-23.2 {dict compilation crash: Bug 3487626} knownBug { + # Something isn't quite right in line number and continuation line + # tracking; at time of writing, this test produces 7, not 5, which + # indicates that the extra newlines in the non-script argument are + # confusing things. + apply {n { + set e {} + set k {} + dict for {a { +b +}} {c {d {e {f g}}}} { + ::tcl::dict::for {h { +i +}} ${ +b +} { + dict update { +i +} e { +j +} { + ::tcl::dict::update { +j +} f k { + return [expr {$n - [linenumber]}] + } + } + } + } + }} [linenumber] +} 5 +rename linenumber {} # cleanup ::tcltest::cleanupTests |