summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/params.c6
-rw-r--r--Test/E01options.ztst15
3 files changed, 25 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index a448b3256..8e22e9f4f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-25  Peter Stephenson  <p.stephenson@samsung.com>
+
+	* 40413: Src/params.c, Test/E01options.ztst: no WARN_NESTED_VAR
+	warning on bogus parameter created for subscripted assignment.
+
 2017-01-25  Daniel Shahaf  <d.s@daniel.shahaf.name>
 
 	* 40403/0004: Functions/VCS_Info/Backends/VCS_INFO_get_data_git,
diff --git a/Src/params.c b/Src/params.c
index ebdd25225..c38f2e001 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2926,7 +2926,11 @@ assignsparam(char *s, char *val, int flags)
 		unqueue_signals();
 		return NULL;
 	    }
-	    flags &= ~ASSPM_WARN_CREATE;
+	    /*
+	     * Parameter defined here is a temporary bogus one.
+	     * Don't warn about anything.
+	     */
+	    flags &= ~ASSPM_WARN;
 	}
 	*ss = '[';
 	v = NULL;
diff --git a/Test/E01options.ztst b/Test/E01options.ztst
index bcd89f787..fd3263a8f 100644
--- a/Test/E01options.ztst
+++ b/Test/E01options.ztst
@@ -1188,6 +1188,21 @@
 ?fn_wnv:20: numeric parameter foo5 set in enclosing scope in function fn_wnv
 ?all off again
 
+
+  (
+    setopt warnnestedvar
+    () {
+      typeset -A a
+      : ${a[hello world]::=foo}
+      print ${(t)a}
+      key="hello world"
+      print $a[$key]
+    }
+  )
+0:No false positive on parameter used with subscripted assignment
+>association-local
+>foo
+
 # This really just tests if XTRACE is egregiously broken.
 # To test it properly would need a full set of its own.
   fn() { print message; }