Skip to content

Commit 110f135

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Use ElementImpl in few link libraries.
Change-Id: I497329b1583a43600ba1a7d8839550cd781a269e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/415322 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent aea57de commit 110f135

File tree

5 files changed

+50
-67
lines changed

5 files changed

+50
-67
lines changed

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9315,11 +9315,12 @@ abstract class NonParameterVariableElementImpl extends VariableElementImpl
93159315
NonParameterVariableElementImpl(super.name, super.offset);
93169316

93179317
@override
9318-
Element get enclosingElement3 =>
9319-
// TODO(paulberry): `!` is not appropriate here because variable elements
9320-
// aren't guaranteed to have enclosing elements. See
9321-
// https://github.com/dart-lang/sdk/issues/59750.
9322-
super.enclosingElement3!;
9318+
ElementImpl get enclosingElement3 {
9319+
// TODO(paulberry): `!` is not appropriate here because variable elements
9320+
// aren't guaranteed to have enclosing elements. See
9321+
// https://github.com/dart-lang/sdk/issues/59750.
9322+
return super.enclosingElement3 as ElementImpl;
9323+
}
93239324

93249325
bool get hasInitializer {
93259326
return hasModifier(Modifier.HAS_INITIALIZER);
@@ -10147,7 +10148,7 @@ class PropertyAccessorElementImpl_ImplicitGetter extends GetterFragmentImpl {
1014710148

1014810149
@override
1014910150
ElementImpl get enclosingElement3 {
10150-
return variable2.enclosingElement3 as ElementImpl;
10151+
return variable2.enclosingElement3;
1015110152
}
1015210153

1015310154
@override
@@ -10215,7 +10216,7 @@ class PropertyAccessorElementImpl_ImplicitSetter extends SetterFragmentImpl {
1021510216

1021610217
@override
1021710218
ElementImpl get enclosingElement3 {
10218-
return variable2.enclosingElement3 as ElementImpl;
10219+
return variable2.enclosingElement3;
1021910220
}
1022010221

1022110222
@override

pkg/analyzer/lib/src/summary2/default_value_resolver.dart

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// ignore_for_file: analyzer_use_new_elements
6-
7-
import 'package:analyzer/dart/element/element.dart';
85
import 'package:analyzer/dart/element/scope.dart';
96
import 'package:analyzer/src/dart/ast/ast.dart';
107
import 'package:analyzer/src/dart/element/element.dart';
@@ -24,14 +21,14 @@ class DefaultValueResolver {
2421
: _typeSystem = _libraryBuilder.element.typeSystem;
2522

2623
void resolve() {
27-
for (var unitElement in _libraryBuilder.element.units.impl) {
28-
_UnitContext(unitElement)
29-
..forEach(unitElement.classes, _interface)
30-
..forEach(unitElement.enums, _interface)
31-
..forEach(unitElement.extensions, _extension)
32-
..forEach(unitElement.extensionTypes, _interface)
33-
..forEach(unitElement.functions, _executable)
34-
..forEach(unitElement.mixins, _interface);
24+
for (var libraryFragment in _libraryBuilder.element.fragments) {
25+
_UnitContext(libraryFragment)
26+
..forEach(libraryFragment.classes, _interface)
27+
..forEach(libraryFragment.enums, _interface)
28+
..forEach(libraryFragment.extensions, _extension)
29+
..forEach(libraryFragment.extensionTypes, _interface)
30+
..forEach(libraryFragment.functions, _executable)
31+
..forEach(libraryFragment.mixins, _interface);
3532
}
3633
}
3734

@@ -40,7 +37,7 @@ class DefaultValueResolver {
4037
_executable(context, element);
4138
}
4239

43-
DefaultFormalParameterImpl? _defaultParameter(ParameterElement element) {
40+
DefaultFormalParameterImpl? _defaultParameter(ParameterElementImpl element) {
4441
var node = _linker.getLinkingNode(element);
4542
if (node is DefaultFormalParameterImpl && node.defaultValue != null) {
4643
return node;
@@ -67,7 +64,7 @@ class DefaultValueResolver {
6764
..forEach(element.methods, _executable);
6865
}
6966

70-
void _parameter(_ExecutableContext context, ParameterElement parameter) {
67+
void _parameter(_ExecutableContext context, ParameterElementImpl parameter) {
7168
// If a function typed parameter, process nested parameters.
7269
context.forEach(parameter.parameters, _parameter);
7370

@@ -79,7 +76,7 @@ class DefaultValueResolver {
7976
var analysisOptions = _libraryBuilder.kind.file.analysisOptions;
8077
var astResolver = AstResolver(
8178
_linker,
82-
context.unitElement,
79+
context.libraryFragment,
8380
context.scope,
8481
analysisOptions,
8582
enclosingClassElement: context.classElement?.asElement2,
@@ -89,7 +86,7 @@ class DefaultValueResolver {
8986
contextType: contextType);
9087
}
9188

92-
Scope _scopeFromElement(Element element) {
89+
Scope _scopeFromElement(ElementImpl element) {
9390
var node = _linker.getLinkingNode(element)!;
9491
return LinkingNodeContext.get(node).scope;
9592
}
@@ -104,15 +101,15 @@ class _ClassContext extends _Context {
104101
_ClassContext(this.unitContext, this.classElement);
105102

106103
@override
107-
CompilationUnitElementImpl get unitElement {
108-
return unitContext.unitElement;
104+
CompilationUnitElementImpl get libraryFragment {
105+
return unitContext.libraryFragment;
109106
}
110107
}
111108

112109
abstract class _Context {
113110
InterfaceElementImpl? get classElement => null;
114111

115-
CompilationUnitElementImpl get unitElement;
112+
CompilationUnitElementImpl get libraryFragment;
116113
}
117114

118115
class _ExecutableContext extends _Context {
@@ -132,22 +129,16 @@ class _ExecutableContext extends _Context {
132129
}
133130

134131
@override
135-
CompilationUnitElementImpl get unitElement {
136-
return enclosingContext.unitElement;
132+
CompilationUnitElementImpl get libraryFragment {
133+
return enclosingContext.libraryFragment;
137134
}
138135
}
139136

140137
class _UnitContext extends _Context {
141138
@override
142-
final CompilationUnitElementImpl unitElement;
143-
144-
_UnitContext(this.unitElement);
145-
}
139+
final CompilationUnitElementImpl libraryFragment;
146140

147-
extension on List<CompilationUnitElement> {
148-
List<CompilationUnitElementImpl> get impl {
149-
return cast();
150-
}
141+
_UnitContext(this.libraryFragment);
151142
}
152143

153144
extension _ContextExtension<C extends _Context> on C {

pkg/analyzer/lib/src/summary2/link.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// ignore_for_file: analyzer_use_new_elements
6-
75
import 'dart:typed_data';
86

97
import 'package:analyzer/dart/analysis/declared_variables.dart';
108
import 'package:analyzer/dart/ast/ast.dart' as ast;
11-
import 'package:analyzer/dart/element/element.dart';
129
import 'package:analyzer/dart/element/element2.dart';
1310
import 'package:analyzer/src/context/context.dart';
1411
import 'package:analyzer/src/dart/analysis/file_state.dart';
12+
import 'package:analyzer/src/dart/element/element.dart';
1513
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
1614
import 'package:analyzer/src/dart/element/name_union.dart';
1715
import 'package:analyzer/src/fine/library_manifest.dart';
@@ -87,7 +85,7 @@ class Linker {
8785

8886
/// If the [element] is part of a library being linked, return the node
8987
/// from which it was created.
90-
ast.AstNode? getLinkingNode(Element element) {
88+
ast.AstNode? getLinkingNode(ElementImpl element) {
9189
return elementNodes[element];
9290
}
9391

pkg/analyzer/lib/src/summary2/top_level_inference.dart

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// ignore_for_file: analyzer_use_new_elements
6-
7-
import 'package:analyzer/dart/element/element.dart';
85
import 'package:analyzer/dart/element/scope.dart';
96
import 'package:analyzer/src/dart/ast/ast.dart';
107
import 'package:analyzer/src/dart/ast/extensions.dart';
@@ -27,8 +24,8 @@ class ConstantInitializersResolver {
2724
final Linker linker;
2825

2926
late LibraryBuilder _libraryBuilder;
30-
late CompilationUnitElementImpl _unitElement;
31-
late LibraryElement _library;
27+
late CompilationUnitElementImpl _libraryFragment;
28+
late LibraryElementImpl _library;
3229
late Scope _scope;
3330

3431
ConstantInitializersResolver(this.linker);
@@ -37,35 +34,33 @@ class ConstantInitializersResolver {
3734
for (var builder in linker.builders.values) {
3835
_library = builder.element;
3936
_libraryBuilder = builder;
40-
for (var unit in _library.units) {
41-
_unitElement = unit as CompilationUnitElementImpl;
42-
unit.classes.forEach(_resolveInterfaceFields);
43-
unit.enums.forEach(_resolveInterfaceFields);
44-
unit.extensions.forEach(_resolveExtensionFields);
45-
unit.extensionTypes.forEach(_resolveInterfaceFields);
46-
unit.mixins.forEach(_resolveInterfaceFields);
47-
48-
_scope = unit.scope;
49-
unit.topLevelVariables.forEach(_resolveVariable);
37+
for (var libraryFragment in _library.fragments) {
38+
_libraryFragment = libraryFragment;
39+
libraryFragment.classes.forEach(_resolveInterfaceFields);
40+
libraryFragment.enums.forEach(_resolveInterfaceFields);
41+
libraryFragment.extensions.forEach(_resolveExtensionFields);
42+
libraryFragment.extensionTypes.forEach(_resolveInterfaceFields);
43+
libraryFragment.mixins.forEach(_resolveInterfaceFields);
44+
45+
_scope = libraryFragment.scope;
46+
libraryFragment.topLevelVariables.forEach(_resolveVariable);
5047
}
5148
}
5249
}
5350

54-
void _resolveExtensionFields(ExtensionElement extension_) {
51+
void _resolveExtensionFields(ExtensionElementImpl extension_) {
5552
var node = linker.getLinkingNode(extension_)!;
5653
_scope = LinkingNodeContext.get(node).scope;
5754
extension_.fields.forEach(_resolveVariable);
5855
}
5956

60-
void _resolveInterfaceFields(InterfaceElement class_) {
57+
void _resolveInterfaceFields(InterfaceElementImpl class_) {
6158
var node = linker.getLinkingNode(class_)!;
6259
_scope = LinkingNodeContext.get(node).scope;
6360
class_.fields.forEach(_resolveVariable);
6461
}
6562

66-
void _resolveVariable(PropertyInducingElement element) {
67-
element as PropertyInducingElementImpl;
68-
63+
void _resolveVariable(PropertyInducingElementImpl element) {
6964
if (element is FieldElementImpl && element.isEnumConstant) {
7065
return;
7166
}
@@ -81,7 +76,7 @@ class ConstantInitializersResolver {
8176
var analysisOptions = _libraryBuilder.kind.file.analysisOptions;
8277
var astResolver = AstResolver(
8378
linker,
84-
_unitElement,
79+
_libraryFragment,
8580
_scope,
8681
analysisOptions,
8782
);
@@ -155,21 +150,19 @@ class _InitializerInference {
155150
}
156151
}
157152

158-
void _addClassElementFields(InterfaceElement class_) {
153+
void _addClassElementFields(InterfaceElementImpl class_) {
159154
var node = _linker.getLinkingNode(class_)!;
160155
_scope = LinkingNodeContext.get(node).scope;
161156
class_.fields.forEach(_addVariableNode);
162157
}
163158

164-
void _addExtensionElementFields(ExtensionElement extension_) {
159+
void _addExtensionElementFields(ExtensionElementImpl extension_) {
165160
var node = _linker.getLinkingNode(extension_)!;
166161
_scope = LinkingNodeContext.get(node).scope;
167162
extension_.fields.forEach(_addVariableNode);
168163
}
169164

170-
void _addVariableNode(PropertyInducingElement element) {
171-
element as PropertyInducingElementImpl;
172-
165+
void _addVariableNode(PropertyInducingElementImpl element) {
173166
if (element.isSynthetic &&
174167
!(element is FieldElementImpl && element.isSyntheticEnumField)) {
175168
return;

pkg/analyzer/test/src/summary/element_text.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2534,9 +2534,9 @@ class _ElementWriter extends _AbstractElementWriter {
25342534
} else {
25352535
var enclosing = variable!.enclosingElement3;
25362536
switch (enclosing) {
2537-
case CompilationUnitElement():
2537+
case CompilationUnitElementImpl():
25382538
expect(enclosing.topLevelVariables, contains(variable));
2539-
case InterfaceElement():
2539+
case InterfaceElementImpl():
25402540
expect(enclosing.fields, contains(variable));
25412541
}
25422542
}

0 commit comments

Comments
 (0)