Skip to content

Commit 6aff59a

Browse files
scheglovCommit Queue
authored andcommitted
Fine. Add tracking for LibraryElementImpl.entryPoint
Change-Id: I5ef4ede6d936db14d5ada758bc94bd3109b70167 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449501 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent b1944f9 commit 6aff59a

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6054,8 +6054,10 @@ class LibraryElementImpl extends ElementImpl
60546054
Null get enclosingElement2 => enclosingElement;
60556055

60566056
@override
6057+
@trackedDirectly
60576058
TopLevelFunctionElementImpl? get entryPoint {
60586059
_ensureReadResolution();
6060+
globalResultRequirements?.record_library_entryPoint(element: this);
60596061
return _entryPoint;
60606062
}
60616063

pkg/analyzer/lib/src/fine/requirements.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1807,6 +1807,22 @@ class RequirementsManifest {
18071807
);
18081808
}
18091809

1810+
void record_library_entryPoint({required LibraryElementImpl element}) {
1811+
if (_recordingLockLevel != 0) {
1812+
return;
1813+
}
1814+
1815+
var manifest = element.manifest;
1816+
if (manifest == null) {
1817+
return;
1818+
}
1819+
1820+
var requirements = _getLibraryRequirements(element);
1821+
var mainName = TopLevelFunctionElement.MAIN_FUNCTION_NAME.asLookupName;
1822+
var id = manifest.getExportedId(mainName);
1823+
requirements.exportedTopLevels[mainName] = id;
1824+
}
1825+
18101826
void record_library_featureSet({required LibraryElementImpl element}) {
18111827
if (_recordingLockLevel != 0) {
18121828
return;

pkg/analyzer/test/src/dart/analysis/driver_test.dart

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29477,6 +29477,82 @@ typedef C = int;
2947729477
);
2947829478
}
2947929479

29480+
test_dependency_libraryElement_entryPoint() async {
29481+
configuration
29482+
..withGetErrorsEvents = false
29483+
..withStreamResolvedUnitResults = false;
29484+
29485+
_ManualRequirements.install((state) {
29486+
var library = state.singleUnit.importedLibraries.first;
29487+
library.entryPoint;
29488+
});
29489+
29490+
await _runChangeScenarioTA(
29491+
initialA: r'''
29492+
void main() {}
29493+
''',
29494+
testCode: r'''
29495+
import 'a.dart';
29496+
''',
29497+
operation: _FineOperationTestFileGetErrors(),
29498+
expectedInitialEvents: r'''
29499+
[status] working
29500+
[operation] linkLibraryCycle SDK
29501+
[operation] linkLibraryCycle
29502+
package:test/a.dart
29503+
declaredFunctions
29504+
main: #M0
29505+
requirements
29506+
[operation] linkLibraryCycle
29507+
package:test/test.dart
29508+
requirements
29509+
[operation] analyzeFile
29510+
file: /home/test/lib/test.dart
29511+
library: /home/test/lib/test.dart
29512+
[operation] analyzedLibrary
29513+
file: /home/test/lib/test.dart
29514+
requirements
29515+
libraries
29516+
package:test/a.dart
29517+
exportedTopLevels
29518+
main: #M0
29519+
[status] idle
29520+
''',
29521+
updatedA: r'''
29522+
@deprecated
29523+
void main() {}
29524+
''',
29525+
expectedUpdatedEvents: r'''
29526+
[status] working
29527+
[operation] linkLibraryCycle
29528+
package:test/a.dart
29529+
declaredFunctions
29530+
main: #M1
29531+
requirements
29532+
[operation] reuseLinkedBundle
29533+
package:test/test.dart
29534+
[operation] checkLibraryDiagnosticsRequirements
29535+
library: /home/test/lib/test.dart
29536+
topLevelIdMismatch
29537+
libraryUri: package:test/a.dart
29538+
name: main
29539+
expectedId: #M0
29540+
actualId: #M1
29541+
[operation] analyzeFile
29542+
file: /home/test/lib/test.dart
29543+
library: /home/test/lib/test.dart
29544+
[operation] analyzedLibrary
29545+
file: /home/test/lib/test.dart
29546+
requirements
29547+
libraries
29548+
package:test/a.dart
29549+
exportedTopLevels
29550+
main: #M1
29551+
[status] idle
29552+
''',
29553+
);
29554+
}
29555+
2948029556
test_dependency_libraryElement_featureSet() async {
2948129557
configuration
2948229558
..withGetErrorsEvents = false

0 commit comments

Comments
 (0)