Skip to content

Commit e9896a9

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate CommentReferenceResolver.
Change-Id: I8962f99ba4422d673ace93035bfad1d926ce68e3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/406042 Reviewed-by: Phil Quitslund <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent b7a9e2b commit e9896a9

File tree

3 files changed

+68
-71
lines changed

3 files changed

+68
-71
lines changed

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import 'package:analyzer/dart/constant/value.dart';
2020
import 'package:analyzer/dart/element/element.dart';
2121
import 'package:analyzer/dart/element/element2.dart';
2222
import 'package:analyzer/dart/element/nullability_suffix.dart';
23-
import 'package:analyzer/dart/element/scope.dart';
2423
import 'package:analyzer/dart/element/type.dart';
2524
import 'package:analyzer/error/error.dart';
2625
import 'package:analyzer/source/line_info.dart';
@@ -9869,9 +9868,8 @@ class PrefixElementImpl2 extends ElementImpl2 implements PrefixElement2 {
98699868
String? get name3 => firstFragment.name2;
98709869

98719870
@override
9872-
Scope get scope {
9873-
var libraryFragment = firstFragment.libraryFragment;
9874-
return LibraryFragmentScope(libraryFragment);
9871+
PrefixScope get scope {
9872+
return asElement.scope;
98759873
}
98769874

98779875
@override

pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart

Lines changed: 40 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
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';
5+
import 'package:analyzer/dart/element/element2.dart';
86
import 'package:analyzer/dart/element/type.dart';
97
import 'package:analyzer/src/dart/ast/ast.dart';
108
import 'package:analyzer/src/dart/element/element.dart';
@@ -14,7 +12,6 @@ import 'package:analyzer/src/dart/element/type_provider.dart';
1412
import 'package:analyzer/src/dart/element/type_system.dart';
1513
import 'package:analyzer/src/dart/resolver/type_property_resolver.dart';
1614
import 'package:analyzer/src/generated/resolver.dart';
17-
import 'package:analyzer/src/utilities/extensions/element.dart';
1815

1916
class CommentReferenceResolver {
2017
final TypeProviderImpl _typeProvider;
@@ -55,45 +52,45 @@ class CommentReferenceResolver {
5552
}) {
5653
var prefix = expression.prefix;
5754
var prefixElement = _resolveSimpleIdentifier(prefix);
58-
prefix.staticElement = prefixElement;
55+
prefix.element = prefixElement;
5956

6057
if (prefixElement == null) {
6158
return;
6259
}
6360

6461
var name = expression.identifier;
6562

66-
if (prefixElement is PrefixElement) {
63+
if (prefixElement is PrefixElement2) {
6764
var prefixScope = prefixElement.scope;
6865
var lookupResult = prefixScope.lookup(name.name);
69-
var element = lookupResult.getter ?? lookupResult.setter;
70-
name.staticElement = element;
66+
var element = lookupResult.getter2 ?? lookupResult.setter2;
67+
name.element = element;
7168
return;
7269
}
7370

7471
if (!hasNewKeyword) {
75-
if (prefixElement is InterfaceElement) {
76-
name.staticElement = _resolver.inheritance.getMember2(
72+
if (prefixElement is InterfaceElement2) {
73+
name.element = _resolver.inheritance.getMember4(
7774
prefixElement,
78-
Name(prefixElement.library.source.uri, name.name),
75+
Name(prefixElement.library2.uri, name.name),
7976
) ??
80-
prefixElement.getMethod(name.name) ??
81-
prefixElement.getGetter(name.name) ??
82-
prefixElement.getSetter(name.name) ??
83-
prefixElement.getNamedConstructor(name.name);
84-
} else if (prefixElement is ExtensionElement) {
85-
name.staticElement = prefixElement.getMethod(name.name) ??
86-
prefixElement.getGetter(name.name) ??
87-
prefixElement.getSetter(name.name);
77+
prefixElement.getMethod2(name.name) ??
78+
prefixElement.getGetter2(name.name) ??
79+
prefixElement.getSetter2(name.name) ??
80+
prefixElement.getNamedConstructor2(name.name);
81+
} else if (prefixElement is ExtensionElement2) {
82+
name.element = prefixElement.getMethod2(name.name) ??
83+
prefixElement.getGetter2(name.name) ??
84+
prefixElement.getSetter2(name.name);
8885
} else {
8986
// TODO(brianwilkerson): Report this error.
9087
}
91-
} else if (prefixElement is InterfaceElement) {
92-
var constructor = prefixElement.getNamedConstructor(name.name);
88+
} else if (prefixElement is InterfaceElement2) {
89+
var constructor = prefixElement.getNamedConstructor2(name.name);
9390
if (constructor == null) {
9491
// TODO(brianwilkerson): Report this error.
9592
} else {
96-
name.staticElement = constructor;
93+
name.element = constructor;
9794
}
9895
} else {
9996
// TODO(brianwilkerson): Report this error.
@@ -113,9 +110,9 @@ class CommentReferenceResolver {
113110

114111
var prefix = target.prefix;
115112
var prefixElement = _resolveSimpleIdentifier(prefix);
116-
prefix.staticElement = prefixElement;
113+
prefix.element = prefixElement;
117114

118-
if (prefixElement is! PrefixElement) {
115+
if (prefixElement is! PrefixElement2) {
119116
// The only valid prefixElement is a PrefixElement; otherwise, this is
120117
// not a comment reference.
121118
return;
@@ -124,33 +121,33 @@ class CommentReferenceResolver {
124121
var name = target.identifier;
125122
var prefixScope = prefixElement.scope;
126123
var lookupResult = prefixScope.lookup(name.name);
127-
var element = lookupResult.getter ?? lookupResult.setter;
128-
name.staticElement = element;
124+
var element = lookupResult.getter2 ?? lookupResult.setter2;
125+
name.element = element;
129126

130127
var propertyName = expression.propertyName;
131-
if (element is InterfaceElement) {
132-
propertyName.staticElement = element.getMethod(propertyName.name) ??
133-
element.getGetter(propertyName.name) ??
134-
element.getSetter(propertyName.name) ??
135-
element.getNamedConstructor(propertyName.name);
136-
} else if (element is ExtensionElement) {
137-
propertyName.staticElement = element.getMethod(propertyName.name) ??
138-
element.getGetter(propertyName.name) ??
139-
element.getSetter(propertyName.name);
128+
if (element is InterfaceElement2) {
129+
propertyName.element = element.getMethod2(propertyName.name) ??
130+
element.getGetter2(propertyName.name) ??
131+
element.getSetter2(propertyName.name) ??
132+
element.getNamedConstructor2(propertyName.name);
133+
} else if (element is ExtensionElement2) {
134+
propertyName.element = element.getMethod2(propertyName.name) ??
135+
element.getGetter2(propertyName.name) ??
136+
element.getSetter2(propertyName.name);
140137
}
141138
}
142139

143140
/// Resolves the given simple [identifier] if possible.
144141
///
145142
/// Returns the resolved element, or `null` if the identifier could not be
146143
/// resolved. This does not record the results of the resolution.
147-
Element? _resolveSimpleIdentifier(SimpleIdentifierImpl identifier) {
144+
Element2? _resolveSimpleIdentifier(SimpleIdentifierImpl identifier) {
148145
var lookupResult = identifier.scopeLookupResult!;
149-
var element = lookupResult.getter ?? lookupResult.setter;
146+
var element = lookupResult.getter2 ?? lookupResult.setter2;
150147

151148
// Usually referencing just an import prefix is an error.
152149
// But we allow this in documentation comments.
153-
if (element is PrefixElementImpl) {
150+
if (element is PrefixElementImpl2) {
154151
element.scope.notifyPrefixUsedInCommentReference();
155152
}
156153

@@ -182,7 +179,7 @@ class CommentReferenceResolver {
182179
propertyErrorEntity: identifier,
183180
nameErrorEntity: identifier,
184181
);
185-
element = result.getter2?.asElement ?? result.setter2?.asElement;
182+
element = result.getter2 ?? result.setter2;
186183
}
187184
return element;
188185
}
@@ -195,14 +192,14 @@ class CommentReferenceResolver {
195192
if (element == null) {
196193
return;
197194
}
198-
expression.staticElement = element;
195+
expression.element = element;
199196
if (hasNewKeyword) {
200-
if (element is InterfaceElement) {
201-
var constructor = element.unnamedConstructor;
197+
if (element is InterfaceElement2) {
198+
var constructor = element.unnamedConstructor2;
202199
if (constructor == null) {
203200
// TODO(brianwilkerson): Report this error.
204201
} else {
205-
expression.staticElement = constructor;
202+
expression.element = constructor;
206203
}
207204
} else {
208205
// TODO(brianwilkerson): Report this error.

pkg/analyzer/test/src/summary/elements/library_fragment_test.dart

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -427,11 +427,13 @@ part 'a.dart';
427427
package:test/test.dart
428428
prefix.exitCode
429429
prefix: <testLibraryFragment>::@prefix2::prefix
430-
getter: <null>
430+
getter: dart:io::<fragment>::@getter::exitCode#element
431+
setter: dart:io::<fragment>::@setter::exitCode#element
431432
package:test/a.dart
432433
prefix.exitCode
433434
prefix: <testLibraryFragment>::@prefix2::prefix
434-
getter: <null>
435+
getter: dart:io::<fragment>::@getter::exitCode#element
436+
setter: dart:io::<fragment>::@setter::exitCode#element
435437
''');
436438
}
437439

@@ -468,31 +470,31 @@ part 'a.dart';
468470
package:test/test.dart
469471
prefix.File
470472
prefix: <testLibraryFragment>::@prefix2::prefix
471-
getter: <null>
473+
getter: dart:io::@class::File
472474
prefix.Random
473475
prefix: <testLibraryFragment>::@prefix2::prefix
474476
getter: <null>
475477
package:test/a.dart
476478
prefix.File
477479
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
478-
getter: <null>
480+
getter: dart:io::@class::File
479481
prefix.Random
480482
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
481-
getter: <null>
483+
getter: dart:math::@class::Random
482484
package:test/aa.dart
483485
prefix.File
484486
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
485-
getter: <null>
487+
getter: dart:io::@class::File
486488
prefix.Random
487489
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
488-
getter: <null>
490+
getter: dart:math::@class::Random
489491
package:test/aaa.dart
490492
prefix.File
491493
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
492-
getter: <null>
494+
getter: dart:io::@class::File
493495
prefix.Random
494496
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
495-
getter: <null>
497+
getter: dart:math::@class::Random
496498
''');
497499
}
498500

@@ -523,24 +525,24 @@ part 'a.dart';
523525
package:test/test.dart
524526
prefix.File
525527
prefix: <testLibraryFragment>::@prefix2::prefix
526-
getter: <null>
528+
getter: dart:io::@class::File
527529
prefix.Random
528530
prefix: <testLibraryFragment>::@prefix2::prefix
529531
getter: <null>
530532
package:test/a.dart
531533
prefix.File
532534
prefix: <testLibraryFragment>::@prefix2::prefix
533-
getter: <null>
535+
getter: dart:io::@class::File
534536
prefix.Random
535537
prefix: <testLibraryFragment>::@prefix2::prefix
536538
getter: <null>
537539
package:test/aa.dart
538540
prefix.File
539541
prefix: <testLibrary>::@fragment::package:test/aa.dart::@prefix2::prefix
540-
getter: <null>
542+
getter: dart:io::@class::File
541543
prefix.Random
542544
prefix: <testLibrary>::@fragment::package:test/aa.dart::@prefix2::prefix
543-
getter: <null>
545+
getter: dart:math::@class::Random
544546
''');
545547
}
546548

@@ -575,7 +577,7 @@ package:test/test.dart
575577
getter: <null>
576578
prefix.File
577579
prefix: <testLibraryFragment>::@prefix2::prefix
578-
getter: <null>
580+
getter: dart:io::@class::File
579581
prefix.Random
580582
prefix: <testLibraryFragment>::@prefix2::prefix
581583
getter: <null>
@@ -587,7 +589,7 @@ package:test/a.dart
587589
getter: <null>
588590
prefix.Random
589591
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
590-
getter: <null>
592+
getter: dart:math::@class::Random
591593
package:test/aa.dart
592594
loadLibrary
593595
getter: <null>
@@ -596,7 +598,7 @@ package:test/aa.dart
596598
getter: <null>
597599
prefix.Random
598600
prefix: <testLibrary>::@fragment::package:test/aa.dart::@prefix2::prefix
599-
getter: <null>
601+
getter: dart:math::@class::Random
600602
''');
601603
}
602604

@@ -632,24 +634,24 @@ part 'a.dart';
632634
package:test/test.dart
633635
prefix.File
634636
prefix: <testLibraryFragment>::@prefix2::prefix
635-
getter: <null>
637+
getter: dart:io::@class::File
636638
prefix.Directory
637639
prefix: <testLibraryFragment>::@prefix2::prefix
638-
getter: <null>
640+
getter: dart:io::@class::Directory
639641
package:test/a.dart
640642
prefix.File
641643
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
642-
getter: <null>
644+
getter: dart:io::@class::File
643645
prefix.Directory
644646
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
645-
getter: <null>
647+
getter: package:test/x.dart::@class::Directory
646648
package:test/aa.dart
647649
prefix.File
648650
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
649-
getter: <null>
651+
getter: dart:io::@class::File
650652
prefix.Directory
651653
prefix: <testLibrary>::@fragment::package:test/a.dart::@prefix2::prefix
652-
getter: <null>
654+
getter: package:test/x.dart::@class::Directory
653655
''');
654656
}
655657

@@ -1273,14 +1275,14 @@ part 'a.dart';
12731275
package:test/test.dart
12741276
_.X
12751277
_: <testLibraryFragment>::@prefix2::_
1276-
getter: <null>
1278+
getter: package:test/x.dart::@extension::X
12771279
accessibleExtensions
12781280
dart:core::@extension::EnumName
12791281
package:test/x.dart::@extension::X
12801282
package:test/a.dart
12811283
_.X
12821284
_: <testLibraryFragment>::@prefix2::_
1283-
getter: <null>
1285+
getter: package:test/x.dart::@extension::X
12841286
accessibleExtensions
12851287
dart:core::@extension::EnumName
12861288
package:test/x.dart::@extension::X

0 commit comments

Comments
 (0)