| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
| 4 | 4 |
| 5 library fasta.testing.suite; | 5 library fasta.testing.suite; |
| 6 | 6 |
| 7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
| 8 | 8 |
| 9 import 'dart:convert' show JSON; | 9 import 'dart:convert' show JSON; |
| 10 | 10 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 String shortenAstKindName(AstKind astKind) { | 56 String shortenAstKindName(AstKind astKind) { |
| 57 switch (astKind) { | 57 switch (astKind) { |
| 58 case AstKind.Analyzer: | 58 case AstKind.Analyzer: |
| 59 return "dartk"; | 59 return "dartk"; |
| 60 case AstKind.Kernel: | 60 case AstKind.Kernel: |
| 61 return "direct"; | 61 return "direct"; |
| 62 } | 62 } |
| 63 throw "Unknown AST kind: $astKind"; | 63 throw "Unknown AST kind: $astKind"; |
| 64 } | 64 } |
| 65 | 65 |
| 66 class FeContext extends TestContext { | 66 class FastaContext extends TestContext { |
| 67 final TranslateUri uriTranslator; | 67 final TranslateUri uriTranslator; |
| 68 | 68 |
| 69 final List<Step> steps; | 69 final List<Step> steps; |
| 70 | 70 |
| 71 final ExpectationSet expectationSet = | 71 final ExpectationSet expectationSet = |
| 72 new ExpectationSet.fromJsonList(JSON.decode(EXPECTATIONS)); | 72 new ExpectationSet.fromJsonList(JSON.decode(EXPECTATIONS)); |
| 73 | 73 |
| 74 Future<Program> platform; | 74 Future<Program> platform; |
| 75 | 75 |
| 76 FeContext( | 76 FastaContext( |
| 77 Uri sdk, | 77 Uri sdk, |
| 78 Uri vm, | 78 Uri vm, |
| 79 Uri packages, | 79 Uri packages, |
| 80 bool strongMode, | 80 bool strongMode, |
| 81 DartSdk dartSdk, | 81 DartSdk dartSdk, |
| 82 bool updateExpectations, | 82 bool updateExpectations, |
| 83 this.uriTranslator, | 83 this.uriTranslator, |
| 84 bool fullCompile, | 84 bool fullCompile, |
| 85 AstKind astKind) | 85 AstKind astKind) |
| 86 : steps = <Step>[ | 86 : steps = <Step>[ |
| (...skipping 28 matching lines...) Expand all Loading... |
| 115 program.uriToSource.remove(mainLibrary.fileUri); | 115 program.uriToSource.remove(mainLibrary.fileUri); |
| 116 program = new Program( | 116 program = new Program( |
| 117 program.libraries.where((Library l) => l != mainLibrary).toList(), | 117 program.libraries.where((Library l) => l != mainLibrary).toList(), |
| 118 program.uriToSource); | 118 program.uriToSource); |
| 119 target.performModularTransformations(program); | 119 target.performModularTransformations(program); |
| 120 target.performGlobalTransformations(program); | 120 target.performGlobalTransformations(program); |
| 121 return program; | 121 return program; |
| 122 }); | 122 }); |
| 123 } | 123 } |
| 124 | 124 |
| 125 static Future<FeContext> create( | 125 static Future<FastaContext> create( |
| 126 Chain suite, | 126 Chain suite, Map<String, String> environment) async { |
| 127 Map<String, String> environment, | 127 return TestContext.create(suite, environment, (Chain suite, |
| 128 Uri sdk, | 128 Map<String, String> environment, |
| 129 Uri vm, | 129 Uri sdk, |
| 130 Uri packages, | 130 Uri vm, |
| 131 bool strongMode, | 131 Uri packages, |
| 132 DartSdk dartSdk, | 132 bool strongMode, |
| 133 bool updateExpectations) async { | 133 DartSdk dartSdk, |
| 134 TranslateUri uriTranslator = await TranslateUri.parse(packages); | 134 bool updateExpectations) async { |
| 135 String astKindString = environment[AST_KIND_INDEX]; | 135 TranslateUri uriTranslator = await TranslateUri.parse(packages); |
| 136 AstKind astKind = | 136 String astKindString = environment[AST_KIND_INDEX]; |
| 137 astKindString == null ? null : AstKind.values[int.parse(astKindString)]; | 137 AstKind astKind = astKindString == null |
| 138 return new FeContext( | 138 ? null |
| 139 sdk, | 139 : AstKind.values[int.parse(astKindString)]; |
| 140 vm, | 140 return new FastaContext( |
| 141 packages, | 141 sdk, |
| 142 strongMode, | 142 vm, |
| 143 dartSdk, | 143 packages, |
| 144 updateExpectations, | 144 strongMode, |
| 145 uriTranslator, | 145 dartSdk, |
| 146 environment.containsKey(ENABLE_FULL_COMPILE), | 146 updateExpectations, |
| 147 astKind); | 147 uriTranslator, |
| 148 environment.containsKey(ENABLE_FULL_COMPILE), |
| 149 astKind); |
| 150 }); |
| 148 } | 151 } |
| 149 } | 152 } |
| 150 | 153 |
| 151 class Outline extends Step<TestDescription, Program, FeContext> { | 154 class Outline extends Step<TestDescription, Program, FastaContext> { |
| 152 final bool fullCompile; | 155 final bool fullCompile; |
| 153 | 156 |
| 154 final AstKind astKind; | 157 final AstKind astKind; |
| 155 | 158 |
| 156 const Outline(this.fullCompile, this.astKind); | 159 const Outline(this.fullCompile, this.astKind); |
| 157 | 160 |
| 158 String get name { | 161 String get name { |
| 159 return fullCompile ? "${shortenAstKindName(astKind)} compile" : "outline"; | 162 return fullCompile ? "${shortenAstKindName(astKind)} compile" : "outline"; |
| 160 } | 163 } |
| 161 | 164 |
| 162 bool get isCompiler => fullCompile; | 165 bool get isCompiler => fullCompile; |
| 163 | 166 |
| 164 Future<Result<Program>> run( | 167 Future<Result<Program>> run( |
| 165 TestDescription description, FeContext context) async { | 168 TestDescription description, FastaContext context) async { |
| 166 Program platform = await context.createPlatform(); | 169 Program platform = await context.createPlatform(); |
| 167 Ticker ticker = new Ticker(); | 170 Ticker ticker = new Ticker(); |
| 168 DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator); | 171 DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator); |
| 169 dillTarget.loader | 172 dillTarget.loader |
| 170 ..input = Uri.parse("org.dartlang:platform") // Make up a name. | 173 ..input = Uri.parse("org.dartlang:platform") // Make up a name. |
| 171 ..setProgram(platform); | 174 ..setProgram(platform); |
| 172 KernelTarget sourceTarget = | 175 KernelTarget sourceTarget = |
| 173 new KernelTarget(dillTarget, context.uriTranslator); | 176 new KernelTarget(dillTarget, context.uriTranslator); |
| 174 Program p; | 177 Program p; |
| 175 try { | 178 try { |
| 176 sourceTarget.read(description.uri); | 179 sourceTarget.read(description.uri); |
| 177 await dillTarget.writeOutline(null); | 180 await dillTarget.writeOutline(null); |
| 178 p = await sourceTarget.writeOutline(null); | 181 p = await sourceTarget.writeOutline(null); |
| 179 if (fullCompile) { | 182 if (fullCompile) { |
| 180 p = await sourceTarget.writeProgram(null, astKind); | 183 p = await sourceTarget.writeProgram(null, astKind); |
| 181 } | 184 } |
| 182 } on InputError catch (e, s) { | 185 } on InputError catch (e, s) { |
| 183 return fail(null, e.error, s); | 186 return fail(null, e.error, s); |
| 184 } | 187 } |
| 185 return pass(p); | 188 return pass(p); |
| 186 } | 189 } |
| 187 } | 190 } |
| OLD | NEW |