Add URL, correction, and diagnostic messages to AnalysisIssue messages (#663)
diff --git a/lib/src/analysis_server.dart b/lib/src/analysis_server.dart
index 3d2f0d0..6570eec 100644
--- a/lib/src/analysis_server.dart
+++ b/lib/src/analysis_server.dart
@@ -321,14 +321,24 @@
// Calculate the issues.
final issues = getErrors().map((AnalysisError error) {
- return proto.AnalysisIssue()
+ final issue = proto.AnalysisIssue()
..kind = error.severity.toLowerCase()
..line = error.location.startLine
..message = error.message
..sourceName = path.basename(error.location.file)
..hasFixes = error.hasFix
..charStart = error.location.offset
- ..charLength = error.location.length;
+ ..charLength = error.location.length
+ ..diagnosticMessages.addAll(error.contextMessages?.map((m) =>
+ proto.DiagnosticMessage(
+ message: m.message,
+ line: m.location.startLine,
+ charStart: m.location.offset,
+ charLength: m.location.length)) ??
+ []);
+ if (error.url != null) issue.url = error.url;
+ if (error.correction != null) issue.correction = error.correction;
+ return issue;
}).toList();
issues.sort((a, b) {
diff --git a/lib/src/protos/dart_services.pb.dart b/lib/src/protos/dart_services.pb.dart
index f718157..2b930c3 100644
--- a/lib/src/protos/dart_services.pb.dart
+++ b/lib/src/protos/dart_services.pb.dart
@@ -60,8 +60,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
CompileRequest copyWith(void Function(CompileRequest) updates) =>
- super.copyWith((message) =>
- updates(message as CompileRequest)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as CompileRequest))
+ as CompileRequest; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static CompileRequest create() => CompileRequest._();
@@ -139,8 +139,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
CompileDDCRequest copyWith(void Function(CompileDDCRequest) updates) =>
- super.copyWith((message) => updates(
- message as CompileDDCRequest)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as CompileDDCRequest))
+ as CompileDDCRequest; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static CompileDDCRequest create() => CompileDDCRequest._();
@@ -216,8 +216,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
SourceRequest copyWith(void Function(SourceRequest) updates) =>
- super.copyWith((message) =>
- updates(message as SourceRequest)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as SourceRequest))
+ as SourceRequest; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static SourceRequest create() => SourceRequest._();
@@ -306,8 +306,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
AnalysisResults copyWith(void Function(AnalysisResults) updates) =>
- super.copyWith((message) =>
- updates(message as AnalysisResults)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as AnalysisResults))
+ as AnalysisResults; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static AnalysisResults create() => AnalysisResults._();
@@ -370,6 +370,9 @@
..aOB(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'hasFixes', protoName: 'hasFixes')
..a<$core.int>(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'charStart', $pb.PbFieldType.O3, protoName: 'charStart')
..a<$core.int>(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'charLength', $pb.PbFieldType.O3, protoName: 'charLength')
+ ..aOS(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'url')
+ ..pc<DiagnosticMessage>(9, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'diagnosticMessages', $pb.PbFieldType.PM, protoName: 'diagnosticMessages', subBuilder: DiagnosticMessage.create)
+ ..aOS(10, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'correction')
..hasRequiredFields = false;
AnalysisIssue._() : super();
@@ -381,6 +384,9 @@
$core.bool hasFixes,
$core.int charStart,
$core.int charLength,
+ $core.String url,
+ $core.Iterable<DiagnosticMessage> diagnosticMessages,
+ $core.String correction,
}) {
final _result = create();
if (kind != null) {
@@ -404,6 +410,15 @@
if (charLength != null) {
_result.charLength = charLength;
}
+ if (url != null) {
+ _result.url = url;
+ }
+ if (diagnosticMessages != null) {
+ _result.diagnosticMessages.addAll(diagnosticMessages);
+ }
+ if (correction != null) {
+ _result.correction = correction;
+ }
return _result;
}
factory AnalysisIssue.fromBuffer($core.List<$core.int> i,
@@ -420,8 +435,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
AnalysisIssue copyWith(void Function(AnalysisIssue) updates) =>
- super.copyWith((message) =>
- updates(message as AnalysisIssue)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as AnalysisIssue))
+ as AnalysisIssue; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static AnalysisIssue create() => AnalysisIssue._();
@@ -516,6 +531,159 @@
$core.bool hasCharLength() => $_has(6);
@$pb.TagNumber(7)
void clearCharLength() => clearField(7);
+
+ @$pb.TagNumber(8)
+ $core.String get url => $_getSZ(7);
+ @$pb.TagNumber(8)
+ set url($core.String v) {
+ $_setString(7, v);
+ }
+
+ @$pb.TagNumber(8)
+ $core.bool hasUrl() => $_has(7);
+ @$pb.TagNumber(8)
+ void clearUrl() => clearField(8);
+
+ @$pb.TagNumber(9)
+ $core.List<DiagnosticMessage> get diagnosticMessages => $_getList(8);
+
+ @$pb.TagNumber(10)
+ $core.String get correction => $_getSZ(9);
+ @$pb.TagNumber(10)
+ set correction($core.String v) {
+ $_setString(9, v);
+ }
+
+ @$pb.TagNumber(10)
+ $core.bool hasCorrection() => $_has(9);
+ @$pb.TagNumber(10)
+ void clearCorrection() => clearField(10);
+}
+
+class DiagnosticMessage extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(
+ const $core.bool.fromEnvironment('protobuf.omit_message_names')
+ ? ''
+ : 'DiagnosticMessage',
+ package: const $pb.PackageName(
+ $core.bool.fromEnvironment('protobuf.omit_message_names')
+ ? ''
+ : 'dart_services.api'),
+ createEmptyInstance: create)
+ ..aOS(
+ 1,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'message')
+ ..a<$core.int>(
+ 2,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'line',
+ $pb.PbFieldType.O3)
+ ..a<$core.int>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'charStart', $pb.PbFieldType.O3,
+ protoName: 'charStart')
+ ..a<$core.int>(
+ 4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'charLength', $pb.PbFieldType.O3,
+ protoName: 'charLength')
+ ..hasRequiredFields = false;
+
+ DiagnosticMessage._() : super();
+ factory DiagnosticMessage({
+ $core.String message,
+ $core.int line,
+ $core.int charStart,
+ $core.int charLength,
+ }) {
+ final _result = create();
+ if (message != null) {
+ _result.message = message;
+ }
+ if (line != null) {
+ _result.line = line;
+ }
+ if (charStart != null) {
+ _result.charStart = charStart;
+ }
+ if (charLength != null) {
+ _result.charLength = charLength;
+ }
+ return _result;
+ }
+ factory DiagnosticMessage.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory DiagnosticMessage.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DiagnosticMessage clone() => DiagnosticMessage()..mergeFromMessage(this);
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DiagnosticMessage copyWith(void Function(DiagnosticMessage) updates) =>
+ super.copyWith((message) => updates(message as DiagnosticMessage))
+ as DiagnosticMessage; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DiagnosticMessage create() => DiagnosticMessage._();
+ DiagnosticMessage createEmptyInstance() => create();
+ static $pb.PbList<DiagnosticMessage> createRepeated() =>
+ $pb.PbList<DiagnosticMessage>();
+ @$core.pragma('dart2js:noInline')
+ static DiagnosticMessage getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor<DiagnosticMessage>(create);
+ static DiagnosticMessage _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get message => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set message($core.String v) {
+ $_setString(0, v);
+ }
+
+ @$pb.TagNumber(1)
+ $core.bool hasMessage() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearMessage() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.int get line => $_getIZ(1);
+ @$pb.TagNumber(2)
+ set line($core.int v) {
+ $_setSignedInt32(1, v);
+ }
+
+ @$pb.TagNumber(2)
+ $core.bool hasLine() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearLine() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.int get charStart => $_getIZ(2);
+ @$pb.TagNumber(3)
+ set charStart($core.int v) {
+ $_setSignedInt32(2, v);
+ }
+
+ @$pb.TagNumber(3)
+ $core.bool hasCharStart() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearCharStart() => clearField(3);
+
+ @$pb.TagNumber(4)
+ $core.int get charLength => $_getIZ(3);
+ @$pb.TagNumber(4)
+ set charLength($core.int v) {
+ $_setSignedInt32(3, v);
+ }
+
+ @$pb.TagNumber(4)
+ $core.bool hasCharLength() => $_has(3);
+ @$pb.TagNumber(4)
+ void clearCharLength() => clearField(4);
}
class VersionRequest extends $pb.GeneratedMessage {
@@ -546,8 +714,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
VersionRequest copyWith(void Function(VersionRequest) updates) =>
- super.copyWith((message) =>
- updates(message as VersionRequest)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as VersionRequest))
+ as VersionRequest; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static VersionRequest create() => VersionRequest._();
@@ -617,8 +785,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
CompileResponse copyWith(void Function(CompileResponse) updates) =>
- super.copyWith((message) =>
- updates(message as CompileResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as CompileResponse))
+ as CompileResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static CompileResponse create() => CompileResponse._();
@@ -726,8 +894,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
CompileDDCResponse copyWith(void Function(CompileDDCResponse) updates) =>
- super.copyWith((message) => updates(
- message as CompileDDCResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as CompileDDCResponse))
+ as CompileDDCResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static CompileDDCResponse create() => CompileDDCResponse._();
@@ -830,8 +998,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
DocumentResponse copyWith(void Function(DocumentResponse) updates) =>
- super.copyWith((message) => updates(
- message as DocumentResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as DocumentResponse))
+ as DocumentResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static DocumentResponse create() => DocumentResponse._();
@@ -919,8 +1087,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
CompleteResponse copyWith(void Function(CompleteResponse) updates) =>
- super.copyWith((message) => updates(
- message as CompleteResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as CompleteResponse))
+ as CompleteResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static CompleteResponse create() => CompleteResponse._();
@@ -1019,8 +1187,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
Completion copyWith(void Function(Completion) updates) =>
- super.copyWith((message) =>
- updates(message as Completion)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as Completion))
+ as Completion; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static Completion create() => Completion._();
@@ -1085,8 +1253,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
FixesResponse copyWith(void Function(FixesResponse) updates) =>
- super.copyWith((message) =>
- updates(message as FixesResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as FixesResponse))
+ as FixesResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static FixesResponse create() => FixesResponse._();
@@ -1175,8 +1343,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
ProblemAndFixes copyWith(void Function(ProblemAndFixes) updates) =>
- super.copyWith((message) =>
- updates(message as ProblemAndFixes)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as ProblemAndFixes))
+ as ProblemAndFixes; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static ProblemAndFixes create() => ProblemAndFixes._();
@@ -1290,8 +1458,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
CandidateFix copyWith(void Function(CandidateFix) updates) =>
- super.copyWith((message) =>
- updates(message as CandidateFix)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as CandidateFix))
+ as CandidateFix; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static CandidateFix create() => CandidateFix._();
@@ -1392,8 +1560,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
SourceEdit copyWith(void Function(SourceEdit) updates) =>
- super.copyWith((message) =>
- updates(message as SourceEdit)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as SourceEdit))
+ as SourceEdit; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static SourceEdit create() => SourceEdit._();
@@ -1501,8 +1669,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
LinkedEditGroup copyWith(void Function(LinkedEditGroup) updates) =>
- super.copyWith((message) =>
- updates(message as LinkedEditGroup)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as LinkedEditGroup))
+ as LinkedEditGroup; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static LinkedEditGroup create() => LinkedEditGroup._();
@@ -1584,8 +1752,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
LinkedEditSuggestion copyWith(void Function(LinkedEditSuggestion) updates) =>
- super.copyWith((message) => updates(
- message as LinkedEditSuggestion)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as LinkedEditSuggestion))
+ as LinkedEditSuggestion; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static LinkedEditSuggestion create() => LinkedEditSuggestion._();
@@ -1678,8 +1846,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
FormatResponse copyWith(void Function(FormatResponse) updates) =>
- super.copyWith((message) =>
- updates(message as FormatResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as FormatResponse))
+ as FormatResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static FormatResponse create() => FormatResponse._();
@@ -1780,8 +1948,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
AssistsResponse copyWith(void Function(AssistsResponse) updates) =>
- super.copyWith((message) =>
- updates(message as AssistsResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as AssistsResponse))
+ as AssistsResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static AssistsResponse create() => AssistsResponse._();
@@ -1892,8 +2060,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
VersionResponse copyWith(void Function(VersionResponse) updates) =>
- super.copyWith((message) =>
- updates(message as VersionResponse)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as VersionResponse))
+ as VersionResponse; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static VersionResponse create() => VersionResponse._();
@@ -2058,8 +2226,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
BadRequest copyWith(void Function(BadRequest) updates) =>
- super.copyWith((message) =>
- updates(message as BadRequest)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as BadRequest))
+ as BadRequest; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static BadRequest create() => BadRequest._();
@@ -2126,8 +2294,8 @@
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
ErrorMessage copyWith(void Function(ErrorMessage) updates) =>
- super.copyWith((message) =>
- updates(message as ErrorMessage)); // ignore: deprecated_member_use
+ super.copyWith((message) => updates(message as ErrorMessage))
+ as ErrorMessage; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static ErrorMessage create() => ErrorMessage._();
diff --git a/lib/src/protos/dart_services.pbjson.dart b/lib/src/protos/dart_services.pbjson.dart
index b85ece2..882922c 100644
--- a/lib/src/protos/dart_services.pbjson.dart
+++ b/lib/src/protos/dart_services.pbjson.dart
@@ -3,8 +3,13 @@
// source: protos/dart_services.proto
//
// @dart = 2.7
-// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
+// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
+import 'dart:core' as $core;
+import 'dart:convert' as $convert;
+import 'dart:typed_data' as $typed_data;
+
+@$core.Deprecated('Use compileRequestDescriptor instead')
const CompileRequest$json = {
'1': 'CompileRequest',
'2': [
@@ -13,6 +18,10 @@
],
};
+/// Descriptor for `CompileRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List compileRequestDescriptor = $convert.base64Decode(
+ 'Cg5Db21waWxlUmVxdWVzdBIWCgZzb3VyY2UYASABKAlSBnNvdXJjZRIoCg9yZXR1cm5Tb3VyY2VNYXAYAiABKAhSD3JldHVyblNvdXJjZU1hcA==');
+@$core.Deprecated('Use compileDDCRequestDescriptor instead')
const CompileDDCRequest$json = {
'1': 'CompileDDCRequest',
'2': [
@@ -20,6 +29,10 @@
],
};
+/// Descriptor for `CompileDDCRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List compileDDCRequestDescriptor = $convert.base64Decode(
+ 'ChFDb21waWxlRERDUmVxdWVzdBIWCgZzb3VyY2UYASABKAlSBnNvdXJjZQ==');
+@$core.Deprecated('Use sourceRequestDescriptor instead')
const SourceRequest$json = {
'1': 'SourceRequest',
'2': [
@@ -28,6 +41,10 @@
],
};
+/// Descriptor for `SourceRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List sourceRequestDescriptor = $convert.base64Decode(
+ 'Cg1Tb3VyY2VSZXF1ZXN0EhYKBnNvdXJjZRgBIAEoCVIGc291cmNlEhYKBm9mZnNldBgCIAEoBVIGb2Zmc2V0');
+@$core.Deprecated('Use analysisResultsDescriptor instead')
const AnalysisResults$json = {
'1': 'AnalysisResults',
'2': [
@@ -51,6 +68,10 @@
],
};
+/// Descriptor for `AnalysisResults`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List analysisResultsDescriptor = $convert.base64Decode(
+ 'Cg9BbmFseXNpc1Jlc3VsdHMSOAoGaXNzdWVzGAEgAygLMiAuZGFydF9zZXJ2aWNlcy5hcGkuQW5hbHlzaXNJc3N1ZVIGaXNzdWVzEiYKDnBhY2thZ2VJbXBvcnRzGAIgAygJUg5wYWNrYWdlSW1wb3J0cxI1CgVlcnJvchhjIAEoCzIfLmRhcnRfc2VydmljZXMuYXBpLkVycm9yTWVzc2FnZVIFZXJyb3I=');
+@$core.Deprecated('Use analysisIssueDescriptor instead')
const AnalysisIssue$json = {
'1': 'AnalysisIssue',
'2': [
@@ -61,13 +82,45 @@
{'1': 'hasFixes', '3': 5, '4': 1, '5': 8, '10': 'hasFixes'},
{'1': 'charStart', '3': 6, '4': 1, '5': 5, '10': 'charStart'},
{'1': 'charLength', '3': 7, '4': 1, '5': 5, '10': 'charLength'},
+ {'1': 'url', '3': 8, '4': 1, '5': 9, '10': 'url'},
+ {
+ '1': 'diagnosticMessages',
+ '3': 9,
+ '4': 3,
+ '5': 11,
+ '6': '.dart_services.api.DiagnosticMessage',
+ '10': 'diagnosticMessages'
+ },
+ {'1': 'correction', '3': 10, '4': 1, '5': 9, '10': 'correction'},
],
};
+/// Descriptor for `AnalysisIssue`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List analysisIssueDescriptor = $convert.base64Decode(
+ 'Cg1BbmFseXNpc0lzc3VlEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEbGluZRgCIAEoBVIEbGluZRIYCgdtZXNzYWdlGAMgASgJUgdtZXNzYWdlEh4KCnNvdXJjZU5hbWUYBCABKAlSCnNvdXJjZU5hbWUSGgoIaGFzRml4ZXMYBSABKAhSCGhhc0ZpeGVzEhwKCWNoYXJTdGFydBgGIAEoBVIJY2hhclN0YXJ0Eh4KCmNoYXJMZW5ndGgYByABKAVSCmNoYXJMZW5ndGgSEAoDdXJsGAggASgJUgN1cmwSVAoSZGlhZ25vc3RpY01lc3NhZ2VzGAkgAygLMiQuZGFydF9zZXJ2aWNlcy5hcGkuRGlhZ25vc3RpY01lc3NhZ2VSEmRpYWdub3N0aWNNZXNzYWdlcxIeCgpjb3JyZWN0aW9uGAogASgJUgpjb3JyZWN0aW9u');
+@$core.Deprecated('Use diagnosticMessageDescriptor instead')
+const DiagnosticMessage$json = {
+ '1': 'DiagnosticMessage',
+ '2': [
+ {'1': 'message', '3': 1, '4': 1, '5': 9, '10': 'message'},
+ {'1': 'line', '3': 2, '4': 1, '5': 5, '10': 'line'},
+ {'1': 'charStart', '3': 3, '4': 1, '5': 5, '10': 'charStart'},
+ {'1': 'charLength', '3': 4, '4': 1, '5': 5, '10': 'charLength'},
+ ],
+};
+
+/// Descriptor for `DiagnosticMessage`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List diagnosticMessageDescriptor = $convert.base64Decode(
+ 'ChFEaWFnbm9zdGljTWVzc2FnZRIYCgdtZXNzYWdlGAEgASgJUgdtZXNzYWdlEhIKBGxpbmUYAiABKAVSBGxpbmUSHAoJY2hhclN0YXJ0GAMgASgFUgljaGFyU3RhcnQSHgoKY2hhckxlbmd0aBgEIAEoBVIKY2hhckxlbmd0aA==');
+@$core.Deprecated('Use versionRequestDescriptor instead')
const VersionRequest$json = {
'1': 'VersionRequest',
};
+/// Descriptor for `VersionRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List versionRequestDescriptor =
+ $convert.base64Decode('Cg5WZXJzaW9uUmVxdWVzdA==');
+@$core.Deprecated('Use compileResponseDescriptor instead')
const CompileResponse$json = {
'1': 'CompileResponse',
'2': [
@@ -84,6 +137,10 @@
],
};
+/// Descriptor for `CompileResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List compileResponseDescriptor = $convert.base64Decode(
+ 'Cg9Db21waWxlUmVzcG9uc2USFgoGcmVzdWx0GAEgASgJUgZyZXN1bHQSHAoJc291cmNlTWFwGAIgASgJUglzb3VyY2VNYXASNQoFZXJyb3IYYyABKAsyHy5kYXJ0X3NlcnZpY2VzLmFwaS5FcnJvck1lc3NhZ2VSBWVycm9y');
+@$core.Deprecated('Use compileDDCResponseDescriptor instead')
const CompileDDCResponse$json = {
'1': 'CompileDDCResponse',
'2': [
@@ -100,6 +157,10 @@
],
};
+/// Descriptor for `CompileDDCResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List compileDDCResponseDescriptor = $convert.base64Decode(
+ 'ChJDb21waWxlRERDUmVzcG9uc2USFgoGcmVzdWx0GAEgASgJUgZyZXN1bHQSJgoObW9kdWxlc0Jhc2VVcmwYAiABKAlSDm1vZHVsZXNCYXNlVXJsEjUKBWVycm9yGGMgASgLMh8uZGFydF9zZXJ2aWNlcy5hcGkuRXJyb3JNZXNzYWdlUgVlcnJvcg==');
+@$core.Deprecated('Use documentResponseDescriptor instead')
const DocumentResponse$json = {
'1': 'DocumentResponse',
'2': [
@@ -123,6 +184,7 @@
'3': [DocumentResponse_InfoEntry$json],
};
+@$core.Deprecated('Use documentResponseDescriptor instead')
const DocumentResponse_InfoEntry$json = {
'1': 'InfoEntry',
'2': [
@@ -132,6 +194,10 @@
'7': {'7': true},
};
+/// Descriptor for `DocumentResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List documentResponseDescriptor = $convert.base64Decode(
+ 'ChBEb2N1bWVudFJlc3BvbnNlEkEKBGluZm8YASADKAsyLS5kYXJ0X3NlcnZpY2VzLmFwaS5Eb2N1bWVudFJlc3BvbnNlLkluZm9FbnRyeVIEaW5mbxI1CgVlcnJvchhjIAEoCzIfLmRhcnRfc2VydmljZXMuYXBpLkVycm9yTWVzc2FnZVIFZXJyb3IaNwoJSW5mb0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAE=');
+@$core.Deprecated('Use completeResponseDescriptor instead')
const CompleteResponse$json = {
'1': 'CompleteResponse',
'2': [
@@ -168,6 +234,10 @@
],
};
+/// Descriptor for `CompleteResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List completeResponseDescriptor = $convert.base64Decode(
+ 'ChBDb21wbGV0ZVJlc3BvbnNlEiwKEXJlcGxhY2VtZW50T2Zmc2V0GAEgASgFUhFyZXBsYWNlbWVudE9mZnNldBIsChFyZXBsYWNlbWVudExlbmd0aBgCIAEoBVIRcmVwbGFjZW1lbnRMZW5ndGgSPwoLY29tcGxldGlvbnMYAyADKAsyHS5kYXJ0X3NlcnZpY2VzLmFwaS5Db21wbGV0aW9uUgtjb21wbGV0aW9ucxI1CgVlcnJvchhjIAEoCzIfLmRhcnRfc2VydmljZXMuYXBpLkVycm9yTWVzc2FnZVIFZXJyb3I=');
+@$core.Deprecated('Use completionDescriptor instead')
const Completion$json = {
'1': 'Completion',
'2': [
@@ -183,6 +253,7 @@
'3': [Completion_CompletionEntry$json],
};
+@$core.Deprecated('Use completionDescriptor instead')
const Completion_CompletionEntry$json = {
'1': 'CompletionEntry',
'2': [
@@ -192,6 +263,10 @@
'7': {'7': true},
};
+/// Descriptor for `Completion`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List completionDescriptor = $convert.base64Decode(
+ 'CgpDb21wbGV0aW9uEk0KCmNvbXBsZXRpb24YASADKAsyLS5kYXJ0X3NlcnZpY2VzLmFwaS5Db21wbGV0aW9uLkNvbXBsZXRpb25FbnRyeVIKY29tcGxldGlvbho9Cg9Db21wbGV0aW9uRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4AQ==');
+@$core.Deprecated('Use fixesResponseDescriptor instead')
const FixesResponse$json = {
'1': 'FixesResponse',
'2': [
@@ -214,6 +289,10 @@
],
};
+/// Descriptor for `FixesResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List fixesResponseDescriptor = $convert.base64Decode(
+ 'Cg1GaXhlc1Jlc3BvbnNlEjgKBWZpeGVzGAEgAygLMiIuZGFydF9zZXJ2aWNlcy5hcGkuUHJvYmxlbUFuZEZpeGVzUgVmaXhlcxI1CgVlcnJvchhjIAEoCzIfLmRhcnRfc2VydmljZXMuYXBpLkVycm9yTWVzc2FnZVIFZXJyb3I=');
+@$core.Deprecated('Use problemAndFixesDescriptor instead')
const ProblemAndFixes$json = {
'1': 'ProblemAndFixes',
'2': [
@@ -231,6 +310,10 @@
],
};
+/// Descriptor for `ProblemAndFixes`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List problemAndFixesDescriptor = $convert.base64Decode(
+ 'Cg9Qcm9ibGVtQW5kRml4ZXMSNQoFZml4ZXMYASADKAsyHy5kYXJ0X3NlcnZpY2VzLmFwaS5DYW5kaWRhdGVGaXhSBWZpeGVzEiYKDnByb2JsZW1NZXNzYWdlGAIgASgJUg5wcm9ibGVtTWVzc2FnZRIWCgZvZmZzZXQYAyABKAVSBm9mZnNldBIWCgZsZW5ndGgYBCABKAVSBmxlbmd0aA==');
+@$core.Deprecated('Use candidateFixDescriptor instead')
const CandidateFix$json = {
'1': 'CandidateFix',
'2': [
@@ -255,6 +338,10 @@
],
};
+/// Descriptor for `CandidateFix`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List candidateFixDescriptor = $convert.base64Decode(
+ 'CgxDYW5kaWRhdGVGaXgSGAoHbWVzc2FnZRgBIAEoCVIHbWVzc2FnZRIzCgVlZGl0cxgCIAMoCzIdLmRhcnRfc2VydmljZXMuYXBpLlNvdXJjZUVkaXRSBWVkaXRzEigKD3NlbGVjdGlvbk9mZnNldBgDIAEoBVIPc2VsZWN0aW9uT2Zmc2V0Ek4KEGxpbmtlZEVkaXRHcm91cHMYBCADKAsyIi5kYXJ0X3NlcnZpY2VzLmFwaS5MaW5rZWRFZGl0R3JvdXBSEGxpbmtlZEVkaXRHcm91cHM=');
+@$core.Deprecated('Use sourceEditDescriptor instead')
const SourceEdit$json = {
'1': 'SourceEdit',
'2': [
@@ -264,6 +351,10 @@
],
};
+/// Descriptor for `SourceEdit`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List sourceEditDescriptor = $convert.base64Decode(
+ 'CgpTb3VyY2VFZGl0EhYKBm9mZnNldBgBIAEoBVIGb2Zmc2V0EhYKBmxlbmd0aBgCIAEoBVIGbGVuZ3RoEiAKC3JlcGxhY2VtZW50GAMgASgJUgtyZXBsYWNlbWVudA==');
+@$core.Deprecated('Use linkedEditGroupDescriptor instead')
const LinkedEditGroup$json = {
'1': 'LinkedEditGroup',
'2': [
@@ -280,6 +371,10 @@
],
};
+/// Descriptor for `LinkedEditGroup`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List linkedEditGroupDescriptor = $convert.base64Decode(
+ 'Cg9MaW5rZWRFZGl0R3JvdXASHAoJcG9zaXRpb25zGAEgAygFUglwb3NpdGlvbnMSFgoGbGVuZ3RoGAIgASgFUgZsZW5ndGgSSQoLc3VnZ2VzdGlvbnMYAyADKAsyJy5kYXJ0X3NlcnZpY2VzLmFwaS5MaW5rZWRFZGl0U3VnZ2VzdGlvblILc3VnZ2VzdGlvbnM=');
+@$core.Deprecated('Use linkedEditSuggestionDescriptor instead')
const LinkedEditSuggestion$json = {
'1': 'LinkedEditSuggestion',
'2': [
@@ -288,6 +383,10 @@
],
};
+/// Descriptor for `LinkedEditSuggestion`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List linkedEditSuggestionDescriptor = $convert.base64Decode(
+ 'ChRMaW5rZWRFZGl0U3VnZ2VzdGlvbhIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUSEgoEa2luZBgCIAEoCVIEa2luZA==');
+@$core.Deprecated('Use formatResponseDescriptor instead')
const FormatResponse$json = {
'1': 'FormatResponse',
'2': [
@@ -304,6 +403,10 @@
],
};
+/// Descriptor for `FormatResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List formatResponseDescriptor = $convert.base64Decode(
+ 'Cg5Gb3JtYXRSZXNwb25zZRIcCgluZXdTdHJpbmcYASABKAlSCW5ld1N0cmluZxIWCgZvZmZzZXQYAiABKAVSBm9mZnNldBI1CgVlcnJvchhjIAEoCzIfLmRhcnRfc2VydmljZXMuYXBpLkVycm9yTWVzc2FnZVIFZXJyb3I=');
+@$core.Deprecated('Use assistsResponseDescriptor instead')
const AssistsResponse$json = {
'1': 'AssistsResponse',
'2': [
@@ -326,6 +429,10 @@
],
};
+/// Descriptor for `AssistsResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List assistsResponseDescriptor = $convert.base64Decode(
+ 'Cg9Bc3Npc3RzUmVzcG9uc2USOQoHYXNzaXN0cxgBIAMoCzIfLmRhcnRfc2VydmljZXMuYXBpLkNhbmRpZGF0ZUZpeFIHYXNzaXN0cxI1CgVlcnJvchhjIAEoCzIfLmRhcnRfc2VydmljZXMuYXBpLkVycm9yTWVzc2FnZVIFZXJyb3I=');
+@$core.Deprecated('Use versionResponseDescriptor instead')
const VersionResponse$json = {
'1': 'VersionResponse',
'2': [
@@ -360,6 +467,10 @@
],
};
+/// Descriptor for `VersionResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List versionResponseDescriptor = $convert.base64Decode(
+ 'Cg9WZXJzaW9uUmVzcG9uc2USHgoKc2RrVmVyc2lvbhgBIAEoCVIKc2RrVmVyc2lvbhImCg5zZGtWZXJzaW9uRnVsbBgCIAEoCVIOc2RrVmVyc2lvbkZ1bGwSJgoOcnVudGltZVZlcnNpb24YAyABKAlSDnJ1bnRpbWVWZXJzaW9uEioKEGFwcEVuZ2luZVZlcnNpb24YBCABKAlSEGFwcEVuZ2luZVZlcnNpb24SKAoPc2VydmljZXNWZXJzaW9uGAUgASgJUg9zZXJ2aWNlc1ZlcnNpb24SJgoOZmx1dHRlclZlcnNpb24YBiABKAlSDmZsdXR0ZXJWZXJzaW9uEi4KEmZsdXR0ZXJEYXJ0VmVyc2lvbhgHIAEoCVISZmx1dHRlckRhcnRWZXJzaW9uEjYKFmZsdXR0ZXJEYXJ0VmVyc2lvbkZ1bGwYCCABKAlSFmZsdXR0ZXJEYXJ0VmVyc2lvbkZ1bGwSNQoFZXJyb3IYYyABKAsyHy5kYXJ0X3NlcnZpY2VzLmFwaS5FcnJvck1lc3NhZ2VSBWVycm9y');
+@$core.Deprecated('Use badRequestDescriptor instead')
const BadRequest$json = {
'1': 'BadRequest',
'2': [
@@ -374,9 +485,17 @@
],
};
+/// Descriptor for `BadRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List badRequestDescriptor = $convert.base64Decode(
+ 'CgpCYWRSZXF1ZXN0EjUKBWVycm9yGGMgASgLMh8uZGFydF9zZXJ2aWNlcy5hcGkuRXJyb3JNZXNzYWdlUgVlcnJvcg==');
+@$core.Deprecated('Use errorMessageDescriptor instead')
const ErrorMessage$json = {
'1': 'ErrorMessage',
'2': [
{'1': 'message', '3': 1, '4': 1, '5': 9, '10': 'message'},
],
};
+
+/// Descriptor for `ErrorMessage`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List errorMessageDescriptor = $convert
+ .base64Decode('CgxFcnJvck1lc3NhZ2USGAoHbWVzc2FnZRgBIAEoCVIHbWVzc2FnZQ==');
diff --git a/lib/src/protos/dart_services.pbserver.dart b/lib/src/protos/dart_services.pbserver.dart
index d9e5442..02254b5 100644
--- a/lib/src/protos/dart_services.pbserver.dart
+++ b/lib/src/protos/dart_services.pbserver.dart
@@ -3,6 +3,6 @@
// source: protos/dart_services.proto
//
// @dart = 2.7
-// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
+// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
export 'dart_services.pb.dart';
diff --git a/protos/dart_services.proto b/protos/dart_services.proto
index aa20424..3625188 100644
--- a/protos/dart_services.proto
+++ b/protos/dart_services.proto
@@ -45,6 +45,16 @@
bool hasFixes = 5;
int32 charStart = 6;
int32 charLength = 7;
+ string url = 8;
+ repeated DiagnosticMessage diagnosticMessages = 9;
+ string correction = 10;
+}
+
+message DiagnosticMessage {
+ string message = 1;
+ int32 line = 2;
+ int32 charStart = 3;
+ int32 charLength = 4;
}
message VersionRequest {}
diff --git a/pubspec.lock b/pubspec.lock
index cec5131..49961d8 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -56,7 +56,7 @@
name: async
url: "https://pub.dartlang.org"
source: hosted
- version: "2.5.0"
+ version: "2.4.2"
bazel_worker:
dependency: "direct main"
description:
@@ -70,7 +70,7 @@
name: boolean_selector
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.0"
+ version: "2.0.0"
build:
dependency: transitive
description:
@@ -133,7 +133,7 @@
name: charcode
url: "https://pub.dartlang.org"
source: hosted
- version: "1.2.0"
+ version: "1.1.3"
checked_yaml:
dependency: transitive
description:
@@ -148,13 +148,6 @@
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
- clock:
- dependency: transitive
- description:
- name: clock
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.0"
code_builder:
dependency: transitive
description:
@@ -175,7 +168,7 @@
name: collection
url: "https://pub.dartlang.org"
source: hosted
- version: "1.15.0"
+ version: "1.14.13"
convert:
dependency: transitive
description:
@@ -322,7 +315,7 @@
name: intl
url: "https://pub.dartlang.org"
source: hosted
- version: "0.17.0"
+ version: "0.16.1"
io:
dependency: transitive
description:
@@ -336,7 +329,7 @@
name: js
url: "https://pub.dartlang.org"
source: hosted
- version: "0.6.3"
+ version: "0.6.2"
json_annotation:
dependency: transitive
description:
@@ -364,7 +357,7 @@
name: meta
url: "https://pub.dartlang.org"
source: hosted
- version: "1.3.0"
+ version: "1.2.4"
mime:
dependency: transitive
description:
@@ -413,7 +406,7 @@
name: path
url: "https://pub.dartlang.org"
source: hosted
- version: "1.8.0"
+ version: "1.7.0"
pedantic:
dependency: "direct dev"
description:
@@ -427,7 +420,7 @@
name: pool
url: "https://pub.dartlang.org"
source: hosted
- version: "1.5.0"
+ version: "1.4.0"
protobuf:
dependency: "direct main"
description:
@@ -511,35 +504,35 @@
name: source_map_stack_trace
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.0"
+ version: "2.0.0"
source_maps:
dependency: transitive
description:
name: source_maps
url: "https://pub.dartlang.org"
source: hosted
- version: "0.10.10"
+ version: "0.10.9"
source_span:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
- version: "1.8.0"
+ version: "1.7.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
source: hosted
- version: "1.10.0"
+ version: "1.9.6"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.0"
+ version: "2.0.0"
stream_transform:
dependency: transitive
description:
@@ -553,7 +546,7 @@
name: string_scanner
url: "https://pub.dartlang.org"
source: hosted
- version: "1.1.0"
+ version: "1.0.5"
synchronized:
dependency: "direct dev"
description:
@@ -567,7 +560,7 @@
name: term_glyph
url: "https://pub.dartlang.org"
source: hosted
- version: "1.2.0"
+ version: "1.1.0"
test:
dependency: "direct dev"
description:
@@ -602,7 +595,7 @@
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
- version: "1.3.0"
+ version: "1.2.0"
vm_service:
dependency: transitive
description:
@@ -639,4 +632,4 @@
source: hosted
version: "2.2.1"
sdks:
- dart: ">=2.12.0-0.0 <3.0.0"
+ dart: ">=2.10.4 <3.0.0"