Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: pkg/front_end/test/fasta/shaker_test.dart

Issue 2979463002: Revert "Tweak public APIs and use them in patch_sdk, dart2js, and kernel-service." (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/front_end/lib/summary_generator.dart ('k') | pkg/front_end/test/fasta/testing/suite.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/test/fasta/shaker_test.dart
diff --git a/pkg/front_end/test/fasta/shaker_test.dart b/pkg/front_end/test/fasta/shaker_test.dart
index 6c1889f362eff64df726932b96aa118b6a745d85..02543553d28bfe8bdab9574cb007591ca230110c 100644
--- a/pkg/front_end/test/fasta/shaker_test.dart
+++ b/pkg/front_end/test/fasta/shaker_test.dart
@@ -23,7 +23,6 @@ export 'package:testing/testing.dart' show Chain, runMe;
import 'package:front_end/physical_file_system.dart';
import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget;
import 'package:front_end/src/fasta/errors.dart' show InputError;
-import 'package:front_end/src/fasta/kernel/kernel_outline_shaker.dart';
import 'package:front_end/src/fasta/kernel/kernel_target.dart'
show KernelTarget;
import 'package:front_end/src/fasta/kernel/verifier.dart' show verifyProgram;
@@ -66,8 +65,8 @@ class TreeShakerContext extends ChainContext {
];
Program loadPlatformOutline() {
- // Note: we rebuild the platform outline on every test because the
- // tree-shaker mutates the in-memory representation of the program without
+ // Note: we rebuild the platform outline on every test because the compiler
+ // currently mutates the in-memory representation of the program without
// cloning it.
return loadProgramFromBytes(outlineBytes);
}
@@ -108,15 +107,31 @@ class BuildProgram
await dillTarget.buildOutlines();
var inputUri = description.uri;
+
+ /// We treat the lib.dart library as a special dependency that was
+ /// previously built. To do so, we build it and append it back to the
+ /// dillTarget before building the actual test.
var libUri = inputUri.resolve('lib/lib.dart');
sourceTarget.read(libUri);
+ dillTarget.loader.appendLibraries(
+ await sourceTarget.buildOutlines(), (uri) => uri == libUri);
+
+ /// This new KernelTarget contains only sources from the test without
+ /// lib.dart.
+ sourceTarget = new KernelTarget(
+ PhysicalFileSystem.instance, dillTarget, context.uriTranslator);
+
+ await dillTarget.buildOutlines();
sourceTarget.read(inputUri);
var contents = new File.fromUri(inputUri).readAsStringSync();
var showCoreLibraries = contents.contains("@@SHOW_CORE_LIBRARIES@@");
+
await sourceTarget.buildOutlines();
- var program = await sourceTarget.buildProgram();
- bool isIncluded(Uri uri) => !_isTreeShaken(uri);
- trimProgram(program, isIncluded);
+ // Note: We run the tree-shaker as a separate step on this suite to be
+ // able to specify what libraries to tree shake (by default only the code
+ // in the dillTarget gets tree-shaken). We could apply the tree-shaker
+ // twice, but that seems unnecessary.
+ var program = await sourceTarget.buildProgram(trimDependencies: true);
return pass(new _IntermediateData(inputUri, program, showCoreLibraries));
} on InputError catch (e, s) {
return fail(null, e.error, s);
@@ -148,10 +163,18 @@ class CheckShaker extends Step<_IntermediateData, String, ChainContext> {
String get name => "match shaker expectation";
+ /// Tree-shake dart:* libraries and the library under [_specialLibraryPath].
+ bool _isTreeShaken(Uri uri) =>
+ uri.isScheme('dart') ||
+ Uri.base.resolveUri(uri).path.endsWith(_specialLibraryPath);
+
Future<Result<String>> run(
_IntermediateData data, ChainContext context) async {
String actualResult;
- var entryUri = data.uri;
+ var entryUri = data.program.libraries
+ .firstWhere((l) => !l.importUri.isScheme('dart'))
+ .importUri;
+
var program = data.program;
var errors = verifyProgram(program, isOutline: false);
@@ -221,8 +244,3 @@ $buffer""");
/// A special library used only to test the shaker. The suite above will
/// tree-shake the contents of this library.
const _specialLibraryPath = 'pkg/front_end/testcases/shaker/lib/lib.dart';
-
-/// Tree-shake dart:* libraries and the library under [_specialLibraryPath].
-bool _isTreeShaken(Uri uri) =>
- uri.isScheme('dart') ||
- Uri.base.resolveUri(uri).path.endsWith(_specialLibraryPath);
« no previous file with comments | « pkg/front_end/lib/summary_generator.dart ('k') | pkg/front_end/test/fasta/testing/suite.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698