@@ -88,27 +88,30 @@ extension on AstNode {
8888 /// Whether [ConstantVerifier] reports an error when computing the value of
8989 /// `this` as a constant.
9090 bool get hasConstantVerifierError {
91- var unitElement = thisOrAncestorOfType <CompilationUnit >()? .declaredElement;
92- if (unitElement == null ) return false ;
93- var libraryElement = unitElement.library as LibraryElementImpl ;
91+ var unitNode = thisOrAncestorOfType <CompilationUnit >();
92+ var unitFragment = unitNode? .declaredFragment;
93+ if (unitFragment == null ) return false ;
94+
95+ var libraryElement = unitFragment.element as LibraryElementImpl ;
96+ var declaredVariables = libraryElement.session.declaredVariables;
9497
9598 var dependenciesFinder = ConstantExpressionsDependenciesFinder ();
9699 accept (dependenciesFinder);
97100 computeConstants (
98- declaredVariables: unitElement.session. declaredVariables,
101+ declaredVariables: declaredVariables,
99102 constants: dependenciesFinder.dependencies.toList (),
100103 featureSet: libraryElement.featureSet,
101104 configuration: ConstantEvaluationConfiguration (),
102105 );
103106
104107 var listener = _ConstantAnalysisErrorListener ();
105- var errorReporter = ErrorReporter (listener, unitElement .source);
108+ var errorReporter = ErrorReporter (listener, unitFragment .source);
106109
107110 accept (
108111 ConstantVerifier (
109112 errorReporter,
110113 libraryElement,
111- unitElement.session. declaredVariables,
114+ declaredVariables,
112115 ),
113116 );
114117 return listener.hasConstError;
@@ -156,31 +159,35 @@ extension ExpressionExtension on Expression {
156159 /// Returns a [LinterConstantEvaluationResult] , containing both the computed
157160 /// constant value, and a list of errors that occurred during the computation.
158161 LinterConstantEvaluationResult computeConstantValue () {
159- var unitElement = thisOrAncestorOfType <CompilationUnit >()? .declaredElement;
160- if (unitElement == null ) return LinterConstantEvaluationResult ._(null , []);
161- var libraryElement = unitElement.library as LibraryElementImpl ;
162+ var unitNode = thisOrAncestorOfType <CompilationUnit >();
163+ var unitFragment = unitNode? .declaredFragment;
164+ if (unitFragment == null ) {
165+ return LinterConstantEvaluationResult ._(null , []);
166+ }
162167
163- var errorListener = RecordingErrorListener ();
168+ var libraryElement = unitFragment.element as LibraryElementImpl ;
169+ var declaredVariables = libraryElement.session.declaredVariables;
164170
165171 var evaluationEngine = ConstantEvaluationEngine (
166- declaredVariables: unitElement.session. declaredVariables,
172+ declaredVariables: declaredVariables,
167173 configuration: ConstantEvaluationConfiguration (),
168174 );
169175
170176 var dependencies = < ConstantEvaluationTarget > [];
171177 accept (ReferenceFinder (dependencies.add));
172178
173179 computeConstants (
174- declaredVariables: unitElement.session. declaredVariables,
180+ declaredVariables: declaredVariables,
175181 constants: dependencies,
176182 featureSet: libraryElement.featureSet,
177183 configuration: ConstantEvaluationConfiguration (),
178184 );
179185
186+ var errorListener = RecordingErrorListener ();
180187 var visitor = ConstantVisitor (
181188 evaluationEngine,
182189 libraryElement,
183- ErrorReporter (errorListener, unitElement .source),
190+ ErrorReporter (errorListener, unitFragment .source),
184191 );
185192
186193 var constant = visitor.evaluateAndReportInvalidConstant (this );
@@ -189,11 +196,11 @@ extension ExpressionExtension on Expression {
189196 }
190197
191198 bool _canBeConstInstanceCreation (InstanceCreationExpressionImpl node) {
192- var element = node.constructorName.staticElement ;
199+ var element = node.constructorName.element ;
193200 if (element == null || ! element.isConst) return false ;
194201
195202 // Ensure that dependencies (e.g. default parameter values) are computed.
196- var implElement = element.declaration as ConstructorElementImpl ;
203+ var implElement = element.baseElement as ConstructorElementImpl2 ;
197204 implElement.computeConstantDependencies ();
198205
199206 // Verify that the evaluation of the constructor would not produce an
0 commit comments