diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index 0b49b4e..6d7e98d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -334,8 +334,8 @@
 
   /// Compute [_constants] in all units.
   void _computeConstants() {
-    computeConstants(_typeProvider, _typeSystem, _declaredVariables,
-        _constants.toList(), _libraryElement.featureSet);
+    computeConstants(
+        _declaredVariables, _constants.toList(), _libraryElement.featureSet);
   }
 
   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 cb56ffe..b2b67c8 100644
--- a/pkg/analyzer/lib/src/dart/constant/compute.dart
+++ b/pkg/analyzer/lib/src/dart/constant/compute.dart
@@ -4,20 +4,14 @@
 
 import 'package:analyzer/dart/analysis/declared_variables.dart';
 import 'package:analyzer/dart/analysis/features.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
 import 'package:analyzer/src/dart/constant/evaluation.dart';
 import 'package:analyzer/src/dart/element/element.dart';
-import 'package:analyzer/src/dart/element/type_system.dart';
 import 'package:analyzer/src/summary/link.dart' as graph
     show DependencyWalker, Node;
 
 /// Compute values of the given [constants] with correct ordering.
-void computeConstants(
-    TypeProvider typeProvider,
-    TypeSystemImpl typeSystem,
-    DeclaredVariables declaredVariables,
-    List<ConstantEvaluationTarget> constants,
-    FeatureSet featureSet) {
+void computeConstants(DeclaredVariables declaredVariables,
+    List<ConstantEvaluationTarget> constants, FeatureSet featureSet) {
   var walker = _ConstantWalker(declaredVariables, featureSet);
 
   for (var constant in constants) {
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 43e9949..0a2341a 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -1594,8 +1594,7 @@
   /// of formal parameters, are evaluated.
   void computeConstantDependencies() {
     if (!isConstantEvaluated) {
-      computeConstants(library.typeProvider, library.typeSystem,
-          context.declaredVariables, [this], library.featureSet);
+      computeConstants(context.declaredVariables, [this], library.featureSet);
     }
   }
 }
@@ -1680,8 +1679,7 @@
           '[reference: $reference]',
         );
       }
-      computeConstants(library.typeProvider, library.typeSystem,
-          context.declaredVariables, [this], library.featureSet);
+      computeConstants(context.declaredVariables, [this], library.featureSet);
     }
     return evaluationResult?.value;
   }
@@ -2031,9 +2029,8 @@
   @override
   DartObject? computeConstantValue() {
     if (evaluationResult == null) {
-      var library = compilationUnit.library;
-      computeConstants(library.typeProvider, library.typeSystem,
-          context.declaredVariables, [this], library.featureSet);
+      computeConstants(context.declaredVariables, [this],
+          compilationUnit.library.featureSet);
     }
     return evaluationResult?.value;
   }
diff --git a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
index d3ba759..2caa7a1 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
@@ -196,8 +196,8 @@
 
   /// Compute [_constants] in all units.
   void _computeConstants() {
-    computeConstants(_typeProvider, _typeSystem, _declaredVariables,
-        _constants.toList(), _libraryElement.featureSet);
+    computeConstants(
+        _declaredVariables, _constants.toList(), _libraryElement.featureSet);
   }
 
   void _computeDiagnostics({
diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart
index 8b32896..542e9ec 100644
--- a/pkg/analyzer/lib/src/lint/linter.dart
+++ b/pkg/analyzer/lib/src/lint/linter.dart
@@ -375,8 +375,6 @@
     );
 
     computeConstants(
-      typeProvider,
-      typeSystem,
       declaredVariables,
       dependencies,
       libraryElement.featureSet,
@@ -483,8 +481,6 @@
     var dependenciesFinder = ConstantExpressionsDependenciesFinder();
     node.accept(dependenciesFinder);
     computeConstants(
-      typeProvider,
-      typeSystem,
       declaredVariables,
       dependenciesFinder.dependencies.toList(),
       libraryElement.featureSet,
