mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 18:22: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 | ||||
|     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 { | ||||
|         StringView name; | ||||
|         bool dump_ast = false; | ||||
|         bool dump_cfg = false; | ||||
|     }; | ||||
| 
 | ||||
|     Vector<StringView> sources; | ||||
|  | @ -29,15 +30,16 @@ constexpr StringView stderr_capture_filename = "stderr"sv; | |||
| constexpr StringView compiler_binary_name = "JSSpecCompiler"sv; | ||||
| constexpr StringView relative_path_to_test = "Tests"sv; | ||||
| 
 | ||||
| constexpr TestDescription::Flag always_dump_ast = { | ||||
| constexpr TestDescription::Flag always_dump_all = { | ||||
|     .name = "all"sv, | ||||
|     .dump_ast = true, | ||||
|     .dump_cfg = true | ||||
| }; | ||||
| 
 | ||||
| const Array regression_tests = { | ||||
|     TestDescription { | ||||
|         .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; | ||||
| 
 | ||||
|     StringBuilder dump_ast_option; | ||||
|     StringBuilder dump_cfg_option; | ||||
| 
 | ||||
|     for (auto const& flag : description.flags) { | ||||
|         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(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()) | ||||
|         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)) | ||||
|         result.append("-xc++"sv); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Klishch
						Dan Klishch