Add while loop detection and conversion.

This commit is contained in:
Jennifer Taylor
2021-05-05 00:54:34 +00:00
parent 2f79a6401d
commit 636e1876bc
2 changed files with 121 additions and 70 deletions

View File

@@ -798,16 +798,11 @@ class TestAFPDecompile(ExtendedTestCase):
AP2Action(107, AP2Action.END),
])
statements = self.__call_decompile(bytecode)
# TODO: This should be optimized as a while statement.
self.assertEqual(self.__equiv(statements), [
"local finished = False",
"do {\n"
" if (finished) {\n"
" break\n"
" }\n"
"while (not finished) {\n"
" builtin_GotoNextFrame()\n"
"} while (True)"
"}"
])
def test_advanced_while(self) -> None:
@@ -835,20 +830,15 @@ class TestAFPDecompile(ExtendedTestCase):
AP2Action(112, AP2Action.END),
])
statements = self.__call_decompile(bytecode)
# TODO: This should be optimized as a while statement.
self.assertEqual(self.__equiv(statements), [
"local finished = False",
"do {\n"
" if (finished) {\n"
" break\n"
" }\n"
"while (not finished) {\n"
" if (not some_condition) {\n"
" builtin_StopPlaying()\n"
" break\n"
" }\n"
" builtin_GotoNextFrame()\n"
"} while (True)"
"}"
])
def test_basic_for(self) -> None: