forked from wugren/lua-checker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHECK_LUA.sh
executable file
·44 lines (37 loc) · 1.16 KB
/
CHECK_LUA.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/sh
SRC=$1
CLEAN_ASM="while(<>){s/^\t(\d+)\t\[\d+\]/\t\1/;s/(main|function) <[^\]]+>/function/;s/0x[0-9a-f]+//;print}"
# Some shell settings
set -o pipefail
function check() {
if [ $? -ne 0 ]; then
echo ">>>>> FAILED <<<<<"
exit 1
fi
}
# Check that the simplified source is functionally identical to the original.
echo "Step 1"
rm -f /tmp/original.asm /tmp/simplified.asm /tmp/original.luac /tmp/simplified.luac
check
lua/src/luac -s -l -o /tmp/original.luac $SRC | perl -e "$CLEAN_ASM" > /tmp/original.asm
check
./lua_simplifier -luac $SRC | lua/src/luac -s -l -o /tmp/simplified.luac - | perl -e "$CLEAN_ASM" > /tmp/simplified.asm
check
diff /tmp/original.asm /tmp/simplified.asm
check
# Check that the simplified source simplifies to itself.
echo "Step 2"
rm -f /tmp/simplified.lua /tmp/simplified2.lua
check
./lua_simplifier $SRC > /tmp/simplified.lua
check
./lua_simplifier /tmp/simplified.lua > /tmp/simplified2.lua
check
diff /tmp/simplified.lua /tmp/simplified2.lua
check
# Check the simplified source.
echo "Step 3"
./lua_simplifier -emit_lines $SRC > /tmp/simplified.lua
./lua_checker -const_functions /tmp/simplified.lua
check
echo "***** Success *****"