| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library dart2js.test.memory_compiler; |
| |
| import 'package:expect/expect.dart'; |
| import 'memory_source_file_helper.dart'; |
| |
| import '../../../sdk/lib/_internal/compiler/implementation/dart2jslib.dart' |
| show NullSink; |
| |
| import '../../../sdk/lib/_internal/compiler/compiler.dart' |
| show DiagnosticHandler; |
| |
| import 'dart:async'; |
| |
| import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart'; |
| import '../../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart'; |
| |
| Compiler compilerFor(Map<String,String> memorySourceFiles, |
| {DiagnosticHandler diagnosticHandler, |
| List<String> options: const []}) { |
| Uri script = currentDirectory.resolve(nativeToUriPath(Platform.script)); |
| Uri libraryRoot = script.resolve('../../../sdk/'); |
| Uri packageRoot = script.resolve('./packages/'); |
| |
| MemorySourceFileProvider.MEMORY_SOURCE_FILES = memorySourceFiles; |
| var provider = new MemorySourceFileProvider(); |
| if (diagnosticHandler == null) { |
| diagnosticHandler = new FormattingDiagnosticHandler(provider); |
| } |
| |
| EventSink<String> outputProvider(String name, String extension) { |
| if (name != '') throw 'Attempt to output file "$name.$extension"'; |
| return new NullSink('$name.$extension'); |
| } |
| |
| Compiler compiler = new Compiler(provider.readStringFromUri, |
| outputProvider, |
| diagnosticHandler, |
| libraryRoot, |
| packageRoot, |
| options); |
| return compiler; |
| } |
| |
| Future<MirrorSystem> mirrorSystemFor(Map<String,String> memorySourceFiles, |
| {DiagnosticHandler diagnosticHandler, |
| List<String> options: const []}) { |
| Uri script = currentDirectory.resolve(nativeToUriPath(Platform.script)); |
| Uri libraryRoot = script.resolve('../../../sdk/'); |
| Uri packageRoot = script.resolve('./packages/'); |
| |
| MemorySourceFileProvider.MEMORY_SOURCE_FILES = memorySourceFiles; |
| var provider = new MemorySourceFileProvider(); |
| if (diagnosticHandler == null) { |
| diagnosticHandler = new FormattingDiagnosticHandler(provider); |
| } |
| |
| List<Uri> libraries = <Uri>[]; |
| memorySourceFiles.forEach((String path, _) { |
| libraries.add(new Uri(scheme: 'memory', path: path)); |
| }); |
| |
| return analyze(libraries, libraryRoot, packageRoot, |
| provider, diagnosticHandler, options); |
| } |