Index: pkg/kernel/test/baseline_strong_mode_test.dart |
diff --git a/pkg/kernel/test/baseline_strong_mode_test.dart b/pkg/kernel/test/baseline_strong_mode_test.dart |
index a252bff1e8a565a3ea11b459486150018b884ef0..00ffcf0650d0489f65a9727e72cda524f6099d3b 100644 |
--- a/pkg/kernel/test/baseline_strong_mode_test.dart |
+++ b/pkg/kernel/test/baseline_strong_mode_test.dart |
@@ -7,6 +7,7 @@ import 'package:kernel/kernel.dart'; |
import 'package:kernel/transformations/insert_covariance_checks.dart'; |
import 'package:kernel/transformations/insert_type_checks.dart'; |
import 'package:kernel/transformations/mixin_full_resolution.dart'; |
+import 'package:kernel/transformations/treeshaker.dart'; |
import 'package:kernel/type_checker.dart'; |
import 'package:path/path.dart' as pathlib; |
@@ -31,6 +32,8 @@ class StrongModeTest extends TestTarget { |
new TestTypeChecker( |
errors, new CoreTypes(program), new ClassHierarchy(program)) |
.checkProgram(program); |
+ new TreeShaker(program, strongMode: true).transform(program); |
+ program.accept(new TreeShakerCheck()); |
return errors; |
} |
} |
@@ -62,6 +65,16 @@ class TestTypeChecker extends TypeChecker { |
} |
} |
+class TreeShakerCheck extends RecursiveVisitor { |
+ visitStringLiteral(StringLiteral node) { |
+ if (node.value.toLowerCase() == 'unused') { |
+ throw 'Code not tree-shaken at ${node.location}.\n' |
+ 'The string literal $node is used to indicate that the code is ' |
+ 'expected to be removed by strong-mode tree shaking'; |
+ } |
+ } |
+} |
+ |
void main() { |
runBaselineTests('strong-mode', new StrongModeTest()); |
} |