Clean up TODOs in TryConstantEvaluator.

Issue: #48820
Change-Id: I01a9c7b1de3697afc2d643a5a1c7aaa26532ea70
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352974
Commit-Queue: Mayank Patke <fishythefish@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
Mayank Patke 2024-02-20 21:46:43 +00:00 committed by Commit Queue
parent 2fc877a09a
commit 0d9d7f4e75
3 changed files with 24 additions and 21 deletions

View file

@ -15,7 +15,7 @@ class Dart2jsConstantEvaluator extends ir.TryConstantEvaluator {
ir.TypeEnvironment typeEnvironment, ir.ReportErrorFunction reportError,
{Environment? environment,
super.supportReevaluationForTesting,
super.evaluationMode})
required super.evaluationMode})
: super(
const Dart2jsDartLibrarySupport(),
const Dart2jsConstantsBackend(supportsUnevaluatedConstants: false),

View file

@ -24,7 +24,7 @@ class ConstConditionalSimplifier extends RemovingTransformer {
this._component,
ReportErrorFunction _reportError, {
Map<String, String>? environmentDefines,
EvaluationMode evaluationMode = EvaluationMode.weak,
required EvaluationMode evaluationMode,
bool Function(TreeNode)? shouldNotInline,
CoreTypes? coreTypes,
ClassHierarchy? classHierarchy,
@ -122,7 +122,7 @@ class _ConstantEvaluator extends TryConstantEvaluator {
_ConstantEvaluator(super.librarySupport, super.constantsBackend,
super.component, super.typeEnvironment, super.reportError,
{super.environmentDefines,
super.evaluationMode,
required super.evaluationMode,
bool Function(TreeNode)? shouldNotInline})
: _shouldNotInline = shouldNotInline ?? ((_) => false);

View file

@ -15,6 +15,9 @@ typedef ReportErrorFunction = void Function(
class TryConstantEvaluator extends ConstantEvaluator {
final bool _supportReevaluationForTesting;
@override
final _ErrorReporter errorReporter;
TryConstantEvaluator(
DartLibrarySupport librarySupport,
ConstantsBackend constantsBackend,
@ -22,28 +25,28 @@ class TryConstantEvaluator extends ConstantEvaluator {
TypeEnvironment typeEnvironment,
ReportErrorFunction reportError,
{Map<String, String>? environmentDefines,
super.evaluationMode,
required EvaluationMode evaluationMode,
bool supportReevaluationForTesting = false})
: this._(librarySupport, constantsBackend, component, typeEnvironment,
new _ErrorReporter(reportError),
environmentDefines: environmentDefines,
evaluationMode: evaluationMode,
supportReevaluationForTesting: supportReevaluationForTesting);
TryConstantEvaluator._(
DartLibrarySupport librarySupport,
ConstantsBackend constantsBackend,
Component component,
TypeEnvironment typeEnvironment,
this.errorReporter,
{Map<String, String>? environmentDefines,
required super.evaluationMode,
bool supportReevaluationForTesting = false})
: _supportReevaluationForTesting = supportReevaluationForTesting,
assert((evaluationMode as dynamic) != null),
super(
librarySupport,
constantsBackend,
component,
environmentDefines ?? const {},
typeEnvironment,
new _ErrorReporter(reportError),
super(librarySupport, constantsBackend, component,
environmentDefines ?? const {}, typeEnvironment, errorReporter,
enableTripleShift: true);
@override
_ErrorReporter get errorReporter => super.errorReporter as _ErrorReporter;
// TODO(48820): ^Store another reference to the error reporter with the
// refined type and use that.
// We can't override [ConstantEvaluator.evaluate] and have a nullable
// return type.
// TODO(48820): Consider using composition. We will need to ensure that
// [TryConstantEvaluator] is not referenced via [ConstantEvaluator].
@override
Constant evaluate(StaticTypeContext staticTypeContext, Expression node,
{TreeNode? contextNode}) {