Add an assertion to check consistency of ExperimentalFeature constants.
This uncovered a bug in dev_compiler that was showing up at compile
time--it was defaulting the enableAsserts flag to null, causing a null
pointer exception during kernel constant evaluation.
Change-Id: I2c75ffdc494f8d768aa98d67ef8257a20e74b9cd
Reviewed-on: https://dart-review.googlesource.com/c/86982
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jenny Messerly <jmesserly@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart b/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
index d680aea..64d4b7e 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
@@ -232,7 +232,8 @@
final String documentation;
const ExperimentalFeature(this.index, this.enableString,
- this.isEnabledByDefault, this.isExpired, this.documentation);
+ this.isEnabledByDefault, this.isExpired, this.documentation)
+ : assert(isExpired ? index == null : index != null);
/// The string to disable the feature.
String get disableString => 'no-$enableString';
diff --git a/pkg/dev_compiler/lib/src/kernel/constants.dart b/pkg/dev_compiler/lib/src/kernel/constants.dart
index 4b88630..52329f7 100644
--- a/pkg/dev_compiler/lib/src/kernel/constants.dart
+++ b/pkg/dev_compiler/lib/src/kernel/constants.dart
@@ -184,7 +184,7 @@
final Constant unavailableConstant;
_ConstantEvaluator(TypeEnvironment types, this.declaredVariables,
- {bool enableAsserts})
+ {bool enableAsserts: false})
: unavailableConstant = InstanceConstant(null, [], {}),
super(_ConstantsBackend(types.coreTypes), types, types.coreTypes,
enableAsserts,