1 ## compare_shells: bash-4.4 mksh zsh
2 ## oils_failures_allowed: 0
3
4 #### typeset -f prints function source code
5 : prefix; myfunc() { echo serialized; }
6
7 code=$(typeset -f myfunc)
8
9 $SH -c "$code; myfunc"
10
11 ## STDOUT:
12 serialized
13 ## END
14
15 #### typeset -f with function keyword (ksh style)
16 : prefix; function myfunc {
17 echo serialized
18 }
19
20 code=$(typeset -f myfunc)
21
22 $SH -c "$code; myfunc"
23
24 ## STDOUT:
25 serialized
26 ## END
27
28 #### typeset -f prints function source code - nested functions
29 outer() {
30 echo outer
31 : prefix; inner() {
32 echo inner
33 }
34 }
35
36 code=$(typeset -f outer)
37
38 if false; then
39 echo ---
40 echo $code
41 echo ---
42 fi
43
44 $SH -c "$code; outer; inner"
45
46 ## STDOUT:
47 outer
48 inner
49 ## END
50
51 #### non-{ } function bodies can be serialized (rare)
52
53 # TODO: we can add more of these
54
55 f() ( echo 'subshell body' )
56
57 code=$(typeset -f f)
58
59 $SH -c "$code; f"
60
61 ## STDOUT:
62 subshell body
63 ## END