diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-05-08 21:31:31 -0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2007-05-08 21:38:54 -0400 |
commit | 28bf928cf81eec720bc8a31179a0c9cf688d5af3 (patch) | |
tree | 5434af73a1a67e0648acfd2a0b3dd4979c5769c6 /lib/class.tcl | |
parent | git-gui: Convert browser, console to "class" format (diff) | |
download | tgif-28bf928cf81eec720bc8a31179a0c9cf688d5af3.tar.xz |
git-gui: Don't attempt to inline array reads in methods
If a variable reference to a field is to an array, and it is
the only reference to that field in that method we cannot make
it an inlined [set foo] call as the regexp was converting the
Tcl code wrong. We were producing "[set foo](x)" for "$foo(x)",
and that isn't valid Tcl when foo is an array. So we just punt
if the only occurance has a ( after it.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'lib/class.tcl')
-rw-r--r-- | lib/class.tcl | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/class.tcl b/lib/class.tcl index c1291989aa..88b056522a 100644 --- a/lib/class.tcl +++ b/lib/class.tcl @@ -96,7 +96,8 @@ proc method {name params body {deleted {}} {del_body {}}} { set n [lindex $n 0] if {[regexp -- $n\\M $body]} { if { [regexp -all -- $n\\M $body] == 1 - && [regexp -all -- \\\$$n\\M $body] == 1} { + && [regexp -all -- \\\$$n\\M $body] == 1 + && [regexp -all -- \\\$$n\\( $body] == 0} { regsub -all \\\$$n\\M $body "\[set \${this}::$n\]" body } else { append decl { ${this}::} $n { } $n |