about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Doc/Zsh/builtins.yo17
2 files changed, 22 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index f7f8b218e..19a4d21f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-30  Daniel Shahaf  <d.s@daniel.shahaf.name>
+
+	* 37831: Doc/Zsh/builtins.yo: typeset: Document exit status
+	difference from parameter assignment statements
+
 2016-01-30  Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
 
 	* 37838: Src/Builtins/rlimits.c, Src/Builtins/sched.c,
diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo
index fb630a713..cdf405b13 100644
--- a/Doc/Zsh/builtins.yo
+++ b/Doc/Zsh/builtins.yo
@@ -1826,6 +1826,23 @@ reserved word interface for tt(typeset) may cause problems with the
 output of `tt(typeset -p)', which assumes the reserved word interface is
 available in order to restore array and associative array values.
 
+Unlike parameter assignment statements, tt(typeset)'s exit status on an
+assignment that involves a command substitution does not reflect the exit
+status of the command substitution.  Therefore, to test for an error in
+a command substitution, separate the declaration of the parameter from its
+initialization:
+
+example(# WRONG
+typeset var1=$(exit 1) || echo "Trouble with var1"
+
+# RIGHT
+typeset var1 && var1=$(exit 1) || echo "Trouble with var1"
+)
+
+To initialize a parameter var(param) to a command output and mark it readonly,
+use tt(typeset -r )var(param) or tt(readonly )var(param) after the parameter
+assignment statement.
+
 If the shell option tt(TYPESET_SILENT) is not set, for each remaining
 var(name) that refers to a parameter that is already set, the name and
 value of the parameter are printed in the form of an assignment.