Fix implementation of `checked` in benchmark code (#127)
Per discussion https://github.com/dart-lang/dart-protoc-plugin/pull/126#pullrequestreview-157386342
diff --git a/benchmark/lib/report.dart b/benchmark/lib/report.dart
index 38c9169..bd6ecf2 100644
--- a/benchmark/lib/report.dart
+++ b/benchmark/lib/report.dart
@@ -32,18 +32,22 @@
pb.Platform createPlatform() {
return new pb.Platform()
..dartVM = _isDartVM
- ..checkedMode = _checkedMode;
+ ..checkedMode = _implicitChecksEnabled;
}
get _isDartVM => !identical(1, 1.0);
-final bool _checkedMode = () {
- var checked = false;
- assert(() {
- checked = true;
+/// Returns `false` if running via dart2js and `--omit-implicit-checks` is set
+final bool _implicitChecksEnabled = () {
+ // ignore: unused_local_variable
+ bool x = true;
+ try {
+ // Trigger an exception if we're in checked mode.
+ x = "" as dynamic;
+ return false;
+ } catch (e) {
return true;
- }());
- return checked;
+ }
}();
/// Given the contents of the pubspec.yaml and pubspec.lock files,
diff --git a/build.yaml b/build.yaml
index b26ad9f..5f82db1 100644
--- a/build.yaml
+++ b/build.yaml
@@ -6,3 +6,8 @@
build_web_compilers|entrypoint:
generate_for:
- benchmark/*_browser.dart
+ options:
+ dart2js_args:
+ - --minify
+ #- --trust-primitives
+ #- --omit-implicit-checks