Change dart2js.dart to use compiler_new.dart

BUG=
R=sigmund@google.com

Review URL: https://codereview.chromium.org/1973753004 .
This commit is contained in:
Johnni Winther 2016-05-17 12:27:23 +02:00
parent 3968005cc8
commit 50b85640b3
7 changed files with 72 additions and 78 deletions

View file

@ -10,10 +10,11 @@ import 'dart:io' show exit, File, FileMode, Platform, stdin, stderr;
import 'package:package_config/discovery.dart' show findPackages;
import '../compiler.dart' as api;
import '../compiler_new.dart' as api;
import 'commandline_options.dart';
import 'filenames.dart';
import 'io/source_file.dart';
import 'options.dart' show CompilerOptions;
import 'source_file_provider.dart';
import 'util/command_line.dart';
import 'util/uri_extras.dart';
@ -484,18 +485,17 @@ Future<api.CompilationResult> compile(List<String> argv) {
return result;
}
Uri uri = currentDirectory.resolve(arguments[0]);
return compileFunc(
uri,
libraryRoot,
packageRoot,
inputProvider,
diagnosticHandler,
options,
outputProvider,
environment,
packageConfig,
findPackages)
Uri script = currentDirectory.resolve(arguments[0]);
CompilerOptions compilerOptions = new CompilerOptions.parse(
entryPoint: script,
libraryRoot: libraryRoot,
packageRoot: packageRoot,
packageConfig: packageConfig,
packagesDiscoveryProvider: findPackages,
options: options,
environment: environment);
return compileFunc(compilerOptions, inputProvider,
diagnosticHandler, outputProvider)
.then(compilationDone);
}
@ -706,8 +706,15 @@ void main(List<String> arguments) {
internalMain(arguments);
}
var exitFunc = exit;
var compileFunc = api.compile;
typedef void ExitFunc(int exitCode);
typedef Future<api.CompilationResult> CompileFunc(
CompilerOptions compilerOptions,
api.CompilerInput compilerInput,
api.CompilerDiagnostics compilerDiagnostics,
api.CompilerOutput compilerOutput);
ExitFunc exitFunc = exit;
CompileFunc compileFunc = api.compile;
Future<api.CompilationResult> internalMain(List<String> arguments) {
Future onError(exception, trace) {

View file

@ -238,7 +238,7 @@ class FormattingDiagnosticHandler implements CompilerDiagnostics {
typedef void MessageCallback(String message);
class RandomAccessFileOutputProvider {
class RandomAccessFileOutputProvider implements CompilerOutput {
final Uri out;
final Uri sourceMapOut;
final MessageCallback onInfo;
@ -262,6 +262,10 @@ class RandomAccessFileOutputProvider {
}
EventSink<String> call(String name, String extension) {
return createEventSink(name, extension);
}
EventSink<String> createEventSink(String name, String extension) {
Uri uri;
bool isPrimaryOutput = false;
// TODO (johnniwinther, sigurdm): Make a better interface for

View file

@ -58,27 +58,34 @@ const List<MessageKind> MESSAGE_SKIP_LIST = const <MessageKind>[
main(List<String> arguments) {
List<String> options = <String>[];
for (String argument in arguments) {
if (argument == '-v') {
options.add(Flags.verbose);
} else if (argument.startsWith('-')) {
options.add(argument);
}
}
List<Uri> uriList = <Uri>[];
for (String arg in arguments) {
if (!arg.startsWith('-')) {
for (String line in new File(arg).readAsLinesSync()) {
line = line.trim();
if (line.startsWith('Analyzing uri: ')) {
int filenameOffset = line.indexOf('tests/compiler/dart2js/');
if (filenameOffset != -1) {
uriList.add(Uri.base.resolve(
nativeToUriPath(line.substring(filenameOffset))));
String filter;
bool first = true;
for (String argument in arguments) {
if (argument.startsWith('-')) {
options.add(argument == '-v' ? Flags.verbose : argument);
} else if (first) {
File file = new File(argument);
if (file.existsSync()) {
// Read test files from [file].
for (String line in file.readAsLinesSync()) {
line = line.trim();
if (line.startsWith('Analyzing uri: ')) {
int filenameOffset = line.indexOf('tests/compiler/dart2js/');
if (filenameOffset != -1) {
uriList.add(Uri.base.resolve(
nativeToUriPath(line.substring(filenameOffset))));
}
}
}
} else {
// Use argument as filter on test files.
filter = argument;
}
} else {
throw new ArgumentError("Extra argument $argument in $arguments.");
}
first = false;
}
asyncTest(() async {
@ -88,6 +95,9 @@ main(List<String> arguments) {
for (FileSystemEntity entity in dir.listSync(recursive: true)) {
if (entity is File && entity.path.endsWith('.dart')) {
Uri file = Uri.base.resolve(nativeToUriPath(entity.path));
if (filter != null && !'$file'.contains(filter)) {
continue;
}
if (!SKIP_LIST.any((skip) => file.path.contains(skip))) {
uriList.add(file);
}

View file

@ -56,11 +56,9 @@ class CollectingFormattingDiagnosticHandler
int throwOnErrorCount;
}
testOutputProvider(script, libraryRoot, packageRoot, inputProvider, handler,
[options, outputProvider, environment, packageConfig,
findPackages]) {
testOutputProvider(options, input, diagnostics, output) {
diagnosticHandler = new CollectingFormattingDiagnosticHandler();
outputProvider("/non/existing/directory/should/fail/file", "js");
output.createEventSink("/non/existing/directory/should/fail/file", "js");
}
void main() {

View file

@ -11,7 +11,6 @@ import 'dart:io' show Platform;
import 'package:async_helper/async_helper.dart';
import 'package:expect/expect.dart';
import 'package:compiler/compiler.dart' as old_api;
import 'package:compiler/compiler_new.dart' as api;
import 'package:compiler/src/common/codegen.dart';
import 'package:compiler/src/compile_time_constants.dart';
@ -26,7 +25,6 @@ import 'package:compiler/src/enqueue.dart';
import 'package:compiler/src/elements/elements.dart';
import 'package:compiler/src/library_loader.dart';
import 'package:compiler/src/null_compiler_output.dart';
import 'package:compiler/src/old_to_new_api.dart';
import 'package:compiler/src/options.dart' show CompilerOptions;
import 'package:compiler/src/resolution/resolution.dart';
import 'package:compiler/src/scanner/scanner_task.dart';
@ -42,24 +40,12 @@ class TestCompiler extends apiimpl.CompilerImpl {
TestCompiler(api.CompilerInput inputProvider,
api.CompilerOutput outputProvider,
api.CompilerDiagnostics handler,
Uri libraryRoot,
Uri packageRoot,
List<String> options,
Map<String, dynamic> environment,
Uri packageConfig,
api.PackagesDiscoveryProvider findPackages,
CompilerOptions options,
String this.testMarker,
String this.testType,
Function this.onTest)
: reporter = new TestDiagnosticReporter(),
super(inputProvider, outputProvider, handler,
new CompilerOptions.parse(
libraryRoot: libraryRoot,
packageRoot: packageRoot,
options: options,
environment: environment,
packageConfig: packageConfig,
packagesDiscoveryProvider: findPackages)) {
super(inputProvider, outputProvider, handler, options) {
reporter.compiler = this;
reporter.reporter = super.reporter;
test('Compiler');
@ -186,36 +172,24 @@ Future testExitCode(
}
}
return new Future(() {
Future<old_api.CompilationResult> compile(
Uri script,
Uri libraryRoot,
Uri packageRoot,
old_api.CompilerInputProvider inputProvider,
old_api.DiagnosticHandler handler,
[List<String> options = const [],
old_api.CompilerOutputProvider outputProvider,
Map<String, dynamic> environment = const {},
Uri packageConfig,
api.PackagesDiscoveryProvider findPackages]) {
libraryRoot = Platform.script.resolve('../../../sdk/');
outputProvider = NullSink.outputProvider;
Future<api.CompilationResult> compile(
CompilerOptions compilerOptions,
api.CompilerInput compilerInput,
api.CompilerDiagnostics compilerDiagnostics,
api.CompilerOutput compilerOutput) {
compilerOutput = const NullCompilerOutput();
// Use this to silence the test when debugging:
// handler = (uri, begin, end, message, kind) {};
Compiler compiler = new TestCompiler(
new LegacyCompilerInput(inputProvider),
new LegacyCompilerOutput(outputProvider),
new LegacyCompilerDiagnostics(handler),
libraryRoot,
packageRoot,
options,
environment,
packageConfig,
findPackages,
compilerInput,
compilerOutput,
compilerDiagnostics,
compilerOptions,
marker,
type,
onTest);
return compiler.run(script).then((bool success) {
return new old_api.CompilationResult(compiler, isSuccess: success);
return compiler.run(compilerOptions.entryPoint).then((bool success) {
return new api.CompilationResult(compiler, isSuccess: success);
});
}
@ -242,6 +216,7 @@ Future testExitCode(
entry.compileFunc = compile;
List<String> args = new List<String>.from(options)
..add("--library-root=${Platform.script.resolve('../../../sdk/')}")
..add("tests/compiler/dart2js/data/exit_code_helper.dart");
Future result = entry.internalMain(args);
return result.catchError((e, s) {

View file

@ -8,7 +8,7 @@ import 'dart:io';
import 'package:async_helper/async_helper.dart';
import 'package:compiler/src/dart2js.dart' as entry;
import 'package:compiler/src/apiimpl.dart';
import 'package:compiler/compiler.dart';
import 'package:compiler/compiler_new.dart';
import 'source_map_validator_helper.dart';

View file

@ -8,7 +8,7 @@ import 'dart:io';
import 'package:async_helper/async_helper.dart';
import 'package:compiler/src/dart2js.dart' as entry;
import 'package:compiler/src/apiimpl.dart';
import 'package:compiler/compiler.dart';
import 'package:compiler/compiler_new.dart';
import 'source_map_validator_helper.dart';