Skip to content

Commit 4f6b07c

Browse files
scheglovCommit Queue
authored andcommitted
CQ. Remove available declarations.
Bug: #55281 Change-Id: Ie8d2a7f3d5ea9408320312d49eb67561ca463289 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/393480 Reviewed-by: Phil Quitslund <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent c054056 commit 4f6b07c

File tree

13 files changed

+465
-1343
lines changed

13 files changed

+465
-1343
lines changed

pkg/analysis_server/lib/src/analysis_server.dart

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import 'package:analysis_server/lsp_protocol/protocol.dart' as lsp;
1010
import 'package:analysis_server/src/analytics/analytics_manager.dart';
1111
import 'package:analysis_server/src/collections.dart';
1212
import 'package:analysis_server/src/context_manager.dart';
13-
import 'package:analysis_server/src/domains/completion/available_suggestions.dart';
1413
import 'package:analysis_server/src/legacy_analysis_server.dart';
1514
import 'package:analysis_server/src/lsp/client_capabilities.dart' as lsp;
1615
import 'package:analysis_server/src/lsp/client_configuration.dart' as lsp;
@@ -65,6 +64,7 @@ import 'package:analyzer/source/line_info.dart';
6564
import 'package:analyzer/src/dart/analysis/byte_store.dart';
6665
import 'package:analyzer/src/dart/analysis/driver.dart' as analysis;
6766
import 'package:analyzer/src/dart/analysis/driver.dart';
67+
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
6868
import 'package:analyzer/src/dart/analysis/file_byte_store.dart'
6969
show EvictingFileByteStore;
7070
import 'package:analyzer/src/dart/analysis/file_content_cache.dart';
@@ -78,7 +78,6 @@ import 'package:analyzer/src/dart/ast/element_locator.dart';
7878
import 'package:analyzer/src/dart/ast/utilities.dart';
7979
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
8080
import 'package:analyzer/src/generated/sdk.dart';
81-
import 'package:analyzer/src/services/available_declarations.dart';
8281
import 'package:analyzer/src/util/file_paths.dart' as file_paths;
8382
import 'package:analyzer/src/util/performance/operation_performance.dart';
8483
import 'package:analyzer/src/utilities/extensions/analysis_session.dart';
@@ -165,8 +164,6 @@ abstract class AnalysisServer {
165164

166165
late StreamSubscription<Object?>? analysisDriverSchedulerEventsSubscription;
167166

168-
DeclarationsTracker? declarationsTracker;
169-
170167
/// The DiagnosticServer for this AnalysisServer. If available, it can be used
171168
/// to start an http diagnostics server or return the port for an existing
172169
/// server.
@@ -341,17 +338,6 @@ abstract class AnalysisServer {
341338
analysisPerformanceLogger,
342339
driverWatcher: pluginWatcher);
343340

344-
if (options.featureSet.completion) {
345-
// TODO(brianwilkerson): The DeclarationsTracker is used to find Dartdoc
346-
// templates for substitution in doc comments, and probably shouldn't be
347-
// gated on completion support being enabled, especially given that it
348-
// will no longer used for available suggestions.
349-
var tracker = declarationsTracker =
350-
DeclarationsTracker(byteStore, resourceProvider);
351-
analysisDriverScheduler.outOfBandWorker =
352-
CompletionLibrariesWorker(tracker);
353-
}
354-
355341
contextManager = ContextManagerImpl(
356342
resourceProvider,
357343
sdkManager,
@@ -474,21 +460,12 @@ abstract class AnalysisServer {
474460
UserPromptSender? get userPromptSender =>
475461
supportsShowMessageRequest ? showUserPrompt : null;
476462

477-
void addContextsToDeclarationsTracker() {
478-
declarationsTracker?.discardContexts();
479-
for (var driver in driverMap.values) {
480-
declarationsTracker?.addContext(driver.analysisContext!);
481-
}
482-
}
483-
484463
void afterContextsCreated() {
485464
_timingByteStore?.newTimings('after contexts created');
486465
isFirstAnalysisSinceContextsBuilt = true;
487-
addContextsToDeclarationsTracker();
488466
}
489467

490468
void afterContextsDestroyed() {
491-
declarationsTracker?.discardContexts();
492469
}
493470

494471
/// Broadcast a request built from the given [params] to all of the plugins
@@ -621,10 +598,9 @@ abstract class AnalysisServer {
621598
DartdocDirectiveInfo getDartdocDirectiveInfoForSession(
622599
AnalysisSession session,
623600
) {
624-
return declarationsTracker
625-
?.getContext(session.analysisContext)
626-
?.dartdocDirectiveInfo ??
627-
DartdocDirectiveInfo();
601+
var analysisContext = session.analysisContext;
602+
analysisContext as DriverBasedAnalysisContext;
603+
return analysisContext.driver.dartdocDirectiveInfo;
628604
}
629605

630606
/// Gets the current version number of a document (if known).
@@ -856,7 +832,6 @@ abstract class AnalysisServer {
856832
/// Notify the declarations tracker that the file with the given [path] was
857833
/// changed - added, updated, or removed. Schedule processing of the file.
858834
void notifyDeclarationsTracker(String path) {
859-
declarationsTracker?.changeFile(path);
860835
analysisDriverScheduler.notify();
861836
}
862837

pkg/analysis_server/lib/src/domains/completion/available_suggestions.dart

Lines changed: 0 additions & 28 deletions
This file was deleted.

pkg/analysis_server/lib/src/status/diagnostics.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import 'package:analyzer/src/context/source.dart';
2929
import 'package:analyzer/src/dart/analysis/analysis_options_map.dart';
3030
import 'package:analyzer/src/dart/analysis/driver.dart';
3131
import 'package:analyzer/src/dart/sdk/sdk.dart';
32-
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
3332
import 'package:analyzer/src/generated/source.dart';
3433
import 'package:analyzer/src/source/package_map_resolver.dart';
3534
import 'package:analyzer/src/util/file_paths.dart' as file_paths;
@@ -938,10 +937,7 @@ class ContextsPage extends DiagnosticPageWithNav {
938937
}
939938

940939
h3('Dartdoc template info');
941-
var info = server.declarationsTracker
942-
?.getContext(driver.analysisContext!)
943-
?.dartdocDirectiveInfo ??
944-
DartdocDirectiveInfo();
940+
var info = driver.dartdocDirectiveInfo;
945941
buf.write('<p class="scroll-table">');
946942
writeMap(info.templateMap);
947943
buf.write('</p>');

pkg/analysis_server/test/domain_analysis_test.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1824,6 +1824,9 @@ AnalysisErrors
18241824
AnalysisErrors
18251825
file: /home/test/AndroidManifest.xml
18261826
errors: notEmpty
1827+
AnalysisErrors
1828+
file: /home/test/lib/a.dart
1829+
errors: empty
18271830
''');
18281831
}
18291832

pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import 'package:analysis_server_plugin/src/correction/fix_in_file_processor.dart
1212
import 'package:analysis_server_plugin/src/correction/fix_processor.dart';
1313
import 'package:analyzer/error/error.dart';
1414
import 'package:analyzer/file_system/file_system.dart';
15-
import 'package:analyzer/src/dart/analysis/byte_store.dart';
16-
import 'package:analyzer/src/services/available_declarations.dart';
1715
import 'package:analyzer_plugin/protocol/protocol_common.dart'
1816
hide AnalysisError;
1917
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
@@ -103,9 +101,7 @@ abstract class BulkFixProcessorTest extends AbstractSingleUnitTest {
103101
/// Computes fixes for the pubspecs in the given contexts.
104102
Future<void> assertFixPubspec(String original, String expected,
105103
{File? file}) async {
106-
var tracker = DeclarationsTracker(MemoryByteStore(), resourceProvider);
107104
var analysisContext = contextFor(file ?? testFile);
108-
tracker.addContext(analysisContext);
109105
var processor =
110106
BulkFixProcessor(TestInstrumentationService(), await workspace);
111107
var fixes = (await processor.fixPubspec([analysisContext])).edits;
@@ -117,9 +113,7 @@ abstract class BulkFixProcessorTest extends AbstractSingleUnitTest {
117113
}
118114

119115
Future<void> assertFormat(String expectedCode) async {
120-
var tracker = DeclarationsTracker(MemoryByteStore(), resourceProvider);
121116
var analysisContext = contextFor(testFile);
122-
tracker.addContext(analysisContext);
123117
processor = BulkFixProcessor(TestInstrumentationService(), await workspace);
124118
await processor.formatCode([analysisContext]);
125119
var change = processor.builder.sourceChange;
@@ -148,9 +142,7 @@ abstract class BulkFixProcessorTest extends AbstractSingleUnitTest {
148142
}
149143

150144
Future<void> assertOrganize(String expectedCode) async {
151-
var tracker = DeclarationsTracker(MemoryByteStore(), resourceProvider);
152145
var analysisContext = contextFor(testFile);
153-
tracker.addContext(analysisContext);
154146
processor = BulkFixProcessor(TestInstrumentationService(), await workspace);
155147
await processor.organizeDirectives([analysisContext]);
156148
var change = processor.builder.sourceChange;
@@ -162,9 +154,7 @@ abstract class BulkFixProcessorTest extends AbstractSingleUnitTest {
162154

163155
/// Computes fixes for the specified [testUnit].
164156
Future<BulkFixProcessor> computeFixes({bool isParse = false}) async {
165-
var tracker = DeclarationsTracker(MemoryByteStore(), resourceProvider);
166157
var analysisContext = contextFor(testFile);
167-
tracker.addContext(analysisContext);
168158
var processor =
169159
BulkFixProcessor(TestInstrumentationService(), await workspace);
170160
if (isParse) {
@@ -178,9 +168,7 @@ abstract class BulkFixProcessorTest extends AbstractSingleUnitTest {
178168
/// Computes whether there are bulk fixes for the context containing
179169
/// [testFile].
180170
Future<bool> computeHasFixes() async {
181-
var tracker = DeclarationsTracker(MemoryByteStore(), resourceProvider);
182171
var analysisContext = contextFor(testFile);
183-
tracker.addContext(analysisContext);
184172
processor = BulkFixProcessor(TestInstrumentationService(), await workspace);
185173
return processor.hasFixes([analysisContext]);
186174
}

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import 'package:analyzer/src/dart/analysis/testing_data.dart';
3737
import 'package:analyzer/src/dart/analysis/unlinked_unit_store.dart';
3838
import 'package:analyzer/src/dart/element/element.dart';
3939
import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
40+
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
4041
import 'package:analyzer/src/diagnostic/diagnostic.dart';
4142
import 'package:analyzer/src/error/codes.dart';
4243
import 'package:analyzer/src/exception/exception.dart';
@@ -98,7 +99,7 @@ import 'package:meta/meta.dart';
9899
// TODO(scheglov): Clean up the list of implicitly analyzed files.
99100
class AnalysisDriver {
100101
/// The version of data format, should be incremented on every format change.
101-
static const int DATA_VERSION = 413;
102+
static const int DATA_VERSION = 414;
102103

103104
/// The number of exception contexts allowed to write. Once this field is
104105
/// zero, we stop writing any new exception contexts in this process.
@@ -348,6 +349,11 @@ class AnalysisDriver {
348349
return libraryContext.elementFactory.analysisSession;
349350
}
350351

352+
/// The dartdoc directives in this context.
353+
DartdocDirectiveInfo get dartdocDirectiveInfo {
354+
return _fsState.dartdocDirectiveInfo;
355+
}
356+
351357
/// The set of legacy plugin names enabled in analysis options in this driver.
352358
Set<String> get enabledLegacyPluginNames {
353359
// We currently only support legacy plugins enabled at the very root of a
@@ -2268,12 +2274,6 @@ class AnalysisDriverScheduler {
22682274

22692275
bool _started = false;
22702276

2271-
/// The optional worker that is invoked when its work priority is higher
2272-
/// than work priorities in drivers.
2273-
///
2274-
/// Don't use outside of Analyzer and Analysis Server.
2275-
SchedulerWorker? outOfBandWorker;
2276-
22772277
/// The operations performance accumulated so far.
22782278
///
22792279
/// It is expected that the consumer of this performance operation will
@@ -2415,17 +2415,6 @@ class AnalysisDriverScheduler {
24152415
}
24162416
}
24172417

2418-
if (outOfBandWorker != null) {
2419-
var workerPriority = outOfBandWorker!.workPriority;
2420-
if (workerPriority != AnalysisDriverPriority.nothing) {
2421-
if (workerPriority.index > bestPriority.index) {
2422-
await outOfBandWorker!.performWork();
2423-
_hasWork.notify();
2424-
continue;
2425-
}
2426-
}
2427-
}
2428-
24292418
// Transition to idle if no files to analyze.
24302419
if (!_hasFilesToAnalyze) {
24312420
_statusSupport.transitionToIdle();

pkg/analyzer/lib/src/dart/analysis/file_state.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import 'package:analyzer/src/dart/analysis/unlinked_unit_store.dart';
3434
import 'package:analyzer/src/dart/ast/ast.dart';
3535
import 'package:analyzer/src/dart/scanner/reader.dart';
3636
import 'package:analyzer/src/dart/scanner/scanner.dart';
37+
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
3738
import 'package:analyzer/src/exception/exception.dart';
3839
import 'package:analyzer/src/generated/parser.dart';
3940
import 'package:analyzer/src/generated/source.dart' show SourceFactory;
@@ -746,6 +747,13 @@ class FileState {
746747

747748
_prefetchDirectReferences();
748749

750+
for (var template in unlinked2.dartdocTemplates) {
751+
_fsState.dartdocDirectiveInfo.addTemplate(
752+
template.name,
753+
template.value,
754+
);
755+
}
756+
749757
// Prepare API signature.
750758
var newApiSignature = _unlinked2!.apiSignature;
751759
bool apiSignatureChanged = _apiSignature != null &&
@@ -1129,6 +1137,15 @@ class FileState {
11291137
}
11301138
}
11311139

1140+
var dartdocDirectiveInfo = DartdocDirectiveInfo.extractFromUnit(unit);
1141+
var dartdocTemplates =
1142+
dartdocDirectiveInfo.templateMap.entries.map((entry) {
1143+
return UnlinkedDartdocTemplate(
1144+
name: entry.key,
1145+
value: entry.value,
1146+
);
1147+
}).toList();
1148+
11321149
var apiSignature = performance.run('apiSignature', (performance) {
11331150
var signatureBuilder = ApiSignature();
11341151
signatureBuilder.addBytes(computeUnlinkedApiSignature(unit));
@@ -1150,6 +1167,7 @@ class FileState {
11501167
partOfNameDirective: partOfNameDirective,
11511168
partOfUriDirective: partOfUriDirective,
11521169
topLevelDeclarations: topLevelDeclarations,
1170+
dartdocTemplates: dartdocTemplates,
11531171
);
11541172
}
11551173

@@ -1318,6 +1336,9 @@ class FileSystemState {
13181336
final FileContentStrategy fileContentStrategy;
13191337
final UnlinkedUnitStore unlinkedUnitStore;
13201338

1339+
/// The dartdoc directives in this context.
1340+
final DartdocDirectiveInfo dartdocDirectiveInfo = DartdocDirectiveInfo();
1341+
13211342
/// A function that fetches the given list of files. This function can be used
13221343
/// to batch file reads in systems where file fetches are expensive.
13231344
final void Function(List<String> paths)? prefetchFiles;

pkg/analyzer/lib/src/dart/analysis/unlinked_data.dart

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,30 @@ abstract class UnlinkedConfigurableUriDirective {
130130
});
131131
}
132132

133+
class UnlinkedDartdocTemplate {
134+
final String name;
135+
final String value;
136+
137+
UnlinkedDartdocTemplate({
138+
required this.name,
139+
required this.value,
140+
});
141+
142+
factory UnlinkedDartdocTemplate.read(
143+
SummaryDataReader reader,
144+
) {
145+
return UnlinkedDartdocTemplate(
146+
name: reader.readStringUtf8(),
147+
value: reader.readStringUtf8(),
148+
);
149+
}
150+
151+
void write(BufferedSink sink) {
152+
sink.writeStringUtf8(name);
153+
sink.writeStringUtf8(value);
154+
}
155+
}
156+
133157
class UnlinkedLibraryDirective {
134158
/// `@docImport` directives in the doc comment.
135159
final List<UnlinkedLibraryImportDirective> docImports;
@@ -531,6 +555,9 @@ class UnlinkedUnit {
531555
/// Top-level declarations of the unit.
532556
final Set<String> topLevelDeclarations;
533557

558+
/// The Dartdoc templates of the unit.
559+
final List<UnlinkedDartdocTemplate> dartdocTemplates;
560+
534561
UnlinkedUnit({
535562
required this.apiSignature,
536563
required this.exports,
@@ -545,6 +572,7 @@ class UnlinkedUnit {
545572
required this.partOfNameDirective,
546573
required this.partOfUriDirective,
547574
required this.topLevelDeclarations,
575+
required this.dartdocTemplates,
548576
});
549577

550578
factory UnlinkedUnit.read(SummaryDataReader reader) {
@@ -576,6 +604,9 @@ class UnlinkedUnit {
576604
UnlinkedPartOfUriDirective.read,
577605
),
578606
topLevelDeclarations: reader.readStringUtf8Set(),
607+
dartdocTemplates: reader.readTypedList(
608+
() => UnlinkedDartdocTemplate.read(reader),
609+
),
579610
);
580611
}
581612

@@ -610,5 +641,8 @@ class UnlinkedUnit {
610641
(x) => x.write(sink),
611642
);
612643
sink.writeStringUtf8Iterable(topLevelDeclarations);
644+
sink.writeList(dartdocTemplates, (x) {
645+
x.write(sink);
646+
});
613647
}
614648
}

0 commit comments

Comments
 (0)