[analysis_server] satisfy annotate_overrides in generated LSP spec files

Part of #49059

Change-Id: Ifb97985907757f53548764fc64a46094650efd4c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/245544
Reviewed-by: Danny Tuppeny <danny@tuppeny.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Ahmed Ashour
2022-05-26 04:37:59 +00:00
committed by Commit Bot
parent 28e36a8ff9
commit 366042a0dd
4 changed files with 729 additions and 12 deletions
@@ -6,7 +6,6 @@
// To regenerate the file, use the script
// "pkg/analysis_server/tool/lsp_spec/generate_all.dart".
// ignore_for_file: annotate_overrides
// ignore_for_file: prefer_is_not_operator
// ignore_for_file: unnecessary_parenthesis
@@ -39,6 +38,7 @@ class AnalyzerStatusParams implements ToJsonable {
final bool isAnalyzing;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['isAnalyzing'] = isAnalyzing;
@@ -112,6 +112,7 @@ class ClosingLabel implements ToJsonable {
final String label;
final Range range;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['label'] = label;
@@ -200,6 +201,7 @@ class CompletionItemResolutionInfo implements ToJsonable {
return CompletionItemResolutionInfo();
}
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
return result;
@@ -249,6 +251,7 @@ class DartDiagnosticServer implements ToJsonable {
final int port;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['port'] = port;
@@ -349,6 +352,7 @@ class DartSuggestionSetCompletionItemResolutionInfo
final int rLength;
final int rOffset;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['displayUri'] = displayUri;
@@ -574,6 +578,7 @@ class Element implements ToJsonable {
final String? returnType;
final String? typeParameters;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['kind'] = kind;
@@ -772,6 +777,7 @@ class FlutterOutline implements ToJsonable {
final Range range;
final String? variableName;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
if (attributes != null) {
@@ -997,6 +1003,7 @@ class FlutterOutlineAttribute implements ToJsonable {
final String name;
final Range? valueRange;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['label'] = label;
@@ -1120,11 +1127,14 @@ class IncomingMessage implements Message, ToJsonable {
);
}
@override
final int? clientRequestTime;
@override
final String jsonrpc;
final Method method;
final Object? params;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
if (clientRequestTime != null) {
@@ -1247,6 +1257,7 @@ class Message implements ToJsonable {
final int? clientRequestTime;
final String jsonrpc;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
if (clientRequestTime != null) {
@@ -1342,11 +1353,16 @@ class NotificationMessage implements IncomingMessage, ToJsonable {
);
}
@override
final int? clientRequestTime;
@override
final String jsonrpc;
@override
final Method method;
@override
final Object? params;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
if (clientRequestTime != null) {
@@ -1476,6 +1492,7 @@ class Outline implements ToJsonable {
final Element element;
final Range range;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
if (children != null) {
@@ -1609,6 +1626,7 @@ class PubPackageCompletionItemResolutionInfo
final String packageName;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['packageName'] = packageName;
@@ -1685,6 +1703,7 @@ class PublishClosingLabelsParams implements ToJsonable {
final List<ClosingLabel> labels;
final String uri;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['labels'] = labels.map((item) => item.toJson()).toList();
@@ -1785,6 +1804,7 @@ class PublishFlutterOutlineParams implements ToJsonable {
final FlutterOutline outline;
final String uri;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['outline'] = outline.toJson();
@@ -1880,6 +1900,7 @@ class PublishOutlineParams implements ToJsonable {
final Outline outline;
final String uri;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['outline'] = outline.toJson();
@@ -1988,12 +2009,17 @@ class RequestMessage implements IncomingMessage, ToJsonable {
);
}
@override
final int? clientRequestTime;
final Either2<int, String> id;
@override
final String jsonrpc;
@override
final Method method;
@override
final Object? params;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
if (clientRequestTime != null) {
@@ -2139,6 +2165,7 @@ class ResponseError implements ToJsonable {
final String? data;
final String message;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['code'] = code.toJson();
@@ -2267,12 +2294,15 @@ class ResponseMessage implements Message, ToJsonable {
);
}
@override
final int? clientRequestTime;
final ResponseError? error;
final Either2<int, String>? id;
@override
final String jsonrpc;
final Object? result;
@override
Map<String, Object?> toJson() {
var map = <String, Object?>{};
if (clientRequestTime != null) {
@@ -2406,12 +2436,15 @@ class SnippetTextEdit implements TextEdit, ToJsonable {
final InsertTextFormat insertTextFormat;
/// The string to be inserted. For delete operations use an empty string.
@override
final String newText;
/// The range of the text document to be manipulated. To insert text into a
/// document create a range where start === end.
@override
final Range range;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
result['insertTextFormat'] = insertTextFormat.toJson();
@@ -2529,6 +2562,7 @@ class ValidateRefactorResult implements ToJsonable {
final String? message;
final bool valid;
@override
Map<String, Object?> toJson() {
var result = <String, Object?>{};
if (message != null) {
File diff suppressed because it is too large Load Diff
@@ -221,6 +221,21 @@ String _getTypeCheckFailureMessage(TypeBase type) {
}
}
bool _isOverride(Interface interface, Field field) {
for (var parentType in interface.baseTypes) {
var parent = _interfaces[(parentType as Type).name];
if (parent != null) {
if (parent.members.any((m) => m.name == field.name)) {
return true;
}
if (_isOverride(parent, field)) {
return true;
}
}
}
return false;
}
bool _isSimpleType(TypeBase type) {
const literals = ['num', 'String', 'bool', 'int'];
return type is Type && literals.contains(type.dartType);
@@ -531,14 +546,14 @@ void _writeEnumClass(IndentableStringBuffer buffer, Namespace namespace) {
});
buffer
..writeln()
..writeIndentedln('Object toJson() => _value;')
..writeIndentedln('@override Object toJson() => _value;')
..writeln()
..writeIndentedln('@override String toString() => _value.toString();')
..writeln()
..writeIndentedln('@override int get hashCode => _value.hashCode;')
..writeln()
..writeIndentedln(
'bool operator ==(Object other) => other is $namespaceName && other._value == _value;')
'@override bool operator ==(Object other) => other is $namespaceName && other._value == _value;')
..outdent()
..writeln('}')
..writeln();
@@ -590,10 +605,14 @@ void _writeEqualsExpression(IndentableStringBuffer buffer, TypeBase type,
}
}
void _writeField(IndentableStringBuffer buffer, Field field) {
void _writeField(
IndentableStringBuffer buffer, Interface interface, Field field) {
_writeDocCommentsAndAnnotations(buffer, field);
final needsNullable =
(field.allowsNull || field.allowsUndefined) && !isAnyType(field.type);
if (_isOverride(interface, field)) {
buffer.writeIndentedln('@override');
}
buffer
..writeIndented('final ')
..write(field.type.dartTypeWithTypeArgs)
@@ -821,9 +840,9 @@ void _writeInterface(IndentableStringBuffer buffer, Interface interface) {
final consts = interface.members.whereType<Const>().toList();
final fields = _getAllFields(interface);
buffer.writeln();
_writeMembers(buffer, consts);
_writeMembers(buffer, interface, consts);
buffer.writeln();
_writeMembers(buffer, fields);
_writeMembers(buffer, interface, fields);
buffer.writeln();
_writeToJsonMethod(buffer, interface);
_writeCanParseMethod(buffer, interface);
@@ -866,9 +885,10 @@ void _writeJsonMapAssignment(
}
}
void _writeMember(IndentableStringBuffer buffer, Member member) {
void _writeMember(
IndentableStringBuffer buffer, Interface interface, Member member) {
if (member is Field) {
_writeField(buffer, member);
_writeField(buffer, interface, member);
} else if (member is Const) {
_writeConst(buffer, member);
} else {
@@ -876,8 +896,9 @@ void _writeMember(IndentableStringBuffer buffer, Member member) {
}
}
void _writeMembers(IndentableStringBuffer buffer, List<Member> members) {
_getSortedUnique(members).forEach((m) => _writeMember(buffer, m));
void _writeMembers(
IndentableStringBuffer buffer, Interface interface, List<Member> members) {
_getSortedUnique(members).forEach((m) => _writeMember(buffer, interface, m));
}
void _writeToJsonCode(IndentableStringBuffer buffer, TypeBase type,
@@ -925,6 +946,7 @@ void _writeToJsonMethod(IndentableStringBuffer buffer, Interface interface) {
['result', 'map', 'json', 'toReturn', 'results', 'value', 'values']);
buffer
..writeIndentedln('@override')
..writeIndentedln('Map<String, Object?> toJson() {')
..indent()
..writeIndentedln('var $mapName = <String, Object?>{};');
@@ -166,7 +166,6 @@ String generatedFileHeader(int year, {bool importCustom = false}) => '''
// To regenerate the file, use the script
// "pkg/analysis_server/tool/lsp_spec/generate_all.dart".
// ignore_for_file: annotate_overrides
// ignore_for_file: prefer_is_not_operator
// ignore_for_file: unnecessary_parenthesis