41 lines
1.2 KiB
Dart
41 lines
1.2 KiB
Dart
// Copyright (c) 2016, 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 kernel.transformations.closure_conversion;
|
|
|
|
import '../ast.dart' show Program, Library;
|
|
|
|
import '../core_types.dart' show CoreTypes;
|
|
|
|
import 'closure/converter.dart' show ClosureConverter;
|
|
|
|
import 'closure/info.dart' show ClosureInfo;
|
|
|
|
import 'closure/invalidate_closures.dart';
|
|
|
|
Program transformProgram(CoreTypes coreTypes, Program program) {
|
|
var info = new ClosureInfo();
|
|
info.visitProgram(program);
|
|
|
|
var convert = new ClosureConverter(coreTypes, info);
|
|
program = convert.visitProgram(program);
|
|
return new InvalidateClosures().visitProgram(program);
|
|
}
|
|
|
|
void transformLibraries(CoreTypes coreTypes, List<Library> libraries) {
|
|
var info = new ClosureInfo();
|
|
for (var library in libraries) {
|
|
info.visitLibrary(library);
|
|
}
|
|
|
|
var convert = new ClosureConverter(coreTypes, info);
|
|
for (int i = 0; i < libraries.length; i++) {
|
|
libraries[i] = convert.visitLibrary(libraries[i]);
|
|
}
|
|
var invalidator = new InvalidateClosures();
|
|
for (int i = 0; i < libraries.length; i++) {
|
|
invalidator.visitLibrary(libraries[i]);
|
|
}
|
|
}
|