Results for array.test.sh

casebashmkshoshosh_ALTdescription
0pass pass pass pass SETUP
1pass pass pass pass "${a[@]}" and "${a[*]}"
2pass pass pass pass ${a[@]} and ${a[*]}
3pass pass pass pass Empty array tests
4pass BUG pass pass local array
details
5pass pass pass pass Command with with word splitting in array
6pass ok FAIL FAIL space before ( in array initialization
detailsdetailsdetails
7pass pass pass pass array over multiple lines
8pass ok pass pass array with invalid token
details
9pass pass pass pass empty array
10pass pass pass pass array with empty string
11pass pass pass pass Retrieve index
12pass pass pass pass Retrieve out of bounds index
13pass N-I pass pass Negative index
details
14pass pass pass pass Retrieve index that is a variable
15pass pass pass pass Retrieve index that is a variable without $
16pass pass pass pass Retrieve index that is a command sub
17pass pass FAIL FAIL Retrieve all indices with !
detailsdetails
18pass N-I FAIL FAIL ${!a[1]} is named ref in bash
detailsdetailsdetails
19pass ok FAIL FAIL Retrieve indices without []
detailsdetailsdetails
20pass pass pass pass All elements unquoted
21pass pass pass pass All elements quoted
22pass pass pass pass $*
23pass pass pass pass "$*"
24pass pass pass pass Interpolate array into array
25pass ok ok ok Exporting array doesn't do anything, not even first element
detailsdetailsdetails
26pass BUG FAIL FAIL Env with array
detailsdetailsdetails
27pass pass FAIL FAIL Set element
detailsdetails
28pass pass FAIL FAIL Set element with var ref
detailsdetails
29pass pass FAIL FAIL Set element with array ref
detailsdetails
30pass N-I FAIL FAIL Set array item to array
detailsdetailsdetails
31pass N-I FAIL FAIL Slice of array with [@]
detailsdetailsdetails
32pass N-I FAIL FAIL Negative slice
detailsdetailsdetails
33pass N-I FAIL FAIL Slice with arithmetic
detailsdetailsdetails
34pass pass pass pass Number of elements
35pass pass pass pass Length of an element
36pass pass pass pass Iteration
37pass pass pass pass glob within array yields separate elements
38pass pass FAIL FAIL declare array and then append
detailsdetails
39pass ok pass pass Array syntax in wrong place
details
40pass pass pass pass Empty array with :-
41ok ok ok ok Single array with :-
detailsdetailsdetailsdetails
42pass N-I pass pass Stripping a whole array unquoted
details
43pass N-I pass pass Stripping a whole array quoted
details
44BUG ok pass pass Multiple subscripts not allowed
detailsdetails
45BUG ok pass pass Length op, index op, then transform op is not allowed
detailsdetails
46BUG BUG pass pass Array subscript not allowed on string
detailsdetails
47pass pass pass pass Create a "user" array out of the argv array
48pass pass pass pass Tilde expansion within array
49pass pass pass pass Brace Expansion within Array
50pass pass pass pass array default

151 passed, 13 ok, 8 known unimplemented, 6 known bugs, 13 failed, 0 skipped

Details on runs that didn't PASS

mksh4 local array

stdout:
stderr: 
/bin/mksh: <stdin>[2]: syntax error: '(' unexpected
mksh6 space before ( in array initialization

stdout:
1
stderr:
osh6 space before ( in array initialization

[osh status] Expected 2, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 440, in <module>
    main(sys.argv)
  File "bin/osh", line 427, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 410, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 321, in OshMain
    node = c_parser.ParseWholeFile()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1559, in ParseWholeFile
    if not self._NewlineOk(): return None
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 191, in _NewlineOk
    if not self._Peek():
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 154, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1114, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1075, in _ReadWord
    w = self._ReadCompoundWord(lex_mode=lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 909, in _ReadCompoundWord
    part2 = self._ReadArrayLiteralPart()
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 845, in _ReadArrayLiteralPart
    assert self.cur_token.id == Id.Op_LParen, self.cur_token
AssertionError: (token id:WS_Space val:" " span_id:1)
osh_ALT6 space before ( in array initialization

[osh_ALT status] Expected 2, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oil/bin/oil.py", line 440, in <module>
    main(sys.argv)
  File "/home/andy/git/oil/bin/oil.py", line 427, in main
    sys.exit(OilMain(argv))
  File "/home/andy/git/oil/bin/oil.py", line 410, in OilMain
    status = OshMain(main_argv)
  File "/home/andy/git/oil/bin/oil.py", line 321, in OshMain
    node = c_parser.ParseWholeFile()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1559, in ParseWholeFile
    if not self._NewlineOk(): return None
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 191, in _NewlineOk
    if not self._Peek():
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 154, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1114, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1075, in _ReadWord
    w = self._ReadCompoundWord(lex_mode=lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 909, in _ReadCompoundWord
    part2 = self._ReadArrayLiteralPart()
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 845, in _ReadArrayLiteralPart
    assert self.cur_token.id == Id.Op_LParen, self.cur_token
AssertionError: (token id:WS_Space val:" " span_id:1)
mksh8 array with invalid token

stdout:
stderr: 
/bin/mksh: <stdin>[3]: syntax error: '&' unexpected
mksh13 Negative index

stdout:
['', '', '']
stderr:
osh17 Retrieve all indices with !

[osh stdout] Expected "['0', '1']\n", got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 440, in <module>
    main(sys.argv)
  File "bin/osh", line 427, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 410, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 727, in _EvalBracedVarSub
    val = self._ApplyPrefixOp(val, part.prefix_op)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 438, in _ApplyPrefixOp
    raise NotImplementedError(op_id)
NotImplementedError: VSub_Bang
osh_ALT17 Retrieve all indices with !

[osh_ALT stdout] Expected "['0', '1']\n", got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oil/bin/oil.py", line 440, in <module>
    main(sys.argv)
  File "/home/andy/git/oil/bin/oil.py", line 427, in main
    sys.exit(OilMain(argv))
  File "/home/andy/git/oil/bin/oil.py", line 410, in OilMain
    status = OshMain(main_argv)
  File "/home/andy/git/oil/bin/oil.py", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 727, in _EvalBracedVarSub
    val = self._ApplyPrefixOp(val, part.prefix_op)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 438, in _ApplyPrefixOp
    raise NotImplementedError(op_id)
NotImplementedError: VSub_Bang
mksh18 ${!a[1]} is named ref in bash

stdout:
['a[1]']
stderr:
osh18 ${!a[1]} is named ref in bash

[osh stdout] Expected "['bar']\n", got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 440, in <module>
    main(sys.argv)
  File "bin/osh", line 427, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 410, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 727, in _EvalBracedVarSub
    val = self._ApplyPrefixOp(val, part.prefix_op)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 438, in _ApplyPrefixOp
    raise NotImplementedError(op_id)
NotImplementedError: VSub_Bang
osh_ALT18 ${!a[1]} is named ref in bash

[osh_ALT stdout] Expected "['bar']\n", got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oil/bin/oil.py", line 440, in <module>
    main(sys.argv)
  File "/home/andy/git/oil/bin/oil.py", line 427, in main
    sys.exit(OilMain(argv))
  File "/home/andy/git/oil/bin/oil.py", line 410, in OilMain
    status = OshMain(main_argv)
  File "/home/andy/git/oil/bin/oil.py", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 727, in _EvalBracedVarSub
    val = self._ApplyPrefixOp(val, part.prefix_op)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 438, in _ApplyPrefixOp
    raise NotImplementedError(op_id)
NotImplementedError: VSub_Bang
mksh19 Retrieve indices without []

stdout:
['a']
stderr:
osh19 Retrieve indices without []

[osh stdout] Expected "['']\n", got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 440, in <module>
    main(sys.argv)
  File "bin/osh", line 427, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 410, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 727, in _EvalBracedVarSub
    val = self._ApplyPrefixOp(val, part.prefix_op)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 438, in _ApplyPrefixOp
    raise NotImplementedError(op_id)
NotImplementedError: VSub_Bang
osh_ALT19 Retrieve indices without []

[osh_ALT stdout] Expected "['']\n", got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oil/bin/oil.py", line 440, in <module>
    main(sys.argv)
  File "/home/andy/git/oil/bin/oil.py", line 427, in main
    sys.exit(OilMain(argv))
  File "/home/andy/git/oil/bin/oil.py", line 410, in OilMain
    status = OshMain(main_argv)
  File "/home/andy/git/oil/bin/oil.py", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 727, in _EvalBracedVarSub
    val = self._ApplyPrefixOp(val, part.prefix_op)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 438, in _ApplyPrefixOp
    raise NotImplementedError(op_id)
NotImplementedError: VSub_Bang
mksh25 Exporting array doesn't do anything, not even first element

stdout:
stderr: 
/bin/mksh: <stdin>[1]: syntax error: '(' unexpected
osh25 Exporting array doesn't do anything, not even first element

stdout:
stderr: 
Line 1 of '<stdin>'
  export PYTHONPATH=(a b c)
                     ^
Unexpected array literal: (CompoundWord
  parts: [
    (ArrayLiteralPart
      words: [
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:a span_id:4))])
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:6))])
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:c span_id:8))])
      ]
    )
  ]
)
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
osh_ALT25 Exporting array doesn't do anything, not even first element

stdout:
stderr: 
Line 1 of '<stdin>'
  export PYTHONPATH=(a b c)
                     ^
Unexpected array literal: (CompoundWord
  parts: [
    (ArrayLiteralPart
      words: [
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:a span_id:4))])
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:6))])
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:c span_id:8))])
      ]
    )
  ]
)
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
mksh26 Env with array

stdout:
stderr: 
/bin/mksh: <stdin>[1]: syntax error: '(' unexpected
osh26 Env with array

[osh stdout] Expected u'a\n(b b)\n', got ''
[osh status] Expected 0, got 2

stdout:
stderr: 
Line 1 of '<stdin>'
  A=a B=(b b) printenv.py A B
         ^
Unexpected array literal in binding: (CompoundWord
  parts: [
    (ArrayLiteralPart
      words: [
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:5))])
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:7))])
      ]
    )
  ]
)
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
osh_ALT26 Env with array

[osh_ALT stdout] Expected u'a\n(b b)\n', got ''
[osh_ALT status] Expected 0, got 2

stdout:
stderr: 
Line 1 of '<stdin>'
  A=a B=(b b) printenv.py A B
         ^
Unexpected array literal in binding: (CompoundWord
  parts: [
    (ArrayLiteralPart
      words: [
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:5))])
        (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:7))])
      ]
    )
  ]
)
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
osh27 Set element

[osh stdout] Expected "['9', '2 3']\n", got "['1', '2 3']\n"

stdout:
['1', '2 3']
stderr:
Unexpected error in execvpe('a[0]=9', ['a[0]=9'], ...): [Errno 2] No such file or directory
osh_ALT27 Set element

[osh_ALT stdout] Expected "['9', '2 3']\n", got "['1', '2 3']\n"

stdout:
['1', '2 3']
stderr:
Unexpected error in execvpe('a[0]=9', ['a[0]=9'], ...): [Errno 2] No such file or directory
osh28 Set element with var ref

[osh stdout] Expected "['9', '2 3']\n", got "['1', '2 3']\n"

stdout:
['1', '2 3']
stderr:
Unexpected error in execvpe('a[0]=9', ['a[0]=9'], ...): [Errno 2] No such file or directory
osh_ALT28 Set element with var ref

[osh_ALT stdout] Expected "['9', '2 3']\n", got "['1', '2 3']\n"

stdout:
['1', '2 3']
stderr:
Unexpected error in execvpe('a[0]=9', ['a[0]=9'], ...): [Errno 2] No such file or directory
osh29 Set element with array ref

[osh stdout] Expected "['1', '9']\n", got "['1', '2 3']\n"

stdout:
['1', '2 3']
stderr:
Unexpected error in execvpe('a[1]=9', ['a[1]=9'], ...): [Errno 2] No such file or directory
osh_ALT29 Set element with array ref

[osh_ALT stdout] Expected "['1', '9']\n", got "['1', '2 3']\n"

stdout:
['1', '2 3']
stderr:
Unexpected error in execvpe('a[1]=9', ['a[1]=9'], ...): [Errno 2] No such file or directory
mksh30 Set array item to array

stdout:
stderr: 
/bin/mksh: <stdin>[2]: set: a[0]: is not an identifier
osh30 Set array item to array

[osh stdout] Expected 'status=1\n', got ''
[osh status] Expected 0, got 2

stdout:
stderr: 
Line 2 of '<stdin>'
  a[0]=(3 4)
        ^
Expected word type Right_FuncDef, got (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:3 span_id:13))])
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
osh_ALT30 Set array item to array

[osh_ALT stdout] Expected 'status=1\n', got ''
[osh_ALT status] Expected 0, got 2

stdout:
stderr: 
Line 2 of '<stdin>'
  a[0]=(3 4)
        ^
Expected word type Right_FuncDef, got (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:3 span_id:13))])
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
mksh31 Slice of array with [@]

stdout:
stderr: 
/bin/mksh: <stdin>[2]: ${a[@]: 1:2}: bad substitution
osh31 Slice of array with [@]

[osh stdout] Expected "['2', '3']\n", got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 440, in <module>
    main(sys.argv)
  File "bin/osh", line 427, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 410, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 775, in _EvalBracedVarSub
    raise NotImplementedError(op)
NotImplementedError: (Slice
  begin: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:18))])
    )
  length: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:2 span_id:20))])
    )
)
osh_ALT31 Slice of array with [@]

[osh_ALT stdout] Expected "['2', '3']\n", got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oil/bin/oil.py", line 440, in <module>
    main(sys.argv)
  File "/home/andy/git/oil/bin/oil.py", line 427, in main
    sys.exit(OilMain(argv))
  File "/home/andy/git/oil/bin/oil.py", line 410, in OilMain
    status = OshMain(main_argv)
  File "/home/andy/git/oil/bin/oil.py", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 775, in _EvalBracedVarSub
    raise NotImplementedError(op)
NotImplementedError: (Slice
  begin: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:18))])
    )
  length: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:2 span_id:20))])
    )
)
mksh32 Negative slice

stdout:
stderr: 
/bin/mksh: <stdin>[2]: ${a[@]: (-2):1}: bad substitution
osh32 Negative slice

[osh stdout] Expected "['2']\n", got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 440, in <module>
    main(sys.argv)
  File "bin/osh", line 427, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 410, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 775, in _EvalBracedVarSub
    raise NotImplementedError(op)
NotImplementedError: (Slice
  begin: 
    (ArithUnary
      op_id: Node_UnaryMinus
      child: 
        (ArithWord
          w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:2 span_id:20))])
        )
    )
  length: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:23))])
    )
)
osh_ALT32 Negative slice

[osh_ALT stdout] Expected "['2']\n", got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oil/bin/oil.py", line 440, in <module>
    main(sys.argv)
  File "/home/andy/git/oil/bin/oil.py", line 427, in main
    sys.exit(OilMain(argv))
  File "/home/andy/git/oil/bin/oil.py", line 410, in OilMain
    status = OshMain(main_argv)
  File "/home/andy/git/oil/bin/oil.py", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 775, in _EvalBracedVarSub
    raise NotImplementedError(op)
NotImplementedError: (Slice
  begin: 
    (ArithUnary
      op_id: Node_UnaryMinus
      child: 
        (ArithWord
          w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:2 span_id:20))])
        )
    )
  length: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:23))])
    )
)
mksh33 Slice with arithmetic

stdout:
stderr: 
/bin/mksh: <stdin>[3]: ${a[@]:i-4:2}: bad substitution
osh33 Slice with arithmetic

[osh stdout] Expected "['2', '3']\n", got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 440, in <module>
    main(sys.argv)
  File "bin/osh", line 427, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 410, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 775, in _EvalBracedVarSub
    raise NotImplementedError(op)
NotImplementedError: (Slice
  begin: 
    (ArithBinary
      op_id: Arith_Minus
      left: (ArithVarRef name:i)
      right: 
        (ArithWord
          w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:4 span_id:23))])
        )
    )
  length: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:2 span_id:25))])
    )
)
osh_ALT33 Slice with arithmetic

[osh_ALT stdout] Expected "['2', '3']\n", got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oil/bin/oil.py", line 440, in <module>
    main(sys.argv)
  File "/home/andy/git/oil/bin/oil.py", line 427, in main
    sys.exit(OilMain(argv))
  File "/home/andy/git/oil/bin/oil.py", line 410, in OilMain
    status = OshMain(main_argv)
  File "/home/andy/git/oil/bin/oil.py", line 373, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 892, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 674, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 885, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 856, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 571, in _Dispatch
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1060, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1040, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 993, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 887, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 816, in _EvalWordPart
    return [self._EvalDoubleQuotedPart(part)]
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 582, in _EvalDoubleQuotedPart
    for part_val in self._EvalWordPart(p, quoted=True):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 846, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 775, in _EvalBracedVarSub
    raise NotImplementedError(op)
NotImplementedError: (Slice
  begin: 
    (ArithBinary
      op_id: Arith_Minus
      left: (ArithVarRef name:i)
      right: 
        (ArithWord
          w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:4 span_id:23))])
        )
    )
  length: 
    (ArithWord
      w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:2 span_id:25))])
    )
)
osh38 declare array and then append

[osh stdout] Expected "['a', 'b', 'c']\n", got ''
[osh status] Expected 0, got 2

stdout:
stderr: 
Line 1 of '<stdin>'
  declare -a array
          ^~
Invalid variable name '-a'
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
osh_ALT38 declare array and then append

[osh_ALT stdout] Expected "['a', 'b', 'c']\n", got ''
[osh_ALT status] Expected 0, got 2

stdout:
stderr: 
Line 1 of '<stdin>'
  declare -a array
          ^~
Invalid variable name '-a'
---
Line 0 of '<unknown>'
  <no position info for token>
Error parsing AndOr in ParseCommandTerm
---
mksh39 Array syntax in wrong place

stdout:
stderr: 
/bin/mksh: <stdin>[1]: syntax error: '(' unexpected
bash41 Single array with :-

stdout:
['none', 'x', '']
stderr:
mksh41 Single array with :-

stdout:
['none', 'x', 'none']
stderr:
osh41 Single array with :-

stdout:
['x', '']
stderr:
osh_ALT41 Single array with :-

stdout:
['x', '']
stderr:
mksh42 Stripping a whole array unquoted

stdout:
stderr: 
/bin/mksh: <stdin>[2]: ${files[@]%.c}: bad substitution
mksh43 Stripping a whole array quoted

stdout:
stderr: 
/bin/mksh: <stdin>[2]: ${files[@]%.c}: bad substitution
bash44 Multiple subscripts not allowed

stdout:
['123', '123']
stderr:
mksh44 Multiple subscripts not allowed

stdout:
stderr: 
/bin/mksh: <stdin>[2]: ${a[0][0]}: bad substitution
bash45 Length op, index op, then transform op is not allowed

stdout:
3 3
stderr:
mksh45 Length op, index op, then transform op is not allowed

stdout:
stderr: 
/bin/mksh: <stdin>[2]: ${#a[0]/1/xxx}: bad substitution
bash46 Array subscript not allowed on string

stdout:
abc
stderr:
mksh46 Array subscript not allowed on string

stdout:
abc
stderr: