blob: a45e1ca27695eae95ab54c4f5fb5c0a8d648b8c3 [file] [log] [blame]
// 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);
}