Results for var-ref.test.sh

statusbashosh
pass 2614
ok 20
N-I 10
BUG 20
FAIL 017
total3131
casebashoshdescription
0pass pass var ref ${!a}
1pass pass ${!ref-default}
2pass pass ${!undef:-}
3BUG FAIL comparison to ${!array[@]} keys (similar SYNTAX)
detailsdetails
4pass FAIL ${!a[@]-'default'} is legal but fails with more than one element
details
5pass FAIL var ref to $@ with @
details
6pass pass var ref to $1 and $2 with 1 and 2
7pass FAIL var ref: 1, @, *
details
8pass pass var ref to special var BASH_SOURCE
9pass FAIL var ref to $? with '?'
details
10pass pass Var ref, then assignment with ${ := }
11pass pass Var ref, then error with ${ ? }
12pass FAIL Indirect expansion, THEN suffix operators
details
13pass FAIL var ref OF array var -- silent a[0] decay
details
14pass FAIL array ref
details
15N-I pass array ref with strict_array
details
16pass FAIL var ref TO array var
details
17pass FAIL var ref TO array var, with subscripts
details
18pass FAIL var ref TO assoc array a[key]
details
19pass FAIL var ref TO array with arbitrary subscripts
details
20pass pass Bizarre tilde expansion in array index
21pass FAIL Indirect expansion TO fancy expansion features bash disallows
details
22pass pass Bad var ref
23pass pass Bad var ref 2
24pass pass ${!OPTIND} (used by bash completion
25ok pass var ref doesn't need cycle detection
details
26BUG pass Var Ref Code Injection $(tee PWNED)
details
27pass FAIL ${!array_ref:-set} and ${!array_ref:=assign}
details
28pass FAIL Array indirect expansion with suffix operators
details
29pass FAIL Array indirect expansion with replacements
details
30ok FAIL Array indirect expansion with @? conversion
detailsdetails
40 passed, 2 OK, 1 not implemented, 2 BUG, 17 failed, 0 timeouts, 0 cases skipped
17 failed under osh

Details on runs that didn't PASS

bash3 comparison to ${!array[@]} keys (similar SYNTAX)

stdout:
['0', '1']
a_keys=0
['']
a_nobrackets=0
---
['A', 'B']
A_keys=0
['']
A_nobrackets=0
stderr:
osh3 comparison to ${!array[@]} keys (similar SYNTAX)

[osh stdout] Expected "['0', '1']\na_keys=0\n['']\na_nobrackets=0\n---\n['A', 'B']\nA_keys=0\nA_nobrackets=1\n" Got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1680, in _EvalBracedVarSub
    val = self._Keys(val, part.name_tok)
  File "/home/uke/oil/osh/word_eval.py", line 977, in _Keys
    mops.ToStr(i) for i in bash_impl.BashArray_GetKeys(val)
NameError: global name 'bash_impl' is not defined
osh4 ${!a[@]-'default'} is legal but fails with more than one element

[osh stderr] Found 'Traceback (most recent'

stdout:
status=1
status=1
stderr:
  
  ^
[ contents of var 'a' at line 1 of [ stdin ] ]:0: Expected var name
  (argv.py "${!a[@]-default}")
               ^
[ stdin ]:1: Invalid var ref expression
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1892, in _Dispatch
    status = self.shell_ex.RunSubshell(node.child)
  File "/home/uke/oil/core/executor.py", line 595, in RunSubshell
    return p.RunProcess(self.waiter, trace.ForkWait)
  File "/home/uke/oil/core/process.py", line 1186, in RunProcess
    self.StartProcess(why)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1021, in _EvalVarRef
    var_ref_str = ' '.join(bash_impl.BashArray_GetValues(val))
NameError: global name 'bash_impl' is not defined
osh5 var ref to $@ with @

[osh stdout] Expected 'ref=one two\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1750, in _EvalBracedVarSub
    part_val = _ValueToPartValue(val, quoted or quoted2, part)
  File "/home/uke/oil/osh/word_eval.py", line 231, in _ValueToPartValue
    bash_impl.InternalStringArray_GetValues(val), quoted)
NameError: global name 'bash_impl' is not defined
osh7 var ref: 1, @, *

[osh stdout] Expected "['x']\n['x', 'y']\n['x y']\n", got "['x']\n"
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
['x']
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1812, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1750, in _EvalBracedVarSub
    part_val = _ValueToPartValue(val, quoted or quoted2, part)
  File "/home/uke/oil/osh/word_eval.py", line 231, in _ValueToPartValue
    bash_impl.InternalStringArray_GetValues(val), quoted)
NameError: global name 'bash_impl' is not defined
osh9 var ref to $? with '?'

[osh stdout] Expected 'myfunc\n0\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1574, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1537, in _EvalBracketOp
    val = DecayArray(val)
  File "/home/uke/oil/osh/word_eval.py", line 119, in DecayArray
    s, error_code = bash_impl.InternalStringArray_GetElement(
NameError: global name 'bash_impl' is not defined
osh12 Indirect expansion, THEN suffix operators

[osh stdout] Expected 'ok\n', got '${!a[1]} -> expected xx, got \n${!b[1]} -> expected asdf, got \nok\n'
[osh stderr] Found 'Traceback (most recent'

stdout:
${!a[1]} -> expected xx, got 
${!b[1]} -> expected asdf, got 
ok
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1711, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1028, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 407, in _RunSimpleCommand
    status = self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/vm.py", line 240, in RunBuiltin
    return self._RunBuiltinProc(builtin_proc, cmd_val)
  File "/home/uke/oil/core/vm.py", line 250, in _RunBuiltinProc
    status = builtin_proc.Run(cmd_val)
  File "/home/uke/oil/builtin/meta_oils.py", line 101, in Run
    cmd_flags=cmd_eval.RaiseControlFlow)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1661, in _EvalBracedVarSub
    val = self._EvalBracketOp(val, part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1711, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1028, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 407, in _RunSimpleCommand
    status = self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/vm.py", line 240, in RunBuiltin
    return self._RunBuiltinProc(builtin_proc, cmd_val)
  File "/home/uke/oil/core/vm.py", line 250, in _RunBuiltinProc
    status = builtin_proc.Run(cmd_val)
  File "/home/uke/oil/builtin/meta_oils.py", line 101, in Run
    cmd_flags=cmd_eval.RaiseControlFlow)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1661, in _EvalBracedVarSub
    val = self._EvalBracketOp(val, part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
osh13 var ref OF array var -- silent a[0] decay

[osh stdout] Expected 'first=\nfirst=zzz\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1661, in _EvalBracedVarSub
    val = self._EvalBracketOp(val, part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1537, in _EvalBracketOp
    val = DecayArray(val)
  File "/home/uke/oil/osh/word_eval.py", line 123, in DecayArray
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
osh14 array ref

[osh stdout] Expected 'ale\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1574, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
bash15 array ref with strict_array

stdout:
ale
stderr:
bash: line 1: shopt: strict_array: invalid shell option name
osh16 var ref TO array var

[osh stdout] Expected 'ale\nale bean\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
  shopt -s compat_array
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'compat_array'
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1574, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1537, in _EvalBracketOp
    val = DecayArray(val)
  File "/home/uke/oil/osh/word_eval.py", line 123, in DecayArray
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
osh17 var ref TO array var, with subscripts

[osh stdout] Expected "['']\n['x']\n['z']\n['x', 'y', 'z']\n['x y z']\n" Got "['']\n"
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
['']
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1574, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
osh18 var ref TO assoc array a[key]

[osh stdout] Expected 'ref=\nref_SUB=bean\nref_SUB_QUOTED=bean\nref_SUB_BAD=\n' Got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
  shopt -s compat_array
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'compat_array'
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1574, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1537, in _EvalBracketOp
    val = DecayArray(val)
  File "/home/uke/oil/osh/word_eval.py", line 133, in DecayArray
    s = bash_impl.BashAssoc_GetElement(assoc_val, '0')
NameError: global name 'bash_impl' is not defined
osh19 var ref TO array with arbitrary subscripts

[osh stdout] Expected 'works: a[1]\nworks: a[$b]\nworks: a[${c:-1}]\nworks: a[$(echo 1)]\nworks: a[$(( 3 - 2 ))]\n' Got ''
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
  shopt -s eval_unsafe_arith compat_array
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'compat_array'
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2553, in EvalWordSequence2
    fast_str, words, meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2433, in _DetectAssignBuiltinStr
    meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2394, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1569, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
  a[{1,0}]
    ^
[ contents of var '1' at line 4 of [ stdin ] ]:1: Unexpected token while parsing arithmetic: '{'
    local val=$(echo "${!1}")
                         ^
[ stdin ]:4: Invalid var ref expression
  a[<(echo x)]
    ^
[ contents of var '1' at line 4 of [ stdin ] ]:1: Token can't be used in prefix position
    local val=$(echo "${!1}")
                         ^
[ stdin ]:4: Invalid var ref expression
  a[$aa]
    ^~~
[ contents of var '1' at line 4 of [ stdin ] ]:1: fatal: Invalid integer constant '1 0'
  a[b*]
      ^
[ contents of var '1' at line 4 of [ stdin ] ]:1: Token can't be used in prefix position
    local val=$(echo "${!1}")
                         ^
[ stdin ]:4: Invalid var ref expression
  a[1"]
     ^
[ contents of var '1' at line 4 of [ stdin ] ]:1: Unexpected EOF reading double-quoted string that began here
    local val=$(echo "${!1}")
                         ^
[ stdin ]:4: Invalid var ref expression
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2553, in EvalWordSequence2
    fast_str, words, meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2433, in _DetectAssignBuiltinStr
    meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2394, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1569, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2553, in EvalWordSequence2
    fast_str, words, meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2433, in _DetectAssignBuiltinStr
    meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2394, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1569, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2553, in EvalWordSequence2
    fast_str, words, meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2433, in _DetectAssignBuiltinStr
    meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2394, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1569, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2553, in EvalWordSequence2
    fast_str, words, meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2433, in _DetectAssignBuiltinStr
    meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2394, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1037, in _EvalVarRef
    return self._VarRefValue(bvs_part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1569, in _VarRefValue
    vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
osh21 Indirect expansion TO fancy expansion features bash disallows

[osh stdout] Expected 'done\n', got '!a[0] \ndone\n'
[osh stderr] Found 'Traceback (most recent'

stdout:
!a[0] 
done
stderr:
  a[0
     ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Unexpected token after arithmetic expression (Id.Eof_Real != Id.Arith_RBracket)
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  echo "${a[0}"
             ^
[ eval arg at line 3 of [ stdin ] ]:1

      desugared_result=$(eval 'echo "${'"$1"'}"')
                         ^~~~
[ stdin ]:3: Unexpected token after arithmetic expression (Id.Arith_RBrace != Id.Arith_RBracket)
  aa[k
      ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Unexpected token after arithmetic expression (Id.Eof_Real != Id.Arith_RBracket)
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  echo "${aa[k}"
              ^
[ eval arg at line 3 of [ stdin ] ]:1

      desugared_result=$(eval 'echo "${'"$1"'}"')
                         ^~~~
[ stdin ]:3: Unexpected token after arithmetic expression (Id.Arith_RBrace != Id.Arith_RBracket)
  !x
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  !a[0]
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1711, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1028, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2253, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1940, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2654, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 671, in RunCommandSub
    status, stdout_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 608, in CaptureStdout
    p.StartProcess(trace.CommandSub)
  File "/home/uke/oil/core/process.py", line 1096, in StartProcess
    self.thunk.Run()
  File "/home/uke/oil/core/process.py", line 856, in Run
    cmd_eval.OptimizeSubshells | cmd_eval.MarkLastCommands)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 407, in _RunSimpleCommand
    status = self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/vm.py", line 240, in RunBuiltin
    return self._RunBuiltinProc(builtin_proc, cmd_val)
  File "/home/uke/oil/core/vm.py", line 250, in _RunBuiltinProc
    status = builtin_proc.Run(cmd_val)
  File "/home/uke/oil/builtin/meta_oils.py", line 101, in Run
    cmd_flags=cmd_eval.RaiseControlFlow)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1661, in _EvalBracedVarSub
    val = self._EvalBracketOp(val, part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
  x:-foo
   ^~
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x:=foo
   ^~
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x:?oops
   ^~
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x:+yy
   ^~
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x:0
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x:0:1
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  !a@
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  #x
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x#y
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x/y/foo
   ^
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
  x@Q
   ^~
[ contents of var '1' at line 2 of [ stdin ] ]:1: Expected end of var ref expression
      result="${!1}"
                 ^
[ stdin ]:2: Invalid var ref expression
bash25 var ref doesn't need cycle detection

stdout:
cycle=x
cycle=
stderr:
bash: line 7: warning: a: circular name reference
bash26 Var Ref Code Injection $(tee PWNED)

stdout:
42
PWNED
0
stderr:
osh27 ${!array_ref:-set} and ${!array_ref:=assign}

[osh stdout] Expected "==== check ====\n['', '', '']\n['', '', '']\n==== assign ====\n['', '', '']\n['', '', '']\n['', '', '']\n['', '', '']\n" Got '==== check ====\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
==== check ====
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1715, in _EvalBracedVarSub
    vsub_state):
  File "/home/uke/oil/osh/word_eval.py", line 769, in _ApplyTestOp
    strs = bash_impl.BashArray_GetValues(val)
NameError: global name 'bash_impl' is not defined
osh28 Array indirect expansion with suffix operators

[osh stdout] Expected "==== v1 ====\n['lue']\n['al']\n['value']\n['set']\n['value']\nv1=value\n==== v2 ====\n['']\n['']\n['empty']\n['']\n['assign']\nv2=assign\n==== a1 ====\n['']\n['']\n['empty']\n['']\n['assign']\n['assign']\n==== a2[0] ====\n['ement']\n['le']\n['element']\n['set']\n['element']\n['element']\n==== a3[@] ====\n['3']\n['2', '3']\n['1', '2', '3']\n['set']\n['1', '2', '3']\n['1', '2', '3']\n" Got '==== v1 ====\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
==== v1 ====
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1025, in _EvalVarRef
    var_ref_str = ' '.join(bash_impl.BashAssoc_GetValues(val))
NameError: global name 'bash_impl' is not defined
osh29 Array indirect expansion with replacements

[osh stdout] Expected "==== v1 ====\n['alue']\n['valu']\n['vlu']\n['vxlux']\n==== v2 ====\n['']\n['']\n['']\n['']\n==== a1 ====\n['']\n['']\n['']\n['']\n==== a2[0] ====\n['lement']\n['elemen']\n['lmnt']\n['xlxmxnt']\n==== a3[@] ====\n['', '', '']\n['', '', '']\n['1', '2', '3']\n['1', '2', '3']\n" Got '==== v1 ====\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
==== v1 ====
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1025, in _EvalVarRef
    var_ref_str = ' '.join(bash_impl.BashAssoc_GetValues(val))
NameError: global name 'bash_impl' is not defined
bash30 Array indirect expansion with @? conversion

stdout:
==== v1 ====
["'value'"]
['value']
['']
==== v2 ====
["''"]
['']
['']
==== a1 ====
['']
['']
['a']
==== a2[0] ====
["'element'"]
['element']
['a']
==== a3[@] ====
["'1'", "'2'", "'3'"]
['1', '2', '3']
['a', 'a', 'a']
stderr:
osh30 Array indirect expansion with @? conversion

[osh stdout] Expected '==== v1 ====\n[\'value\']\n[\'value\']\n[\'\']\n==== v2 ====\n["\'\'"]\n[\'\']\n[\'\']\n==== a1 ====\n[\'\']\n[\'\']\n[\'a\']\n==== a2[0] ====\n[\'element\']\n[\'element\']\n[\'a\']\n==== a3[@] ====\n[\'1\', \'2\', \'3\']\n[\'1\', \'2\', \'3\']\n[\'a\', \'a\', \'a\']\n' Got '==== v1 ====\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
==== v1 ====
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1692, in _EvalBracedVarSub
    vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1025, in _EvalVarRef
    var_ref_str = ' '.join(bash_impl.BashAssoc_GetValues(val))
NameError: global name 'bash_impl' is not defined