mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
JSSpecCompiler: Add our first test :^)
This commit is contained in:
parent
107a3b44fa
commit
00928764e9
Notes:
sideshowbarker
2024-07-16 21:51:02 +09:00
Author: https://github.com/DanShaders Commit: https://github.com/SerenityOS/serenity/commit/00928764e9 Pull-request: https://github.com/SerenityOS/serenity/pull/21612 Reviewed-by: https://github.com/ADKaster
4 changed files with 138 additions and 1 deletions
|
@ -0,0 +1,18 @@
|
||||||
|
auto f(auto cond1, auto cond2)
|
||||||
|
{
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
|
||||||
|
if (cond1) {
|
||||||
|
a = 1;
|
||||||
|
if (cond2) {
|
||||||
|
b = a;
|
||||||
|
} else {
|
||||||
|
b = 3;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
b = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
return b;
|
||||||
|
}
|
|
@ -0,0 +1,108 @@
|
||||||
|
===== AST after parser =====
|
||||||
|
f():
|
||||||
|
TreeList
|
||||||
|
IfBranch
|
||||||
|
UnresolvedReference cond1
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference a
|
||||||
|
MathematicalConstant 1
|
||||||
|
IfBranch
|
||||||
|
UnresolvedReference cond2
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
UnresolvedReference a
|
||||||
|
ElseIfBranch Else
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
MathematicalConstant 3
|
||||||
|
ElseIfBranch Else
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
MathematicalConstant 4
|
||||||
|
ReturnNode
|
||||||
|
UnresolvedReference b
|
||||||
|
|
||||||
|
===== AST after function-call-canonicalization =====
|
||||||
|
f():
|
||||||
|
TreeList
|
||||||
|
IfBranch
|
||||||
|
UnresolvedReference cond1
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference a
|
||||||
|
MathematicalConstant 1
|
||||||
|
IfBranch
|
||||||
|
UnresolvedReference cond2
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
UnresolvedReference a
|
||||||
|
ElseIfBranch Else
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
MathematicalConstant 3
|
||||||
|
ElseIfBranch Else
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
MathematicalConstant 4
|
||||||
|
ReturnNode
|
||||||
|
UnresolvedReference b
|
||||||
|
|
||||||
|
===== AST after if-branch-merging =====
|
||||||
|
f():
|
||||||
|
TreeList
|
||||||
|
IfElseIfChain
|
||||||
|
UnresolvedReference cond1
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference a
|
||||||
|
MathematicalConstant 1
|
||||||
|
IfElseIfChain
|
||||||
|
UnresolvedReference cond2
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
UnresolvedReference a
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
MathematicalConstant 3
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
UnresolvedReference b
|
||||||
|
MathematicalConstant 4
|
||||||
|
ReturnNode
|
||||||
|
UnresolvedReference b
|
||||||
|
|
||||||
|
===== AST after reference-resolving =====
|
||||||
|
f():
|
||||||
|
TreeList
|
||||||
|
IfElseIfChain
|
||||||
|
UnresolvedReference cond1
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
Var a
|
||||||
|
MathematicalConstant 1
|
||||||
|
IfElseIfChain
|
||||||
|
UnresolvedReference cond2
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
Var b
|
||||||
|
Var a
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
Var b
|
||||||
|
MathematicalConstant 3
|
||||||
|
TreeList
|
||||||
|
BinaryOperation Declaration
|
||||||
|
Var b
|
||||||
|
MathematicalConstant 4
|
||||||
|
ReturnNode
|
||||||
|
Var b
|
||||||
|
|
|
@ -23,6 +23,7 @@ GOOD_LICENSE_HEADER_PATTERN = re.compile(
|
||||||
LICENSE_HEADER_CHECK_EXCLUDES = {
|
LICENSE_HEADER_CHECK_EXCLUDES = {
|
||||||
'AK/Checked.h',
|
'AK/Checked.h',
|
||||||
'AK/Function.h',
|
'AK/Function.h',
|
||||||
|
'Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Tests/',
|
||||||
'Userland/Libraries/LibJS/SafeFunction.h',
|
'Userland/Libraries/LibJS/SafeFunction.h',
|
||||||
'Userland/Libraries/LibELF/ELFABI.h',
|
'Userland/Libraries/LibELF/ELFABI.h',
|
||||||
'Userland/Libraries/LibCodeComprehension/Cpp/Tests/',
|
'Userland/Libraries/LibCodeComprehension/Cpp/Tests/',
|
||||||
|
|
|
@ -29,7 +29,17 @@ constexpr StringView stderr_capture_filename = "stderr"sv;
|
||||||
constexpr StringView compiler_binary_name = "JSSpecCompiler"sv;
|
constexpr StringView compiler_binary_name = "JSSpecCompiler"sv;
|
||||||
constexpr StringView relative_path_to_test = "Tests"sv;
|
constexpr StringView relative_path_to_test = "Tests"sv;
|
||||||
|
|
||||||
Array<TestDescription, 0> const regression_tests = {};
|
constexpr TestDescription::Flag always_dump_ast = {
|
||||||
|
.name = "all"sv,
|
||||||
|
.dump_ast = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
const Array regression_tests = {
|
||||||
|
TestDescription {
|
||||||
|
.sources = { "simple.cpp"sv },
|
||||||
|
.flags = { always_dump_ast },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static const LexicalPath path_to_compiler_binary = [] {
|
static const LexicalPath path_to_compiler_binary = [] {
|
||||||
auto path_to_self = LexicalPath(MUST(Core::System::current_executable_path())).parent();
|
auto path_to_self = LexicalPath(MUST(Core::System::current_executable_path())).parent();
|
||||||
|
|
Loading…
Reference in a new issue