mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 22:19:49 +00:00
[analysis_server] Rename some LSP spec classes to match upcoming JSON models
Change-Id: Icbb071762ca86fd0ba75e4653e80ae480ce3e1a9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/244406 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
3c231e4f57
commit
a93a648e7f
File diff suppressed because it is too large
Load diff
|
@ -137,12 +137,12 @@ class ServerCapabilitiesComputer {
|
|||
Set<Registration> currentRegistrations = {};
|
||||
var _lastRegistrationId = 0;
|
||||
|
||||
final dartFiles = DocumentFilter(language: 'dart', scheme: 'file');
|
||||
final pubspecFile = DocumentFilter(
|
||||
final dartFiles = TextDocumentFilter(language: 'dart', scheme: 'file');
|
||||
final pubspecFile = TextDocumentFilter(
|
||||
language: 'yaml', scheme: 'file', pattern: '**/pubspec.yaml');
|
||||
final analysisOptionsFile = DocumentFilter(
|
||||
final analysisOptionsFile = TextDocumentFilter(
|
||||
language: 'yaml', scheme: 'file', pattern: '**/analysis_options.yaml');
|
||||
final fixDataFile = DocumentFilter(
|
||||
final fixDataFile = TextDocumentFilter(
|
||||
language: 'yaml', scheme: 'file', pattern: '**/lib/fix_data.yaml');
|
||||
|
||||
ServerCapabilitiesComputer(this._server);
|
||||
|
@ -303,7 +303,7 @@ class ServerCapabilitiesComputer {
|
|||
// All published plugins use something like `*.extension` as
|
||||
// interestingFiles. Prefix a `**/` so that the glob matches nested
|
||||
// folders as well.
|
||||
.map((glob) => DocumentFilter(scheme: 'file', pattern: '**/$glob'));
|
||||
.map((glob) => TextDocumentFilter(scheme: 'file', pattern: '**/$glob'));
|
||||
final pluginTypesExcludingDart =
|
||||
pluginTypes.where((filter) => filter.pattern != '**/*.dart');
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ class AnalyzerCustomStatusTest extends AnalyzerStatusTest {
|
|||
abstract class AnalyzerStatusTest extends AbstractLspAnalysisServerTest {
|
||||
bool get progressSupport;
|
||||
|
||||
ClientCapabilitiesWindow get _windowCapabilities => progressSupport
|
||||
WindowClientCapabilities get _windowCapabilities => progressSupport
|
||||
? withWorkDoneProgressSupport(emptyWindowClientCapabilities)
|
||||
: emptyWindowClientCapabilities;
|
||||
|
||||
|
|
|
@ -491,8 +491,9 @@ class InitializationTest extends AbstractLspAnalysisServerTest {
|
|||
.registrations;
|
||||
|
||||
final documentFilterSql =
|
||||
DocumentFilter(scheme: 'file', pattern: '**/*.sql');
|
||||
final documentFilterDart = DocumentFilter(language: 'dart', scheme: 'file');
|
||||
TextDocumentFilter(scheme: 'file', pattern: '**/*.sql');
|
||||
final documentFilterDart =
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file');
|
||||
|
||||
expect(
|
||||
registrations,
|
||||
|
|
|
@ -719,7 +719,7 @@ class RenameTest extends AbstractLspAnalysisServerTest {
|
|||
String? filePath,
|
||||
String? expectedFilePath,
|
||||
bool sendRenameVersion = true,
|
||||
ClientCapabilitiesWorkspace? workspaceCapabilities,
|
||||
WorkspaceClientCapabilities? workspaceCapabilities,
|
||||
Map<String, String>? contents,
|
||||
}) async {
|
||||
contents ??= {};
|
||||
|
|
|
@ -227,9 +227,9 @@ abstract class AbstractLspAnalysisServerTest
|
|||
mixin ClientCapabilitiesHelperMixin {
|
||||
final emptyTextDocumentClientCapabilities = TextDocumentClientCapabilities();
|
||||
|
||||
final emptyWorkspaceClientCapabilities = ClientCapabilitiesWorkspace();
|
||||
final emptyWorkspaceClientCapabilities = WorkspaceClientCapabilities();
|
||||
|
||||
final emptyWindowClientCapabilities = ClientCapabilitiesWindow();
|
||||
final emptyWindowClientCapabilities = WindowClientCapabilities();
|
||||
|
||||
TextDocumentClientCapabilities extendTextDocumentCapabilities(
|
||||
TextDocumentClientCapabilities source,
|
||||
|
@ -240,22 +240,22 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
return TextDocumentClientCapabilities.fromJson(json);
|
||||
}
|
||||
|
||||
ClientCapabilitiesWindow extendWindowCapabilities(
|
||||
ClientCapabilitiesWindow source,
|
||||
WindowClientCapabilities extendWindowCapabilities(
|
||||
WindowClientCapabilities source,
|
||||
Map<String, dynamic> windowCapabilities,
|
||||
) {
|
||||
final json = source.toJson();
|
||||
mergeJson(windowCapabilities, json);
|
||||
return ClientCapabilitiesWindow.fromJson(json);
|
||||
return WindowClientCapabilities.fromJson(json);
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace extendWorkspaceCapabilities(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities extendWorkspaceCapabilities(
|
||||
WorkspaceClientCapabilities source,
|
||||
Map<String, dynamic> workspaceCapabilities,
|
||||
) {
|
||||
final json = source.toJson();
|
||||
mergeJson(workspaceCapabilities, json);
|
||||
return ClientCapabilitiesWorkspace.fromJson(json);
|
||||
return WorkspaceClientCapabilities.fromJson(json);
|
||||
}
|
||||
|
||||
void mergeJson(Map<String, dynamic> source, Map<String, dynamic> dest) {
|
||||
|
@ -306,8 +306,8 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace withAllSupportedWorkspaceDynamicRegistrations(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities withAllSupportedWorkspaceDynamicRegistrations(
|
||||
WorkspaceClientCapabilities source,
|
||||
) {
|
||||
// This list (when combined with the textDocument list) should match all of
|
||||
// the fields listed in `ClientDynamicRegistrations.supported`.
|
||||
|
@ -316,8 +316,8 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace withApplyEditSupport(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities withApplyEditSupport(
|
||||
WorkspaceClientCapabilities source,
|
||||
) {
|
||||
return extendWorkspaceCapabilities(source, {'applyEdit': true});
|
||||
}
|
||||
|
@ -407,8 +407,8 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace withConfigurationSupport(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities withConfigurationSupport(
|
||||
WorkspaceClientCapabilities source,
|
||||
) {
|
||||
return extendWorkspaceCapabilities(source, {'configuration': true});
|
||||
}
|
||||
|
@ -434,16 +434,16 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace withDidChangeConfigurationDynamicRegistration(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities withDidChangeConfigurationDynamicRegistration(
|
||||
WorkspaceClientCapabilities source,
|
||||
) {
|
||||
return extendWorkspaceCapabilities(source, {
|
||||
'didChangeConfiguration': {'dynamicRegistration': true}
|
||||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace withDocumentChangesSupport(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities withDocumentChangesSupport(
|
||||
WorkspaceClientCapabilities source,
|
||||
) {
|
||||
return extendWorkspaceCapabilities(source, {
|
||||
'workspaceEdit': {'documentChanges': true}
|
||||
|
@ -471,8 +471,8 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace withFileOperationDynamicRegistration(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities withFileOperationDynamicRegistration(
|
||||
WorkspaceClientCapabilities source,
|
||||
) {
|
||||
return extendWorkspaceCapabilities(source, {
|
||||
'fileOperations': {'dynamicRegistration': true}
|
||||
|
@ -514,8 +514,8 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWorkspace withResourceOperationKinds(
|
||||
ClientCapabilitiesWorkspace source,
|
||||
WorkspaceClientCapabilities withResourceOperationKinds(
|
||||
WorkspaceClientCapabilities source,
|
||||
List<ResourceOperationKind> kinds,
|
||||
) {
|
||||
return extendWorkspaceCapabilities(source, {
|
||||
|
@ -548,8 +548,8 @@ mixin ClientCapabilitiesHelperMixin {
|
|||
});
|
||||
}
|
||||
|
||||
ClientCapabilitiesWindow withWorkDoneProgressSupport(
|
||||
ClientCapabilitiesWindow source) {
|
||||
WindowClientCapabilities withWorkDoneProgressSupport(
|
||||
WindowClientCapabilities source) {
|
||||
return extendWindowCapabilities(source, {'workDoneProgress': true});
|
||||
}
|
||||
}
|
||||
|
@ -1410,8 +1410,8 @@ mixin LspAnalysisServerTestMixin implements ClientCapabilitiesHelperMixin {
|
|||
Uri? rootUri,
|
||||
List<Uri>? workspaceFolders,
|
||||
TextDocumentClientCapabilities? textDocumentCapabilities,
|
||||
ClientCapabilitiesWorkspace? workspaceCapabilities,
|
||||
ClientCapabilitiesWindow? windowCapabilities,
|
||||
WorkspaceClientCapabilities? workspaceCapabilities,
|
||||
WindowClientCapabilities? windowCapabilities,
|
||||
Map<String, Object?>? experimentalCapabilities,
|
||||
Map<String, Object?>? initializationOptions,
|
||||
bool throwOnFailure = true,
|
||||
|
|
|
@ -28,10 +28,12 @@ void main() {
|
|||
});
|
||||
|
||||
test('with aliased list fields can be checked for equality', () {
|
||||
final a = TextDocumentRegistrationOptions(
|
||||
documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
|
||||
final b = TextDocumentRegistrationOptions(
|
||||
documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
|
||||
final a = TextDocumentRegistrationOptions(documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
final b = TextDocumentRegistrationOptions(documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
|
||||
expect(a, equals(b));
|
||||
expect(a.hashCode, equals(b.hashCode));
|
||||
|
@ -84,11 +86,14 @@ void main() {
|
|||
});
|
||||
|
||||
test('consider subclasses when checking for equality', () {
|
||||
final a = TextDocumentRegistrationOptions(
|
||||
documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
|
||||
final a = TextDocumentRegistrationOptions(documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
final b = TextDocumentSaveRegistrationOptions(
|
||||
includeText: true,
|
||||
documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
|
||||
documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
|
||||
expect(a, isNot(equals(b)));
|
||||
expect(b, isNot(equals(a)));
|
||||
|
|
|
@ -65,6 +65,41 @@ void recordTypes(List<AstNode> types) {
|
|||
.forEach((namespace) => _namespaces[namespace.name] = namespace);
|
||||
}
|
||||
|
||||
/// Renames types that may have been generated with bad names.
|
||||
Iterable<AstNode> renameTypes(List<AstNode> types) sync* {
|
||||
const renames = {
|
||||
// TODO(dantup): These entries can be removed after the
|
||||
// the migration to JSON meta_model.
|
||||
'ClientCapabilitiesWindow': 'WindowClientCapabilities',
|
||||
'ClientCapabilitiesWorkspace': 'WorkspaceClientCapabilities',
|
||||
'DocumentFilter': 'TextDocumentFilter',
|
||||
};
|
||||
|
||||
for (final type in types) {
|
||||
if (type is Interface) {
|
||||
final newName = renames[type.name];
|
||||
if (newName != null) {
|
||||
// Replace with renamed interface.
|
||||
yield Interface(
|
||||
type.commentNode,
|
||||
Token.identifier(newName),
|
||||
type.typeArgs,
|
||||
type.baseTypes,
|
||||
type.members,
|
||||
);
|
||||
// Plus a TypeAlias for the old name.
|
||||
yield TypeAlias(
|
||||
type.commentNode,
|
||||
Token.identifier(type.name),
|
||||
Type.identifier(newName),
|
||||
);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
yield type;
|
||||
}
|
||||
}
|
||||
|
||||
TypeBase resolveTypeAlias(TypeBase type, {bool resolveEnumClasses = false}) {
|
||||
if (type is Type) {
|
||||
// The LSP spec contains type aliases for `integer` and `uinteger` that map
|
||||
|
@ -156,6 +191,7 @@ bool _isSimpleType(TypeBase type) {
|
|||
}
|
||||
|
||||
bool _isSpecType(TypeBase type) {
|
||||
type = resolveTypeAlias(type);
|
||||
return type is Type &&
|
||||
(_interfaces.containsKey(type.name) ||
|
||||
(_namespaces.containsKey(type.name)));
|
||||
|
|
|
@ -29,8 +29,13 @@ Future<void> main(List<String> arguments) async {
|
|||
Directory(outFolder).createSync();
|
||||
|
||||
// Collect definitions for types in the spec and our custom extensions.
|
||||
final specTypes = await getSpecClasses(args);
|
||||
final customTypes = getCustomClasses();
|
||||
var specTypes = await getSpecClasses(args);
|
||||
var customTypes = getCustomClasses();
|
||||
|
||||
// Handle some renames of types where we generate names that might not be
|
||||
// ideal.
|
||||
specTypes = renameTypes(specTypes).toList();
|
||||
customTypes = renameTypes(customTypes).toList();
|
||||
|
||||
// Record both sets of types in dictionaries for faster lookups, but also so
|
||||
// they can reference each other and we can find the definitions during
|
||||
|
|
Loading…
Reference in a new issue