Version 2.18.0-120.0.dev
Merge commit '60bf3d51b64fe0aef1cdc35ae1b790d5d8360d2f' into 'dev'
diff --git a/DEPS b/DEPS
index d5d5a11..a5498ba 100644
--- a/DEPS
+++ b/DEPS
@@ -151,7 +151,7 @@
"stream_channel_rev": "3fa3e40c75c210d617b8b943b9b8f580e9866a89",
"string_scanner_rev": "6579871b528036767b3200b390a3ecef28e4900d",
"sync_http_rev": "b6bd47965694dddffb6e62fb8a6c12d17c4ae4cd",
- "term_glyph_rev": "4885b7f8af6931e23d3aa6d1767ee3f9a626923d",
+ "term_glyph_rev": "d0f205c67ea70eea47b9f41c8440129a72a9c86e",
"test_descriptor_rev": "ead23c1e7df079ac0f6457a35f7a71432892e527",
"test_process_rev": "7c73ec8a8a6e0e63d0ec27d70c21ca4323fb5e8f",
"test_reflective_loader_rev": "fcfce37666672edac849d2af6dffc0f8df236a94",
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
index 6738b31..299fa4e 100644
--- a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
@@ -1682,7 +1682,7 @@
final experimental = experimentalJson;
final generalJson = json['general'];
final general = generalJson != null
- ? ClientCapabilitiesGeneral.fromJson(
+ ? GeneralClientCapabilities.fromJson(
generalJson as Map<String, Object?>)
: null;
final notebookDocumentJson = json['notebookDocument'];
@@ -1719,7 +1719,7 @@
/// General client capabilities.
/// @since 3.16.0
- final ClientCapabilitiesGeneral? general;
+ final GeneralClientCapabilities? general;
/// Capabilities specific to the notebook document support.
/// @since 3.17.0
@@ -1763,8 +1763,8 @@
try {
final general = obj['general'];
if (general != null &&
- !(ClientCapabilitiesGeneral.canParse(general, reporter))) {
- reporter.reportError('must be of type ClientCapabilitiesGeneral');
+ !(GeneralClientCapabilities.canParse(general, reporter))) {
+ reporter.reportError('must be of type GeneralClientCapabilities');
return false;
}
} finally {
@@ -1854,486 +1854,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-class ClientCapabilitiesFileOperations implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- ClientCapabilitiesFileOperations.canParse,
- ClientCapabilitiesFileOperations.fromJson,
- );
-
- ClientCapabilitiesFileOperations({
- this.didCreate,
- this.didDelete,
- this.didRename,
- this.dynamicRegistration,
- this.willCreate,
- this.willDelete,
- this.willRename,
- });
- static ClientCapabilitiesFileOperations fromJson(Map<String, Object?> json) {
- final didCreateJson = json['didCreate'];
- final didCreate = didCreateJson as bool?;
- final didDeleteJson = json['didDelete'];
- final didDelete = didDeleteJson as bool?;
- final didRenameJson = json['didRename'];
- final didRename = didRenameJson as bool?;
- final dynamicRegistrationJson = json['dynamicRegistration'];
- final dynamicRegistration = dynamicRegistrationJson as bool?;
- final willCreateJson = json['willCreate'];
- final willCreate = willCreateJson as bool?;
- final willDeleteJson = json['willDelete'];
- final willDelete = willDeleteJson as bool?;
- final willRenameJson = json['willRename'];
- final willRename = willRenameJson as bool?;
- return ClientCapabilitiesFileOperations(
- didCreate: didCreate,
- didDelete: didDelete,
- didRename: didRename,
- dynamicRegistration: dynamicRegistration,
- willCreate: willCreate,
- willDelete: willDelete,
- willRename: willRename,
- );
- }
-
- /// The client has support for sending didCreateFiles notifications.
- final bool? didCreate;
-
- /// The client has support for sending didDeleteFiles notifications.
- final bool? didDelete;
-
- /// The client has support for sending didRenameFiles notifications.
- final bool? didRename;
-
- /// Whether the client supports dynamic registration for file
- /// requests/notifications.
- final bool? dynamicRegistration;
-
- /// The client has support for sending willCreateFiles requests.
- final bool? willCreate;
-
- /// The client has support for sending willDeleteFiles requests.
- final bool? willDelete;
-
- /// The client has support for sending willRenameFiles requests.
- final bool? willRename;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- if (didCreate != null) {
- __result['didCreate'] = didCreate;
- }
- if (didDelete != null) {
- __result['didDelete'] = didDelete;
- }
- if (didRename != null) {
- __result['didRename'] = didRename;
- }
- if (dynamicRegistration != null) {
- __result['dynamicRegistration'] = dynamicRegistration;
- }
- if (willCreate != null) {
- __result['willCreate'] = willCreate;
- }
- if (willDelete != null) {
- __result['willDelete'] = willDelete;
- }
- if (willRename != null) {
- __result['willRename'] = willRename;
- }
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('didCreate');
- try {
- final didCreate = obj['didCreate'];
- if (didCreate != null && !(didCreate is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('didDelete');
- try {
- final didDelete = obj['didDelete'];
- if (didDelete != null && !(didDelete is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('didRename');
- try {
- final didRename = obj['didRename'];
- if (didRename != null && !(didRename is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('dynamicRegistration');
- try {
- final dynamicRegistration = obj['dynamicRegistration'];
- if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('willCreate');
- try {
- final willCreate = obj['willCreate'];
- if (willCreate != null && !(willCreate is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('willDelete');
- try {
- final willDelete = obj['willDelete'];
- if (willDelete != null && !(willDelete is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('willRename');
- try {
- final willRename = obj['willRename'];
- if (willRename != null && !(willRename is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError('must be of type ClientCapabilitiesFileOperations');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is ClientCapabilitiesFileOperations &&
- other.runtimeType == ClientCapabilitiesFileOperations) {
- return didCreate == other.didCreate &&
- didDelete == other.didDelete &&
- didRename == other.didRename &&
- dynamicRegistration == other.dynamicRegistration &&
- willCreate == other.willCreate &&
- willDelete == other.willDelete &&
- willRename == other.willRename &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => Object.hash(
- didCreate,
- didDelete,
- didRename,
- dynamicRegistration,
- willCreate,
- willDelete,
- willRename,
- );
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
-class ClientCapabilitiesGeneral implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- ClientCapabilitiesGeneral.canParse,
- ClientCapabilitiesGeneral.fromJson,
- );
-
- ClientCapabilitiesGeneral({
- this.markdown,
- this.positionEncodings,
- this.regularExpressions,
- this.staleRequestSupport,
- });
- static ClientCapabilitiesGeneral fromJson(Map<String, Object?> json) {
- final markdownJson = json['markdown'];
- final markdown = markdownJson != null
- ? MarkdownClientCapabilities.fromJson(
- markdownJson as Map<String, Object?>)
- : null;
- final positionEncodingsJson = json['positionEncodings'];
- final positionEncodings = (positionEncodingsJson as List<Object?>?)
- ?.map((item) => PositionEncodingKind.fromJson(item as String))
- .toList();
- final regularExpressionsJson = json['regularExpressions'];
- final regularExpressions = regularExpressionsJson != null
- ? RegularExpressionsClientCapabilities.fromJson(
- regularExpressionsJson as Map<String, Object?>)
- : null;
- final staleRequestSupportJson = json['staleRequestSupport'];
- final staleRequestSupport = staleRequestSupportJson != null
- ? ClientCapabilitiesStaleRequestSupport.fromJson(
- staleRequestSupportJson as Map<String, Object?>)
- : null;
- return ClientCapabilitiesGeneral(
- markdown: markdown,
- positionEncodings: positionEncodings,
- regularExpressions: regularExpressions,
- staleRequestSupport: staleRequestSupport,
- );
- }
-
- /// Client capabilities specific to the client's markdown parser.
- /// @since 3.16.0
- final MarkdownClientCapabilities? markdown;
-
- /// The position encodings supported by the client. Client and server have to
- /// agree on the same position encoding to ensure that offsets (e.g. character
- /// position in a line) are interpreted the same on both side.
- ///
- /// To keep the protocol backwards compatible the following applies: if the
- /// value 'utf-16' is missing from the array of position encodings servers can
- /// assume that the client supports UTF-16. UTF-16 is therefore a mandatory
- /// encoding.
- ///
- /// If omitted it defaults to ['utf-16'].
- ///
- /// Implementation considerations: since the conversion from one encoding into
- /// another requires the content of the file / line the conversion is best
- /// done where the file is read which is usually on the server side.
- /// @since 3.17.0
- final List<PositionEncodingKind>? positionEncodings;
-
- /// Client capabilities specific to regular expressions.
- /// @since 3.16.0
- final RegularExpressionsClientCapabilities? regularExpressions;
-
- /// Client capability that signals how the client handles stale requests (e.g.
- /// a request for which the client will not process the response anymore since
- /// the information is outdated).
- /// @since 3.17.0
- final ClientCapabilitiesStaleRequestSupport? staleRequestSupport;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- if (markdown != null) {
- __result['markdown'] = markdown?.toJson();
- }
- if (positionEncodings != null) {
- __result['positionEncodings'] =
- positionEncodings?.map((item) => item.toJson()).toList();
- }
- if (regularExpressions != null) {
- __result['regularExpressions'] = regularExpressions?.toJson();
- }
- if (staleRequestSupport != null) {
- __result['staleRequestSupport'] = staleRequestSupport?.toJson();
- }
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('markdown');
- try {
- final markdown = obj['markdown'];
- if (markdown != null &&
- !(MarkdownClientCapabilities.canParse(markdown, reporter))) {
- reporter.reportError('must be of type MarkdownClientCapabilities');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('positionEncodings');
- try {
- final positionEncodings = obj['positionEncodings'];
- if (positionEncodings != null &&
- !((positionEncodings is List<Object?> &&
- (positionEncodings.every((item) =>
- PositionEncodingKind.canParse(item, reporter)))))) {
- reporter.reportError('must be of type List<PositionEncodingKind>');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('regularExpressions');
- try {
- final regularExpressions = obj['regularExpressions'];
- if (regularExpressions != null &&
- !(RegularExpressionsClientCapabilities.canParse(
- regularExpressions, reporter))) {
- reporter.reportError(
- 'must be of type RegularExpressionsClientCapabilities');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('staleRequestSupport');
- try {
- final staleRequestSupport = obj['staleRequestSupport'];
- if (staleRequestSupport != null &&
- !(ClientCapabilitiesStaleRequestSupport.canParse(
- staleRequestSupport, reporter))) {
- reporter.reportError(
- 'must be of type ClientCapabilitiesStaleRequestSupport');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError('must be of type ClientCapabilitiesGeneral');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is ClientCapabilitiesGeneral &&
- other.runtimeType == ClientCapabilitiesGeneral) {
- return markdown == other.markdown &&
- listEqual(positionEncodings, other.positionEncodings,
- (PositionEncodingKind a, PositionEncodingKind b) => a == b) &&
- regularExpressions == other.regularExpressions &&
- staleRequestSupport == other.staleRequestSupport &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => Object.hash(
- markdown,
- lspHashCode(positionEncodings),
- regularExpressions,
- staleRequestSupport,
- );
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
-class ClientCapabilitiesStaleRequestSupport implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- ClientCapabilitiesStaleRequestSupport.canParse,
- ClientCapabilitiesStaleRequestSupport.fromJson,
- );
-
- ClientCapabilitiesStaleRequestSupport({
- required this.cancel,
- required this.retryOnContentModified,
- });
- static ClientCapabilitiesStaleRequestSupport fromJson(
- Map<String, Object?> json) {
- final cancelJson = json['cancel'];
- final cancel = cancelJson as bool;
- final retryOnContentModifiedJson = json['retryOnContentModified'];
- final retryOnContentModified = (retryOnContentModifiedJson as List<Object?>)
- .map((item) => item as String)
- .toList();
- return ClientCapabilitiesStaleRequestSupport(
- cancel: cancel,
- retryOnContentModified: retryOnContentModified,
- );
- }
-
- /// The client will actively cancel the request.
- final bool cancel;
-
- /// The list of requests for which the client will retry the request if it
- /// receives a response with error code `ContentModified``
- final List<String> retryOnContentModified;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- __result['cancel'] = cancel;
- __result['retryOnContentModified'] = retryOnContentModified;
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('cancel');
- try {
- if (!obj.containsKey('cancel')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final cancel = obj['cancel'];
- if (cancel == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!(cancel is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('retryOnContentModified');
- try {
- if (!obj.containsKey('retryOnContentModified')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final retryOnContentModified = obj['retryOnContentModified'];
- if (retryOnContentModified == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!((retryOnContentModified is List<Object?> &&
- (retryOnContentModified.every((item) => item is String))))) {
- reporter.reportError('must be of type List<String>');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter
- .reportError('must be of type ClientCapabilitiesStaleRequestSupport');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is ClientCapabilitiesStaleRequestSupport &&
- other.runtimeType == ClientCapabilitiesStaleRequestSupport) {
- return cancel == other.cancel &&
- listEqual(retryOnContentModified, other.retryOnContentModified,
- (String a, String b) => a == b) &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => Object.hash(
- cancel,
- lspHashCode(retryOnContentModified),
- );
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
/// A code action represents a change that can be performed in code, e.g. to fix
/// a problem or to refactor code.
///
@@ -2819,85 +2339,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-class CodeActionClientCapabilitiesCodeActionKind implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- CodeActionClientCapabilitiesCodeActionKind.canParse,
- CodeActionClientCapabilitiesCodeActionKind.fromJson,
- );
-
- CodeActionClientCapabilitiesCodeActionKind({
- required this.valueSet,
- });
- static CodeActionClientCapabilitiesCodeActionKind fromJson(
- Map<String, Object?> json) {
- final valueSetJson = json['valueSet'];
- final valueSet = (valueSetJson as List<Object?>)
- .map((item) => CodeActionKind.fromJson(item as String))
- .toList();
- return CodeActionClientCapabilitiesCodeActionKind(
- valueSet: valueSet,
- );
- }
-
- /// The code action kind values the client supports. When this property exists
- /// the client also guarantees that it will handle values outside its set
- /// gracefully and falls back to a default value when unknown.
- final List<CodeActionKind> valueSet;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- __result['valueSet'] = valueSet.map((item) => item.toJson()).toList();
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('valueSet');
- try {
- if (!obj.containsKey('valueSet')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final valueSet = obj['valueSet'];
- if (valueSet == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!((valueSet is List<Object?> &&
- (valueSet
- .every((item) => CodeActionKind.canParse(item, reporter)))))) {
- reporter.reportError('must be of type List<CodeActionKind>');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError(
- 'must be of type CodeActionClientCapabilitiesCodeActionKind');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is CodeActionClientCapabilitiesCodeActionKind &&
- other.runtimeType == CodeActionClientCapabilitiesCodeActionKind) {
- return listEqual(valueSet, other.valueSet,
- (CodeActionKind a, CodeActionKind b) => a == b) &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => lspHashCode(valueSet);
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
class CodeActionClientCapabilitiesCodeActionLiteralSupport
implements ToJsonable {
static const jsonHandler = LspJsonHandler(
@@ -2911,7 +2352,7 @@
static CodeActionClientCapabilitiesCodeActionLiteralSupport fromJson(
Map<String, Object?> json) {
final codeActionKindJson = json['codeActionKind'];
- final codeActionKind = CodeActionClientCapabilitiesCodeActionKind.fromJson(
+ final codeActionKind = CodeActionLiteralSupportCodeActionKind.fromJson(
codeActionKindJson as Map<String, Object?>);
return CodeActionClientCapabilitiesCodeActionLiteralSupport(
codeActionKind: codeActionKind,
@@ -2919,7 +2360,7 @@
}
/// The code action kind is supported with the following value set.
- final CodeActionClientCapabilitiesCodeActionKind codeActionKind;
+ final CodeActionLiteralSupportCodeActionKind codeActionKind;
Map<String, Object?> toJson() {
var __result = <String, Object?>{};
@@ -2940,10 +2381,10 @@
reporter.reportError('must not be null');
return false;
}
- if (!(CodeActionClientCapabilitiesCodeActionKind.canParse(
+ if (!(CodeActionLiteralSupportCodeActionKind.canParse(
codeActionKind, reporter))) {
reporter.reportError(
- 'must be of type CodeActionClientCapabilitiesCodeActionKind');
+ 'must be of type CodeActionLiteralSupportCodeActionKind');
return false;
}
} finally {
@@ -3340,6 +2781,85 @@
bool operator ==(Object o) => o is CodeActionKind && o._value == _value;
}
+class CodeActionLiteralSupportCodeActionKind implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ CodeActionLiteralSupportCodeActionKind.canParse,
+ CodeActionLiteralSupportCodeActionKind.fromJson,
+ );
+
+ CodeActionLiteralSupportCodeActionKind({
+ required this.valueSet,
+ });
+ static CodeActionLiteralSupportCodeActionKind fromJson(
+ Map<String, Object?> json) {
+ final valueSetJson = json['valueSet'];
+ final valueSet = (valueSetJson as List<Object?>)
+ .map((item) => CodeActionKind.fromJson(item as String))
+ .toList();
+ return CodeActionLiteralSupportCodeActionKind(
+ valueSet: valueSet,
+ );
+ }
+
+ /// The code action kind values the client supports. When this property exists
+ /// the client also guarantees that it will handle values outside its set
+ /// gracefully and falls back to a default value when unknown.
+ final List<CodeActionKind> valueSet;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ __result['valueSet'] = valueSet.map((item) => item.toJson()).toList();
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('valueSet');
+ try {
+ if (!obj.containsKey('valueSet')) {
+ reporter.reportError('must not be undefined');
+ return false;
+ }
+ final valueSet = obj['valueSet'];
+ if (valueSet == null) {
+ reporter.reportError('must not be null');
+ return false;
+ }
+ if (!((valueSet is List<Object?> &&
+ (valueSet
+ .every((item) => CodeActionKind.canParse(item, reporter)))))) {
+ reporter.reportError('must be of type List<CodeActionKind>');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError(
+ 'must be of type CodeActionLiteralSupportCodeActionKind');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is CodeActionLiteralSupportCodeActionKind &&
+ other.runtimeType == CodeActionLiteralSupportCodeActionKind) {
+ return listEqual(valueSet, other.valueSet,
+ (CodeActionKind a, CodeActionKind b) => a == b) &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => lspHashCode(valueSet);
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
class CodeActionOptions implements WorkDoneProgressOptions, ToJsonable {
static const jsonHandler = LspJsonHandler(
CodeActionOptions.canParse,
@@ -5424,7 +4944,7 @@
final insertReplaceSupport = insertReplaceSupportJson as bool?;
final insertTextModeSupportJson = json['insertTextModeSupport'];
final insertTextModeSupport = insertTextModeSupportJson != null
- ? CompletionClientCapabilitiesInsertTextModeSupport.fromJson(
+ ? CompletionItemInsertTextModeSupport.fromJson(
insertTextModeSupportJson as Map<String, Object?>)
: null;
final labelDetailsSupportJson = json['labelDetailsSupport'];
@@ -5433,14 +4953,14 @@
final preselectSupport = preselectSupportJson as bool?;
final resolveSupportJson = json['resolveSupport'];
final resolveSupport = resolveSupportJson != null
- ? CompletionClientCapabilitiesResolveSupport.fromJson(
+ ? CompletionItemResolveSupport.fromJson(
resolveSupportJson as Map<String, Object?>)
: null;
final snippetSupportJson = json['snippetSupport'];
final snippetSupport = snippetSupportJson as bool?;
final tagSupportJson = json['tagSupport'];
final tagSupport = tagSupportJson != null
- ? CompletionClientCapabilitiesTagSupport.fromJson(
+ ? CompletionItemTagSupport.fromJson(
tagSupportJson as Map<String, Object?>)
: null;
return CompletionClientCapabilitiesCompletionItem(
@@ -5476,8 +4996,7 @@
/// override the whitespace handling mode as defined by the client (see
/// `insertTextMode`).
/// @since 3.16.0
- final CompletionClientCapabilitiesInsertTextModeSupport?
- insertTextModeSupport;
+ final CompletionItemInsertTextModeSupport? insertTextModeSupport;
/// The client has support for completion item label details (see also
/// `CompletionItemLabelDetails`).
@@ -5491,7 +5010,7 @@
/// item. Before version 3.16.0 only the predefined properties `documentation`
/// and `detail` could be resolved lazily.
/// @since 3.16.0
- final CompletionClientCapabilitiesResolveSupport? resolveSupport;
+ final CompletionItemResolveSupport? resolveSupport;
/// Client supports snippets as insert text.
///
@@ -5506,7 +5025,7 @@
/// preserve unknown tags when sending a completion item back to the server in
/// a resolve call.
/// @since 3.15.0
- final CompletionClientCapabilitiesTagSupport? tagSupport;
+ final CompletionItemTagSupport? tagSupport;
Map<String, Object?> toJson() {
var __result = <String, Object?>{};
@@ -5594,10 +5113,10 @@
try {
final insertTextModeSupport = obj['insertTextModeSupport'];
if (insertTextModeSupport != null &&
- !(CompletionClientCapabilitiesInsertTextModeSupport.canParse(
+ !(CompletionItemInsertTextModeSupport.canParse(
insertTextModeSupport, reporter))) {
reporter.reportError(
- 'must be of type CompletionClientCapabilitiesInsertTextModeSupport');
+ 'must be of type CompletionItemInsertTextModeSupport');
return false;
}
} finally {
@@ -5627,10 +5146,9 @@
try {
final resolveSupport = obj['resolveSupport'];
if (resolveSupport != null &&
- !(CompletionClientCapabilitiesResolveSupport.canParse(
+ !(CompletionItemResolveSupport.canParse(
resolveSupport, reporter))) {
- reporter.reportError(
- 'must be of type CompletionClientCapabilitiesResolveSupport');
+ reporter.reportError('must be of type CompletionItemResolveSupport');
return false;
}
} finally {
@@ -5650,10 +5168,8 @@
try {
final tagSupport = obj['tagSupport'];
if (tagSupport != null &&
- !(CompletionClientCapabilitiesTagSupport.canParse(
- tagSupport, reporter))) {
- reporter.reportError(
- 'must be of type CompletionClientCapabilitiesTagSupport');
+ !(CompletionItemTagSupport.canParse(tagSupport, reporter))) {
+ reporter.reportError('must be of type CompletionItemTagSupport');
return false;
}
} finally {
@@ -5859,236 +5375,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-class CompletionClientCapabilitiesInsertTextModeSupport implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- CompletionClientCapabilitiesInsertTextModeSupport.canParse,
- CompletionClientCapabilitiesInsertTextModeSupport.fromJson,
- );
-
- CompletionClientCapabilitiesInsertTextModeSupport({
- required this.valueSet,
- });
- static CompletionClientCapabilitiesInsertTextModeSupport fromJson(
- Map<String, Object?> json) {
- final valueSetJson = json['valueSet'];
- final valueSet = (valueSetJson as List<Object?>)
- .map((item) => InsertTextMode.fromJson(item as int))
- .toList();
- return CompletionClientCapabilitiesInsertTextModeSupport(
- valueSet: valueSet,
- );
- }
-
- final List<InsertTextMode> valueSet;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- __result['valueSet'] = valueSet.map((item) => item.toJson()).toList();
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('valueSet');
- try {
- if (!obj.containsKey('valueSet')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final valueSet = obj['valueSet'];
- if (valueSet == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!((valueSet is List<Object?> &&
- (valueSet
- .every((item) => InsertTextMode.canParse(item, reporter)))))) {
- reporter.reportError('must be of type List<InsertTextMode>');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError(
- 'must be of type CompletionClientCapabilitiesInsertTextModeSupport');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is CompletionClientCapabilitiesInsertTextModeSupport &&
- other.runtimeType ==
- CompletionClientCapabilitiesInsertTextModeSupport) {
- return listEqual(valueSet, other.valueSet,
- (InsertTextMode a, InsertTextMode b) => a == b) &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => lspHashCode(valueSet);
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
-class CompletionClientCapabilitiesResolveSupport implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- CompletionClientCapabilitiesResolveSupport.canParse,
- CompletionClientCapabilitiesResolveSupport.fromJson,
- );
-
- CompletionClientCapabilitiesResolveSupport({
- required this.properties,
- });
- static CompletionClientCapabilitiesResolveSupport fromJson(
- Map<String, Object?> json) {
- final propertiesJson = json['properties'];
- final properties = (propertiesJson as List<Object?>)
- .map((item) => item as String)
- .toList();
- return CompletionClientCapabilitiesResolveSupport(
- properties: properties,
- );
- }
-
- /// The properties that a client can resolve lazily.
- final List<String> properties;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- __result['properties'] = properties;
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('properties');
- try {
- if (!obj.containsKey('properties')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final properties = obj['properties'];
- if (properties == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!((properties is List<Object?> &&
- (properties.every((item) => item is String))))) {
- reporter.reportError('must be of type List<String>');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError(
- 'must be of type CompletionClientCapabilitiesResolveSupport');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is CompletionClientCapabilitiesResolveSupport &&
- other.runtimeType == CompletionClientCapabilitiesResolveSupport) {
- return listEqual(
- properties, other.properties, (String a, String b) => a == b) &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => lspHashCode(properties);
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
-class CompletionClientCapabilitiesTagSupport implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- CompletionClientCapabilitiesTagSupport.canParse,
- CompletionClientCapabilitiesTagSupport.fromJson,
- );
-
- CompletionClientCapabilitiesTagSupport({
- required this.valueSet,
- });
- static CompletionClientCapabilitiesTagSupport fromJson(
- Map<String, Object?> json) {
- final valueSetJson = json['valueSet'];
- final valueSet = (valueSetJson as List<Object?>)
- .map((item) => CompletionItemTag.fromJson(item as int))
- .toList();
- return CompletionClientCapabilitiesTagSupport(
- valueSet: valueSet,
- );
- }
-
- /// The tags supported by the client.
- final List<CompletionItemTag> valueSet;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- __result['valueSet'] = valueSet.map((item) => item.toJson()).toList();
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('valueSet');
- try {
- if (!obj.containsKey('valueSet')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final valueSet = obj['valueSet'];
- if (valueSet == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!((valueSet is List<Object?> &&
- (valueSet.every(
- (item) => CompletionItemTag.canParse(item, reporter)))))) {
- reporter.reportError('must be of type List<CompletionItemTag>');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError(
- 'must be of type CompletionClientCapabilitiesTagSupport');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is CompletionClientCapabilitiesTagSupport &&
- other.runtimeType == CompletionClientCapabilitiesTagSupport) {
- return listEqual(valueSet, other.valueSet,
- (CompletionItemTag a, CompletionItemTag b) => a == b) &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => lspHashCode(valueSet);
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
/// Contains additional information about the context in which a completion
/// request is triggered.
class CompletionContext implements ToJsonable {
@@ -6785,6 +6071,82 @@
String toString() => jsonEncoder.convert(toJson());
}
+class CompletionItemInsertTextModeSupport implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ CompletionItemInsertTextModeSupport.canParse,
+ CompletionItemInsertTextModeSupport.fromJson,
+ );
+
+ CompletionItemInsertTextModeSupport({
+ required this.valueSet,
+ });
+ static CompletionItemInsertTextModeSupport fromJson(
+ Map<String, Object?> json) {
+ final valueSetJson = json['valueSet'];
+ final valueSet = (valueSetJson as List<Object?>)
+ .map((item) => InsertTextMode.fromJson(item as int))
+ .toList();
+ return CompletionItemInsertTextModeSupport(
+ valueSet: valueSet,
+ );
+ }
+
+ final List<InsertTextMode> valueSet;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ __result['valueSet'] = valueSet.map((item) => item.toJson()).toList();
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('valueSet');
+ try {
+ if (!obj.containsKey('valueSet')) {
+ reporter.reportError('must not be undefined');
+ return false;
+ }
+ final valueSet = obj['valueSet'];
+ if (valueSet == null) {
+ reporter.reportError('must not be null');
+ return false;
+ }
+ if (!((valueSet is List<Object?> &&
+ (valueSet
+ .every((item) => InsertTextMode.canParse(item, reporter)))))) {
+ reporter.reportError('must be of type List<InsertTextMode>');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter
+ .reportError('must be of type CompletionItemInsertTextModeSupport');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is CompletionItemInsertTextModeSupport &&
+ other.runtimeType == CompletionItemInsertTextModeSupport) {
+ return listEqual(valueSet, other.valueSet,
+ (InsertTextMode a, InsertTextMode b) => a == b) &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => lspHashCode(valueSet);
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
/// The kind of a completion entry.
class CompletionItemKind implements ToJsonable {
const CompletionItemKind(this._value);
@@ -6925,6 +6287,80 @@
String toString() => jsonEncoder.convert(toJson());
}
+class CompletionItemResolveSupport implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ CompletionItemResolveSupport.canParse,
+ CompletionItemResolveSupport.fromJson,
+ );
+
+ CompletionItemResolveSupport({
+ required this.properties,
+ });
+ static CompletionItemResolveSupport fromJson(Map<String, Object?> json) {
+ final propertiesJson = json['properties'];
+ final properties = (propertiesJson as List<Object?>)
+ .map((item) => item as String)
+ .toList();
+ return CompletionItemResolveSupport(
+ properties: properties,
+ );
+ }
+
+ /// The properties that a client can resolve lazily.
+ final List<String> properties;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ __result['properties'] = properties;
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('properties');
+ try {
+ if (!obj.containsKey('properties')) {
+ reporter.reportError('must not be undefined');
+ return false;
+ }
+ final properties = obj['properties'];
+ if (properties == null) {
+ reporter.reportError('must not be null');
+ return false;
+ }
+ if (!((properties is List<Object?> &&
+ (properties.every((item) => item is String))))) {
+ reporter.reportError('must be of type List<String>');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError('must be of type CompletionItemResolveSupport');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is CompletionItemResolveSupport &&
+ other.runtimeType == CompletionItemResolveSupport) {
+ return listEqual(
+ properties, other.properties, (String a, String b) => a == b) &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => lspHashCode(properties);
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
/// Completion item tags are extra annotations that tweak the rendering of a
/// completion item.
/// @since 3.15.0
@@ -6952,6 +6388,81 @@
bool operator ==(Object o) => o is CompletionItemTag && o._value == _value;
}
+class CompletionItemTagSupport implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ CompletionItemTagSupport.canParse,
+ CompletionItemTagSupport.fromJson,
+ );
+
+ CompletionItemTagSupport({
+ required this.valueSet,
+ });
+ static CompletionItemTagSupport fromJson(Map<String, Object?> json) {
+ final valueSetJson = json['valueSet'];
+ final valueSet = (valueSetJson as List<Object?>)
+ .map((item) => CompletionItemTag.fromJson(item as int))
+ .toList();
+ return CompletionItemTagSupport(
+ valueSet: valueSet,
+ );
+ }
+
+ /// The tags supported by the client.
+ final List<CompletionItemTag> valueSet;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ __result['valueSet'] = valueSet.map((item) => item.toJson()).toList();
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('valueSet');
+ try {
+ if (!obj.containsKey('valueSet')) {
+ reporter.reportError('must not be undefined');
+ return false;
+ }
+ final valueSet = obj['valueSet'];
+ if (valueSet == null) {
+ reporter.reportError('must not be null');
+ return false;
+ }
+ if (!((valueSet is List<Object?> &&
+ (valueSet.every(
+ (item) => CompletionItemTag.canParse(item, reporter)))))) {
+ reporter.reportError('must be of type List<CompletionItemTag>');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError('must be of type CompletionItemTagSupport');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is CompletionItemTagSupport &&
+ other.runtimeType == CompletionItemTagSupport) {
+ return listEqual(valueSet, other.valueSet,
+ (CompletionItemTag a, CompletionItemTag b) => a == b) &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => lspHashCode(valueSet);
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
/// Represents a collection of completion items ([CompletionItem]) to be
/// presented in the editor.
class CompletionList implements ToJsonable {
@@ -15950,12 +15461,12 @@
static const InvalidParams = ErrorCodes(-32602);
static const InvalidRequest = ErrorCodes(-32600);
- /// This is the end range of JSON RPC reserved error codes. It doesn't denote
+ /// This is the end range of JSON-RPC reserved error codes. It doesn't denote
/// a real error code.
/// @since 3.16.0
static const jsonrpcReservedErrorRangeEnd = ErrorCodes(-32000);
- /// This is the start range of JSON RPC reserved error codes. It doesn't
+ /// This is the start range of JSON-RPC reserved error codes. It doesn't
/// denote a real error code. No LSP error codes should be defined between the
/// start and end range. For backwards compatibility the
/// `ServerNotInitialized` and the `UnknownErrorCode` are left in the range.
@@ -15973,7 +15484,7 @@
static const lspReservedErrorRangeStart = ErrorCodes(-32899);
static const MethodNotFound = ErrorCodes(-32601);
- /// Defined by JSON RPC
+ /// Defined by JSON-RPC
static const ParseError = ErrorCodes(-32700);
/// The client has canceled a request and a server as detected the cancel.
@@ -16801,6 +16312,205 @@
String toString() => jsonEncoder.convert(toJson());
}
+class FileOperationClientCapabilities implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ FileOperationClientCapabilities.canParse,
+ FileOperationClientCapabilities.fromJson,
+ );
+
+ FileOperationClientCapabilities({
+ this.didCreate,
+ this.didDelete,
+ this.didRename,
+ this.dynamicRegistration,
+ this.willCreate,
+ this.willDelete,
+ this.willRename,
+ });
+ static FileOperationClientCapabilities fromJson(Map<String, Object?> json) {
+ final didCreateJson = json['didCreate'];
+ final didCreate = didCreateJson as bool?;
+ final didDeleteJson = json['didDelete'];
+ final didDelete = didDeleteJson as bool?;
+ final didRenameJson = json['didRename'];
+ final didRename = didRenameJson as bool?;
+ final dynamicRegistrationJson = json['dynamicRegistration'];
+ final dynamicRegistration = dynamicRegistrationJson as bool?;
+ final willCreateJson = json['willCreate'];
+ final willCreate = willCreateJson as bool?;
+ final willDeleteJson = json['willDelete'];
+ final willDelete = willDeleteJson as bool?;
+ final willRenameJson = json['willRename'];
+ final willRename = willRenameJson as bool?;
+ return FileOperationClientCapabilities(
+ didCreate: didCreate,
+ didDelete: didDelete,
+ didRename: didRename,
+ dynamicRegistration: dynamicRegistration,
+ willCreate: willCreate,
+ willDelete: willDelete,
+ willRename: willRename,
+ );
+ }
+
+ /// The client has support for sending didCreateFiles notifications.
+ final bool? didCreate;
+
+ /// The client has support for sending didDeleteFiles notifications.
+ final bool? didDelete;
+
+ /// The client has support for sending didRenameFiles notifications.
+ final bool? didRename;
+
+ /// Whether the client supports dynamic registration for file
+ /// requests/notifications.
+ final bool? dynamicRegistration;
+
+ /// The client has support for sending willCreateFiles requests.
+ final bool? willCreate;
+
+ /// The client has support for sending willDeleteFiles requests.
+ final bool? willDelete;
+
+ /// The client has support for sending willRenameFiles requests.
+ final bool? willRename;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ if (didCreate != null) {
+ __result['didCreate'] = didCreate;
+ }
+ if (didDelete != null) {
+ __result['didDelete'] = didDelete;
+ }
+ if (didRename != null) {
+ __result['didRename'] = didRename;
+ }
+ if (dynamicRegistration != null) {
+ __result['dynamicRegistration'] = dynamicRegistration;
+ }
+ if (willCreate != null) {
+ __result['willCreate'] = willCreate;
+ }
+ if (willDelete != null) {
+ __result['willDelete'] = willDelete;
+ }
+ if (willRename != null) {
+ __result['willRename'] = willRename;
+ }
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('didCreate');
+ try {
+ final didCreate = obj['didCreate'];
+ if (didCreate != null && !(didCreate is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('didDelete');
+ try {
+ final didDelete = obj['didDelete'];
+ if (didDelete != null && !(didDelete is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('didRename');
+ try {
+ final didRename = obj['didRename'];
+ if (didRename != null && !(didRename is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('dynamicRegistration');
+ try {
+ final dynamicRegistration = obj['dynamicRegistration'];
+ if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('willCreate');
+ try {
+ final willCreate = obj['willCreate'];
+ if (willCreate != null && !(willCreate is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('willDelete');
+ try {
+ final willDelete = obj['willDelete'];
+ if (willDelete != null && !(willDelete is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('willRename');
+ try {
+ final willRename = obj['willRename'];
+ if (willRename != null && !(willRename is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError('must be of type FileOperationClientCapabilities');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is FileOperationClientCapabilities &&
+ other.runtimeType == FileOperationClientCapabilities) {
+ return didCreate == other.didCreate &&
+ didDelete == other.didDelete &&
+ didRename == other.didRename &&
+ dynamicRegistration == other.dynamicRegistration &&
+ willCreate == other.willCreate &&
+ willDelete == other.willDelete &&
+ willRename == other.willRename &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => Object.hash(
+ didCreate,
+ didDelete,
+ didRename,
+ dynamicRegistration,
+ willCreate,
+ willDelete,
+ willRename,
+ );
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
/// A filter to describe in which file operation requests or notifications the
/// server is interested in.
/// @since 3.16.0
@@ -16897,6 +16607,215 @@
String toString() => jsonEncoder.convert(toJson());
}
+class FileOperationOptions implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ FileOperationOptions.canParse,
+ FileOperationOptions.fromJson,
+ );
+
+ FileOperationOptions({
+ this.didCreate,
+ this.didDelete,
+ this.didRename,
+ this.willCreate,
+ this.willDelete,
+ this.willRename,
+ });
+ static FileOperationOptions fromJson(Map<String, Object?> json) {
+ final didCreateJson = json['didCreate'];
+ final didCreate = didCreateJson != null
+ ? FileOperationRegistrationOptions.fromJson(
+ didCreateJson as Map<String, Object?>)
+ : null;
+ final didDeleteJson = json['didDelete'];
+ final didDelete = didDeleteJson != null
+ ? FileOperationRegistrationOptions.fromJson(
+ didDeleteJson as Map<String, Object?>)
+ : null;
+ final didRenameJson = json['didRename'];
+ final didRename = didRenameJson != null
+ ? FileOperationRegistrationOptions.fromJson(
+ didRenameJson as Map<String, Object?>)
+ : null;
+ final willCreateJson = json['willCreate'];
+ final willCreate = willCreateJson != null
+ ? FileOperationRegistrationOptions.fromJson(
+ willCreateJson as Map<String, Object?>)
+ : null;
+ final willDeleteJson = json['willDelete'];
+ final willDelete = willDeleteJson != null
+ ? FileOperationRegistrationOptions.fromJson(
+ willDeleteJson as Map<String, Object?>)
+ : null;
+ final willRenameJson = json['willRename'];
+ final willRename = willRenameJson != null
+ ? FileOperationRegistrationOptions.fromJson(
+ willRenameJson as Map<String, Object?>)
+ : null;
+ return FileOperationOptions(
+ didCreate: didCreate,
+ didDelete: didDelete,
+ didRename: didRename,
+ willCreate: willCreate,
+ willDelete: willDelete,
+ willRename: willRename,
+ );
+ }
+
+ /// The server is interested in receiving didCreateFiles notifications.
+ final FileOperationRegistrationOptions? didCreate;
+
+ /// The server is interested in receiving didDeleteFiles file notifications.
+ final FileOperationRegistrationOptions? didDelete;
+
+ /// The server is interested in receiving didRenameFiles notifications.
+ final FileOperationRegistrationOptions? didRename;
+
+ /// The server is interested in receiving willCreateFiles requests.
+ final FileOperationRegistrationOptions? willCreate;
+
+ /// The server is interested in receiving willDeleteFiles file requests.
+ final FileOperationRegistrationOptions? willDelete;
+
+ /// The server is interested in receiving willRenameFiles requests.
+ final FileOperationRegistrationOptions? willRename;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ if (didCreate != null) {
+ __result['didCreate'] = didCreate?.toJson();
+ }
+ if (didDelete != null) {
+ __result['didDelete'] = didDelete?.toJson();
+ }
+ if (didRename != null) {
+ __result['didRename'] = didRename?.toJson();
+ }
+ if (willCreate != null) {
+ __result['willCreate'] = willCreate?.toJson();
+ }
+ if (willDelete != null) {
+ __result['willDelete'] = willDelete?.toJson();
+ }
+ if (willRename != null) {
+ __result['willRename'] = willRename?.toJson();
+ }
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('didCreate');
+ try {
+ final didCreate = obj['didCreate'];
+ if (didCreate != null &&
+ !(FileOperationRegistrationOptions.canParse(didCreate, reporter))) {
+ reporter
+ .reportError('must be of type FileOperationRegistrationOptions');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('didDelete');
+ try {
+ final didDelete = obj['didDelete'];
+ if (didDelete != null &&
+ !(FileOperationRegistrationOptions.canParse(didDelete, reporter))) {
+ reporter
+ .reportError('must be of type FileOperationRegistrationOptions');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('didRename');
+ try {
+ final didRename = obj['didRename'];
+ if (didRename != null &&
+ !(FileOperationRegistrationOptions.canParse(didRename, reporter))) {
+ reporter
+ .reportError('must be of type FileOperationRegistrationOptions');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('willCreate');
+ try {
+ final willCreate = obj['willCreate'];
+ if (willCreate != null &&
+ !(FileOperationRegistrationOptions.canParse(
+ willCreate, reporter))) {
+ reporter
+ .reportError('must be of type FileOperationRegistrationOptions');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('willDelete');
+ try {
+ final willDelete = obj['willDelete'];
+ if (willDelete != null &&
+ !(FileOperationRegistrationOptions.canParse(
+ willDelete, reporter))) {
+ reporter
+ .reportError('must be of type FileOperationRegistrationOptions');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('willRename');
+ try {
+ final willRename = obj['willRename'];
+ if (willRename != null &&
+ !(FileOperationRegistrationOptions.canParse(
+ willRename, reporter))) {
+ reporter
+ .reportError('must be of type FileOperationRegistrationOptions');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError('must be of type FileOperationOptions');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is FileOperationOptions &&
+ other.runtimeType == FileOperationOptions) {
+ return didCreate == other.didCreate &&
+ didDelete == other.didDelete &&
+ didRename == other.didRename &&
+ willCreate == other.willCreate &&
+ willDelete == other.willDelete &&
+ willRename == other.willRename &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => Object.hash(
+ didCreate,
+ didDelete,
+ didRename,
+ willCreate,
+ willDelete,
+ willRename,
+ );
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
/// A pattern to describe in which file operation requests or notifications the
/// server is interested in.
/// @since 3.16.0
@@ -18590,6 +18509,287 @@
String toString() => jsonEncoder.convert(toJson());
}
+class GeneralClientCapabilities implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ GeneralClientCapabilities.canParse,
+ GeneralClientCapabilities.fromJson,
+ );
+
+ GeneralClientCapabilities({
+ this.markdown,
+ this.positionEncodings,
+ this.regularExpressions,
+ this.staleRequestSupport,
+ });
+ static GeneralClientCapabilities fromJson(Map<String, Object?> json) {
+ final markdownJson = json['markdown'];
+ final markdown = markdownJson != null
+ ? MarkdownClientCapabilities.fromJson(
+ markdownJson as Map<String, Object?>)
+ : null;
+ final positionEncodingsJson = json['positionEncodings'];
+ final positionEncodings = (positionEncodingsJson as List<Object?>?)
+ ?.map((item) => PositionEncodingKind.fromJson(item as String))
+ .toList();
+ final regularExpressionsJson = json['regularExpressions'];
+ final regularExpressions = regularExpressionsJson != null
+ ? RegularExpressionsClientCapabilities.fromJson(
+ regularExpressionsJson as Map<String, Object?>)
+ : null;
+ final staleRequestSupportJson = json['staleRequestSupport'];
+ final staleRequestSupport = staleRequestSupportJson != null
+ ? GeneralClientCapabilitiesStaleRequestSupport.fromJson(
+ staleRequestSupportJson as Map<String, Object?>)
+ : null;
+ return GeneralClientCapabilities(
+ markdown: markdown,
+ positionEncodings: positionEncodings,
+ regularExpressions: regularExpressions,
+ staleRequestSupport: staleRequestSupport,
+ );
+ }
+
+ /// Client capabilities specific to the client's markdown parser.
+ /// @since 3.16.0
+ final MarkdownClientCapabilities? markdown;
+
+ /// The position encodings supported by the client. Client and server have to
+ /// agree on the same position encoding to ensure that offsets (e.g. character
+ /// position in a line) are interpreted the same on both side.
+ ///
+ /// To keep the protocol backwards compatible the following applies: if the
+ /// value 'utf-16' is missing from the array of position encodings servers can
+ /// assume that the client supports UTF-16. UTF-16 is therefore a mandatory
+ /// encoding.
+ ///
+ /// If omitted it defaults to ['utf-16'].
+ ///
+ /// Implementation considerations: since the conversion from one encoding into
+ /// another requires the content of the file / line the conversion is best
+ /// done where the file is read which is usually on the server side.
+ /// @since 3.17.0
+ final List<PositionEncodingKind>? positionEncodings;
+
+ /// Client capabilities specific to regular expressions.
+ /// @since 3.16.0
+ final RegularExpressionsClientCapabilities? regularExpressions;
+
+ /// Client capability that signals how the client handles stale requests (e.g.
+ /// a request for which the client will not process the response anymore since
+ /// the information is outdated).
+ /// @since 3.17.0
+ final GeneralClientCapabilitiesStaleRequestSupport? staleRequestSupport;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ if (markdown != null) {
+ __result['markdown'] = markdown?.toJson();
+ }
+ if (positionEncodings != null) {
+ __result['positionEncodings'] =
+ positionEncodings?.map((item) => item.toJson()).toList();
+ }
+ if (regularExpressions != null) {
+ __result['regularExpressions'] = regularExpressions?.toJson();
+ }
+ if (staleRequestSupport != null) {
+ __result['staleRequestSupport'] = staleRequestSupport?.toJson();
+ }
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('markdown');
+ try {
+ final markdown = obj['markdown'];
+ if (markdown != null &&
+ !(MarkdownClientCapabilities.canParse(markdown, reporter))) {
+ reporter.reportError('must be of type MarkdownClientCapabilities');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('positionEncodings');
+ try {
+ final positionEncodings = obj['positionEncodings'];
+ if (positionEncodings != null &&
+ !((positionEncodings is List<Object?> &&
+ (positionEncodings.every((item) =>
+ PositionEncodingKind.canParse(item, reporter)))))) {
+ reporter.reportError('must be of type List<PositionEncodingKind>');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('regularExpressions');
+ try {
+ final regularExpressions = obj['regularExpressions'];
+ if (regularExpressions != null &&
+ !(RegularExpressionsClientCapabilities.canParse(
+ regularExpressions, reporter))) {
+ reporter.reportError(
+ 'must be of type RegularExpressionsClientCapabilities');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('staleRequestSupport');
+ try {
+ final staleRequestSupport = obj['staleRequestSupport'];
+ if (staleRequestSupport != null &&
+ !(GeneralClientCapabilitiesStaleRequestSupport.canParse(
+ staleRequestSupport, reporter))) {
+ reporter.reportError(
+ 'must be of type GeneralClientCapabilitiesStaleRequestSupport');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError('must be of type GeneralClientCapabilities');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is GeneralClientCapabilities &&
+ other.runtimeType == GeneralClientCapabilities) {
+ return markdown == other.markdown &&
+ listEqual(positionEncodings, other.positionEncodings,
+ (PositionEncodingKind a, PositionEncodingKind b) => a == b) &&
+ regularExpressions == other.regularExpressions &&
+ staleRequestSupport == other.staleRequestSupport &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => Object.hash(
+ markdown,
+ lspHashCode(positionEncodings),
+ regularExpressions,
+ staleRequestSupport,
+ );
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
+class GeneralClientCapabilitiesStaleRequestSupport implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ GeneralClientCapabilitiesStaleRequestSupport.canParse,
+ GeneralClientCapabilitiesStaleRequestSupport.fromJson,
+ );
+
+ GeneralClientCapabilitiesStaleRequestSupport({
+ required this.cancel,
+ required this.retryOnContentModified,
+ });
+ static GeneralClientCapabilitiesStaleRequestSupport fromJson(
+ Map<String, Object?> json) {
+ final cancelJson = json['cancel'];
+ final cancel = cancelJson as bool;
+ final retryOnContentModifiedJson = json['retryOnContentModified'];
+ final retryOnContentModified = (retryOnContentModifiedJson as List<Object?>)
+ .map((item) => item as String)
+ .toList();
+ return GeneralClientCapabilitiesStaleRequestSupport(
+ cancel: cancel,
+ retryOnContentModified: retryOnContentModified,
+ );
+ }
+
+ /// The client will actively cancel the request.
+ final bool cancel;
+
+ /// The list of requests for which the client will retry the request if it
+ /// receives a response with error code `ContentModified``
+ final List<String> retryOnContentModified;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ __result['cancel'] = cancel;
+ __result['retryOnContentModified'] = retryOnContentModified;
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('cancel');
+ try {
+ if (!obj.containsKey('cancel')) {
+ reporter.reportError('must not be undefined');
+ return false;
+ }
+ final cancel = obj['cancel'];
+ if (cancel == null) {
+ reporter.reportError('must not be null');
+ return false;
+ }
+ if (!(cancel is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ reporter.push('retryOnContentModified');
+ try {
+ if (!obj.containsKey('retryOnContentModified')) {
+ reporter.reportError('must not be undefined');
+ return false;
+ }
+ final retryOnContentModified = obj['retryOnContentModified'];
+ if (retryOnContentModified == null) {
+ reporter.reportError('must not be null');
+ return false;
+ }
+ if (!((retryOnContentModified is List<Object?> &&
+ (retryOnContentModified.every((item) => item is String))))) {
+ reporter.reportError('must be of type List<String>');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError(
+ 'must be of type GeneralClientCapabilitiesStaleRequestSupport');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is GeneralClientCapabilitiesStaleRequestSupport &&
+ other.runtimeType == GeneralClientCapabilitiesStaleRequestSupport) {
+ return cancel == other.cancel &&
+ listEqual(retryOnContentModified, other.retryOnContentModified,
+ (String a, String b) => a == b) &&
+ true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => Object.hash(
+ cancel,
+ lspHashCode(retryOnContentModified),
+ );
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
/// The result of a hover request.
class Hover implements ToJsonable {
static const jsonHandler = LspJsonHandler(
@@ -18983,101 +19183,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-class HoverParamsPosition implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- HoverParamsPosition.canParse,
- HoverParamsPosition.fromJson,
- );
-
- HoverParamsPosition({
- required this.character,
- required this.line,
- });
- static HoverParamsPosition fromJson(Map<String, Object?> json) {
- final characterJson = json['character'];
- final character = characterJson as int;
- final lineJson = json['line'];
- final line = lineJson as int;
- return HoverParamsPosition(
- character: character,
- line: line,
- );
- }
-
- final int character;
- final int line;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- __result['character'] = character;
- __result['line'] = line;
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('character');
- try {
- if (!obj.containsKey('character')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final character = obj['character'];
- if (character == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!(character is int)) {
- reporter.reportError('must be of type int');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('line');
- try {
- if (!obj.containsKey('line')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final line = obj['line'];
- if (line == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!(line is int)) {
- reporter.reportError('must be of type int');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError('must be of type HoverParamsPosition');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is HoverParamsPosition &&
- other.runtimeType == HoverParamsPosition) {
- return character == other.character && line == other.line && true;
- }
- return false;
- }
-
- @override
- int get hashCode => Object.hash(
- character,
- line,
- );
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
class HoverRegistrationOptions
implements HoverOptions, TextDocumentRegistrationOptions, ToJsonable {
static const jsonHandler = LspJsonHandler(
@@ -19175,73 +19280,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-class HoverResult implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- HoverResult.canParse,
- HoverResult.fromJson,
- );
-
- HoverResult({
- required this.value,
- });
- static HoverResult fromJson(Map<String, Object?> json) {
- final valueJson = json['value'];
- final value = valueJson as String;
- return HoverResult(
- value: value,
- );
- }
-
- final String value;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- __result['value'] = value;
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('value');
- try {
- if (!obj.containsKey('value')) {
- reporter.reportError('must not be undefined');
- return false;
- }
- final value = obj['value'];
- if (value == null) {
- reporter.reportError('must not be null');
- return false;
- }
- if (!(value is String)) {
- reporter.reportError('must be of type String');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError('must be of type HoverResult');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is HoverResult && other.runtimeType == HoverResult) {
- return value == other.value && true;
- }
- return false;
- }
-
- @override
- int get hashCode => value.hashCode;
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
class ImplementationClientCapabilities implements ToJsonable {
static const jsonHandler = LspJsonHandler(
ImplementationClientCapabilities.canParse,
@@ -19687,28 +19725,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-/// Known error codes for an `InitializeErrorCodes`;
-class InitializeErrorCodes implements ToJsonable {
- const InitializeErrorCodes(this._value);
- const InitializeErrorCodes.fromJson(this._value);
-
- final int _value;
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- return obj is int;
- }
-
- Object toJson() => _value;
-
- @override
- String toString() => _value.toString();
-
- @override
- int get hashCode => _value.hashCode;
-
- bool operator ==(Object o) => o is InitializeErrorCodes && o._value == _value;
-}
-
class InitializeParams implements WorkDoneProgressParams, ToJsonable {
static const jsonHandler = LspJsonHandler(
InitializeParams.canParse,
@@ -21497,29 +21513,55 @@
);
InlineValueContext({
+ required this.frameId,
required this.stoppedLocation,
});
static InlineValueContext fromJson(Map<String, Object?> json) {
+ final frameIdJson = json['frameId'];
+ final frameId = frameIdJson as int;
final stoppedLocationJson = json['stoppedLocation'];
final stoppedLocation =
Range.fromJson(stoppedLocationJson as Map<String, Object?>);
return InlineValueContext(
+ frameId: frameId,
stoppedLocation: stoppedLocation,
);
}
+ /// The stack frame (as a DAP Id) where the execution has stopped.
+ final int frameId;
+
/// The document range where execution has stopped. Typically the end position
/// of the range denotes the line where the inline values are shown.
final Range stoppedLocation;
Map<String, Object?> toJson() {
var __result = <String, Object?>{};
+ __result['frameId'] = frameId;
__result['stoppedLocation'] = stoppedLocation.toJson();
return __result;
}
static bool canParse(Object? obj, LspJsonReporter reporter) {
if (obj is Map<String, Object?>) {
+ reporter.push('frameId');
+ try {
+ if (!obj.containsKey('frameId')) {
+ reporter.reportError('must not be undefined');
+ return false;
+ }
+ final frameId = obj['frameId'];
+ if (frameId == null) {
+ reporter.reportError('must not be null');
+ return false;
+ }
+ if (!(frameId is int)) {
+ reporter.reportError('must be of type int');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
reporter.push('stoppedLocation');
try {
if (!obj.containsKey('stoppedLocation')) {
@@ -21549,13 +21591,18 @@
bool operator ==(Object other) {
if (other is InlineValueContext &&
other.runtimeType == InlineValueContext) {
- return stoppedLocation == other.stoppedLocation && true;
+ return frameId == other.frameId &&
+ stoppedLocation == other.stoppedLocation &&
+ true;
}
return false;
}
@override
- int get hashCode => stoppedLocation.hashCode;
+ int get hashCode => Object.hash(
+ frameId,
+ stoppedLocation,
+ );
@override
String toString() => jsonEncoder.convert(toJson());
@@ -24036,6 +24083,9 @@
/// Constant for the 'textDocument/definition' method.
static const textDocument_definition = Method('textDocument/definition');
+ /// Constant for the 'textDocument/diagnostic' method.
+ static const textDocument_diagnostic = Method('textDocument/diagnostic');
+
/// Constant for the 'textDocument/didChange' method.
static const textDocument_didChange = Method('textDocument/didChange');
@@ -24186,6 +24236,9 @@
/// Constant for the 'workspace/configuration' method.
static const workspace_configuration = Method('workspace/configuration');
+ /// Constant for the 'workspace/diagnostic' method.
+ static const workspace_diagnostic = Method('workspace/diagnostic');
+
/// Constant for the 'workspace/diagnostic/refresh' method.
static const workspace_diagnostic_refresh =
Method('workspace/diagnostic/refresh');
@@ -25529,7 +25582,7 @@
.toList();
final structureJson = json['structure'];
final structure = structureJson != null
- ? NotebookDocumentChangeEventStructure.fromJson(
+ ? NotebookDocumentChangeEventCellsStructure.fromJson(
structureJson as Map<String, Object?>)
: null;
final textContentJson = json['textContent'];
@@ -25549,7 +25602,7 @@
final List<NotebookCell>? data;
/// Changes to the cell structure to add or remove cells.
- final NotebookDocumentChangeEventStructure? structure;
+ final NotebookDocumentChangeEventCellsStructure? structure;
/// Changes to the text content of notebook cells.
final List<NotebookDocumentChangeEventTextContent>? textContent;
@@ -25588,10 +25641,10 @@
try {
final structure = obj['structure'];
if (structure != null &&
- !(NotebookDocumentChangeEventStructure.canParse(
+ !(NotebookDocumentChangeEventCellsStructure.canParse(
structure, reporter))) {
reporter.reportError(
- 'must be of type NotebookDocumentChangeEventStructure');
+ 'must be of type NotebookDocumentChangeEventCellsStructure');
return false;
}
} finally {
@@ -25648,18 +25701,18 @@
String toString() => jsonEncoder.convert(toJson());
}
-class NotebookDocumentChangeEventStructure implements ToJsonable {
+class NotebookDocumentChangeEventCellsStructure implements ToJsonable {
static const jsonHandler = LspJsonHandler(
- NotebookDocumentChangeEventStructure.canParse,
- NotebookDocumentChangeEventStructure.fromJson,
+ NotebookDocumentChangeEventCellsStructure.canParse,
+ NotebookDocumentChangeEventCellsStructure.fromJson,
);
- NotebookDocumentChangeEventStructure({
+ NotebookDocumentChangeEventCellsStructure({
required this.array,
this.didClose,
this.didOpen,
});
- static NotebookDocumentChangeEventStructure fromJson(
+ static NotebookDocumentChangeEventCellsStructure fromJson(
Map<String, Object?> json) {
final arrayJson = json['array'];
final array =
@@ -25673,7 +25726,7 @@
final didOpen = (didOpenJson as List<Object?>?)
?.map((item) => TextDocumentItem.fromJson(item as Map<String, Object?>))
.toList();
- return NotebookDocumentChangeEventStructure(
+ return NotebookDocumentChangeEventCellsStructure(
array: array,
didClose: didClose,
didOpen: didOpen,
@@ -25749,16 +25802,16 @@
}
return true;
} else {
- reporter
- .reportError('must be of type NotebookDocumentChangeEventStructure');
+ reporter.reportError(
+ 'must be of type NotebookDocumentChangeEventCellsStructure');
return false;
}
}
@override
bool operator ==(Object other) {
- if (other is NotebookDocumentChangeEventStructure &&
- other.runtimeType == NotebookDocumentChangeEventStructure) {
+ if (other is NotebookDocumentChangeEventCellsStructure &&
+ other.runtimeType == NotebookDocumentChangeEventCellsStructure) {
return array == other.array &&
listEqual(didClose, other.didClose,
(TextDocumentIdentifier a, TextDocumentIdentifier b) => a == b) &&
@@ -35133,215 +35186,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-class ServerCapabilitiesFileOperations implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- ServerCapabilitiesFileOperations.canParse,
- ServerCapabilitiesFileOperations.fromJson,
- );
-
- ServerCapabilitiesFileOperations({
- this.didCreate,
- this.didDelete,
- this.didRename,
- this.willCreate,
- this.willDelete,
- this.willRename,
- });
- static ServerCapabilitiesFileOperations fromJson(Map<String, Object?> json) {
- final didCreateJson = json['didCreate'];
- final didCreate = didCreateJson != null
- ? FileOperationRegistrationOptions.fromJson(
- didCreateJson as Map<String, Object?>)
- : null;
- final didDeleteJson = json['didDelete'];
- final didDelete = didDeleteJson != null
- ? FileOperationRegistrationOptions.fromJson(
- didDeleteJson as Map<String, Object?>)
- : null;
- final didRenameJson = json['didRename'];
- final didRename = didRenameJson != null
- ? FileOperationRegistrationOptions.fromJson(
- didRenameJson as Map<String, Object?>)
- : null;
- final willCreateJson = json['willCreate'];
- final willCreate = willCreateJson != null
- ? FileOperationRegistrationOptions.fromJson(
- willCreateJson as Map<String, Object?>)
- : null;
- final willDeleteJson = json['willDelete'];
- final willDelete = willDeleteJson != null
- ? FileOperationRegistrationOptions.fromJson(
- willDeleteJson as Map<String, Object?>)
- : null;
- final willRenameJson = json['willRename'];
- final willRename = willRenameJson != null
- ? FileOperationRegistrationOptions.fromJson(
- willRenameJson as Map<String, Object?>)
- : null;
- return ServerCapabilitiesFileOperations(
- didCreate: didCreate,
- didDelete: didDelete,
- didRename: didRename,
- willCreate: willCreate,
- willDelete: willDelete,
- willRename: willRename,
- );
- }
-
- /// The server is interested in receiving didCreateFiles notifications.
- final FileOperationRegistrationOptions? didCreate;
-
- /// The server is interested in receiving didDeleteFiles file notifications.
- final FileOperationRegistrationOptions? didDelete;
-
- /// The server is interested in receiving didRenameFiles notifications.
- final FileOperationRegistrationOptions? didRename;
-
- /// The server is interested in receiving willCreateFiles requests.
- final FileOperationRegistrationOptions? willCreate;
-
- /// The server is interested in receiving willDeleteFiles file requests.
- final FileOperationRegistrationOptions? willDelete;
-
- /// The server is interested in receiving willRenameFiles requests.
- final FileOperationRegistrationOptions? willRename;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- if (didCreate != null) {
- __result['didCreate'] = didCreate?.toJson();
- }
- if (didDelete != null) {
- __result['didDelete'] = didDelete?.toJson();
- }
- if (didRename != null) {
- __result['didRename'] = didRename?.toJson();
- }
- if (willCreate != null) {
- __result['willCreate'] = willCreate?.toJson();
- }
- if (willDelete != null) {
- __result['willDelete'] = willDelete?.toJson();
- }
- if (willRename != null) {
- __result['willRename'] = willRename?.toJson();
- }
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('didCreate');
- try {
- final didCreate = obj['didCreate'];
- if (didCreate != null &&
- !(FileOperationRegistrationOptions.canParse(didCreate, reporter))) {
- reporter
- .reportError('must be of type FileOperationRegistrationOptions');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('didDelete');
- try {
- final didDelete = obj['didDelete'];
- if (didDelete != null &&
- !(FileOperationRegistrationOptions.canParse(didDelete, reporter))) {
- reporter
- .reportError('must be of type FileOperationRegistrationOptions');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('didRename');
- try {
- final didRename = obj['didRename'];
- if (didRename != null &&
- !(FileOperationRegistrationOptions.canParse(didRename, reporter))) {
- reporter
- .reportError('must be of type FileOperationRegistrationOptions');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('willCreate');
- try {
- final willCreate = obj['willCreate'];
- if (willCreate != null &&
- !(FileOperationRegistrationOptions.canParse(
- willCreate, reporter))) {
- reporter
- .reportError('must be of type FileOperationRegistrationOptions');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('willDelete');
- try {
- final willDelete = obj['willDelete'];
- if (willDelete != null &&
- !(FileOperationRegistrationOptions.canParse(
- willDelete, reporter))) {
- reporter
- .reportError('must be of type FileOperationRegistrationOptions');
- return false;
- }
- } finally {
- reporter.pop();
- }
- reporter.push('willRename');
- try {
- final willRename = obj['willRename'];
- if (willRename != null &&
- !(FileOperationRegistrationOptions.canParse(
- willRename, reporter))) {
- reporter
- .reportError('must be of type FileOperationRegistrationOptions');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError('must be of type ServerCapabilitiesFileOperations');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is ServerCapabilitiesFileOperations &&
- other.runtimeType == ServerCapabilitiesFileOperations) {
- return didCreate == other.didCreate &&
- didDelete == other.didDelete &&
- didRename == other.didRename &&
- willCreate == other.willCreate &&
- willDelete == other.willDelete &&
- willRename == other.willRename &&
- true;
- }
- return false;
- }
-
- @override
- int get hashCode => Object.hash(
- didCreate,
- didDelete,
- didRename,
- willCreate,
- willDelete,
- willRename,
- );
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
class ServerCapabilitiesWorkspace implements ToJsonable {
static const jsonHandler = LspJsonHandler(
ServerCapabilitiesWorkspace.canParse,
@@ -35355,7 +35199,7 @@
static ServerCapabilitiesWorkspace fromJson(Map<String, Object?> json) {
final fileOperationsJson = json['fileOperations'];
final fileOperations = fileOperationsJson != null
- ? ServerCapabilitiesFileOperations.fromJson(
+ ? FileOperationOptions.fromJson(
fileOperationsJson as Map<String, Object?>)
: null;
final workspaceFoldersJson = json['workspaceFolders'];
@@ -35371,7 +35215,7 @@
/// The server is interested in file notifications/requests.
/// @since 3.16.0
- final ServerCapabilitiesFileOperations? fileOperations;
+ final FileOperationOptions? fileOperations;
/// The server supports workspace folder.
/// @since 3.6.0
@@ -35394,10 +35238,8 @@
try {
final fileOperations = obj['fileOperations'];
if (fileOperations != null &&
- !(ServerCapabilitiesFileOperations.canParse(
- fileOperations, reporter))) {
- reporter
- .reportError('must be of type ServerCapabilitiesFileOperations');
+ !(FileOperationOptions.canParse(fileOperations, reporter))) {
+ reporter.reportError('must be of type FileOperationOptions');
return false;
}
} finally {
@@ -36434,75 +36276,6 @@
String toString() => jsonEncoder.convert(toJson());
}
-class SignatureHelpClientCapabilitiesParameterInformation
- implements ToJsonable {
- static const jsonHandler = LspJsonHandler(
- SignatureHelpClientCapabilitiesParameterInformation.canParse,
- SignatureHelpClientCapabilitiesParameterInformation.fromJson,
- );
-
- SignatureHelpClientCapabilitiesParameterInformation({
- this.labelOffsetSupport,
- });
- static SignatureHelpClientCapabilitiesParameterInformation fromJson(
- Map<String, Object?> json) {
- final labelOffsetSupportJson = json['labelOffsetSupport'];
- final labelOffsetSupport = labelOffsetSupportJson as bool?;
- return SignatureHelpClientCapabilitiesParameterInformation(
- labelOffsetSupport: labelOffsetSupport,
- );
- }
-
- /// The client supports processing label offsets instead of a simple label
- /// string.
- /// @since 3.14.0
- final bool? labelOffsetSupport;
-
- Map<String, Object?> toJson() {
- var __result = <String, Object?>{};
- if (labelOffsetSupport != null) {
- __result['labelOffsetSupport'] = labelOffsetSupport;
- }
- return __result;
- }
-
- static bool canParse(Object? obj, LspJsonReporter reporter) {
- if (obj is Map<String, Object?>) {
- reporter.push('labelOffsetSupport');
- try {
- final labelOffsetSupport = obj['labelOffsetSupport'];
- if (labelOffsetSupport != null && !(labelOffsetSupport is bool)) {
- reporter.reportError('must be of type bool');
- return false;
- }
- } finally {
- reporter.pop();
- }
- return true;
- } else {
- reporter.reportError(
- 'must be of type SignatureHelpClientCapabilitiesParameterInformation');
- return false;
- }
- }
-
- @override
- bool operator ==(Object other) {
- if (other is SignatureHelpClientCapabilitiesParameterInformation &&
- other.runtimeType ==
- SignatureHelpClientCapabilitiesParameterInformation) {
- return labelOffsetSupport == other.labelOffsetSupport && true;
- }
- return false;
- }
-
- @override
- int get hashCode => labelOffsetSupport.hashCode;
-
- @override
- String toString() => jsonEncoder.convert(toJson());
-}
-
class SignatureHelpClientCapabilitiesSignatureInformation
implements ToJsonable {
static const jsonHandler = LspJsonHandler(
@@ -36525,7 +36298,7 @@
.toList();
final parameterInformationJson = json['parameterInformation'];
final parameterInformation = parameterInformationJson != null
- ? SignatureHelpClientCapabilitiesParameterInformation.fromJson(
+ ? SignatureInformationParameterInformation.fromJson(
parameterInformationJson as Map<String, Object?>)
: null;
return SignatureHelpClientCapabilitiesSignatureInformation(
@@ -36545,8 +36318,7 @@
final List<MarkupKind>? documentationFormat;
/// Client capabilities specific to parameter information.
- final SignatureHelpClientCapabilitiesParameterInformation?
- parameterInformation;
+ final SignatureInformationParameterInformation? parameterInformation;
Map<String, Object?> toJson() {
var __result = <String, Object?>{};
@@ -36593,10 +36365,10 @@
try {
final parameterInformation = obj['parameterInformation'];
if (parameterInformation != null &&
- !(SignatureHelpClientCapabilitiesParameterInformation.canParse(
+ !(SignatureInformationParameterInformation.canParse(
parameterInformation, reporter))) {
reporter.reportError(
- 'must be of type SignatureHelpClientCapabilitiesParameterInformation');
+ 'must be of type SignatureInformationParameterInformation');
return false;
}
} finally {
@@ -37435,6 +37207,73 @@
String toString() => jsonEncoder.convert(toJson());
}
+class SignatureInformationParameterInformation implements ToJsonable {
+ static const jsonHandler = LspJsonHandler(
+ SignatureInformationParameterInformation.canParse,
+ SignatureInformationParameterInformation.fromJson,
+ );
+
+ SignatureInformationParameterInformation({
+ this.labelOffsetSupport,
+ });
+ static SignatureInformationParameterInformation fromJson(
+ Map<String, Object?> json) {
+ final labelOffsetSupportJson = json['labelOffsetSupport'];
+ final labelOffsetSupport = labelOffsetSupportJson as bool?;
+ return SignatureInformationParameterInformation(
+ labelOffsetSupport: labelOffsetSupport,
+ );
+ }
+
+ /// The client supports processing label offsets instead of a simple label
+ /// string.
+ /// @since 3.14.0
+ final bool? labelOffsetSupport;
+
+ Map<String, Object?> toJson() {
+ var __result = <String, Object?>{};
+ if (labelOffsetSupport != null) {
+ __result['labelOffsetSupport'] = labelOffsetSupport;
+ }
+ return __result;
+ }
+
+ static bool canParse(Object? obj, LspJsonReporter reporter) {
+ if (obj is Map<String, Object?>) {
+ reporter.push('labelOffsetSupport');
+ try {
+ final labelOffsetSupport = obj['labelOffsetSupport'];
+ if (labelOffsetSupport != null && !(labelOffsetSupport is bool)) {
+ reporter.reportError('must be of type bool');
+ return false;
+ }
+ } finally {
+ reporter.pop();
+ }
+ return true;
+ } else {
+ reporter.reportError(
+ 'must be of type SignatureInformationParameterInformation');
+ return false;
+ }
+ }
+
+ @override
+ bool operator ==(Object other) {
+ if (other is SignatureInformationParameterInformation &&
+ other.runtimeType == SignatureInformationParameterInformation) {
+ return labelOffsetSupport == other.labelOffsetSupport && true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode => labelOffsetSupport.hashCode;
+
+ @override
+ String toString() => jsonEncoder.convert(toJson());
+}
+
/// Static registration options to be returned in the initialize request.
class StaticRegistrationOptions implements ToJsonable {
static const jsonHandler = LspJsonHandler(
@@ -43510,7 +43349,7 @@
: null;
final fileOperationsJson = json['fileOperations'];
final fileOperations = fileOperationsJson != null
- ? ClientCapabilitiesFileOperations.fromJson(
+ ? FileOperationClientCapabilities.fromJson(
fileOperationsJson as Map<String, Object?>)
: null;
final inlayHintJson = json['inlayHint'];
@@ -43587,7 +43426,7 @@
/// The client has support for file requests/notifications.
/// @since 3.16.0
- final ClientCapabilitiesFileOperations? fileOperations;
+ final FileOperationClientCapabilities? fileOperations;
/// Client workspace capabilities specific to inlay hints.
/// @since 3.17.0
@@ -43750,10 +43589,10 @@
try {
final fileOperations = obj['fileOperations'];
if (fileOperations != null &&
- !(ClientCapabilitiesFileOperations.canParse(
+ !(FileOperationClientCapabilities.canParse(
fileOperations, reporter))) {
reporter
- .reportError('must be of type ClientCapabilitiesFileOperations');
+ .reportError('must be of type FileOperationClientCapabilities');
return false;
}
} finally {
diff --git a/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart b/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
index 7147ebd..5b47d0a 100644
--- a/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
+++ b/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
@@ -283,7 +283,7 @@
),
fileOperations: dynamicRegistrations.fileOperations
? null
- : ServerCapabilitiesFileOperations(
+ : FileOperationOptions(
willRename: fileOperationRegistrationOptions,
),
),
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
index 41b97d1..f2046c1 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
@@ -39,7 +39,7 @@
if (enumElement.isEnum) {
enumName = enumElement.name;
for (var field in enumElement.fields) {
- if (!field.isSynthetic) {
+ if (field.isEnumConstant) {
enumConstantNames.add(field.name);
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart
index 5cf8e0f..17327b7 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart
@@ -106,6 +106,9 @@
var parameterElement = expression.staticElement;
for (var parameter in constructor.parameters.parameters) {
if (parameter.declaredElement == parameterElement) {
+ if (parameter is DefaultFormalParameter) {
+ parameter = parameter.parameter;
+ }
return parameter is SimpleFormalParameter ? parameter : null;
}
}
diff --git a/pkg/analysis_server/test/analysis/notification_navigation_test.dart b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
index eaa1e0a..a397b81 100644
--- a/pkg/analysis_server/test/analysis/notification_navigation_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
@@ -583,18 +583,51 @@
// don't check regions, but there should be no exceptions
}
- Future<void> test_class_fieldFormalParameter() async {
+ Future<void> test_class_fieldFormalParameter_requiredNamed() async {
addTestFile('''
-class AAA {
- int fff = 123;
- AAA(this.fff);
+class A {
+ final int f;
+ A({required this.f}) : assert(f > 0);
}
''');
await prepareNavigation();
- assertHasRegionTarget('fff);', 'fff = 123');
+ assertHasRegionTarget('this.f', 'f;');
+ assertHasRegionTarget('f}) :', 'f;');
+ assertHasRegionTarget('f > 0', 'f}) :');
}
- Future<void> test_class_fieldFormalParameter_unresolved() async {
+ Future<void> test_class_fieldFormalParameter_requiredPositional() async {
+ addTestFile('''
+class A {
+ final int f;
+ A(this.f) : assert(f > 0);
+}
+''');
+ await prepareNavigation();
+ assertHasRegionTarget('this.f', 'f;');
+ assertHasRegionTarget('f) :', 'f;');
+ assertHasRegionTarget('f > 0', 'f) :');
+ }
+
+ Future<void>
+ test_class_fieldFormalParameter_requiredPositional_functionTyped() async {
+ addTestFile('''
+class B {
+ final Object f;
+ B(int this.f<T>(T a)) : assert(f is Object);
+}
+''');
+ await prepareNavigation();
+ assertHasRegionTarget('f<T>', 'f;');
+ assertHasRegion('int ');
+ assertHasRegionTarget('T>', 'T>');
+ assertHasRegionTarget('T a', 'T>');
+ assertHasRegionTarget('a))', 'a))');
+ assertHasRegionTarget('f is', 'f<T>');
+ }
+
+ Future<void>
+ test_class_fieldFormalParameter_requiredPositional_unresolved() async {
addTestFile('''
class AAA {
AAA(this.fff);
@@ -1343,28 +1376,30 @@
Future<void> test_superFormalParameter_requiredNamed() async {
addTestFile('''
class A {
- A({required int a}); // 0
+ A({required int a});
}
class B extends A {
- B({required super.a}); // 1
+ B({required super.a}) : assert(a > 0);
}
''');
await prepareNavigation();
- assertHasRegionTarget('a}); // 1', 'a}); // 0');
+ assertHasRegionTarget('a}) :', 'a});');
+ assertHasRegionTarget('a > 0', 'a}) :');
}
Future<void> test_superFormalParameter_requiredPositional() async {
addTestFile('''
class A {
- A(int a); // 0
+ A(int a);
}
class B extends A {
- B(super.a); // 1
+ B(super.a) : assert(a > 0);
}
''');
await prepareNavigation();
- assertHasRegionTarget('super.a', 'a); // 0');
- assertHasRegionTarget('a); // 1', 'a); // 0');
+ assertHasRegionTarget('super.a', 'a);');
+ assertHasRegionTarget('a) :', 'a);');
+ assertHasRegionTarget('a > 0', 'a) :');
}
Future<void>
@@ -1374,7 +1409,7 @@
A(Object a); // 0
}
class B extends A {
- B(int super.a<T>(T b)); // 1
+ B(int super.a<T>(T b)) : assert(a is Object);
}
''');
await prepareNavigation();
@@ -1383,6 +1418,8 @@
assertHasRegionTarget('T>', 'T>');
assertHasRegionTarget('T b', 'T>');
assertHasRegionTarget('b))', 'b))');
+ assertHasRegionTarget('b))', 'b))');
+ assertHasRegionTarget('a is', 'a<T>');
}
Future<void> test_superFormalParameter_requiredPositional_unresolved() async {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart
index 2d950bd..8c6eaea 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart
@@ -89,6 +89,43 @@
''');
}
+ Future<void> test_final() async {
+ await resolveTestCode('''
+enum E {
+ a(0),
+ b(1);
+
+ final int f;
+ const E(this.f);
+}
+
+void f(E e) {
+ switch (e) {
+ }
+}
+''');
+ await assertHasFixWithFilter('''
+enum E {
+ a(0),
+ b(1);
+
+ final int f;
+ const E(this.f);
+}
+
+void f(E e) {
+ switch (e) {
+ case E.a:
+ // TODO: Handle this case.
+ break;
+ case E.b:
+ // TODO: Handle this case.
+ break;
+ }
+}
+''');
+ }
+
Future<void> test_incomplete_switchStatement() async {
await resolveTestCode(r'''
enum E {a, b, c}
@@ -125,4 +162,74 @@
}
''');
}
+
+ Future<void> test_static() async {
+ await resolveTestCode('''
+enum E {
+ a,
+ b;
+
+ static int s = 1;
+}
+
+void f(E e) {
+ switch (e) {
+ }
+}
+''');
+ await assertHasFixWithFilter('''
+enum E {
+ a,
+ b;
+
+ static int s = 1;
+}
+
+void f(E e) {
+ switch (e) {
+ case E.a:
+ // TODO: Handle this case.
+ break;
+ case E.b:
+ // TODO: Handle this case.
+ break;
+ }
+}
+''');
+ }
+
+ Future<void> test_static_const() async {
+ await resolveTestCode('''
+enum E {
+ a,
+ b;
+
+ static const int s = 1;
+}
+
+void f(E e) {
+ switch (e) {
+ }
+}
+''');
+ await assertHasFixWithFilter('''
+enum E {
+ a,
+ b;
+
+ static const int s = 1;
+}
+
+void f(E e) {
+ switch (e) {
+ case E.a:
+ // TODO: Handle this case.
+ break;
+ case E.b:
+ // TODO: Handle this case.
+ break;
+ }
+}
+''');
+ }
}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/convert_to_initializing_formal_test.dart b/pkg/analysis_server/test/src/services/correction/fix/convert_to_initializing_formal_test.dart
index e082d34..d926b29 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/convert_to_initializing_formal_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/convert_to_initializing_formal_test.dart
@@ -23,7 +23,7 @@
@override
String get lintCode => LintNames.prefer_initializing_formals;
- Future<void> test_assignment_different_type() async {
+ Future<void> test_assignment_differentType() async {
await resolveTestCode('''
class C {
Object a = '';
@@ -59,6 +59,23 @@
''');
}
+ Future<void> test_assignment_named() async {
+ await resolveTestCode('''
+class C {
+ int? a;
+ C({int? a = 1}) {
+ this.a = a;
+ }
+}
+''');
+ await assertHasFix('''
+class C {
+ int? a;
+ C({this.a = 1});
+}
+''');
+ }
+
Future<void> test_assignment_notEmptyAfterRemoval() async {
await resolveTestCode('''
class C {
@@ -79,7 +96,24 @@
''');
}
- Future<void> test_initializer_different_type() async {
+ Future<void> test_assignment_positional_differentType() async {
+ await resolveTestCode('''
+class C {
+ Object? a;
+ C([String? a]) {
+ this.a = a;
+ }
+}
+''');
+ await assertHasFix('''
+class C {
+ Object? a;
+ C([String? this.a]);
+}
+''');
+ }
+
+ Future<void> test_initializer_differentType() async {
await resolveTestCode('''
class C {
final Object name;
@@ -109,6 +143,21 @@
''');
}
+ Future<void> test_initializer_named_differentType() async {
+ await resolveTestCode('''
+class C {
+ Object? a;
+ C({String? a}) : a = a;
+}
+''');
+ await assertHasFix('''
+class C {
+ Object? a;
+ C({String? this.a});
+}
+''');
+ }
+
Future<void> test_initializer_notEmptyAfterRemoval() async {
await resolveTestCode('''
class C {
@@ -125,4 +174,19 @@
}
''');
}
+
+ Future<void> test_initializer_positional() async {
+ await resolveTestCode('''
+class C {
+ int? a;
+ C([int? a = 1]): a = a;
+}
+''');
+ await assertHasFix('''
+class C {
+ int? a;
+ C([this.a = 1]);
+}
+''');
+ }
}
diff --git a/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart b/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart
index 4661b5c..f10b8ce 100644
--- a/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart
+++ b/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart
@@ -16,10 +16,10 @@
});
test('with list fields can be checked for equality', () {
- final a = CodeActionClientCapabilitiesCodeActionKind(
+ final a = CodeActionLiteralSupportCodeActionKind(
valueSet: [CodeActionKind.QuickFix],
);
- final b = CodeActionClientCapabilitiesCodeActionKind(
+ final b = CodeActionLiteralSupportCodeActionKind(
valueSet: [CodeActionKind.QuickFix],
);
diff --git a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
index 13931a9..d01feea 100644
--- a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
+++ b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
@@ -73,7 +73,23 @@
// the migration to JSON meta_model.
'ClientCapabilitiesWindow': 'WindowClientCapabilities',
'ClientCapabilitiesWorkspace': 'WorkspaceClientCapabilities',
+ 'ClientCapabilitiesFileOperations': 'FileOperationClientCapabilities',
+ 'ServerCapabilitiesFileOperations': 'FileOperationOptions',
+ 'ClientCapabilitiesGeneral': 'GeneralClientCapabilities',
+ 'CompletionClientCapabilitiesInsertTextModeSupport':
+ 'CompletionItemInsertTextModeSupport',
+ 'CompletionClientCapabilitiesResolveSupport':
+ 'CompletionItemResolveSupport',
+ 'CompletionClientCapabilitiesTagSupport': 'CompletionItemTagSupport',
+ 'CodeActionClientCapabilitiesCodeActionKind':
+ 'CodeActionLiteralSupportCodeActionKind',
'DocumentFilter': 'TextDocumentFilter',
+ 'ClientCapabilitiesStaleRequestSupport':
+ 'GeneralClientCapabilitiesStaleRequestSupport',
+ 'SignatureHelpClientCapabilitiesParameterInformation':
+ 'SignatureInformationParameterInformation',
+ 'NotebookDocumentChangeEventStructure':
+ 'NotebookDocumentChangeEventCellsStructure',
};
for (final type in types) {
diff --git a/pkg/analysis_server/tool/lsp_spec/generate_all.dart b/pkg/analysis_server/tool/lsp_spec/generate_all.dart
index 86764dc..57b545b 100644
--- a/pkg/analysis_server/tool/lsp_spec/generate_all.dart
+++ b/pkg/analysis_server/tool/lsp_spec/generate_all.dart
@@ -386,7 +386,11 @@
// of the LSP spec.
if (input.trim() == r"export const EOL: string[] = ['\n', '\r\n', '\r'];" ||
input.startsWith('textDocument.codeAction.resolveSupport =') ||
- input.startsWith('textDocument.inlayHint.resolveSupport =')) {
+ input.startsWith('textDocument.inlayHint.resolveSupport =') ||
+ // These two are example definitions, the real definitions start "export"
+ // and contain some base classes.
+ input.startsWith('interface HoverParams {') ||
+ input.startsWith('interface HoverResult {')) {
return false;
}
diff --git a/pkg/analysis_server/tool/lsp_spec/lsp_specification.md b/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
index fb1e6d3..55fd7f4 100644
--- a/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
+++ b/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
@@ -29,11 +29,13 @@
fullTitle: Language Server Protocol Specification - 3.17
index: 2
redirect_from:
- - /specification
- - /specifications/specification-current
+ - specification
+ - specification/
+ - specifications/specification-current
+ - specifications/specification-current/
---
-This document describes the upcoming 3.17.x version of the language server protocol. An implementation for node of the 3.17.x version of the protocol can be found [here](https://github.com/Microsoft/vscode-languageserver-node).
+This document describes the 3.17.x version of the language server protocol. An implementation for node of the 3.17.x version of the protocol can be found [here](https://github.com/Microsoft/vscode-languageserver-node).
**Note:** edits to this specification can be made via a pull request against this markdown [document](https://github.com/Microsoft/language-server-protocol/blob/gh-pages/_specifications/lsp/3.17/specification.md).
@@ -194,7 +196,7 @@
#### <a href="#responseMessage" name="responseMessage" class="anchor"> Response Message </a>
-A Response Message sent as a result of a request. If a request doesn't provide a result value the receiver of a request still needs to return a response message to conform to the JSON RPC specification. The result property of the ResponseMessage should be set to `null` in this case to signal a successful request.
+A Response Message sent as a result of a request. If a request doesn't provide a result value the receiver of a request still needs to return a response message to conform to the JSON-RPC specification. The result property of the ResponseMessage should be set to `null` in this case to signal a successful request.
```typescript
interface ResponseMessage extends Message {
@@ -242,7 +244,7 @@
```typescript
export namespace ErrorCodes {
- // Defined by JSON RPC
+ // Defined by JSON-RPC
export const ParseError: integer = -32700;
export const InvalidRequest: integer = -32600;
export const MethodNotFound: integer = -32601;
@@ -250,7 +252,7 @@
export const InternalError: integer = -32603;
/**
- * This is the start range of JSON RPC reserved error codes.
+ * This is the start range of JSON-RPC reserved error codes.
* It doesn't denote a real error code. No LSP error codes should
* be defined between the start and end range. For backwards
* compatibility the `ServerNotInitialized` and the `UnknownErrorCode`
@@ -270,7 +272,7 @@
export const UnknownErrorCode: integer = -32001;
/**
- * This is the end range of JSON RPC reserved error codes.
+ * This is the end range of JSON-RPC reserved error codes.
* It doesn't denote a real error code.
*
* @since 3.16.0
@@ -372,7 +374,7 @@
}
```
-A request that got canceled still needs to return from the server and send a response back. It can not be left open / hanging. This is in line with the JSON RPC protocol that requires that every request sends a response back. In addition it allows for returning partial results on cancel. If the request returns an error response on cancellation it is advised to set the error code to `ErrorCodes.RequestCancelled`.
+A request that got canceled still needs to return from the server and send a response back. It can not be left open / hanging. This is in line with the JSON-RPC protocol that requires that every request sends a response back. In addition it allows for returning partial results on cancel. If the request returns an error response on cancellation it is advised to set the error code to `ErrorCodes.RequestCancelled`.
#### <a href="#progress" name="progress" class="anchor"> Progress Support (:arrow_right: :arrow_left:)</a>
@@ -2884,7 +2886,7 @@
Since most of the registration options require to specify a document selector there is a base interface that can be used. See `TextDocumentRegistrationOptions`.
-An example JSON RPC message to register dynamically for the `textDocument/willSaveWaitUntil` feature on the client side is as follows (only details shown):
+An example JSON-RPC message to register dynamically for the `textDocument/willSaveWaitUntil` feature on the client side is as follows (only details shown):
```json
{
@@ -2985,7 +2987,7 @@
}
```
-An example JSON RPC message to unregister the above registered `textDocument/willSaveWaitUntil` feature looks like this:
+An example JSON-RPC message to unregister the above registered `textDocument/willSaveWaitUntil` feature looks like this:
```json
{
@@ -6902,6 +6904,11 @@
*/
export interface InlineValueContext {
/**
+ * The stack frame (as a DAP Id) where the execution has stopped.
+ */
+ frameId: integer;
+
+ /**
* The document range where execution has stopped.
* Typically the end position of the range denotes the line where the
* inline values are shown.
diff --git a/pkg/analysis_server/tool/lsp_spec/markdown.dart b/pkg/analysis_server/tool/lsp_spec/markdown.dart
index 530ee49..2a245f0 100644
--- a/pkg/analysis_server/tool/lsp_spec/markdown.dart
+++ b/pkg/analysis_server/tool/lsp_spec/markdown.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
final _methodNamesPattern =
- RegExp(r'''\* method: ['`](.*?)[`'],?\r?\n''', multiLine: true);
+ RegExp(r'''\* method: ['`](.*?)[`'][,.]?\r?\n''', multiLine: true);
final _typeScriptBlockPattern =
RegExp(r'\B```typescript([\S\s]*?)\n\s*```', multiLine: true);
diff --git a/pkg/analysis_server/tool/lsp_spec/typescript.dart b/pkg/analysis_server/tool/lsp_spec/typescript.dart
index 44e6f02..0027724 100644
--- a/pkg/analysis_server/tool/lsp_spec/typescript.dart
+++ b/pkg/analysis_server/tool/lsp_spec/typescript.dart
@@ -149,6 +149,9 @@
// have to handle any cases where both a namespace and interfaces are declared
// with the same name.
return node.name != 'InitializeError' &&
+ // We don't use `InitializeErrorCodes` as it contains only one error code
+ // that has been deprecated and we've never used.
+ node.name != 'InitializeErrorCodes' &&
// We don't emit MarkedString because it gets mapped to a simple String
// when getting the .dartType for it.
// .startsWith() because there are inline types that will be generated.
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
index 7e6d842..c28b106 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.g.dart
@@ -190,7 +190,8 @@
enableString: EnableString.inference_update_1,
isEnabledByDefault: IsEnabledByDefault.inference_update_1,
isExpired: IsExpired.inference_update_1,
- documentation: 'Enhanced type inference',
+ documentation:
+ 'Horizontal type inference for function expressions passed to generic invocations.',
experimentalReleaseVersion: null,
releaseVersion: null,
);
diff --git a/pkg/analyzer/lib/src/error/use_result_verifier.dart b/pkg/analyzer/lib/src/error/use_result_verifier.dart
index 3a0fd4f..0fec4a1 100644
--- a/pkg/analyzer/lib/src/error/use_result_verifier.dart
+++ b/pkg/analyzer/lib/src/error/use_result_verifier.dart
@@ -223,6 +223,7 @@
parent is ListLiteral ||
parent is MapLiteralEntry ||
parent is MethodInvocation ||
+ parent is NamedExpression ||
parent is PropertyAccess ||
parent is ReturnStatement ||
parent is SetOrMapLiteral ||
diff --git a/pkg/analyzer/test/src/diagnostics/unused_result_test.dart b/pkg/analyzer/test/src/diagnostics/unused_result_test.dart
index df5b5d2..f45f182 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_result_test.dart
@@ -1117,6 +1117,23 @@
''');
}
+ test_namedExpression() async {
+ await assertNoErrorsInCode(r'''
+import 'package:meta/meta.dart';
+
+class A {
+ @useResult
+ int m() => 1;
+}
+
+void g({int? i}) {}
+
+void f() {
+ g(i: A().m());
+}
+''');
+ }
+
test_topLevelFunction_result_assigned() async {
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart';
diff --git a/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart b/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
index 56ec6a3..38053a2 100644
--- a/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
+++ b/pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart
@@ -71,9 +71,6 @@
void _addRegion(int offset, int length, Element? element) {
element = element?.nonSynthetic;
- if (element is FieldFormalParameterElement) {
- element = element.field;
- }
if (element == null || element == DynamicElementImpl.instance) {
return;
}
@@ -346,6 +343,19 @@
}
@override
+ void visitFieldFormalParameter(FieldFormalParameter node) {
+ final element = node.declaredElement;
+ if (element is FieldFormalParameterElementImpl) {
+ computer._addRegionForToken(node.thisKeyword, element.field);
+ computer._addRegionForNode(node.identifier, element.field);
+ }
+
+ node.type?.accept(this);
+ node.typeParameters?.accept(this);
+ node.parameters?.accept(this);
+ }
+
+ @override
void visitImportDirective(ImportDirective node) {
var importElement = node.element;
if (importElement != null) {
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index e737994..bce15d9 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -272,10 +272,10 @@
->object_store()
->build_nongeneric_method_extractor_code());
- const intptr_t stub_index = __ object_pool_builder().AddObject(
- build_method_extractor, ObjectPool::Patchability::kNotPatchable);
- const intptr_t function_index = __ object_pool_builder().AddObject(
- extracted_method, ObjectPool::Patchability::kNotPatchable);
+ const intptr_t stub_index =
+ __ object_pool_builder().FindObject(build_method_extractor);
+ const intptr_t function_index =
+ __ object_pool_builder().FindObject(extracted_method);
// We use a custom pool register to preserve caller PP.
Register kPoolReg = R0;
@@ -728,11 +728,15 @@
__ Push(reg);
__ PushObject(obj);
if (is_optimizing()) {
- __ BranchLinkPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ // No breakpoints in optimized code.
+ __ BranchLink(StubCode::OptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kOther, deopt_id, source);
} else {
+ // Patchable to support breakpoints.
__ BranchLinkPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id,
+ source);
}
- AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id, source);
// Stub returns result in flags (result of a cmp, we need Z computed).
__ Drop(1); // Discard constant.
__ Pop(reg); // Restore 'reg'.
@@ -752,7 +756,7 @@
__ Push(left);
__ Push(right);
if (is_optimizing()) {
- __ BranchLinkPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ __ BranchLink(StubCode::OptimizedIdenticalWithNumberCheck());
} else {
__ BranchLinkPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
}
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index d7a6ff6..7f86e88 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -263,10 +263,10 @@
->object_store()
->build_nongeneric_method_extractor_code());
- const intptr_t stub_index = __ object_pool_builder().AddObject(
- build_method_extractor, ObjectPool::Patchability::kNotPatchable);
- const intptr_t function_index = __ object_pool_builder().AddObject(
- extracted_method, ObjectPool::Patchability::kNotPatchable);
+ const intptr_t stub_index =
+ __ object_pool_builder().FindObject(build_method_extractor);
+ const intptr_t function_index =
+ __ object_pool_builder().FindObject(extracted_method);
// We use a custom pool register to preserve caller PP.
Register kPoolReg = R0;
@@ -717,11 +717,15 @@
__ LoadObject(TMP, obj);
__ PushPair(TMP, reg);
if (is_optimizing()) {
- __ BranchLinkPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ // No breakpoints in optimized code.
+ __ BranchLink(StubCode::OptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kOther, deopt_id, source);
} else {
+ // Patchable to support breakpoints.
__ BranchLinkPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id,
+ source);
}
- AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id, source);
// Stub returns result in flags (result of a cmp, we need Z computed).
// Discard constant.
// Restore 'reg'.
@@ -741,7 +745,7 @@
if (needs_number_check) {
__ PushPair(right, left);
if (is_optimizing()) {
- __ BranchLinkPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ __ BranchLink(StubCode::OptimizedIdenticalWithNumberCheck());
} else {
__ BranchLinkPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
}
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
index 6e0172d..7a3215d 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
@@ -252,10 +252,10 @@
->object_store()
->build_nongeneric_method_extractor_code());
- const intptr_t stub_index = __ object_pool_builder().AddObject(
- build_method_extractor, ObjectPool::Patchability::kNotPatchable);
- const intptr_t function_index = __ object_pool_builder().AddObject(
- extracted_method, ObjectPool::Patchability::kNotPatchable);
+ const intptr_t stub_index =
+ __ object_pool_builder().FindObject(build_method_extractor);
+ const intptr_t function_index =
+ __ object_pool_builder().FindObject(extracted_method);
// We use a custom pool register to preserve caller PP.
Register kPoolReg = A1;
@@ -693,11 +693,15 @@
__ LoadObject(TMP, obj);
__ PushRegisterPair(TMP, reg);
if (is_optimizing()) {
- __ JumpAndLinkPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ // No breakpoints in optimized code.
+ __ JumpAndLink(StubCode::OptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kOther, deopt_id, source);
} else {
+ // Patchable to support breakpoints.
__ JumpAndLinkPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id,
+ source);
}
- AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id, source);
__ PopRegisterPair(ZR, reg);
// RISC-V has no condition flags, so the result is instead returned as
// TMP zero if equal, non-zero if non-equal.
@@ -718,7 +722,7 @@
if (needs_number_check) {
__ PushRegisterPair(right, left);
if (is_optimizing()) {
- __ JumpAndLinkPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ __ JumpAndLink(StubCode::OptimizedIdenticalWithNumberCheck());
} else {
__ JumpAndLinkPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
}
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index fe8bf0d..1c87031 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -268,10 +268,10 @@
->build_nongeneric_method_extractor_code());
ASSERT(!build_method_extractor.IsNull());
- const intptr_t stub_index = __ object_pool_builder().AddObject(
- build_method_extractor, compiler::ObjectPoolBuilderEntry::kNotPatchable);
- const intptr_t function_index = __ object_pool_builder().AddObject(
- extracted_method, compiler::ObjectPoolBuilderEntry::kNotPatchable);
+ const intptr_t stub_index =
+ __ object_pool_builder().FindObject(build_method_extractor);
+ const intptr_t function_index =
+ __ object_pool_builder().FindObject(extracted_method);
// We use a custom pool register to preserve caller PP.
Register kPoolReg = RAX;
@@ -705,11 +705,15 @@
__ pushq(reg);
__ PushObject(obj);
if (is_optimizing()) {
- __ CallPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ // No breakpoints in optimized code.
+ __ Call(StubCode::OptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kOther, deopt_id, source);
} else {
+ // Patchable to support breakpoints.
__ CallPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
+ AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id,
+ source);
}
- AddCurrentDescriptor(UntaggedPcDescriptors::kRuntimeCall, deopt_id, source);
// Stub returns result in flags (result of a cmpq, we need ZF computed).
__ popq(reg); // Discard constant.
__ popq(reg); // Restore 'reg'.
@@ -729,7 +733,7 @@
__ pushq(left);
__ pushq(right);
if (is_optimizing()) {
- __ CallPatchable(StubCode::OptimizedIdenticalWithNumberCheck());
+ __ Call(StubCode::OptimizedIdenticalWithNumberCheck());
} else {
__ CallPatchable(StubCode::UnoptimizedIdenticalWithNumberCheck());
}
diff --git a/sdk/lib/internal/internal.dart b/sdk/lib/internal/internal.dart
index a7a7eda..ff3d890 100644
--- a/sdk/lib/internal/internal.dart
+++ b/sdk/lib/internal/internal.dart
@@ -43,7 +43,7 @@
/// Can be used internally in platform library implementations of
/// data structures, where a value is known to have a type different
/// from its static type (like knowing that a string is definitely
-/// a "_OneByteString" or that the value stored into a heterogenous
+/// a "_OneByteString" or that the value stored into a heterogeneous
/// list is really a value of the surrounding map).
///
/// Must only be used for casts which would definitely *succeed*
@@ -53,7 +53,7 @@
external T unsafeCast<T>(dynamic value);
// Powers of 10 up to 10^22 are representable as doubles.
-// Powers of 10 above that are only approximate due to lack of precission.
+// Powers of 10 above that are only approximate due to lack of precision.
// Used by double-parsing.
const POWERS_OF_TEN = const [
1.0, // 0
@@ -136,7 +136,7 @@
return digit1 * 16 + digit2 - (digit2 & 256);
}
-/// A resusable `null`-valued future used by `dart:async`.
+/// A reusable `null`-valued future used by `dart:async`.
///
/// **DO NOT USE.**
///
@@ -723,7 +723,7 @@
/// If applied to a class method, or parameter of such,
/// any method implementing that interface method is also annotated.
/// If multiple `Since` annotations apply to the same declaration or
-/// parameter, the latest version takes precendence.
+/// parameter, the latest version takes precedence.
///
/// Any use of a marked API may trigger a warning if the using code
/// does not require an SDK version guaranteeing that the API is available,
diff --git a/tools/VERSION b/tools/VERSION
index 8b0a251..8f16444 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 119
+PRERELEASE 120
PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/experimental_features.yaml b/tools/experimental_features.yaml
index fbaa9d7..c1b6308 100644
--- a/tools/experimental_features.yaml
+++ b/tools/experimental_features.yaml
@@ -126,7 +126,7 @@
help: "Static meta-programming"
inference-update-1:
- help: "Enhanced type inference"
+ help: "Horizontal type inference for function expressions passed to generic invocations."
# Experiment flag only used for testing.
test-experiment: