mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:52:45 +00:00 
			
		
		
		
	JSSpecCompiler: Compare CFG when running regression tests
This commit is contained in:
		
							parent
							
								
									ce6b987330
								
							
						
					
					
						commit
						8126e76e59
					
				
					 2 changed files with 62 additions and 2 deletions
				
			
		|  | @ -132,3 +132,53 @@ TreeList | ||||||
|   ReturnNode |   ReturnNode | ||||||
|     Var b |     Var b | ||||||
| 
 | 
 | ||||||
|  | ===== CFG after cfg-building ===== | ||||||
|  | f(): | ||||||
|  | 0: | ||||||
|  | ControlFlowBranch true=3 false=7 | ||||||
|  |   UnresolvedReference cond1 | ||||||
|  | 
 | ||||||
|  | 1: | ||||||
|  | ControlFlowFunctionReturn | ||||||
|  |   Var $return | ||||||
|  | 
 | ||||||
|  | 2: | ||||||
|  | BinaryOperation Assignment | ||||||
|  |   Var $return | ||||||
|  |   Var b | ||||||
|  | ControlFlowJump jump=1 | ||||||
|  | 
 | ||||||
|  | 3: | ||||||
|  | BinaryOperation Declaration | ||||||
|  |   Var a | ||||||
|  |   MathematicalConstant 1 | ||||||
|  | ControlFlowBranch true=5 false=6 | ||||||
|  |   UnresolvedReference cond2 | ||||||
|  | 
 | ||||||
|  | 4: | ||||||
|  | ControlFlowJump jump=2 | ||||||
|  | 
 | ||||||
|  | 5: | ||||||
|  | BinaryOperation Declaration | ||||||
|  |   Var b | ||||||
|  |   Var a | ||||||
|  | ControlFlowJump jump=4 | ||||||
|  | 
 | ||||||
|  | 6: | ||||||
|  | BinaryOperation Declaration | ||||||
|  |   Var b | ||||||
|  |   MathematicalConstant 3 | ||||||
|  | ControlFlowJump jump=4 | ||||||
|  | 
 | ||||||
|  | 7: | ||||||
|  | BinaryOperation Declaration | ||||||
|  |   Var b | ||||||
|  |   MathematicalConstant 4 | ||||||
|  | ControlFlowJump jump=2 | ||||||
|  | 
 | ||||||
|  | 8: | ||||||
|  | BinaryOperation Assignment | ||||||
|  |   Var $return | ||||||
|  |   Error "" | ||||||
|  | ControlFlowJump jump=1 | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ struct TestDescription { | ||||||
|     struct Flag { |     struct Flag { | ||||||
|         StringView name; |         StringView name; | ||||||
|         bool dump_ast = false; |         bool dump_ast = false; | ||||||
|  |         bool dump_cfg = false; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     Vector<StringView> sources; |     Vector<StringView> sources; | ||||||
|  | @ -29,15 +30,16 @@ 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; | ||||||
| 
 | 
 | ||||||
| constexpr TestDescription::Flag always_dump_ast = { | constexpr TestDescription::Flag always_dump_all = { | ||||||
|     .name = "all"sv, |     .name = "all"sv, | ||||||
|     .dump_ast = true, |     .dump_ast = true, | ||||||
|  |     .dump_cfg = true | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const Array regression_tests = { | const Array regression_tests = { | ||||||
|     TestDescription { |     TestDescription { | ||||||
|         .sources = { "simple.cpp"sv }, |         .sources = { "simple.cpp"sv }, | ||||||
|         .flags = { always_dump_ast }, |         .flags = { always_dump_all }, | ||||||
|     }, |     }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -52,6 +54,7 @@ Vector<DeprecatedString> build_command_line_arguments(LexicalPath const& test_so | ||||||
|     Vector<DeprecatedString> result; |     Vector<DeprecatedString> result; | ||||||
| 
 | 
 | ||||||
|     StringBuilder dump_ast_option; |     StringBuilder dump_ast_option; | ||||||
|  |     StringBuilder dump_cfg_option; | ||||||
| 
 | 
 | ||||||
|     for (auto const& flag : description.flags) { |     for (auto const& flag : description.flags) { | ||||||
|         if (flag.dump_ast) { |         if (flag.dump_ast) { | ||||||
|  | @ -59,9 +62,16 @@ Vector<DeprecatedString> build_command_line_arguments(LexicalPath const& test_so | ||||||
|                 dump_ast_option.append(","sv); |                 dump_ast_option.append(","sv); | ||||||
|             dump_ast_option.append(flag.name); |             dump_ast_option.append(flag.name); | ||||||
|         } |         } | ||||||
|  |         if (flag.dump_cfg) { | ||||||
|  |             if (!dump_cfg_option.is_empty()) | ||||||
|  |                 dump_cfg_option.append(","sv); | ||||||
|  |             dump_cfg_option.append(flag.name); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|     if (!dump_ast_option.is_empty()) |     if (!dump_ast_option.is_empty()) | ||||||
|         result.append(DeprecatedString::formatted("--dump-ast={}", dump_ast_option.string_view())); |         result.append(DeprecatedString::formatted("--dump-ast={}", dump_ast_option.string_view())); | ||||||
|  |     if (!dump_cfg_option.is_empty()) | ||||||
|  |         result.append(DeprecatedString::formatted("--dump-cfg={}", dump_cfg_option.string_view())); | ||||||
| 
 | 
 | ||||||
|     if (test_source.has_extension(".cpp"sv)) |     if (test_source.has_extension(".cpp"sv)) | ||||||
|         result.append("-xc++"sv); |         result.append("-xc++"sv); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Klishch
						Dan Klishch