Skip to content

Commit 5f9a049

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Make InterfaceElementImpl.session AnalysisSessionImpl.
Strengthen the `session` type on `InterfaceElementImpl` from nullable `AnalysisSession?` to concrete `AnalysisSessionImpl` and route it through `library.session`. This reflects the actual runtime type, eliminates downcasts, and makes the API non-nullable. Key changes: - `InterfaceElementImpl.session` now returns `AnalysisSessionImpl`. - Replaced usages of `(session as AnalysisSessionImpl)` with direct `session.inheritanceManager...` calls (e.g., inherited/interface member lookups and overrides). - Removed a generic nullable `session` getter that delegated to an enclosing fragment, and dropped redundant fragment-level overrides where the library already provides the session. Why: - Improves type safety and clarity by matching the concrete session type. - Removes unnecessary nullability and casting boilerplate. - Centralizes the source of truth for the session via the owning library. Change-Id: I2f8e045c34218e9e10caa794b830219326c7da1d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/446006 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent 86500f1 commit 5f9a049

File tree

1 file changed

+7
-27
lines changed

1 file changed

+7
-27
lines changed

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

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3393,11 +3393,6 @@ abstract class FragmentImpl with _FragmentImplMixin implements Fragment {
33933393
@Deprecated('Use nameOffset instead')
33943394
int? get nameOffset2 => nameOffset;
33953395

3396-
/// The analysis session in which this element is defined.
3397-
AnalysisSession? get session {
3398-
return enclosingFragment?.session;
3399-
}
3400-
34013396
/// The version where this SDK API was added.
34023397
///
34033398
/// A `@Since()` annotation can be applied to a library declaration,
@@ -4027,7 +4022,7 @@ abstract class InstanceElementImpl extends ElementImpl
40274022
Element get nonSynthetic => isSynthetic ? enclosingElement : this as Element;
40284023

40294024
@override
4030-
AnalysisSession? get session => _firstFragment.session;
4025+
AnalysisSessionImpl get session => library.session;
40314026

40324027
@override
40334028
List<SetterElementImpl> get setters {
@@ -4621,18 +4616,15 @@ abstract class InterfaceElementImpl extends InstanceElementImpl
46214616

46224617
@override
46234618
Map<Name, ExecutableElement> get inheritedConcreteMembers =>
4624-
(session as AnalysisSessionImpl).inheritanceManager
4625-
.getInheritedConcreteMap(this);
4619+
session.inheritanceManager.getInheritedConcreteMap(this);
46264620

46274621
@override
46284622
Map<Name, ExecutableElement> get inheritedMembers =>
4629-
(session as AnalysisSessionImpl).inheritanceManager.getInheritedMap(this);
4623+
session.inheritanceManager.getInheritedMap(this);
46304624

46314625
@override
46324626
Map<Name, ExecutableElement> get interfaceMembers =>
4633-
(session as AnalysisSessionImpl).inheritanceManager
4634-
.getInterface(this)
4635-
.map;
4627+
session.inheritanceManager.getInterface(this).map;
46364628

46374629
@override
46384630
@trackedIncludedInId
@@ -4737,14 +4729,11 @@ abstract class InterfaceElementImpl extends InstanceElementImpl
47374729

47384730
@override
47394731
ExecutableElement? getInheritedMember(Name name) =>
4740-
(session as AnalysisSessionImpl).inheritanceManager.getInherited(
4741-
this,
4742-
name,
4743-
);
4732+
session.inheritanceManager.getInherited(this, name);
47444733

47454734
@override
47464735
ExecutableElement? getInterfaceMember(Name name) =>
4747-
(session as AnalysisSessionImpl).inheritanceManager.getMember(this, name);
4736+
session.inheritanceManager.getMember(this, name);
47484737

47494738
@override
47504739
ConstructorElementImpl? getNamedConstructor(String name) {
@@ -4766,10 +4755,7 @@ abstract class InterfaceElementImpl extends InstanceElementImpl
47664755

47674756
@override
47684757
List<ExecutableElement>? getOverridden(Name name) =>
4769-
(session as AnalysisSessionImpl).inheritanceManager.getOverridden(
4770-
this,
4771-
name,
4772-
);
4758+
session.inheritanceManager.getOverridden(this, name);
47734759

47744760
@override
47754761
InterfaceTypeImpl instantiate({
@@ -6447,9 +6433,6 @@ class LibraryFragmentImpl extends FragmentImpl
64476433
return _scope ??= LibraryFragmentScope(this);
64486434
}
64496435

6450-
@override
6451-
AnalysisSession get session => library.session;
6452-
64536436
@override
64546437
List<SetterFragmentImpl> get setters => _setters;
64556438

@@ -7904,9 +7887,6 @@ class MultiplyDefinedElementImpl extends ElementImpl
79047887
@override
79057888
Element get nonSynthetic => this;
79067889

7907-
@override
7908-
AnalysisSession get session => libraryFragment.session;
7909-
79107890
@override
79117891
T? accept<T>(ElementVisitor2<T> visitor) {
79127892
return visitor.visitMultiplyDefinedElement(this);

0 commit comments

Comments
 (0)