# native 对齐扫描用例清单（§10.2-2）
#
# 每行一条 bash 构造。扫描工具（tools/native-scan.sh）把同一行分别喂给
# **真 bash** 与 **native 后端**，比对 stdout + 退出码，分三档：
#
#   一致        —— stdout 与退出码都一致（native 支持且语义相同）
#   明确不支持  —— native **明确报错**（退出码 2 + 文本含「不支持」）
#   ⚠ 静默不同  —— 两边都「成功」但结果不同 ⇒ **最危险的一类**
#                 （用户以为跑通了，其实结果是错的）
#
# ⚠ 本清单**不允许**出现「静默不同」：要么补实现，要么改成明确不支持。
#   同一份清单还被 `tools/diff-check.sh` 当作对拍用例回归
#   （文件：tools/diff-cases/native-matrix.txt，标记由扫描结果生成）。
#
# ⚠ **每行必须是独立的一条命令**：bash 侧是 `bash -c`（新进程），
#   native 侧是**同一个进程**里逐行跑 ⇒ 不要依赖跨行状态。

# ── 引号与转义 ──────────────────────────────────────────────────────
echo "a b"
echo 'a b'
echo a\ b
echo "a\"b"
echo $'a\tb'  #!unsupported
echo ""
echo ''
echo a""b
echo "x"y
printf "%s\n" "a b"

# ── 变量展开 ────────────────────────────────────────────────────────
V=1; echo $V
V=1; echo ${V}
V=1; echo ${V:-d}
echo ${MISSING:-d}
V=1; echo ${V:=d}
V=1; echo ${#V}
V=abc; echo ${V#a}
V=abc; echo ${V%c}
V=abc; echo ${V//b/B}
V=1; unset V; echo "[$V]"
V=abc; echo ${V^^}
V=ABC; echo ${V,,}
V=abcdef; echo ${V:1:2}
V=1; W=2; echo ${!V}  #!unsupported

# ── 算术展开 ────────────────────────────────────────────────────────
echo $((1+2))
echo $((1/0))
V=1; echo $((V+=1))
echo $((2**3))
echo $((1<2))
echo $((3%2))

# ── 命令替换 ────────────────────────────────────────────────────────
echo $(echo a)
echo `echo a`
echo "$(echo a)"
echo "x$(echo y)z"

# ── 管道与重定向 ────────────────────────────────────────────────────
echo a | tr a b
echo a > /tmp/rk-scan-f
echo a >> /tmp/rk-scan-f
cat < /tmp/rk-scan-f
echo a 2> /tmp/rk-scan-err
echo a 1>&2
echo a | cat | cat

# ── 数组 ────────────────────────────────────────────────────────────
arr=(a b c); echo ${arr[@]}  #!unsupported
arr=(a b c); echo ${#arr[@]}  #!unsupported
arr=(a b c); echo ${arr[1]}  #!unsupported
arr=(a b c); echo ${arr[*]}  #!unsupported

# ── 控制流（native 不实现 ⇒ 必须明确报不支持）────────────────────────
if [ -f /tmp/rk-scan-f ]; then echo y; fi  #!unsupported
if [ -d /tmp ]; then echo d; fi  #!unsupported
case x in x) echo X;; *) echo other;; esac  #!unsupported
for i in 1 2; do echo $i; done  #!unsupported
i=0; while [ $i -lt 2 ]; do echo $i; i=$((i+1)); done  #!unsupported
f() { echo hi; }; f  #!unsupported
f() { echo $1; }; f bob  #!unsupported

# ── 逻辑与列表 ──────────────────────────────────────────────────────
true && echo x
false || echo y
! false
echo {a,b}
echo /tmp/rk-scan-f

# ── 特殊参数 ────────────────────────────────────────────────────────
echo $?
echo $#  #!unsupported
echo $*  #!unsupported
echo $@  #!unsupported
true; echo $?

# ── 复合与子 shell ──────────────────────────────────────────────────
( cd /tmp && pwd )  #!unsupported
{ echo a; }  #!unsupported
echo a; echo b
echo a && echo b

# ── test / [ ────────────────────────────────────────────────────────
[ -f /tmp/rk-scan-f ] && echo yes
[ -e /tmp/rk-scan-f ] && echo yes
[ -s /tmp/rk-scan-f ] && echo yes
[ -r /tmp/rk-scan-f ] && echo yes
[ -w /tmp/rk-scan-f ] && echo yes
[ -x /tmp/rk-scan-f ] && echo yes
[ -d /tmp ] && echo yes
[ ! -f /nope ] && echo nofile
[ 1 -eq 1 ] && echo eq
[ 1 -ne 2 ] && echo ne
[ 1 -lt 2 ] && echo lt
[ 2 -gt 1 ] && echo gt
[ a = a ] && echo streq
[ a != b ] && echo strne
[ -n "" ] && echo nonempty
[ -z "" ] && echo empty
[ "a" \< "b" ] && echo ltstr
[ -f /tmp/rk-scan-f -a -d /tmp ] && echo both
test -n "" && echo nonempty
test -z "" && echo empty

# ── 导出 / 环境 ─────────────────────────────────────────────────────
export RK_SCAN=1; echo $RK_SCAN
export RK_SCAN=1; bash -c 'echo $RK_SCAN'
RK_SCAN=1; echo $RK_SCAN
export RK_UNSUP=1 | cat  #!unsupported
unset RK_UNSUP | cat  #!unsupported

# ── 内建 ────────────────────────────────────────────────────────────
echo hello | cat
printf "a\nb\n"
printf "%s-%s\n" a b
echo -n x; echo
read x < /dev/null; echo "[$x]"  #!unsupported
type echo  #!unsupported
alias ll='ls -l'; type ll  #!unsupported
cd /tmp  #!unsupported
