Skip to content

Commit 79b964b

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate AstBinaryReader.
Change-Id: Iacdb466d17c08bf77f65bb05a7c25573c43c3b67 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/415263 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent e36ac5f commit 79b964b

File tree

4 files changed

+17
-15
lines changed

4 files changed

+17
-15
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2553,7 +2553,7 @@ class ElementAnnotationImpl implements ElementAnnotation {
25532553
}
25542554

25552555
/// A base class for concrete implementations of an [Element] or [Element2].
2556-
abstract class ElementImpl implements Element, Element2 {
2556+
abstract class ElementImpl implements Element, Element2, ElementOrMember {
25572557
static const _metadataFlag_isReady = 1 << 0;
25582558
static const _metadataFlag_hasDeprecated = 1 << 1;
25592559
static const _metadataFlag_hasOverride = 1 << 2;
@@ -3613,6 +3613,10 @@ class ElementLocationImpl implements ElementLocation {
36133613
}
36143614
}
36153615

3616+
/// A shared internal interface of [Element] and [Member].
3617+
/// Used during migration to avoid referencing [Element].
3618+
abstract class ElementOrMember {}
3619+
36163620
/// An [InterfaceElementImpl] which is an enum.
36173621
class EnumElementImpl extends InterfaceElementImpl
36183622
implements EnumElement, EnumFragment {
@@ -3958,7 +3962,8 @@ abstract class ExecutableElementImpl2 extends FunctionTypedElementImpl2
39583962

39593963
/// Common base class for all analyzer-internal classes that implement
39603964
/// `ExecutableElement`.
3961-
abstract class ExecutableElementOrMember implements ExecutableElement {
3965+
abstract class ExecutableElementOrMember
3966+
implements ExecutableElement, ElementOrMember {
39623967
@override
39633968
List<ParameterElementMixin> get parameters;
39643969

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ class GetterMember extends PropertyAccessorMember
797797

798798
/// An element defined in a parameterized type where the values of the type
799799
/// parameters are known.
800-
abstract class Member implements Element {
800+
abstract class Member implements Element, ElementOrMember {
801801
/// The element on which the parameterized element was created.
802802
final Element _declaration;
803803

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

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@
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 'package:_fe_analyzer_shared/src/scanner/string_canonicalizer.dart';
86
import 'package:analyzer/dart/ast/token.dart';
9-
import 'package:analyzer/dart/element/element.dart';
107
import 'package:analyzer/dart/element/element2.dart';
118
import 'package:analyzer/src/dart/ast/ast.dart';
129
import 'package:analyzer/src/dart/ast/token.dart';
@@ -19,7 +16,6 @@ import 'package:analyzer/src/summary2/ast_binary_tag.dart';
1916
import 'package:analyzer/src/summary2/ast_binary_tokens.dart';
2017
import 'package:analyzer/src/summary2/bundle_reader.dart';
2118
import 'package:analyzer/src/summary2/unlinked_token_type.dart';
22-
import 'package:analyzer/src/utilities/extensions/element.dart';
2319
import 'package:collection/collection.dart';
2420

2521
/// Deserializer of ASTs.
@@ -496,13 +492,13 @@ class AstBinaryReader {
496492
ExtensionOverride _readExtensionOverride() {
497493
var importPrefix = _readOptionalNode() as ImportPrefixReferenceImpl?;
498494
var extensionName = _readStringReference();
499-
var element = _reader.readElement() as ExtensionElement;
495+
var element = _reader.readElement2() as ExtensionElementImpl2;
500496
var typeArguments = _readOptionalNode() as TypeArgumentListImpl?;
501497
var argumentList = readNode() as ArgumentListImpl;
502498
var node = ExtensionOverrideImpl(
503499
importPrefix: importPrefix,
504500
name: StringToken(TokenType.STRING, extensionName, -1),
505-
element2: element.asElement2,
501+
element2: element,
506502
argumentList: argumentList,
507503
typeArguments: typeArguments,
508504
);
@@ -712,11 +708,11 @@ class AstBinaryReader {
712708
var expression = readNode() as ExpressionImpl;
713709
var typeArguments = _readOptionalNode() as TypeArgumentListImpl?;
714710
var typeArgumentTypes = _reader.readOptionalTypeList()!;
715-
var staticElement = _reader.readElement() as MethodElement;
711+
var staticElement = _reader.readElement2() as MethodElementImpl2;
716712

717713
var node = ImplicitCallReferenceImpl(
718714
expression: expression,
719-
element: staticElement.asElement2,
715+
element: staticElement,
720716
typeArguments: typeArguments,
721717
typeArgumentTypes: typeArgumentTypes,
722718
);

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,7 +1980,7 @@ class ResolutionReader {
19801980
return _reader.readDouble();
19811981
}
19821982

1983-
Element? readElement() {
1983+
ElementOrMember? readElement() {
19841984
var memberFlags = _reader.readByte();
19851985
var element = _readRawElement();
19861986

@@ -1989,7 +1989,7 @@ class ResolutionReader {
19891989
}
19901990

19911991
if (memberFlags == Tag.RawElement) {
1992-
return element;
1992+
return element as ElementOrMember;
19931993
}
19941994

19951995
if (memberFlags == Tag.MemberWithTypeArguments) {
@@ -2040,14 +2040,15 @@ class ResolutionReader {
20402040
}
20412041

20422042
if (memberFlags == Tag.MemberWithTypeArguments) {
2043-
return element;
2043+
return element as ElementOrMember;
20442044
}
20452045

20462046
throw UnimplementedError('memberFlags: $memberFlags');
20472047
}
20482048

20492049
Element2? readElement2() {
2050-
return readElement()?.asElement2;
2050+
var element = readElement() as Element?;
2051+
return element?.asElement2;
20512052
}
20522053

20532054
List<T> readElementList<T extends Element>() {

0 commit comments

Comments
 (0)