[analysis_server] Fix LSP class name generation for nested inline types + minor renames
Change-Id: Ia8321eedeb783ffe5e91a508e258a87aa9efcf31 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/245372 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
committed by
Commit Bot
parent
4f3714e595
commit
c954d80f18
File diff suppressed because it is too large
Load Diff
@@ -137,12 +137,13 @@ class ServerCapabilitiesComputer {
|
||||
Set<Registration> currentRegistrations = {};
|
||||
var _lastRegistrationId = 0;
|
||||
|
||||
final dartFiles = TextDocumentFilter(language: 'dart', scheme: 'file');
|
||||
final pubspecFile = TextDocumentFilter(
|
||||
final dartFiles =
|
||||
TextDocumentFilterWithScheme(language: 'dart', scheme: 'file');
|
||||
final pubspecFile = TextDocumentFilterWithScheme(
|
||||
language: 'yaml', scheme: 'file', pattern: '**/pubspec.yaml');
|
||||
final analysisOptionsFile = TextDocumentFilter(
|
||||
final analysisOptionsFile = TextDocumentFilterWithScheme(
|
||||
language: 'yaml', scheme: 'file', pattern: '**/analysis_options.yaml');
|
||||
final fixDataFile = TextDocumentFilter(
|
||||
final fixDataFile = TextDocumentFilterWithScheme(
|
||||
language: 'yaml', scheme: 'file', pattern: '**/lib/fix_data.yaml');
|
||||
|
||||
ServerCapabilitiesComputer(this._server);
|
||||
@@ -303,7 +304,8 @@ class ServerCapabilitiesComputer {
|
||||
// All published plugins use something like `*.extension` as
|
||||
// interestingFiles. Prefix a `**/` so that the glob matches nested
|
||||
// folders as well.
|
||||
.map((glob) => TextDocumentFilter(scheme: 'file', pattern: '**/$glob'));
|
||||
.map((glob) =>
|
||||
TextDocumentFilterWithScheme(scheme: 'file', pattern: '**/$glob'));
|
||||
final pluginTypesExcludingDart =
|
||||
pluginTypes.where((filter) => filter.pattern != '**/*.dart');
|
||||
|
||||
|
||||
@@ -491,9 +491,9 @@ class InitializationTest extends AbstractLspAnalysisServerTest {
|
||||
.registrations;
|
||||
|
||||
final documentFilterSql =
|
||||
TextDocumentFilter(scheme: 'file', pattern: '**/*.sql');
|
||||
TextDocumentFilterWithScheme(scheme: 'file', pattern: '**/*.sql');
|
||||
final documentFilterDart =
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file');
|
||||
TextDocumentFilterWithScheme(language: 'dart', scheme: 'file');
|
||||
|
||||
expect(
|
||||
registrations,
|
||||
|
||||
@@ -29,10 +29,10 @@ void main() {
|
||||
|
||||
test('with aliased list fields can be checked for equality', () {
|
||||
final a = TextDocumentRegistrationOptions(documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
final b = TextDocumentRegistrationOptions(documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
|
||||
expect(a, equals(b));
|
||||
@@ -87,12 +87,12 @@ void main() {
|
||||
|
||||
test('consider subclasses when checking for equality', () {
|
||||
final a = TextDocumentRegistrationOptions(documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
final b = TextDocumentSaveRegistrationOptions(
|
||||
includeText: true,
|
||||
documentSelector: [
|
||||
TextDocumentFilter(language: 'dart', scheme: 'file')
|
||||
TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
|
||||
]);
|
||||
|
||||
expect(a, isNot(equals(b)));
|
||||
|
||||
@@ -73,23 +73,26 @@ Iterable<AstNode> renameTypes(List<AstNode> types) sync* {
|
||||
// the migration to JSON meta_model.
|
||||
'ClientCapabilitiesWindow': 'WindowClientCapabilities',
|
||||
'ClientCapabilitiesWorkspace': 'WorkspaceClientCapabilities',
|
||||
'ClientCapabilitiesFileOperations': 'FileOperationClientCapabilities',
|
||||
'ServerCapabilitiesFileOperations': 'FileOperationOptions',
|
||||
'ClientCapabilitiesWorkspaceFileOperations':
|
||||
'FileOperationClientCapabilities',
|
||||
'ServerCapabilitiesWorkspaceFileOperations': 'FileOperationOptions',
|
||||
'ClientCapabilitiesGeneral': 'GeneralClientCapabilities',
|
||||
'CompletionClientCapabilitiesInsertTextModeSupport':
|
||||
'CompletionClientCapabilitiesCompletionItemInsertTextModeSupport':
|
||||
'CompletionItemInsertTextModeSupport',
|
||||
'CompletionClientCapabilitiesResolveSupport':
|
||||
'CompletionClientCapabilitiesCompletionItemResolveSupport':
|
||||
'CompletionItemResolveSupport',
|
||||
'CompletionClientCapabilitiesTagSupport': 'CompletionItemTagSupport',
|
||||
'CodeActionClientCapabilitiesCodeActionKind':
|
||||
'CompletionClientCapabilitiesCompletionItemTagSupport':
|
||||
'CompletionItemTagSupport',
|
||||
'CodeActionClientCapabilitiesCodeActionLiteralSupportCodeActionKind':
|
||||
'CodeActionLiteralSupportCodeActionKind',
|
||||
'DocumentFilter': 'TextDocumentFilter',
|
||||
'ClientCapabilitiesStaleRequestSupport':
|
||||
// In JSON model this becomes a union of literals which we assign improved
|
||||
// names to (to avoid numeric suffixes).
|
||||
'DocumentFilter': 'TextDocumentFilterWithScheme',
|
||||
'ClientCapabilitiesGeneralStaleRequestSupport':
|
||||
'GeneralClientCapabilitiesStaleRequestSupport',
|
||||
'SignatureHelpClientCapabilitiesParameterInformation':
|
||||
'SignatureHelpClientCapabilitiesSignatureInformationParameterInformation':
|
||||
'SignatureInformationParameterInformation',
|
||||
'NotebookDocumentChangeEventStructure':
|
||||
'NotebookDocumentChangeEventCellsStructure',
|
||||
'CompletionListItemDefaultsEditRange': 'CompletionItemEditRange',
|
||||
};
|
||||
|
||||
for (final type in types) {
|
||||
|
||||
@@ -4735,7 +4735,7 @@ _Client Capability_:
|
||||
<div class="anchorHolder"><a href="#typeHierarchyClientCapabilities" name="typeHierarchyClientCapabilities" class="linkableAnchor"></a></div>
|
||||
|
||||
```typescript
|
||||
type TypeHierarchyClientCapabilities = {
|
||||
export interface TypeHierarchyClientCapabilities {
|
||||
/**
|
||||
* Whether implementation supports dynamic registration. If this is set to
|
||||
* `true` the client supports the new `(TextDocumentRegistrationOptions &
|
||||
|
||||
@@ -623,9 +623,10 @@ class Parser {
|
||||
TypeBase type;
|
||||
if (_match([TokenType.LEFT_BRACE])) {
|
||||
// Inline interfaces.
|
||||
final generatedName = _getAvailableName(containerName, fieldName);
|
||||
final members = <Member>[];
|
||||
while (!_check(TokenType.RIGHT_BRACE)) {
|
||||
members.add(_member(containerName));
|
||||
members.add(_member(generatedName));
|
||||
}
|
||||
|
||||
_consume(TokenType.RIGHT_BRACE, 'Expected }');
|
||||
@@ -638,7 +639,6 @@ class Parser {
|
||||
type = MapType(indexer.indexType, indexer.valueType);
|
||||
} else {
|
||||
// Add a synthetic interface to the parsers list of nodes to represent this type.
|
||||
final generatedName = _getAvailableName(containerName, fieldName);
|
||||
_addNode(InlineInterface(generatedName, members));
|
||||
// Record the type as a simple type that references this interface.
|
||||
type = Type.identifier(generatedName);
|
||||
|
||||
Reference in New Issue
Block a user