Skip to content

Commit c01fe77

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Changes for google3.
Change-Id: Ia0215da239c3948ccd242e583b79df0085109597 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/402400 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 61f1d69 commit c01fe77

File tree

6 files changed

+44
-5
lines changed

6 files changed

+44
-5
lines changed

pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ abstract class RenameRefactoring implements Refactoring {
513513
return RenameTypeParameterRefactoringImpl(
514514
workspace,
515515
sessionHelper,
516-
element.asElement2 as TypeParameterElement2,
516+
element.asElement2,
517517
);
518518
}
519519
if (enclosingElement is InterfaceElement) {

pkg/analyzer/lib/dart/element/element2.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1619,7 +1619,7 @@ abstract class LibraryElement2 implements Element2, Annotatable {
16191619
/// An `export` directive within a library fragment.
16201620
///
16211621
/// Clients may not extend, implement or mix-in this class.
1622-
abstract class LibraryExport {
1622+
abstract class LibraryExport implements Annotatable {
16231623
/// The combinators that were specified as part of the `export` directive.
16241624
///
16251625
/// The combinators are in the order in which they were specified.
@@ -1718,7 +1718,7 @@ abstract class LibraryFragment implements Fragment, Annotatable {
17181718
/// An `import` directive within a library fragment.
17191719
///
17201720
/// Clients may not extend, implement or mix-in this class.
1721-
abstract class LibraryImport {
1721+
abstract class LibraryImport implements Annotatable {
17221722
/// The combinators that were specified as part of the `import` directive.
17231723
///
17241724
/// The combinators are in the order in which they were specified.

pkg/analyzer/lib/dart/element/type_provider.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ abstract class TypeProvider {
223223
/// Return `true` if [element] cannot be extended, implemented, or mixed in.
224224
bool isNonSubtypableClass(InterfaceElement element);
225225

226+
/// Return `true` if [element] cannot be extended, implemented, or mixed in.
227+
bool isNonSubtypableClass2(InterfaceElement2 element);
228+
226229
/// Return 'true' if [id] is the name of a getter on the `Object` type.
227230
bool isObjectGetter(String id);
228231

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3868,6 +3868,13 @@ abstract class ExecutableElementImpl2 extends FunctionTypedElementImpl2
38683868
@override
38693869
ExecutableElement2 get baseElement => this;
38703870

3871+
@override
3872+
List<Element2> get children2 => [
3873+
...super.children2,
3874+
...typeParameters2,
3875+
...formalParameters,
3876+
];
3877+
38713878
bool get invokesSuperSelf {
38723879
var firstFragment = this.firstFragment as ExecutableElementImpl;
38733880
return firstFragment.hasModifier(Modifier.INVOKES_SUPER_SELF);

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -533,9 +533,14 @@ class TypeProviderImpl extends TypeProviderBase {
533533

534534
@override
535535
bool isNonSubtypableClass(InterfaceElement element) {
536-
var name = element.name;
536+
return isNonSubtypableClass2(element.asElement2);
537+
}
538+
539+
@override
540+
bool isNonSubtypableClass2(InterfaceElement2 element) {
541+
var name = element.name3;
537542
if (_nonSubtypableClassNames.contains(name)) {
538-
var libraryUriStr = element.library.source.uri.toString();
543+
var libraryUriStr = element.library2.uri.toString();
539544
var ofLibrary = _nonSubtypableClassMap[libraryUriStr];
540545
return ofLibrary != null && ofLibrary.contains(name);
541546
}

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ extension CompilationUnitElementExtension on CompilationUnitElement {
4646

4747
extension ConstructorElement2Extension on ConstructorElement2 {
4848
ConstructorElement get asElement {
49+
if (this case ConstructorMember member) {
50+
return member;
51+
}
4952
return baseElement.firstFragment as ConstructorElement;
5053
}
5154
}
@@ -278,6 +281,9 @@ extension EnumElementExtension on EnumElement {
278281

279282
extension ExecutableElement2Extension on ExecutableElement2 {
280283
ExecutableElement get asElement {
284+
if (this case ExecutableMember member) {
285+
return member;
286+
}
281287
return firstFragment as ExecutableElement;
282288
}
283289
}
@@ -324,6 +330,9 @@ extension ExtensionTypeElement2Extension on ExtensionTypeElement2 {
324330

325331
extension FieldElement2Extension on FieldElement2 {
326332
FieldElement get asElement {
333+
if (this case FieldMember member) {
334+
return member;
335+
}
327336
return firstFragment as FieldElement;
328337
}
329338
}
@@ -340,6 +349,9 @@ extension FieldElementExtension on FieldElement {
340349

341350
extension FormalParameterExtension on FormalParameterElement {
342351
ParameterElement get asElement {
352+
if (this case ParameterMember member) {
353+
return member;
354+
}
343355
return firstFragment as ParameterElement;
344356
}
345357

@@ -437,6 +449,9 @@ extension ListOfTypeParameterElementExtension on List<TypeParameterElement> {
437449

438450
extension MethodElement2Extension on MethodElement2 {
439451
MethodElement get asElement {
452+
if (this case MethodMember member) {
453+
return member;
454+
}
440455
return baseElement.firstFragment as MethodElement;
441456
}
442457
}
@@ -491,6 +506,9 @@ extension PrefixElementExtension on PrefixElement {
491506

492507
extension PropertyAccessorElement2Extension on PropertyAccessorElement2 {
493508
PropertyAccessorElement get asElement {
509+
if (this case PropertyAccessorMember member) {
510+
return member;
511+
}
494512
return firstFragment as PropertyAccessorElement;
495513
}
496514
}
@@ -540,3 +558,9 @@ extension TypeParameterElement2Extension on TypeParameterElement2 {
540558
return firstFragment as TypeParameterElement;
541559
}
542560
}
561+
562+
extension TypeParameterElementExtension on TypeParameterElement {
563+
TypeParameterElement2 get asElement2 {
564+
return (this as TypeParameterElementImpl).element;
565+
}
566+
}

0 commit comments

Comments
 (0)