From 28bf928cf81eec720bc8a31179a0c9cf688d5af3 Mon Sep 17 00:00:00 2001
From: "Shawn O. Pearce" <spearce@spearce.org>
Date: Tue, 8 May 2007 21:31:31 -0400
Subject: [PATCH] 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>
---
 lib/class.tcl | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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
-- 
2.40.0