mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
68 lines
1.7 KiB
Bash
Executable File
68 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if ! [ -f ai/regression/completeness.sh ]; then
|
|
echo "Make sure you are in the root of OpenTTD before starting this script."
|
|
exit 1
|
|
fi
|
|
|
|
cat ai/regression/tst_*/main.nut | tr ';' '\n' | awk '
|
|
/^function/ {
|
|
for (local in locals) {
|
|
delete locals[local]
|
|
}
|
|
if (match($0, "function Regression::Start") || match($0, "function Regression::Stop")) next
|
|
locals["this"] = "AIControllerSquirrel"
|
|
}
|
|
|
|
/local/ {
|
|
gsub(".*local", "local")
|
|
if (match($4, "^AI")) {
|
|
sub("\\(.*", "", $4)
|
|
locals[$2] = $4
|
|
}
|
|
}
|
|
|
|
/Valuate/ {
|
|
gsub(".*Valuate\\(", "")
|
|
gsub("\\).*", "")
|
|
gsub(",.*", "")
|
|
gsub("\\.", "::")
|
|
print $0
|
|
}
|
|
|
|
/\./ {
|
|
for (local in locals) {
|
|
if (match($0, local ".")) {
|
|
fname = substr($0, index($0, local "."))
|
|
sub("\\(.*", "", fname)
|
|
sub("\\.", "::", fname)
|
|
sub(local, locals[local], fname)
|
|
print fname
|
|
if (match(locals[local], "List")) {
|
|
sub(locals[local], "AIAbstractList", fname)
|
|
print fname
|
|
}
|
|
}
|
|
}
|
|
# We want to remove everything before the FIRST occurrence of AI.
|
|
# If we do not remove any other occurrences of AI from the string
|
|
# we will remove everything before the LAST occurrence of AI, so
|
|
# do some little magic to make it work the way we want.
|
|
sub("AI", "AXXXXY")
|
|
gsub("AI", "AXXXXX")
|
|
sub(".*AXXXXY", "AI")
|
|
if (match($0, "^AI") && match($0, ".")) {
|
|
sub("\\(.*", "", $0)
|
|
sub("\\.", "::", $0)
|
|
print $0
|
|
}
|
|
}
|
|
' | sed 's/ //g' | sort | uniq > tmp.in_regression
|
|
|
|
grep 'DefSQ.*Method' ../src/script/api/ai/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api
|
|
|
|
diff -u tmp.in_regression tmp.in_api | grep -v '^+++' | grep '^+' | sed 's/^+//'
|
|
|
|
rm -f tmp.in_regression tmp.in_api
|
|
|