mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:29:47 +00:00
analyzer: Simplify finding-extensions for DartContextFixImpl
I'm not sure the history of this Extensions class, but in its current form, it is unnecessary complexity. It is a class with a single, final field, and a single method. The whole thing can be inlined into the _single_ caller. Change-Id: I3ae92383241d6f79be2d96eb52de5a7ecf661fd4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/347063 Commit-Queue: Samuel Rawlins <srawlins@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Auto-Submit: Samuel Rawlins <srawlins@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
1fc755eb54
commit
74a4d59bba
|
@ -3,11 +3,12 @@
|
|||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analysis_server/plugin/edit/fix/fix_dart.dart';
|
||||
import 'package:analysis_server/src/services/correction/fix/dart/extensions.dart';
|
||||
import 'package:analyzer/dart/analysis/results.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/error/error.dart';
|
||||
import 'package:analyzer/instrumentation/service.dart';
|
||||
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
|
||||
import 'package:analyzer/src/dart/analysis/file_state_filter.dart';
|
||||
import 'package:analyzer/src/services/top_level_declarations.dart';
|
||||
import 'package:analyzer_plugin/utilities/change_builder/change_workspace.dart';
|
||||
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
|
||||
|
@ -65,8 +66,28 @@ class DartFixContextImpl implements DartFixContext {
|
|||
}
|
||||
|
||||
@override
|
||||
Stream<LibraryElement> librariesWithExtensions(String memberName) {
|
||||
return Extensions(resolveResult).libraries(memberName);
|
||||
Stream<LibraryElement> librariesWithExtensions(String memberName) async* {
|
||||
var analysisContext = resolveResult.session.analysisContext;
|
||||
var analysisDriver = (analysisContext as DriverBasedAnalysisContext).driver;
|
||||
await analysisDriver.discoverAvailableFiles();
|
||||
|
||||
var fsState = analysisDriver.fsState;
|
||||
var filter = FileStateFilter(
|
||||
fsState.getFileForPath(resolveResult.path),
|
||||
);
|
||||
|
||||
for (var file in fsState.knownFiles.toList()) {
|
||||
if (!filter.shouldInclude(file)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var elementResult = await analysisDriver.getLibraryByUri(file.uriStr);
|
||||
if (elementResult is! LibraryElementResult) {
|
||||
continue;
|
||||
}
|
||||
|
||||
yield elementResult.element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analyzer/dart/analysis/results.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
|
||||
import 'package:analyzer/src/dart/analysis/file_state_filter.dart';
|
||||
|
||||
class Extensions {
|
||||
final ResolvedUnitResult resolvedUnit;
|
||||
|
||||
Extensions(this.resolvedUnit);
|
||||
|
||||
DriverBasedAnalysisContext get _analysisContext {
|
||||
var analysisContext = resolvedUnit.session.analysisContext;
|
||||
return analysisContext as DriverBasedAnalysisContext;
|
||||
}
|
||||
|
||||
/// Return libraries that may be imported into the [resolvedUnit] file,
|
||||
/// and might have extensions that define a non-static public member with
|
||||
/// the [memberName].
|
||||
Stream<LibraryElement> libraries(String memberName) async* {
|
||||
var analysisDriver = _analysisContext.driver;
|
||||
await analysisDriver.discoverAvailableFiles();
|
||||
|
||||
var fsState = analysisDriver.fsState;
|
||||
var filter = FileStateFilter(
|
||||
fsState.getFileForPath(resolvedUnit.path),
|
||||
);
|
||||
|
||||
for (var file in fsState.knownFiles.toList()) {
|
||||
if (!filter.shouldInclude(file)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var elementResult = await analysisDriver.getLibraryByUri(file.uriStr);
|
||||
if (elementResult is! LibraryElementResult) {
|
||||
continue;
|
||||
}
|
||||
|
||||
yield elementResult.element;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue