Test that e2e constant is check works, pass experiments around more
Change-Id: I6252d9215ab322c75a5b83ac0a3047a9dc90a360
Reviewed-on: https://dart-review.googlesource.com/c/87420
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index c11275c..7060086 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -8,6 +8,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/dart/analysis/file_state.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
@@ -179,11 +180,12 @@
*/
void _computeConstants() {
computeConstants(
- _typeProvider,
- _context.typeSystem,
- _declaredVariables,
- _constants.toList(),
- );
+ _typeProvider,
+ _context.typeSystem,
+ _declaredVariables,
+ _constants.toList(),
+ ExperimentStatus.fromStrings(
+ _context.analysisOptions.enabledExperiments));
}
void _computeHints(FileState file, CompilationUnit unit) {
diff --git a/pkg/analyzer/lib/src/dart/constant/compute.dart b/pkg/analyzer/lib/src/dart/constant/compute.dart
index 707d34a..4031e2f 100644
--- a/pkg/analyzer/lib/src/dart/constant/compute.dart
+++ b/pkg/analyzer/lib/src/dart/constant/compute.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/analysis/declared_variables.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/dart/constant/evaluation.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/resolver.dart'
@@ -16,10 +17,13 @@
TypeProvider typeProvider,
TypeSystem typeSystem,
DeclaredVariables declaredVariables,
- List<ConstantEvaluationTarget> constants) {
+ List<ConstantEvaluationTarget> constants,
+ ExperimentStatus experimentStatus) {
var evaluationEngine = ConstantEvaluationEngine(
typeProvider, declaredVariables,
- forAnalysisDriver: true, typeSystem: typeSystem);
+ forAnalysisDriver: true,
+ typeSystem: typeSystem,
+ experimentStatus: experimentStatus);
var nodes = <_ConstantNode>[];
var nodeMap = <ConstantEvaluationTarget, _ConstantNode>{};
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index b271890..0780184 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -12,6 +12,7 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/constant/evaluation.dart';
import 'package:analyzer/src/dart/constant/value.dart';
@@ -67,7 +68,10 @@
this._stringType = _typeProvider.stringType;
this._evaluationEngine = new ConstantEvaluationEngine(
_typeProvider, declaredVariables,
- forAnalysisDriver: forAnalysisDriver, typeSystem: _typeSystem);
+ forAnalysisDriver: forAnalysisDriver,
+ typeSystem: _typeSystem,
+ experimentStatus: ExperimentStatus.fromStrings(
+ currentLibrary.context.analysisOptions.enabledExperiments));
}
@override
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 27fc635..688fecc 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -12,6 +12,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/error.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/constant/compute.dart';
import 'package:analyzer/src/dart/constant/value.dart';
@@ -2336,11 +2337,12 @@
DartObject computeConstantValue() {
if (evaluationResult == null) {
computeConstants(
- context.typeProvider,
- context.typeSystem,
- context.declaredVariables,
- [this],
- );
+ context.typeProvider,
+ context.typeSystem,
+ context.declaredVariables,
+ [this],
+ ExperimentStatus.fromStrings(
+ context.analysisOptions.enabledExperiments));
}
return evaluationResult?.value;
}
@@ -2639,11 +2641,12 @@
DartObject computeConstantValue() {
if (evaluationResult == null) {
computeConstants(
- context.typeProvider,
- context.typeSystem,
- context.declaredVariables,
- [this],
- );
+ context.typeProvider,
+ context.typeSystem,
+ context.declaredVariables,
+ [this],
+ ExperimentStatus.fromStrings(
+ context.analysisOptions.enabledExperiments));
}
return constantValue;
}
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 2b881c0..7b654ad 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -56,6 +56,12 @@
}
@override
+ @failingTest // Does not work with old task model
+ test_isCheckInConstAssert() {
+ return super.test_isCheckInConstAssert();
+ }
+
+ @override
@failingTest // Fails with the old task model
test_issue_32394() {
return super.test_issue_32394();
@@ -3228,6 +3234,21 @@
verify([source]);
}
+ test_isCheckInConstAssert() async {
+ Source source = addSource(r'''
+class C {
+ const C() : assert(1 is int);
+}
+
+void main() {
+ const C();
+}
+''');
+ await computeAnalysisResult(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
Future test_issue32114() async {
addNamedSource('/a.dart', '''
class O {}