Files
sdk/pkg/analyzer_plugin/lib/protocol/protocol_common.dart
T
Danny Tuppeny 568e977a35 Update FoldingKinds enum, update specs and increase version number
Bug: https://github.com/dart-lang/sdk/issues/33033
Change-Id: Ieccfd90ead67a9803744c54db4eec8eea0b0403c
Reviewed-on: https://dart-review.googlesource.com/54920
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-05-14 16:48:48 +00:00

5876 lines
156 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// This file has been automatically generated. Please do not edit it manually.
// To regenerate the file, use the script
// "pkg/analysis_server/tool/spec/generate_files".
import 'dart:convert' hide JsonDecoder;
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer_plugin/protocol/protocol.dart';
import 'package:analyzer_plugin/src/protocol/protocol_internal.dart';
/**
* AddContentOverlay
*
* {
* "type": "add"
* "content": String
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class AddContentOverlay implements HasToJson {
String _content;
/**
* The new content of the file.
*/
String get content => _content;
/**
* The new content of the file.
*/
void set content(String value) {
assert(value != null);
this._content = value;
}
AddContentOverlay(String content) {
this.content = content;
}
factory AddContentOverlay.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
if (json["type"] != "add") {
throw jsonDecoder.mismatch(jsonPath, "equal " + "add", json);
}
String content;
if (json.containsKey("content")) {
content =
jsonDecoder.decodeString(jsonPath + ".content", json["content"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "content");
}
return new AddContentOverlay(content);
} else {
throw jsonDecoder.mismatch(jsonPath, "AddContentOverlay", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["type"] = "add";
result["content"] = content;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is AddContentOverlay) {
return content == other.content;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, 704418402);
hash = JenkinsSmiHash.combine(hash, content.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* AnalysisError
*
* {
* "severity": AnalysisErrorSeverity
* "type": AnalysisErrorType
* "location": Location
* "message": String
* "correction": optional String
* "code": String
* "hasFix": optional bool
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class AnalysisError implements HasToJson {
AnalysisErrorSeverity _severity;
AnalysisErrorType _type;
Location _location;
String _message;
String _correction;
String _code;
bool _hasFix;
/**
* The severity of the error.
*/
AnalysisErrorSeverity get severity => _severity;
/**
* The severity of the error.
*/
void set severity(AnalysisErrorSeverity value) {
assert(value != null);
this._severity = value;
}
/**
* The type of the error.
*/
AnalysisErrorType get type => _type;
/**
* The type of the error.
*/
void set type(AnalysisErrorType value) {
assert(value != null);
this._type = value;
}
/**
* The location associated with the error.
*/
Location get location => _location;
/**
* The location associated with the error.
*/
void set location(Location value) {
assert(value != null);
this._location = value;
}
/**
* The message to be displayed for this error. The message should indicate
* what is wrong with the code and why it is wrong.
*/
String get message => _message;
/**
* The message to be displayed for this error. The message should indicate
* what is wrong with the code and why it is wrong.
*/
void set message(String value) {
assert(value != null);
this._message = value;
}
/**
* The correction message to be displayed for this error. The correction
* message should indicate how the user can fix the error. The field is
* omitted if there is no correction message associated with the error code.
*/
String get correction => _correction;
/**
* The correction message to be displayed for this error. The correction
* message should indicate how the user can fix the error. The field is
* omitted if there is no correction message associated with the error code.
*/
void set correction(String value) {
this._correction = value;
}
/**
* The name, as a string, of the error code associated with this error.
*/
String get code => _code;
/**
* The name, as a string, of the error code associated with this error.
*/
void set code(String value) {
assert(value != null);
this._code = value;
}
/**
* A hint to indicate to interested clients that this error has an associated
* fix (or fixes). The absence of this field implies there are not known to
* be fixes. Note that since the operation to calculate whether fixes apply
* needs to be performant it is possible that complicated tests will be
* skipped and a false negative returned. For this reason, this attribute
* should be treated as a "hint". Despite the possibility of false negatives,
* no false positives should be returned. If a client sees this flag set they
* can proceed with the confidence that there are in fact associated fixes.
*/
bool get hasFix => _hasFix;
/**
* A hint to indicate to interested clients that this error has an associated
* fix (or fixes). The absence of this field implies there are not known to
* be fixes. Note that since the operation to calculate whether fixes apply
* needs to be performant it is possible that complicated tests will be
* skipped and a false negative returned. For this reason, this attribute
* should be treated as a "hint". Despite the possibility of false negatives,
* no false positives should be returned. If a client sees this flag set they
* can proceed with the confidence that there are in fact associated fixes.
*/
void set hasFix(bool value) {
this._hasFix = value;
}
AnalysisError(AnalysisErrorSeverity severity, AnalysisErrorType type,
Location location, String message, String code,
{String correction, bool hasFix}) {
this.severity = severity;
this.type = type;
this.location = location;
this.message = message;
this.correction = correction;
this.code = code;
this.hasFix = hasFix;
}
factory AnalysisError.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
AnalysisErrorSeverity severity;
if (json.containsKey("severity")) {
severity = new AnalysisErrorSeverity.fromJson(
jsonDecoder, jsonPath + ".severity", json["severity"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "severity");
}
AnalysisErrorType type;
if (json.containsKey("type")) {
type = new AnalysisErrorType.fromJson(
jsonDecoder, jsonPath + ".type", json["type"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "type");
}
Location location;
if (json.containsKey("location")) {
location = new Location.fromJson(
jsonDecoder, jsonPath + ".location", json["location"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "location");
}
String message;
if (json.containsKey("message")) {
message =
jsonDecoder.decodeString(jsonPath + ".message", json["message"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "message");
}
String correction;
if (json.containsKey("correction")) {
correction = jsonDecoder.decodeString(
jsonPath + ".correction", json["correction"]);
}
String code;
if (json.containsKey("code")) {
code = jsonDecoder.decodeString(jsonPath + ".code", json["code"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "code");
}
bool hasFix;
if (json.containsKey("hasFix")) {
hasFix = jsonDecoder.decodeBool(jsonPath + ".hasFix", json["hasFix"]);
}
return new AnalysisError(severity, type, location, message, code,
correction: correction, hasFix: hasFix);
} else {
throw jsonDecoder.mismatch(jsonPath, "AnalysisError", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["severity"] = severity.toJson();
result["type"] = type.toJson();
result["location"] = location.toJson();
result["message"] = message;
if (correction != null) {
result["correction"] = correction;
}
result["code"] = code;
if (hasFix != null) {
result["hasFix"] = hasFix;
}
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is AnalysisError) {
return severity == other.severity &&
type == other.type &&
location == other.location &&
message == other.message &&
correction == other.correction &&
code == other.code &&
hasFix == other.hasFix;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, severity.hashCode);
hash = JenkinsSmiHash.combine(hash, type.hashCode);
hash = JenkinsSmiHash.combine(hash, location.hashCode);
hash = JenkinsSmiHash.combine(hash, message.hashCode);
hash = JenkinsSmiHash.combine(hash, correction.hashCode);
hash = JenkinsSmiHash.combine(hash, code.hashCode);
hash = JenkinsSmiHash.combine(hash, hasFix.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* AnalysisErrorSeverity
*
* enum {
* INFO
* WARNING
* ERROR
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class AnalysisErrorSeverity implements Enum {
static const AnalysisErrorSeverity INFO =
const AnalysisErrorSeverity._("INFO");
static const AnalysisErrorSeverity WARNING =
const AnalysisErrorSeverity._("WARNING");
static const AnalysisErrorSeverity ERROR =
const AnalysisErrorSeverity._("ERROR");
/**
* A list containing all of the enum values that are defined.
*/
static const List<AnalysisErrorSeverity> VALUES =
const <AnalysisErrorSeverity>[INFO, WARNING, ERROR];
@override
final String name;
const AnalysisErrorSeverity._(this.name);
factory AnalysisErrorSeverity(String name) {
switch (name) {
case "INFO":
return INFO;
case "WARNING":
return WARNING;
case "ERROR":
return ERROR;
}
throw new Exception('Illegal enum value: $name');
}
factory AnalysisErrorSeverity.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new AnalysisErrorSeverity(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "AnalysisErrorSeverity", json);
}
@override
String toString() => "AnalysisErrorSeverity.$name";
String toJson() => name;
}
/**
* AnalysisErrorType
*
* enum {
* CHECKED_MODE_COMPILE_TIME_ERROR
* COMPILE_TIME_ERROR
* HINT
* LINT
* STATIC_TYPE_WARNING
* STATIC_WARNING
* SYNTACTIC_ERROR
* TODO
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class AnalysisErrorType implements Enum {
static const AnalysisErrorType CHECKED_MODE_COMPILE_TIME_ERROR =
const AnalysisErrorType._("CHECKED_MODE_COMPILE_TIME_ERROR");
static const AnalysisErrorType COMPILE_TIME_ERROR =
const AnalysisErrorType._("COMPILE_TIME_ERROR");
static const AnalysisErrorType HINT = const AnalysisErrorType._("HINT");
static const AnalysisErrorType LINT = const AnalysisErrorType._("LINT");
static const AnalysisErrorType STATIC_TYPE_WARNING =
const AnalysisErrorType._("STATIC_TYPE_WARNING");
static const AnalysisErrorType STATIC_WARNING =
const AnalysisErrorType._("STATIC_WARNING");
static const AnalysisErrorType SYNTACTIC_ERROR =
const AnalysisErrorType._("SYNTACTIC_ERROR");
static const AnalysisErrorType TODO = const AnalysisErrorType._("TODO");
/**
* A list containing all of the enum values that are defined.
*/
static const List<AnalysisErrorType> VALUES = const <AnalysisErrorType>[
CHECKED_MODE_COMPILE_TIME_ERROR,
COMPILE_TIME_ERROR,
HINT,
LINT,
STATIC_TYPE_WARNING,
STATIC_WARNING,
SYNTACTIC_ERROR,
TODO
];
@override
final String name;
const AnalysisErrorType._(this.name);
factory AnalysisErrorType(String name) {
switch (name) {
case "CHECKED_MODE_COMPILE_TIME_ERROR":
return CHECKED_MODE_COMPILE_TIME_ERROR;
case "COMPILE_TIME_ERROR":
return COMPILE_TIME_ERROR;
case "HINT":
return HINT;
case "LINT":
return LINT;
case "STATIC_TYPE_WARNING":
return STATIC_TYPE_WARNING;
case "STATIC_WARNING":
return STATIC_WARNING;
case "SYNTACTIC_ERROR":
return SYNTACTIC_ERROR;
case "TODO":
return TODO;
}
throw new Exception('Illegal enum value: $name');
}
factory AnalysisErrorType.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new AnalysisErrorType(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "AnalysisErrorType", json);
}
@override
String toString() => "AnalysisErrorType.$name";
String toJson() => name;
}
/**
* ChangeContentOverlay
*
* {
* "type": "change"
* "edits": List<SourceEdit>
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class ChangeContentOverlay implements HasToJson {
List<SourceEdit> _edits;
/**
* The edits to be applied to the file.
*/
List<SourceEdit> get edits => _edits;
/**
* The edits to be applied to the file.
*/
void set edits(List<SourceEdit> value) {
assert(value != null);
this._edits = value;
}
ChangeContentOverlay(List<SourceEdit> edits) {
this.edits = edits;
}
factory ChangeContentOverlay.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
if (json["type"] != "change") {
throw jsonDecoder.mismatch(jsonPath, "equal " + "change", json);
}
List<SourceEdit> edits;
if (json.containsKey("edits")) {
edits = jsonDecoder.decodeList(
jsonPath + ".edits",
json["edits"],
(String jsonPath, Object json) =>
new SourceEdit.fromJson(jsonDecoder, jsonPath, json));
} else {
throw jsonDecoder.mismatch(jsonPath, "edits");
}
return new ChangeContentOverlay(edits);
} else {
throw jsonDecoder.mismatch(jsonPath, "ChangeContentOverlay", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["type"] = "change";
result["edits"] = edits.map((SourceEdit value) => value.toJson()).toList();
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is ChangeContentOverlay) {
return listEqual(
edits, other.edits, (SourceEdit a, SourceEdit b) => a == b);
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, 873118866);
hash = JenkinsSmiHash.combine(hash, edits.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* CompletionSuggestion
*
* {
* "kind": CompletionSuggestionKind
* "relevance": int
* "completion": String
* "displayText": optional String
* "selectionOffset": int
* "selectionLength": int
* "isDeprecated": bool
* "isPotential": bool
* "docSummary": optional String
* "docComplete": optional String
* "declaringType": optional String
* "defaultArgumentListString": optional String
* "defaultArgumentListTextRanges": optional List<int>
* "element": optional Element
* "returnType": optional String
* "parameterNames": optional List<String>
* "parameterTypes": optional List<String>
* "requiredParameterCount": optional int
* "hasNamedParameters": optional bool
* "parameterName": optional String
* "parameterType": optional String
* "importUri": optional String
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class CompletionSuggestion implements HasToJson {
CompletionSuggestionKind _kind;
int _relevance;
String _completion;
String _displayText;
int _selectionOffset;
int _selectionLength;
bool _isDeprecated;
bool _isPotential;
String _docSummary;
String _docComplete;
String _declaringType;
String _defaultArgumentListString;
List<int> _defaultArgumentListTextRanges;
Element _element;
String _returnType;
List<String> _parameterNames;
List<String> _parameterTypes;
int _requiredParameterCount;
bool _hasNamedParameters;
String _parameterName;
String _parameterType;
String _importUri;
/**
* The kind of element being suggested.
*/
CompletionSuggestionKind get kind => _kind;
/**
* The kind of element being suggested.
*/
void set kind(CompletionSuggestionKind value) {
assert(value != null);
this._kind = value;
}
/**
* The relevance of this completion suggestion where a higher number
* indicates a higher relevance.
*/
int get relevance => _relevance;
/**
* The relevance of this completion suggestion where a higher number
* indicates a higher relevance.
*/
void set relevance(int value) {
assert(value != null);
this._relevance = value;
}
/**
* The identifier to be inserted if the suggestion is selected. If the
* suggestion is for a method or function, the client might want to
* additionally insert a template for the parameters. The information
* required in order to do so is contained in other fields.
*/
String get completion => _completion;
/**
* The identifier to be inserted if the suggestion is selected. If the
* suggestion is for a method or function, the client might want to
* additionally insert a template for the parameters. The information
* required in order to do so is contained in other fields.
*/
void set completion(String value) {
assert(value != null);
this._completion = value;
}
/**
* Text to be displayed in, for example, a completion pop-up. This field is
* only defined if the displayed text should be different than the
* completion. Otherwise it is omitted.
*/
String get displayText => _displayText;
/**
* Text to be displayed in, for example, a completion pop-up. This field is
* only defined if the displayed text should be different than the
* completion. Otherwise it is omitted.
*/
void set displayText(String value) {
this._displayText = value;
}
/**
* The offset, relative to the beginning of the completion, of where the
* selection should be placed after insertion.
*/
int get selectionOffset => _selectionOffset;
/**
* The offset, relative to the beginning of the completion, of where the
* selection should be placed after insertion.
*/
void set selectionOffset(int value) {
assert(value != null);
this._selectionOffset = value;
}
/**
* The number of characters that should be selected after insertion.
*/
int get selectionLength => _selectionLength;
/**
* The number of characters that should be selected after insertion.
*/
void set selectionLength(int value) {
assert(value != null);
this._selectionLength = value;
}
/**
* True if the suggested element is deprecated.
*/
bool get isDeprecated => _isDeprecated;
/**
* True if the suggested element is deprecated.
*/
void set isDeprecated(bool value) {
assert(value != null);
this._isDeprecated = value;
}
/**
* True if the element is not known to be valid for the target. This happens
* if the type of the target is dynamic.
*/
bool get isPotential => _isPotential;
/**
* True if the element is not known to be valid for the target. This happens
* if the type of the target is dynamic.
*/
void set isPotential(bool value) {
assert(value != null);
this._isPotential = value;
}
/**
* An abbreviated version of the Dartdoc associated with the element being
* suggested. This field is omitted if there is no Dartdoc associated with
* the element.
*/
String get docSummary => _docSummary;
/**
* An abbreviated version of the Dartdoc associated with the element being
* suggested. This field is omitted if there is no Dartdoc associated with
* the element.
*/
void set docSummary(String value) {
this._docSummary = value;
}
/**
* The Dartdoc associated with the element being suggested. This field is
* omitted if there is no Dartdoc associated with the element.
*/
String get docComplete => _docComplete;
/**
* The Dartdoc associated with the element being suggested. This field is
* omitted if there is no Dartdoc associated with the element.
*/
void set docComplete(String value) {
this._docComplete = value;
}
/**
* The class that declares the element being suggested. This field is omitted
* if the suggested element is not a member of a class.
*/
String get declaringType => _declaringType;
/**
* The class that declares the element being suggested. This field is omitted
* if the suggested element is not a member of a class.
*/
void set declaringType(String value) {
this._declaringType = value;
}
/**
* A default String for use in generating argument list source contents on
* the client side.
*/
String get defaultArgumentListString => _defaultArgumentListString;
/**
* A default String for use in generating argument list source contents on
* the client side.
*/
void set defaultArgumentListString(String value) {
this._defaultArgumentListString = value;
}
/**
* Pairs of offsets and lengths describing 'defaultArgumentListString' text
* ranges suitable for use by clients to set up linked edits of default
* argument source contents. For example, given an argument list string 'x,
* y', the corresponding text range [0, 1, 3, 1], indicates two text ranges
* of length 1, starting at offsets 0 and 3. Clients can use these ranges to
* treat the 'x' and 'y' values specially for linked edits.
*/
List<int> get defaultArgumentListTextRanges => _defaultArgumentListTextRanges;
/**
* Pairs of offsets and lengths describing 'defaultArgumentListString' text
* ranges suitable for use by clients to set up linked edits of default
* argument source contents. For example, given an argument list string 'x,
* y', the corresponding text range [0, 1, 3, 1], indicates two text ranges
* of length 1, starting at offsets 0 and 3. Clients can use these ranges to
* treat the 'x' and 'y' values specially for linked edits.
*/
void set defaultArgumentListTextRanges(List<int> value) {
this._defaultArgumentListTextRanges = value;
}
/**
* Information about the element reference being suggested.
*/
Element get element => _element;
/**
* Information about the element reference being suggested.
*/
void set element(Element value) {
this._element = value;
}
/**
* The return type of the getter, function or method or the type of the field
* being suggested. This field is omitted if the suggested element is not a
* getter, function or method.
*/
String get returnType => _returnType;
/**
* The return type of the getter, function or method or the type of the field
* being suggested. This field is omitted if the suggested element is not a
* getter, function or method.
*/
void set returnType(String value) {
this._returnType = value;
}
/**
* The names of the parameters of the function or method being suggested.
* This field is omitted if the suggested element is not a setter, function
* or method.
*/
List<String> get parameterNames => _parameterNames;
/**
* The names of the parameters of the function or method being suggested.
* This field is omitted if the suggested element is not a setter, function
* or method.
*/
void set parameterNames(List<String> value) {
this._parameterNames = value;
}
/**
* The types of the parameters of the function or method being suggested.
* This field is omitted if the parameterNames field is omitted.
*/
List<String> get parameterTypes => _parameterTypes;
/**
* The types of the parameters of the function or method being suggested.
* This field is omitted if the parameterNames field is omitted.
*/
void set parameterTypes(List<String> value) {
this._parameterTypes = value;
}
/**
* The number of required parameters for the function or method being
* suggested. This field is omitted if the parameterNames field is omitted.
*/
int get requiredParameterCount => _requiredParameterCount;
/**
* The number of required parameters for the function or method being
* suggested. This field is omitted if the parameterNames field is omitted.
*/
void set requiredParameterCount(int value) {
this._requiredParameterCount = value;
}
/**
* True if the function or method being suggested has at least one named
* parameter. This field is omitted if the parameterNames field is omitted.
*/
bool get hasNamedParameters => _hasNamedParameters;
/**
* True if the function or method being suggested has at least one named
* parameter. This field is omitted if the parameterNames field is omitted.
*/
void set hasNamedParameters(bool value) {
this._hasNamedParameters = value;
}
/**
* The name of the optional parameter being suggested. This field is omitted
* if the suggestion is not the addition of an optional argument within an
* argument list.
*/
String get parameterName => _parameterName;
/**
* The name of the optional parameter being suggested. This field is omitted
* if the suggestion is not the addition of an optional argument within an
* argument list.
*/
void set parameterName(String value) {
this._parameterName = value;
}
/**
* The type of the options parameter being suggested. This field is omitted
* if the parameterName field is omitted.
*/
String get parameterType => _parameterType;
/**
* The type of the options parameter being suggested. This field is omitted
* if the parameterName field is omitted.
*/
void set parameterType(String value) {
this._parameterType = value;
}
/**
* The import to be added if the suggestion is out of scope and needs an
* import to be added to be in scope.
*/
String get importUri => _importUri;
/**
* The import to be added if the suggestion is out of scope and needs an
* import to be added to be in scope.
*/
void set importUri(String value) {
this._importUri = value;
}
CompletionSuggestion(
CompletionSuggestionKind kind,
int relevance,
String completion,
int selectionOffset,
int selectionLength,
bool isDeprecated,
bool isPotential,
{String displayText,
String docSummary,
String docComplete,
String declaringType,
String defaultArgumentListString,
List<int> defaultArgumentListTextRanges,
Element element,
String returnType,
List<String> parameterNames,
List<String> parameterTypes,
int requiredParameterCount,
bool hasNamedParameters,
String parameterName,
String parameterType,
String importUri}) {
this.kind = kind;
this.relevance = relevance;
this.completion = completion;
this.displayText = displayText;
this.selectionOffset = selectionOffset;
this.selectionLength = selectionLength;
this.isDeprecated = isDeprecated;
this.isPotential = isPotential;
this.docSummary = docSummary;
this.docComplete = docComplete;
this.declaringType = declaringType;
this.defaultArgumentListString = defaultArgumentListString;
this.defaultArgumentListTextRanges = defaultArgumentListTextRanges;
this.element = element;
this.returnType = returnType;
this.parameterNames = parameterNames;
this.parameterTypes = parameterTypes;
this.requiredParameterCount = requiredParameterCount;
this.hasNamedParameters = hasNamedParameters;
this.parameterName = parameterName;
this.parameterType = parameterType;
this.importUri = importUri;
}
factory CompletionSuggestion.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
CompletionSuggestionKind kind;
if (json.containsKey("kind")) {
kind = new CompletionSuggestionKind.fromJson(
jsonDecoder, jsonPath + ".kind", json["kind"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "kind");
}
int relevance;
if (json.containsKey("relevance")) {
relevance =
jsonDecoder.decodeInt(jsonPath + ".relevance", json["relevance"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "relevance");
}
String completion;
if (json.containsKey("completion")) {
completion = jsonDecoder.decodeString(
jsonPath + ".completion", json["completion"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "completion");
}
String displayText;
if (json.containsKey("displayText")) {
displayText = jsonDecoder.decodeString(
jsonPath + ".displayText", json["displayText"]);
}
int selectionOffset;
if (json.containsKey("selectionOffset")) {
selectionOffset = jsonDecoder.decodeInt(
jsonPath + ".selectionOffset", json["selectionOffset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "selectionOffset");
}
int selectionLength;
if (json.containsKey("selectionLength")) {
selectionLength = jsonDecoder.decodeInt(
jsonPath + ".selectionLength", json["selectionLength"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "selectionLength");
}
bool isDeprecated;
if (json.containsKey("isDeprecated")) {
isDeprecated = jsonDecoder.decodeBool(
jsonPath + ".isDeprecated", json["isDeprecated"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "isDeprecated");
}
bool isPotential;
if (json.containsKey("isPotential")) {
isPotential = jsonDecoder.decodeBool(
jsonPath + ".isPotential", json["isPotential"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "isPotential");
}
String docSummary;
if (json.containsKey("docSummary")) {
docSummary = jsonDecoder.decodeString(
jsonPath + ".docSummary", json["docSummary"]);
}
String docComplete;
if (json.containsKey("docComplete")) {
docComplete = jsonDecoder.decodeString(
jsonPath + ".docComplete", json["docComplete"]);
}
String declaringType;
if (json.containsKey("declaringType")) {
declaringType = jsonDecoder.decodeString(
jsonPath + ".declaringType", json["declaringType"]);
}
String defaultArgumentListString;
if (json.containsKey("defaultArgumentListString")) {
defaultArgumentListString = jsonDecoder.decodeString(
jsonPath + ".defaultArgumentListString",
json["defaultArgumentListString"]);
}
List<int> defaultArgumentListTextRanges;
if (json.containsKey("defaultArgumentListTextRanges")) {
defaultArgumentListTextRanges = jsonDecoder.decodeList(
jsonPath + ".defaultArgumentListTextRanges",
json["defaultArgumentListTextRanges"],
jsonDecoder.decodeInt);
}
Element element;
if (json.containsKey("element")) {
element = new Element.fromJson(
jsonDecoder, jsonPath + ".element", json["element"]);
}
String returnType;
if (json.containsKey("returnType")) {
returnType = jsonDecoder.decodeString(
jsonPath + ".returnType", json["returnType"]);
}
List<String> parameterNames;
if (json.containsKey("parameterNames")) {
parameterNames = jsonDecoder.decodeList(jsonPath + ".parameterNames",
json["parameterNames"], jsonDecoder.decodeString);
}
List<String> parameterTypes;
if (json.containsKey("parameterTypes")) {
parameterTypes = jsonDecoder.decodeList(jsonPath + ".parameterTypes",
json["parameterTypes"], jsonDecoder.decodeString);
}
int requiredParameterCount;
if (json.containsKey("requiredParameterCount")) {
requiredParameterCount = jsonDecoder.decodeInt(
jsonPath + ".requiredParameterCount",
json["requiredParameterCount"]);
}
bool hasNamedParameters;
if (json.containsKey("hasNamedParameters")) {
hasNamedParameters = jsonDecoder.decodeBool(
jsonPath + ".hasNamedParameters", json["hasNamedParameters"]);
}
String parameterName;
if (json.containsKey("parameterName")) {
parameterName = jsonDecoder.decodeString(
jsonPath + ".parameterName", json["parameterName"]);
}
String parameterType;
if (json.containsKey("parameterType")) {
parameterType = jsonDecoder.decodeString(
jsonPath + ".parameterType", json["parameterType"]);
}
String importUri;
if (json.containsKey("importUri")) {
importUri = jsonDecoder.decodeString(
jsonPath + ".importUri", json["importUri"]);
}
return new CompletionSuggestion(kind, relevance, completion,
selectionOffset, selectionLength, isDeprecated, isPotential,
displayText: displayText,
docSummary: docSummary,
docComplete: docComplete,
declaringType: declaringType,
defaultArgumentListString: defaultArgumentListString,
defaultArgumentListTextRanges: defaultArgumentListTextRanges,
element: element,
returnType: returnType,
parameterNames: parameterNames,
parameterTypes: parameterTypes,
requiredParameterCount: requiredParameterCount,
hasNamedParameters: hasNamedParameters,
parameterName: parameterName,
parameterType: parameterType,
importUri: importUri);
} else {
throw jsonDecoder.mismatch(jsonPath, "CompletionSuggestion", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["kind"] = kind.toJson();
result["relevance"] = relevance;
result["completion"] = completion;
if (displayText != null) {
result["displayText"] = displayText;
}
result["selectionOffset"] = selectionOffset;
result["selectionLength"] = selectionLength;
result["isDeprecated"] = isDeprecated;
result["isPotential"] = isPotential;
if (docSummary != null) {
result["docSummary"] = docSummary;
}
if (docComplete != null) {
result["docComplete"] = docComplete;
}
if (declaringType != null) {
result["declaringType"] = declaringType;
}
if (defaultArgumentListString != null) {
result["defaultArgumentListString"] = defaultArgumentListString;
}
if (defaultArgumentListTextRanges != null) {
result["defaultArgumentListTextRanges"] = defaultArgumentListTextRanges;
}
if (element != null) {
result["element"] = element.toJson();
}
if (returnType != null) {
result["returnType"] = returnType;
}
if (parameterNames != null) {
result["parameterNames"] = parameterNames;
}
if (parameterTypes != null) {
result["parameterTypes"] = parameterTypes;
}
if (requiredParameterCount != null) {
result["requiredParameterCount"] = requiredParameterCount;
}
if (hasNamedParameters != null) {
result["hasNamedParameters"] = hasNamedParameters;
}
if (parameterName != null) {
result["parameterName"] = parameterName;
}
if (parameterType != null) {
result["parameterType"] = parameterType;
}
if (importUri != null) {
result["importUri"] = importUri;
}
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is CompletionSuggestion) {
return kind == other.kind &&
relevance == other.relevance &&
completion == other.completion &&
displayText == other.displayText &&
selectionOffset == other.selectionOffset &&
selectionLength == other.selectionLength &&
isDeprecated == other.isDeprecated &&
isPotential == other.isPotential &&
docSummary == other.docSummary &&
docComplete == other.docComplete &&
declaringType == other.declaringType &&
defaultArgumentListString == other.defaultArgumentListString &&
listEqual(defaultArgumentListTextRanges,
other.defaultArgumentListTextRanges, (int a, int b) => a == b) &&
element == other.element &&
returnType == other.returnType &&
listEqual(parameterNames, other.parameterNames,
(String a, String b) => a == b) &&
listEqual(parameterTypes, other.parameterTypes,
(String a, String b) => a == b) &&
requiredParameterCount == other.requiredParameterCount &&
hasNamedParameters == other.hasNamedParameters &&
parameterName == other.parameterName &&
parameterType == other.parameterType &&
importUri == other.importUri;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
hash = JenkinsSmiHash.combine(hash, relevance.hashCode);
hash = JenkinsSmiHash.combine(hash, completion.hashCode);
hash = JenkinsSmiHash.combine(hash, displayText.hashCode);
hash = JenkinsSmiHash.combine(hash, selectionOffset.hashCode);
hash = JenkinsSmiHash.combine(hash, selectionLength.hashCode);
hash = JenkinsSmiHash.combine(hash, isDeprecated.hashCode);
hash = JenkinsSmiHash.combine(hash, isPotential.hashCode);
hash = JenkinsSmiHash.combine(hash, docSummary.hashCode);
hash = JenkinsSmiHash.combine(hash, docComplete.hashCode);
hash = JenkinsSmiHash.combine(hash, declaringType.hashCode);
hash = JenkinsSmiHash.combine(hash, defaultArgumentListString.hashCode);
hash = JenkinsSmiHash.combine(hash, defaultArgumentListTextRanges.hashCode);
hash = JenkinsSmiHash.combine(hash, element.hashCode);
hash = JenkinsSmiHash.combine(hash, returnType.hashCode);
hash = JenkinsSmiHash.combine(hash, parameterNames.hashCode);
hash = JenkinsSmiHash.combine(hash, parameterTypes.hashCode);
hash = JenkinsSmiHash.combine(hash, requiredParameterCount.hashCode);
hash = JenkinsSmiHash.combine(hash, hasNamedParameters.hashCode);
hash = JenkinsSmiHash.combine(hash, parameterName.hashCode);
hash = JenkinsSmiHash.combine(hash, parameterType.hashCode);
hash = JenkinsSmiHash.combine(hash, importUri.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* CompletionSuggestionKind
*
* enum {
* ARGUMENT_LIST
* IMPORT
* IDENTIFIER
* INVOCATION
* KEYWORD
* NAMED_ARGUMENT
* OPTIONAL_ARGUMENT
* OVERRIDE
* PARAMETER
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class CompletionSuggestionKind implements Enum {
/**
* A list of arguments for the method or function that is being invoked. For
* this suggestion kind, the completion field is a textual representation of
* the invocation and the parameterNames, parameterTypes, and
* requiredParameterCount attributes are defined.
*/
static const CompletionSuggestionKind ARGUMENT_LIST =
const CompletionSuggestionKind._("ARGUMENT_LIST");
static const CompletionSuggestionKind IMPORT =
const CompletionSuggestionKind._("IMPORT");
/**
* The element identifier should be inserted at the completion location. For
* example "someMethod" in import 'myLib.dart' show someMethod;. For
* suggestions of this kind, the element attribute is defined and the
* completion field is the element's identifier.
*/
static const CompletionSuggestionKind IDENTIFIER =
const CompletionSuggestionKind._("IDENTIFIER");
/**
* The element is being invoked at the completion location. For example,
* 'someMethod' in x.someMethod();. For suggestions of this kind, the element
* attribute is defined and the completion field is the element's identifier.
*/
static const CompletionSuggestionKind INVOCATION =
const CompletionSuggestionKind._("INVOCATION");
/**
* A keyword is being suggested. For suggestions of this kind, the completion
* is the keyword.
*/
static const CompletionSuggestionKind KEYWORD =
const CompletionSuggestionKind._("KEYWORD");
/**
* A named argument for the current call site is being suggested. For
* suggestions of this kind, the completion is the named argument identifier
* including a trailing ':' and a space.
*/
static const CompletionSuggestionKind NAMED_ARGUMENT =
const CompletionSuggestionKind._("NAMED_ARGUMENT");
static const CompletionSuggestionKind OPTIONAL_ARGUMENT =
const CompletionSuggestionKind._("OPTIONAL_ARGUMENT");
/**
* An overriding implementation of a class member is being suggested.
*/
static const CompletionSuggestionKind OVERRIDE =
const CompletionSuggestionKind._("OVERRIDE");
static const CompletionSuggestionKind PARAMETER =
const CompletionSuggestionKind._("PARAMETER");
/**
* A list containing all of the enum values that are defined.
*/
static const List<CompletionSuggestionKind> VALUES =
const <CompletionSuggestionKind>[
ARGUMENT_LIST,
IMPORT,
IDENTIFIER,
INVOCATION,
KEYWORD,
NAMED_ARGUMENT,
OPTIONAL_ARGUMENT,
OVERRIDE,
PARAMETER
];
@override
final String name;
const CompletionSuggestionKind._(this.name);
factory CompletionSuggestionKind(String name) {
switch (name) {
case "ARGUMENT_LIST":
return ARGUMENT_LIST;
case "IMPORT":
return IMPORT;
case "IDENTIFIER":
return IDENTIFIER;
case "INVOCATION":
return INVOCATION;
case "KEYWORD":
return KEYWORD;
case "NAMED_ARGUMENT":
return NAMED_ARGUMENT;
case "OPTIONAL_ARGUMENT":
return OPTIONAL_ARGUMENT;
case "OVERRIDE":
return OVERRIDE;
case "PARAMETER":
return PARAMETER;
}
throw new Exception('Illegal enum value: $name');
}
factory CompletionSuggestionKind.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new CompletionSuggestionKind(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "CompletionSuggestionKind", json);
}
@override
String toString() => "CompletionSuggestionKind.$name";
String toJson() => name;
}
/**
* Element
*
* {
* "kind": ElementKind
* "name": String
* "location": optional Location
* "flags": int
* "parameters": optional String
* "returnType": optional String
* "typeParameters": optional String
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class Element implements HasToJson {
static const int FLAG_ABSTRACT = 0x01;
static const int FLAG_CONST = 0x02;
static const int FLAG_FINAL = 0x04;
static const int FLAG_STATIC = 0x08;
static const int FLAG_PRIVATE = 0x10;
static const int FLAG_DEPRECATED = 0x20;
static int makeFlags(
{isAbstract: false,
isConst: false,
isFinal: false,
isStatic: false,
isPrivate: false,
isDeprecated: false}) {
int flags = 0;
if (isAbstract) flags |= FLAG_ABSTRACT;
if (isConst) flags |= FLAG_CONST;
if (isFinal) flags |= FLAG_FINAL;
if (isStatic) flags |= FLAG_STATIC;
if (isPrivate) flags |= FLAG_PRIVATE;
if (isDeprecated) flags |= FLAG_DEPRECATED;
return flags;
}
ElementKind _kind;
String _name;
Location _location;
int _flags;
String _parameters;
String _returnType;
String _typeParameters;
/**
* The kind of the element.
*/
ElementKind get kind => _kind;
/**
* The kind of the element.
*/
void set kind(ElementKind value) {
assert(value != null);
this._kind = value;
}
/**
* The name of the element. This is typically used as the label in the
* outline.
*/
String get name => _name;
/**
* The name of the element. This is typically used as the label in the
* outline.
*/
void set name(String value) {
assert(value != null);
this._name = value;
}
/**
* The location of the name in the declaration of the element.
*/
Location get location => _location;
/**
* The location of the name in the declaration of the element.
*/
void set location(Location value) {
this._location = value;
}
/**
* A bit-map containing the following flags:
*
* - 0x01 - set if the element is explicitly or implicitly abstract
* - 0x02 - set if the element was declared to be const
* - 0x04 - set if the element was declared to be final
* - 0x08 - set if the element is a static member of a class or is a
* top-level function or field
* - 0x10 - set if the element is private
* - 0x20 - set if the element is deprecated
*/
int get flags => _flags;
/**
* A bit-map containing the following flags:
*
* - 0x01 - set if the element is explicitly or implicitly abstract
* - 0x02 - set if the element was declared to be const
* - 0x04 - set if the element was declared to be final
* - 0x08 - set if the element is a static member of a class or is a
* top-level function or field
* - 0x10 - set if the element is private
* - 0x20 - set if the element is deprecated
*/
void set flags(int value) {
assert(value != null);
this._flags = value;
}
/**
* The parameter list for the element. If the element is not a method or
* function this field will not be defined. If the element doesn't have
* parameters (e.g. getter), this field will not be defined. If the element
* has zero parameters, this field will have a value of "()".
*/
String get parameters => _parameters;
/**
* The parameter list for the element. If the element is not a method or
* function this field will not be defined. If the element doesn't have
* parameters (e.g. getter), this field will not be defined. If the element
* has zero parameters, this field will have a value of "()".
*/
void set parameters(String value) {
this._parameters = value;
}
/**
* The return type of the element. If the element is not a method or function
* this field will not be defined. If the element does not have a declared
* return type, this field will contain an empty string.
*/
String get returnType => _returnType;
/**
* The return type of the element. If the element is not a method or function
* this field will not be defined. If the element does not have a declared
* return type, this field will contain an empty string.
*/
void set returnType(String value) {
this._returnType = value;
}
/**
* The type parameter list for the element. If the element doesn't have type
* parameters, this field will not be defined.
*/
String get typeParameters => _typeParameters;
/**
* The type parameter list for the element. If the element doesn't have type
* parameters, this field will not be defined.
*/
void set typeParameters(String value) {
this._typeParameters = value;
}
Element(ElementKind kind, String name, int flags,
{Location location,
String parameters,
String returnType,
String typeParameters}) {
this.kind = kind;
this.name = name;
this.location = location;
this.flags = flags;
this.parameters = parameters;
this.returnType = returnType;
this.typeParameters = typeParameters;
}
factory Element.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
ElementKind kind;
if (json.containsKey("kind")) {
kind = new ElementKind.fromJson(
jsonDecoder, jsonPath + ".kind", json["kind"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "kind");
}
String name;
if (json.containsKey("name")) {
name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "name");
}
Location location;
if (json.containsKey("location")) {
location = new Location.fromJson(
jsonDecoder, jsonPath + ".location", json["location"]);
}
int flags;
if (json.containsKey("flags")) {
flags = jsonDecoder.decodeInt(jsonPath + ".flags", json["flags"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "flags");
}
String parameters;
if (json.containsKey("parameters")) {
parameters = jsonDecoder.decodeString(
jsonPath + ".parameters", json["parameters"]);
}
String returnType;
if (json.containsKey("returnType")) {
returnType = jsonDecoder.decodeString(
jsonPath + ".returnType", json["returnType"]);
}
String typeParameters;
if (json.containsKey("typeParameters")) {
typeParameters = jsonDecoder.decodeString(
jsonPath + ".typeParameters", json["typeParameters"]);
}
return new Element(kind, name, flags,
location: location,
parameters: parameters,
returnType: returnType,
typeParameters: typeParameters);
} else {
throw jsonDecoder.mismatch(jsonPath, "Element", json);
}
}
bool get isAbstract => (flags & FLAG_ABSTRACT) != 0;
bool get isConst => (flags & FLAG_CONST) != 0;
bool get isFinal => (flags & FLAG_FINAL) != 0;
bool get isStatic => (flags & FLAG_STATIC) != 0;
bool get isPrivate => (flags & FLAG_PRIVATE) != 0;
bool get isDeprecated => (flags & FLAG_DEPRECATED) != 0;
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["kind"] = kind.toJson();
result["name"] = name;
if (location != null) {
result["location"] = location.toJson();
}
result["flags"] = flags;
if (parameters != null) {
result["parameters"] = parameters;
}
if (returnType != null) {
result["returnType"] = returnType;
}
if (typeParameters != null) {
result["typeParameters"] = typeParameters;
}
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is Element) {
return kind == other.kind &&
name == other.name &&
location == other.location &&
flags == other.flags &&
parameters == other.parameters &&
returnType == other.returnType &&
typeParameters == other.typeParameters;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
hash = JenkinsSmiHash.combine(hash, name.hashCode);
hash = JenkinsSmiHash.combine(hash, location.hashCode);
hash = JenkinsSmiHash.combine(hash, flags.hashCode);
hash = JenkinsSmiHash.combine(hash, parameters.hashCode);
hash = JenkinsSmiHash.combine(hash, returnType.hashCode);
hash = JenkinsSmiHash.combine(hash, typeParameters.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* ElementKind
*
* enum {
* CLASS
* CLASS_TYPE_ALIAS
* COMPILATION_UNIT
* CONSTRUCTOR
* CONSTRUCTOR_INVOCATION
* ENUM
* ENUM_CONSTANT
* FIELD
* FILE
* FUNCTION
* FUNCTION_INVOCATION
* FUNCTION_TYPE_ALIAS
* GETTER
* LABEL
* LIBRARY
* LOCAL_VARIABLE
* METHOD
* PARAMETER
* PREFIX
* SETTER
* TOP_LEVEL_VARIABLE
* TYPE_PARAMETER
* UNIT_TEST_GROUP
* UNIT_TEST_TEST
* UNKNOWN
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class ElementKind implements Enum {
static const ElementKind CLASS = const ElementKind._("CLASS");
static const ElementKind CLASS_TYPE_ALIAS =
const ElementKind._("CLASS_TYPE_ALIAS");
static const ElementKind COMPILATION_UNIT =
const ElementKind._("COMPILATION_UNIT");
static const ElementKind CONSTRUCTOR = const ElementKind._("CONSTRUCTOR");
static const ElementKind CONSTRUCTOR_INVOCATION =
const ElementKind._("CONSTRUCTOR_INVOCATION");
static const ElementKind ENUM = const ElementKind._("ENUM");
static const ElementKind ENUM_CONSTANT = const ElementKind._("ENUM_CONSTANT");
static const ElementKind FIELD = const ElementKind._("FIELD");
static const ElementKind FILE = const ElementKind._("FILE");
static const ElementKind FUNCTION = const ElementKind._("FUNCTION");
static const ElementKind FUNCTION_INVOCATION =
const ElementKind._("FUNCTION_INVOCATION");
static const ElementKind FUNCTION_TYPE_ALIAS =
const ElementKind._("FUNCTION_TYPE_ALIAS");
static const ElementKind GETTER = const ElementKind._("GETTER");
static const ElementKind LABEL = const ElementKind._("LABEL");
static const ElementKind LIBRARY = const ElementKind._("LIBRARY");
static const ElementKind LOCAL_VARIABLE =
const ElementKind._("LOCAL_VARIABLE");
static const ElementKind METHOD = const ElementKind._("METHOD");
static const ElementKind PARAMETER = const ElementKind._("PARAMETER");
static const ElementKind PREFIX = const ElementKind._("PREFIX");
static const ElementKind SETTER = const ElementKind._("SETTER");
static const ElementKind TOP_LEVEL_VARIABLE =
const ElementKind._("TOP_LEVEL_VARIABLE");
static const ElementKind TYPE_PARAMETER =
const ElementKind._("TYPE_PARAMETER");
static const ElementKind UNIT_TEST_GROUP =
const ElementKind._("UNIT_TEST_GROUP");
static const ElementKind UNIT_TEST_TEST =
const ElementKind._("UNIT_TEST_TEST");
static const ElementKind UNKNOWN = const ElementKind._("UNKNOWN");
/**
* A list containing all of the enum values that are defined.
*/
static const List<ElementKind> VALUES = const <ElementKind>[
CLASS,
CLASS_TYPE_ALIAS,
COMPILATION_UNIT,
CONSTRUCTOR,
CONSTRUCTOR_INVOCATION,
ENUM,
ENUM_CONSTANT,
FIELD,
FILE,
FUNCTION,
FUNCTION_INVOCATION,
FUNCTION_TYPE_ALIAS,
GETTER,
LABEL,
LIBRARY,
LOCAL_VARIABLE,
METHOD,
PARAMETER,
PREFIX,
SETTER,
TOP_LEVEL_VARIABLE,
TYPE_PARAMETER,
UNIT_TEST_GROUP,
UNIT_TEST_TEST,
UNKNOWN
];
@override
final String name;
const ElementKind._(this.name);
factory ElementKind(String name) {
switch (name) {
case "CLASS":
return CLASS;
case "CLASS_TYPE_ALIAS":
return CLASS_TYPE_ALIAS;
case "COMPILATION_UNIT":
return COMPILATION_UNIT;
case "CONSTRUCTOR":
return CONSTRUCTOR;
case "CONSTRUCTOR_INVOCATION":
return CONSTRUCTOR_INVOCATION;
case "ENUM":
return ENUM;
case "ENUM_CONSTANT":
return ENUM_CONSTANT;
case "FIELD":
return FIELD;
case "FILE":
return FILE;
case "FUNCTION":
return FUNCTION;
case "FUNCTION_INVOCATION":
return FUNCTION_INVOCATION;
case "FUNCTION_TYPE_ALIAS":
return FUNCTION_TYPE_ALIAS;
case "GETTER":
return GETTER;
case "LABEL":
return LABEL;
case "LIBRARY":
return LIBRARY;
case "LOCAL_VARIABLE":
return LOCAL_VARIABLE;
case "METHOD":
return METHOD;
case "PARAMETER":
return PARAMETER;
case "PREFIX":
return PREFIX;
case "SETTER":
return SETTER;
case "TOP_LEVEL_VARIABLE":
return TOP_LEVEL_VARIABLE;
case "TYPE_PARAMETER":
return TYPE_PARAMETER;
case "UNIT_TEST_GROUP":
return UNIT_TEST_GROUP;
case "UNIT_TEST_TEST":
return UNIT_TEST_TEST;
case "UNKNOWN":
return UNKNOWN;
}
throw new Exception('Illegal enum value: $name');
}
factory ElementKind.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new ElementKind(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "ElementKind", json);
}
@override
String toString() => "ElementKind.$name";
String toJson() => name;
}
/**
* FoldingKind
*
* enum {
* ANNOTATIONS
* CLASS_BODY
* DIRECTIVES
* DOCUMENTATION_COMMENT
* FILE_HEADER
* FUNCTION_BODY
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class FoldingKind implements Enum {
static const FoldingKind ANNOTATIONS = const FoldingKind._("ANNOTATIONS");
static const FoldingKind CLASS_BODY = const FoldingKind._("CLASS_BODY");
static const FoldingKind DIRECTIVES = const FoldingKind._("DIRECTIVES");
static const FoldingKind DOCUMENTATION_COMMENT =
const FoldingKind._("DOCUMENTATION_COMMENT");
static const FoldingKind FILE_HEADER = const FoldingKind._("FILE_HEADER");
static const FoldingKind FUNCTION_BODY = const FoldingKind._("FUNCTION_BODY");
/**
* A list containing all of the enum values that are defined.
*/
static const List<FoldingKind> VALUES = const <FoldingKind>[
ANNOTATIONS,
CLASS_BODY,
DIRECTIVES,
DOCUMENTATION_COMMENT,
FILE_HEADER,
FUNCTION_BODY
];
@override
final String name;
const FoldingKind._(this.name);
factory FoldingKind(String name) {
switch (name) {
case "ANNOTATIONS":
return ANNOTATIONS;
case "CLASS_BODY":
return CLASS_BODY;
case "DIRECTIVES":
return DIRECTIVES;
case "DOCUMENTATION_COMMENT":
return DOCUMENTATION_COMMENT;
case "FILE_HEADER":
return FILE_HEADER;
case "FUNCTION_BODY":
return FUNCTION_BODY;
}
throw new Exception('Illegal enum value: $name');
}
factory FoldingKind.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new FoldingKind(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "FoldingKind", json);
}
@override
String toString() => "FoldingKind.$name";
String toJson() => name;
}
/**
* FoldingRegion
*
* {
* "kind": FoldingKind
* "offset": int
* "length": int
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class FoldingRegion implements HasToJson {
FoldingKind _kind;
int _offset;
int _length;
/**
* The kind of the region.
*/
FoldingKind get kind => _kind;
/**
* The kind of the region.
*/
void set kind(FoldingKind value) {
assert(value != null);
this._kind = value;
}
/**
* The offset of the region to be folded.
*/
int get offset => _offset;
/**
* The offset of the region to be folded.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
/**
* The length of the region to be folded.
*/
int get length => _length;
/**
* The length of the region to be folded.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
FoldingRegion(FoldingKind kind, int offset, int length) {
this.kind = kind;
this.offset = offset;
this.length = length;
}
factory FoldingRegion.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
FoldingKind kind;
if (json.containsKey("kind")) {
kind = new FoldingKind.fromJson(
jsonDecoder, jsonPath + ".kind", json["kind"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "kind");
}
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
return new FoldingRegion(kind, offset, length);
} else {
throw jsonDecoder.mismatch(jsonPath, "FoldingRegion", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["kind"] = kind.toJson();
result["offset"] = offset;
result["length"] = length;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is FoldingRegion) {
return kind == other.kind &&
offset == other.offset &&
length == other.length;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* HighlightRegion
*
* {
* "type": HighlightRegionType
* "offset": int
* "length": int
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class HighlightRegion implements HasToJson {
HighlightRegionType _type;
int _offset;
int _length;
/**
* The type of highlight associated with the region.
*/
HighlightRegionType get type => _type;
/**
* The type of highlight associated with the region.
*/
void set type(HighlightRegionType value) {
assert(value != null);
this._type = value;
}
/**
* The offset of the region to be highlighted.
*/
int get offset => _offset;
/**
* The offset of the region to be highlighted.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
/**
* The length of the region to be highlighted.
*/
int get length => _length;
/**
* The length of the region to be highlighted.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
HighlightRegion(HighlightRegionType type, int offset, int length) {
this.type = type;
this.offset = offset;
this.length = length;
}
factory HighlightRegion.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
HighlightRegionType type;
if (json.containsKey("type")) {
type = new HighlightRegionType.fromJson(
jsonDecoder, jsonPath + ".type", json["type"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "type");
}
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
return new HighlightRegion(type, offset, length);
} else {
throw jsonDecoder.mismatch(jsonPath, "HighlightRegion", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["type"] = type.toJson();
result["offset"] = offset;
result["length"] = length;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is HighlightRegion) {
return type == other.type &&
offset == other.offset &&
length == other.length;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, type.hashCode);
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* HighlightRegionType
*
* enum {
* ANNOTATION
* BUILT_IN
* CLASS
* COMMENT_BLOCK
* COMMENT_DOCUMENTATION
* COMMENT_END_OF_LINE
* CONSTRUCTOR
* DIRECTIVE
* DYNAMIC_TYPE
* DYNAMIC_LOCAL_VARIABLE_DECLARATION
* DYNAMIC_LOCAL_VARIABLE_REFERENCE
* DYNAMIC_PARAMETER_DECLARATION
* DYNAMIC_PARAMETER_REFERENCE
* ENUM
* ENUM_CONSTANT
* FIELD
* FIELD_STATIC
* FUNCTION
* FUNCTION_DECLARATION
* FUNCTION_TYPE_ALIAS
* GETTER_DECLARATION
* IDENTIFIER_DEFAULT
* IMPORT_PREFIX
* INSTANCE_FIELD_DECLARATION
* INSTANCE_FIELD_REFERENCE
* INSTANCE_GETTER_DECLARATION
* INSTANCE_GETTER_REFERENCE
* INSTANCE_METHOD_DECLARATION
* INSTANCE_METHOD_REFERENCE
* INSTANCE_SETTER_DECLARATION
* INSTANCE_SETTER_REFERENCE
* INVALID_STRING_ESCAPE
* KEYWORD
* LABEL
* LIBRARY_NAME
* LITERAL_BOOLEAN
* LITERAL_DOUBLE
* LITERAL_INTEGER
* LITERAL_LIST
* LITERAL_MAP
* LITERAL_STRING
* LOCAL_FUNCTION_DECLARATION
* LOCAL_FUNCTION_REFERENCE
* LOCAL_VARIABLE
* LOCAL_VARIABLE_DECLARATION
* LOCAL_VARIABLE_REFERENCE
* METHOD
* METHOD_DECLARATION
* METHOD_DECLARATION_STATIC
* METHOD_STATIC
* PARAMETER
* SETTER_DECLARATION
* TOP_LEVEL_VARIABLE
* PARAMETER_DECLARATION
* PARAMETER_REFERENCE
* STATIC_FIELD_DECLARATION
* STATIC_GETTER_DECLARATION
* STATIC_GETTER_REFERENCE
* STATIC_METHOD_DECLARATION
* STATIC_METHOD_REFERENCE
* STATIC_SETTER_DECLARATION
* STATIC_SETTER_REFERENCE
* TOP_LEVEL_FUNCTION_DECLARATION
* TOP_LEVEL_FUNCTION_REFERENCE
* TOP_LEVEL_GETTER_DECLARATION
* TOP_LEVEL_GETTER_REFERENCE
* TOP_LEVEL_SETTER_DECLARATION
* TOP_LEVEL_SETTER_REFERENCE
* TOP_LEVEL_VARIABLE_DECLARATION
* TYPE_NAME_DYNAMIC
* TYPE_PARAMETER
* UNRESOLVED_INSTANCE_MEMBER_REFERENCE
* VALID_STRING_ESCAPE
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class HighlightRegionType implements Enum {
static const HighlightRegionType ANNOTATION =
const HighlightRegionType._("ANNOTATION");
static const HighlightRegionType BUILT_IN =
const HighlightRegionType._("BUILT_IN");
static const HighlightRegionType CLASS = const HighlightRegionType._("CLASS");
static const HighlightRegionType COMMENT_BLOCK =
const HighlightRegionType._("COMMENT_BLOCK");
static const HighlightRegionType COMMENT_DOCUMENTATION =
const HighlightRegionType._("COMMENT_DOCUMENTATION");
static const HighlightRegionType COMMENT_END_OF_LINE =
const HighlightRegionType._("COMMENT_END_OF_LINE");
static const HighlightRegionType CONSTRUCTOR =
const HighlightRegionType._("CONSTRUCTOR");
static const HighlightRegionType DIRECTIVE =
const HighlightRegionType._("DIRECTIVE");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType DYNAMIC_TYPE =
const HighlightRegionType._("DYNAMIC_TYPE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType DYNAMIC_LOCAL_VARIABLE_DECLARATION =
const HighlightRegionType._("DYNAMIC_LOCAL_VARIABLE_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType DYNAMIC_LOCAL_VARIABLE_REFERENCE =
const HighlightRegionType._("DYNAMIC_LOCAL_VARIABLE_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType DYNAMIC_PARAMETER_DECLARATION =
const HighlightRegionType._("DYNAMIC_PARAMETER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType DYNAMIC_PARAMETER_REFERENCE =
const HighlightRegionType._("DYNAMIC_PARAMETER_REFERENCE");
static const HighlightRegionType ENUM = const HighlightRegionType._("ENUM");
static const HighlightRegionType ENUM_CONSTANT =
const HighlightRegionType._("ENUM_CONSTANT");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType FIELD = const HighlightRegionType._("FIELD");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType FIELD_STATIC =
const HighlightRegionType._("FIELD_STATIC");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType FUNCTION =
const HighlightRegionType._("FUNCTION");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType FUNCTION_DECLARATION =
const HighlightRegionType._("FUNCTION_DECLARATION");
static const HighlightRegionType FUNCTION_TYPE_ALIAS =
const HighlightRegionType._("FUNCTION_TYPE_ALIAS");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType GETTER_DECLARATION =
const HighlightRegionType._("GETTER_DECLARATION");
static const HighlightRegionType IDENTIFIER_DEFAULT =
const HighlightRegionType._("IDENTIFIER_DEFAULT");
static const HighlightRegionType IMPORT_PREFIX =
const HighlightRegionType._("IMPORT_PREFIX");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_FIELD_DECLARATION =
const HighlightRegionType._("INSTANCE_FIELD_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_FIELD_REFERENCE =
const HighlightRegionType._("INSTANCE_FIELD_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_GETTER_DECLARATION =
const HighlightRegionType._("INSTANCE_GETTER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_GETTER_REFERENCE =
const HighlightRegionType._("INSTANCE_GETTER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_METHOD_DECLARATION =
const HighlightRegionType._("INSTANCE_METHOD_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_METHOD_REFERENCE =
const HighlightRegionType._("INSTANCE_METHOD_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_SETTER_DECLARATION =
const HighlightRegionType._("INSTANCE_SETTER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INSTANCE_SETTER_REFERENCE =
const HighlightRegionType._("INSTANCE_SETTER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType INVALID_STRING_ESCAPE =
const HighlightRegionType._("INVALID_STRING_ESCAPE");
static const HighlightRegionType KEYWORD =
const HighlightRegionType._("KEYWORD");
static const HighlightRegionType LABEL = const HighlightRegionType._("LABEL");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType LIBRARY_NAME =
const HighlightRegionType._("LIBRARY_NAME");
static const HighlightRegionType LITERAL_BOOLEAN =
const HighlightRegionType._("LITERAL_BOOLEAN");
static const HighlightRegionType LITERAL_DOUBLE =
const HighlightRegionType._("LITERAL_DOUBLE");
static const HighlightRegionType LITERAL_INTEGER =
const HighlightRegionType._("LITERAL_INTEGER");
static const HighlightRegionType LITERAL_LIST =
const HighlightRegionType._("LITERAL_LIST");
static const HighlightRegionType LITERAL_MAP =
const HighlightRegionType._("LITERAL_MAP");
static const HighlightRegionType LITERAL_STRING =
const HighlightRegionType._("LITERAL_STRING");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType LOCAL_FUNCTION_DECLARATION =
const HighlightRegionType._("LOCAL_FUNCTION_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType LOCAL_FUNCTION_REFERENCE =
const HighlightRegionType._("LOCAL_FUNCTION_REFERENCE");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType LOCAL_VARIABLE =
const HighlightRegionType._("LOCAL_VARIABLE");
static const HighlightRegionType LOCAL_VARIABLE_DECLARATION =
const HighlightRegionType._("LOCAL_VARIABLE_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType LOCAL_VARIABLE_REFERENCE =
const HighlightRegionType._("LOCAL_VARIABLE_REFERENCE");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType METHOD =
const HighlightRegionType._("METHOD");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType METHOD_DECLARATION =
const HighlightRegionType._("METHOD_DECLARATION");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType METHOD_DECLARATION_STATIC =
const HighlightRegionType._("METHOD_DECLARATION_STATIC");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType METHOD_STATIC =
const HighlightRegionType._("METHOD_STATIC");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType PARAMETER =
const HighlightRegionType._("PARAMETER");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType SETTER_DECLARATION =
const HighlightRegionType._("SETTER_DECLARATION");
/**
* Only for version 1 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_VARIABLE =
const HighlightRegionType._("TOP_LEVEL_VARIABLE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType PARAMETER_DECLARATION =
const HighlightRegionType._("PARAMETER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType PARAMETER_REFERENCE =
const HighlightRegionType._("PARAMETER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType STATIC_FIELD_DECLARATION =
const HighlightRegionType._("STATIC_FIELD_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType STATIC_GETTER_DECLARATION =
const HighlightRegionType._("STATIC_GETTER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType STATIC_GETTER_REFERENCE =
const HighlightRegionType._("STATIC_GETTER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType STATIC_METHOD_DECLARATION =
const HighlightRegionType._("STATIC_METHOD_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType STATIC_METHOD_REFERENCE =
const HighlightRegionType._("STATIC_METHOD_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType STATIC_SETTER_DECLARATION =
const HighlightRegionType._("STATIC_SETTER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType STATIC_SETTER_REFERENCE =
const HighlightRegionType._("STATIC_SETTER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_FUNCTION_DECLARATION =
const HighlightRegionType._("TOP_LEVEL_FUNCTION_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_FUNCTION_REFERENCE =
const HighlightRegionType._("TOP_LEVEL_FUNCTION_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_GETTER_DECLARATION =
const HighlightRegionType._("TOP_LEVEL_GETTER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_GETTER_REFERENCE =
const HighlightRegionType._("TOP_LEVEL_GETTER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_SETTER_DECLARATION =
const HighlightRegionType._("TOP_LEVEL_SETTER_DECLARATION");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_SETTER_REFERENCE =
const HighlightRegionType._("TOP_LEVEL_SETTER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType TOP_LEVEL_VARIABLE_DECLARATION =
const HighlightRegionType._("TOP_LEVEL_VARIABLE_DECLARATION");
static const HighlightRegionType TYPE_NAME_DYNAMIC =
const HighlightRegionType._("TYPE_NAME_DYNAMIC");
static const HighlightRegionType TYPE_PARAMETER =
const HighlightRegionType._("TYPE_PARAMETER");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType UNRESOLVED_INSTANCE_MEMBER_REFERENCE =
const HighlightRegionType._("UNRESOLVED_INSTANCE_MEMBER_REFERENCE");
/**
* Only for version 2 of highlight.
*/
static const HighlightRegionType VALID_STRING_ESCAPE =
const HighlightRegionType._("VALID_STRING_ESCAPE");
/**
* A list containing all of the enum values that are defined.
*/
static const List<HighlightRegionType> VALUES = const <HighlightRegionType>[
ANNOTATION,
BUILT_IN,
CLASS,
COMMENT_BLOCK,
COMMENT_DOCUMENTATION,
COMMENT_END_OF_LINE,
CONSTRUCTOR,
DIRECTIVE,
DYNAMIC_TYPE,
DYNAMIC_LOCAL_VARIABLE_DECLARATION,
DYNAMIC_LOCAL_VARIABLE_REFERENCE,
DYNAMIC_PARAMETER_DECLARATION,
DYNAMIC_PARAMETER_REFERENCE,
ENUM,
ENUM_CONSTANT,
FIELD,
FIELD_STATIC,
FUNCTION,
FUNCTION_DECLARATION,
FUNCTION_TYPE_ALIAS,
GETTER_DECLARATION,
IDENTIFIER_DEFAULT,
IMPORT_PREFIX,
INSTANCE_FIELD_DECLARATION,
INSTANCE_FIELD_REFERENCE,
INSTANCE_GETTER_DECLARATION,
INSTANCE_GETTER_REFERENCE,
INSTANCE_METHOD_DECLARATION,
INSTANCE_METHOD_REFERENCE,
INSTANCE_SETTER_DECLARATION,
INSTANCE_SETTER_REFERENCE,
INVALID_STRING_ESCAPE,
KEYWORD,
LABEL,
LIBRARY_NAME,
LITERAL_BOOLEAN,
LITERAL_DOUBLE,
LITERAL_INTEGER,
LITERAL_LIST,
LITERAL_MAP,
LITERAL_STRING,
LOCAL_FUNCTION_DECLARATION,
LOCAL_FUNCTION_REFERENCE,
LOCAL_VARIABLE,
LOCAL_VARIABLE_DECLARATION,
LOCAL_VARIABLE_REFERENCE,
METHOD,
METHOD_DECLARATION,
METHOD_DECLARATION_STATIC,
METHOD_STATIC,
PARAMETER,
SETTER_DECLARATION,
TOP_LEVEL_VARIABLE,
PARAMETER_DECLARATION,
PARAMETER_REFERENCE,
STATIC_FIELD_DECLARATION,
STATIC_GETTER_DECLARATION,
STATIC_GETTER_REFERENCE,
STATIC_METHOD_DECLARATION,
STATIC_METHOD_REFERENCE,
STATIC_SETTER_DECLARATION,
STATIC_SETTER_REFERENCE,
TOP_LEVEL_FUNCTION_DECLARATION,
TOP_LEVEL_FUNCTION_REFERENCE,
TOP_LEVEL_GETTER_DECLARATION,
TOP_LEVEL_GETTER_REFERENCE,
TOP_LEVEL_SETTER_DECLARATION,
TOP_LEVEL_SETTER_REFERENCE,
TOP_LEVEL_VARIABLE_DECLARATION,
TYPE_NAME_DYNAMIC,
TYPE_PARAMETER,
UNRESOLVED_INSTANCE_MEMBER_REFERENCE,
VALID_STRING_ESCAPE
];
@override
final String name;
const HighlightRegionType._(this.name);
factory HighlightRegionType(String name) {
switch (name) {
case "ANNOTATION":
return ANNOTATION;
case "BUILT_IN":
return BUILT_IN;
case "CLASS":
return CLASS;
case "COMMENT_BLOCK":
return COMMENT_BLOCK;
case "COMMENT_DOCUMENTATION":
return COMMENT_DOCUMENTATION;
case "COMMENT_END_OF_LINE":
return COMMENT_END_OF_LINE;
case "CONSTRUCTOR":
return CONSTRUCTOR;
case "DIRECTIVE":
return DIRECTIVE;
case "DYNAMIC_TYPE":
return DYNAMIC_TYPE;
case "DYNAMIC_LOCAL_VARIABLE_DECLARATION":
return DYNAMIC_LOCAL_VARIABLE_DECLARATION;
case "DYNAMIC_LOCAL_VARIABLE_REFERENCE":
return DYNAMIC_LOCAL_VARIABLE_REFERENCE;
case "DYNAMIC_PARAMETER_DECLARATION":
return DYNAMIC_PARAMETER_DECLARATION;
case "DYNAMIC_PARAMETER_REFERENCE":
return DYNAMIC_PARAMETER_REFERENCE;
case "ENUM":
return ENUM;
case "ENUM_CONSTANT":
return ENUM_CONSTANT;
case "FIELD":
return FIELD;
case "FIELD_STATIC":
return FIELD_STATIC;
case "FUNCTION":
return FUNCTION;
case "FUNCTION_DECLARATION":
return FUNCTION_DECLARATION;
case "FUNCTION_TYPE_ALIAS":
return FUNCTION_TYPE_ALIAS;
case "GETTER_DECLARATION":
return GETTER_DECLARATION;
case "IDENTIFIER_DEFAULT":
return IDENTIFIER_DEFAULT;
case "IMPORT_PREFIX":
return IMPORT_PREFIX;
case "INSTANCE_FIELD_DECLARATION":
return INSTANCE_FIELD_DECLARATION;
case "INSTANCE_FIELD_REFERENCE":
return INSTANCE_FIELD_REFERENCE;
case "INSTANCE_GETTER_DECLARATION":
return INSTANCE_GETTER_DECLARATION;
case "INSTANCE_GETTER_REFERENCE":
return INSTANCE_GETTER_REFERENCE;
case "INSTANCE_METHOD_DECLARATION":
return INSTANCE_METHOD_DECLARATION;
case "INSTANCE_METHOD_REFERENCE":
return INSTANCE_METHOD_REFERENCE;
case "INSTANCE_SETTER_DECLARATION":
return INSTANCE_SETTER_DECLARATION;
case "INSTANCE_SETTER_REFERENCE":
return INSTANCE_SETTER_REFERENCE;
case "INVALID_STRING_ESCAPE":
return INVALID_STRING_ESCAPE;
case "KEYWORD":
return KEYWORD;
case "LABEL":
return LABEL;
case "LIBRARY_NAME":
return LIBRARY_NAME;
case "LITERAL_BOOLEAN":
return LITERAL_BOOLEAN;
case "LITERAL_DOUBLE":
return LITERAL_DOUBLE;
case "LITERAL_INTEGER":
return LITERAL_INTEGER;
case "LITERAL_LIST":
return LITERAL_LIST;
case "LITERAL_MAP":
return LITERAL_MAP;
case "LITERAL_STRING":
return LITERAL_STRING;
case "LOCAL_FUNCTION_DECLARATION":
return LOCAL_FUNCTION_DECLARATION;
case "LOCAL_FUNCTION_REFERENCE":
return LOCAL_FUNCTION_REFERENCE;
case "LOCAL_VARIABLE":
return LOCAL_VARIABLE;
case "LOCAL_VARIABLE_DECLARATION":
return LOCAL_VARIABLE_DECLARATION;
case "LOCAL_VARIABLE_REFERENCE":
return LOCAL_VARIABLE_REFERENCE;
case "METHOD":
return METHOD;
case "METHOD_DECLARATION":
return METHOD_DECLARATION;
case "METHOD_DECLARATION_STATIC":
return METHOD_DECLARATION_STATIC;
case "METHOD_STATIC":
return METHOD_STATIC;
case "PARAMETER":
return PARAMETER;
case "SETTER_DECLARATION":
return SETTER_DECLARATION;
case "TOP_LEVEL_VARIABLE":
return TOP_LEVEL_VARIABLE;
case "PARAMETER_DECLARATION":
return PARAMETER_DECLARATION;
case "PARAMETER_REFERENCE":
return PARAMETER_REFERENCE;
case "STATIC_FIELD_DECLARATION":
return STATIC_FIELD_DECLARATION;
case "STATIC_GETTER_DECLARATION":
return STATIC_GETTER_DECLARATION;
case "STATIC_GETTER_REFERENCE":
return STATIC_GETTER_REFERENCE;
case "STATIC_METHOD_DECLARATION":
return STATIC_METHOD_DECLARATION;
case "STATIC_METHOD_REFERENCE":
return STATIC_METHOD_REFERENCE;
case "STATIC_SETTER_DECLARATION":
return STATIC_SETTER_DECLARATION;
case "STATIC_SETTER_REFERENCE":
return STATIC_SETTER_REFERENCE;
case "TOP_LEVEL_FUNCTION_DECLARATION":
return TOP_LEVEL_FUNCTION_DECLARATION;
case "TOP_LEVEL_FUNCTION_REFERENCE":
return TOP_LEVEL_FUNCTION_REFERENCE;
case "TOP_LEVEL_GETTER_DECLARATION":
return TOP_LEVEL_GETTER_DECLARATION;
case "TOP_LEVEL_GETTER_REFERENCE":
return TOP_LEVEL_GETTER_REFERENCE;
case "TOP_LEVEL_SETTER_DECLARATION":
return TOP_LEVEL_SETTER_DECLARATION;
case "TOP_LEVEL_SETTER_REFERENCE":
return TOP_LEVEL_SETTER_REFERENCE;
case "TOP_LEVEL_VARIABLE_DECLARATION":
return TOP_LEVEL_VARIABLE_DECLARATION;
case "TYPE_NAME_DYNAMIC":
return TYPE_NAME_DYNAMIC;
case "TYPE_PARAMETER":
return TYPE_PARAMETER;
case "UNRESOLVED_INSTANCE_MEMBER_REFERENCE":
return UNRESOLVED_INSTANCE_MEMBER_REFERENCE;
case "VALID_STRING_ESCAPE":
return VALID_STRING_ESCAPE;
}
throw new Exception('Illegal enum value: $name');
}
factory HighlightRegionType.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new HighlightRegionType(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "HighlightRegionType", json);
}
@override
String toString() => "HighlightRegionType.$name";
String toJson() => name;
}
/**
* KytheEntry
*
* {
* "source": KytheVName
* "kind": optional String
* "target": optional KytheVName
* "fact": String
* "value": optional List<int>
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class KytheEntry implements HasToJson {
KytheVName _source;
String _kind;
KytheVName _target;
String _fact;
List<int> _value;
/**
* The ticket of the source node.
*/
KytheVName get source => _source;
/**
* The ticket of the source node.
*/
void set source(KytheVName value) {
assert(value != null);
this._source = value;
}
/**
* An edge label. The schema defines which labels are meaningful.
*/
String get kind => _kind;
/**
* An edge label. The schema defines which labels are meaningful.
*/
void set kind(String value) {
this._kind = value;
}
/**
* The ticket of the target node.
*/
KytheVName get target => _target;
/**
* The ticket of the target node.
*/
void set target(KytheVName value) {
this._target = value;
}
/**
* A fact label. The schema defines which fact labels are meaningful.
*/
String get fact => _fact;
/**
* A fact label. The schema defines which fact labels are meaningful.
*/
void set fact(String value) {
assert(value != null);
this._fact = value;
}
/**
* The String value of the fact.
*/
List<int> get value => _value;
/**
* The String value of the fact.
*/
void set value(List<int> value) {
this._value = value;
}
KytheEntry(KytheVName source, String fact,
{String kind, KytheVName target, List<int> value}) {
this.source = source;
this.kind = kind;
this.target = target;
this.fact = fact;
this.value = value;
}
factory KytheEntry.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
KytheVName source;
if (json.containsKey("source")) {
source = new KytheVName.fromJson(
jsonDecoder, jsonPath + ".source", json["source"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "source");
}
String kind;
if (json.containsKey("kind")) {
kind = jsonDecoder.decodeString(jsonPath + ".kind", json["kind"]);
}
KytheVName target;
if (json.containsKey("target")) {
target = new KytheVName.fromJson(
jsonDecoder, jsonPath + ".target", json["target"]);
}
String fact;
if (json.containsKey("fact")) {
fact = jsonDecoder.decodeString(jsonPath + ".fact", json["fact"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "fact");
}
List<int> value;
if (json.containsKey("value")) {
value = jsonDecoder.decodeList(
jsonPath + ".value", json["value"], jsonDecoder.decodeInt);
}
return new KytheEntry(source, fact,
kind: kind, target: target, value: value);
} else {
throw jsonDecoder.mismatch(jsonPath, "KytheEntry", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["source"] = source.toJson();
if (kind != null) {
result["kind"] = kind;
}
if (target != null) {
result["target"] = target.toJson();
}
result["fact"] = fact;
if (value != null) {
result["value"] = value;
}
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is KytheEntry) {
return source == other.source &&
kind == other.kind &&
target == other.target &&
fact == other.fact &&
listEqual(value, other.value, (int a, int b) => a == b);
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, source.hashCode);
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
hash = JenkinsSmiHash.combine(hash, target.hashCode);
hash = JenkinsSmiHash.combine(hash, fact.hashCode);
hash = JenkinsSmiHash.combine(hash, value.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* KytheVName
*
* {
* "signature": String
* "corpus": String
* "root": String
* "path": String
* "language": String
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class KytheVName implements HasToJson {
String _signature;
String _corpus;
String _root;
String _path;
String _language;
/**
* An opaque signature generated by the analyzer.
*/
String get signature => _signature;
/**
* An opaque signature generated by the analyzer.
*/
void set signature(String value) {
assert(value != null);
this._signature = value;
}
/**
* The corpus of source code this KytheVName belongs to. Loosely, a corpus is
* a collection of related files, such as the contents of a given source
* repository.
*/
String get corpus => _corpus;
/**
* The corpus of source code this KytheVName belongs to. Loosely, a corpus is
* a collection of related files, such as the contents of a given source
* repository.
*/
void set corpus(String value) {
assert(value != null);
this._corpus = value;
}
/**
* A corpus-specific root label, typically a directory path or project
* identifier, denoting a distinct subset of the corpus. This may also be
* used to designate virtual collections like generated files.
*/
String get root => _root;
/**
* A corpus-specific root label, typically a directory path or project
* identifier, denoting a distinct subset of the corpus. This may also be
* used to designate virtual collections like generated files.
*/
void set root(String value) {
assert(value != null);
this._root = value;
}
/**
* A path-structured label describing the “location” of the named object
* relative to the corpus and the root.
*/
String get path => _path;
/**
* A path-structured label describing the “location” of the named object
* relative to the corpus and the root.
*/
void set path(String value) {
assert(value != null);
this._path = value;
}
/**
* The language this name belongs to.
*/
String get language => _language;
/**
* The language this name belongs to.
*/
void set language(String value) {
assert(value != null);
this._language = value;
}
KytheVName(String signature, String corpus, String root, String path,
String language) {
this.signature = signature;
this.corpus = corpus;
this.root = root;
this.path = path;
this.language = language;
}
factory KytheVName.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
String signature;
if (json.containsKey("signature")) {
signature = jsonDecoder.decodeString(
jsonPath + ".signature", json["signature"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "signature");
}
String corpus;
if (json.containsKey("corpus")) {
corpus = jsonDecoder.decodeString(jsonPath + ".corpus", json["corpus"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "corpus");
}
String root;
if (json.containsKey("root")) {
root = jsonDecoder.decodeString(jsonPath + ".root", json["root"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "root");
}
String path;
if (json.containsKey("path")) {
path = jsonDecoder.decodeString(jsonPath + ".path", json["path"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "path");
}
String language;
if (json.containsKey("language")) {
language =
jsonDecoder.decodeString(jsonPath + ".language", json["language"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "language");
}
return new KytheVName(signature, corpus, root, path, language);
} else {
throw jsonDecoder.mismatch(jsonPath, "KytheVName", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["signature"] = signature;
result["corpus"] = corpus;
result["root"] = root;
result["path"] = path;
result["language"] = language;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is KytheVName) {
return signature == other.signature &&
corpus == other.corpus &&
root == other.root &&
path == other.path &&
language == other.language;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, signature.hashCode);
hash = JenkinsSmiHash.combine(hash, corpus.hashCode);
hash = JenkinsSmiHash.combine(hash, root.hashCode);
hash = JenkinsSmiHash.combine(hash, path.hashCode);
hash = JenkinsSmiHash.combine(hash, language.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* LinkedEditGroup
*
* {
* "positions": List<Position>
* "length": int
* "suggestions": List<LinkedEditSuggestion>
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class LinkedEditGroup implements HasToJson {
List<Position> _positions;
int _length;
List<LinkedEditSuggestion> _suggestions;
/**
* The positions of the regions that should be edited simultaneously.
*/
List<Position> get positions => _positions;
/**
* The positions of the regions that should be edited simultaneously.
*/
void set positions(List<Position> value) {
assert(value != null);
this._positions = value;
}
/**
* The length of the regions that should be edited simultaneously.
*/
int get length => _length;
/**
* The length of the regions that should be edited simultaneously.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
/**
* Pre-computed suggestions for what every region might want to be changed
* to.
*/
List<LinkedEditSuggestion> get suggestions => _suggestions;
/**
* Pre-computed suggestions for what every region might want to be changed
* to.
*/
void set suggestions(List<LinkedEditSuggestion> value) {
assert(value != null);
this._suggestions = value;
}
LinkedEditGroup(List<Position> positions, int length,
List<LinkedEditSuggestion> suggestions) {
this.positions = positions;
this.length = length;
this.suggestions = suggestions;
}
factory LinkedEditGroup.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
List<Position> positions;
if (json.containsKey("positions")) {
positions = jsonDecoder.decodeList(
jsonPath + ".positions",
json["positions"],
(String jsonPath, Object json) =>
new Position.fromJson(jsonDecoder, jsonPath, json));
} else {
throw jsonDecoder.mismatch(jsonPath, "positions");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
List<LinkedEditSuggestion> suggestions;
if (json.containsKey("suggestions")) {
suggestions = jsonDecoder.decodeList(
jsonPath + ".suggestions",
json["suggestions"],
(String jsonPath, Object json) =>
new LinkedEditSuggestion.fromJson(jsonDecoder, jsonPath, json));
} else {
throw jsonDecoder.mismatch(jsonPath, "suggestions");
}
return new LinkedEditGroup(positions, length, suggestions);
} else {
throw jsonDecoder.mismatch(jsonPath, "LinkedEditGroup", json);
}
}
/**
* Construct an empty LinkedEditGroup.
*/
LinkedEditGroup.empty() : this(<Position>[], 0, <LinkedEditSuggestion>[]);
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["positions"] =
positions.map((Position value) => value.toJson()).toList();
result["length"] = length;
result["suggestions"] = suggestions
.map((LinkedEditSuggestion value) => value.toJson())
.toList();
return result;
}
/**
* Add a new position and change the length.
*/
void addPosition(Position position, int length) {
positions.add(position);
this.length = length;
}
/**
* Add a new suggestion.
*/
void addSuggestion(LinkedEditSuggestion suggestion) {
suggestions.add(suggestion);
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is LinkedEditGroup) {
return listEqual(
positions, other.positions, (Position a, Position b) => a == b) &&
length == other.length &&
listEqual(suggestions, other.suggestions,
(LinkedEditSuggestion a, LinkedEditSuggestion b) => a == b);
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, positions.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
hash = JenkinsSmiHash.combine(hash, suggestions.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* LinkedEditSuggestion
*
* {
* "value": String
* "kind": LinkedEditSuggestionKind
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class LinkedEditSuggestion implements HasToJson {
String _value;
LinkedEditSuggestionKind _kind;
/**
* The value that could be used to replace all of the linked edit regions.
*/
String get value => _value;
/**
* The value that could be used to replace all of the linked edit regions.
*/
void set value(String value) {
assert(value != null);
this._value = value;
}
/**
* The kind of value being proposed.
*/
LinkedEditSuggestionKind get kind => _kind;
/**
* The kind of value being proposed.
*/
void set kind(LinkedEditSuggestionKind value) {
assert(value != null);
this._kind = value;
}
LinkedEditSuggestion(String value, LinkedEditSuggestionKind kind) {
this.value = value;
this.kind = kind;
}
factory LinkedEditSuggestion.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
String value;
if (json.containsKey("value")) {
value = jsonDecoder.decodeString(jsonPath + ".value", json["value"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "value");
}
LinkedEditSuggestionKind kind;
if (json.containsKey("kind")) {
kind = new LinkedEditSuggestionKind.fromJson(
jsonDecoder, jsonPath + ".kind", json["kind"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "kind");
}
return new LinkedEditSuggestion(value, kind);
} else {
throw jsonDecoder.mismatch(jsonPath, "LinkedEditSuggestion", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["value"] = value;
result["kind"] = kind.toJson();
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is LinkedEditSuggestion) {
return value == other.value && kind == other.kind;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, value.hashCode);
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* LinkedEditSuggestionKind
*
* enum {
* METHOD
* PARAMETER
* TYPE
* VARIABLE
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class LinkedEditSuggestionKind implements Enum {
static const LinkedEditSuggestionKind METHOD =
const LinkedEditSuggestionKind._("METHOD");
static const LinkedEditSuggestionKind PARAMETER =
const LinkedEditSuggestionKind._("PARAMETER");
static const LinkedEditSuggestionKind TYPE =
const LinkedEditSuggestionKind._("TYPE");
static const LinkedEditSuggestionKind VARIABLE =
const LinkedEditSuggestionKind._("VARIABLE");
/**
* A list containing all of the enum values that are defined.
*/
static const List<LinkedEditSuggestionKind> VALUES =
const <LinkedEditSuggestionKind>[METHOD, PARAMETER, TYPE, VARIABLE];
@override
final String name;
const LinkedEditSuggestionKind._(this.name);
factory LinkedEditSuggestionKind(String name) {
switch (name) {
case "METHOD":
return METHOD;
case "PARAMETER":
return PARAMETER;
case "TYPE":
return TYPE;
case "VARIABLE":
return VARIABLE;
}
throw new Exception('Illegal enum value: $name');
}
factory LinkedEditSuggestionKind.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new LinkedEditSuggestionKind(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "LinkedEditSuggestionKind", json);
}
@override
String toString() => "LinkedEditSuggestionKind.$name";
String toJson() => name;
}
/**
* Location
*
* {
* "file": FilePath
* "offset": int
* "length": int
* "startLine": int
* "startColumn": int
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class Location implements HasToJson {
String _file;
int _offset;
int _length;
int _startLine;
int _startColumn;
/**
* The file containing the range.
*/
String get file => _file;
/**
* The file containing the range.
*/
void set file(String value) {
assert(value != null);
this._file = value;
}
/**
* The offset of the range.
*/
int get offset => _offset;
/**
* The offset of the range.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
/**
* The length of the range.
*/
int get length => _length;
/**
* The length of the range.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
/**
* The one-based index of the line containing the first character of the
* range.
*/
int get startLine => _startLine;
/**
* The one-based index of the line containing the first character of the
* range.
*/
void set startLine(int value) {
assert(value != null);
this._startLine = value;
}
/**
* The one-based index of the column containing the first character of the
* range.
*/
int get startColumn => _startColumn;
/**
* The one-based index of the column containing the first character of the
* range.
*/
void set startColumn(int value) {
assert(value != null);
this._startColumn = value;
}
Location(
String file, int offset, int length, int startLine, int startColumn) {
this.file = file;
this.offset = offset;
this.length = length;
this.startLine = startLine;
this.startColumn = startColumn;
}
factory Location.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
String file;
if (json.containsKey("file")) {
file = jsonDecoder.decodeString(jsonPath + ".file", json["file"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "file");
}
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
int startLine;
if (json.containsKey("startLine")) {
startLine =
jsonDecoder.decodeInt(jsonPath + ".startLine", json["startLine"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "startLine");
}
int startColumn;
if (json.containsKey("startColumn")) {
startColumn = jsonDecoder.decodeInt(
jsonPath + ".startColumn", json["startColumn"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "startColumn");
}
return new Location(file, offset, length, startLine, startColumn);
} else {
throw jsonDecoder.mismatch(jsonPath, "Location", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["file"] = file;
result["offset"] = offset;
result["length"] = length;
result["startLine"] = startLine;
result["startColumn"] = startColumn;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is Location) {
return file == other.file &&
offset == other.offset &&
length == other.length &&
startLine == other.startLine &&
startColumn == other.startColumn;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, file.hashCode);
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
hash = JenkinsSmiHash.combine(hash, startLine.hashCode);
hash = JenkinsSmiHash.combine(hash, startColumn.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* NavigationRegion
*
* {
* "offset": int
* "length": int
* "targets": List<int>
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class NavigationRegion implements HasToJson {
int _offset;
int _length;
List<int> _targets;
/**
* The offset of the region from which the user can navigate.
*/
int get offset => _offset;
/**
* The offset of the region from which the user can navigate.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
/**
* The length of the region from which the user can navigate.
*/
int get length => _length;
/**
* The length of the region from which the user can navigate.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
/**
* The indexes of the targets (in the enclosing navigation response) to which
* the given region is bound. By opening the target, clients can implement
* one form of navigation. This list cannot be empty.
*/
List<int> get targets => _targets;
/**
* The indexes of the targets (in the enclosing navigation response) to which
* the given region is bound. By opening the target, clients can implement
* one form of navigation. This list cannot be empty.
*/
void set targets(List<int> value) {
assert(value != null);
this._targets = value;
}
NavigationRegion(int offset, int length, List<int> targets) {
this.offset = offset;
this.length = length;
this.targets = targets;
}
factory NavigationRegion.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
List<int> targets;
if (json.containsKey("targets")) {
targets = jsonDecoder.decodeList(
jsonPath + ".targets", json["targets"], jsonDecoder.decodeInt);
} else {
throw jsonDecoder.mismatch(jsonPath, "targets");
}
return new NavigationRegion(offset, length, targets);
} else {
throw jsonDecoder.mismatch(jsonPath, "NavigationRegion", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["offset"] = offset;
result["length"] = length;
result["targets"] = targets;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is NavigationRegion) {
return offset == other.offset &&
length == other.length &&
listEqual(targets, other.targets, (int a, int b) => a == b);
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
hash = JenkinsSmiHash.combine(hash, targets.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* NavigationTarget
*
* {
* "kind": ElementKind
* "fileIndex": int
* "offset": int
* "length": int
* "startLine": int
* "startColumn": int
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class NavigationTarget implements HasToJson {
ElementKind _kind;
int _fileIndex;
int _offset;
int _length;
int _startLine;
int _startColumn;
/**
* The kind of the element.
*/
ElementKind get kind => _kind;
/**
* The kind of the element.
*/
void set kind(ElementKind value) {
assert(value != null);
this._kind = value;
}
/**
* The index of the file (in the enclosing navigation response) to navigate
* to.
*/
int get fileIndex => _fileIndex;
/**
* The index of the file (in the enclosing navigation response) to navigate
* to.
*/
void set fileIndex(int value) {
assert(value != null);
this._fileIndex = value;
}
/**
* The offset of the region to which the user can navigate.
*/
int get offset => _offset;
/**
* The offset of the region to which the user can navigate.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
/**
* The length of the region to which the user can navigate.
*/
int get length => _length;
/**
* The length of the region to which the user can navigate.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
/**
* The one-based index of the line containing the first character of the
* region.
*/
int get startLine => _startLine;
/**
* The one-based index of the line containing the first character of the
* region.
*/
void set startLine(int value) {
assert(value != null);
this._startLine = value;
}
/**
* The one-based index of the column containing the first character of the
* region.
*/
int get startColumn => _startColumn;
/**
* The one-based index of the column containing the first character of the
* region.
*/
void set startColumn(int value) {
assert(value != null);
this._startColumn = value;
}
NavigationTarget(ElementKind kind, int fileIndex, int offset, int length,
int startLine, int startColumn) {
this.kind = kind;
this.fileIndex = fileIndex;
this.offset = offset;
this.length = length;
this.startLine = startLine;
this.startColumn = startColumn;
}
factory NavigationTarget.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
ElementKind kind;
if (json.containsKey("kind")) {
kind = new ElementKind.fromJson(
jsonDecoder, jsonPath + ".kind", json["kind"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "kind");
}
int fileIndex;
if (json.containsKey("fileIndex")) {
fileIndex =
jsonDecoder.decodeInt(jsonPath + ".fileIndex", json["fileIndex"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "fileIndex");
}
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
int startLine;
if (json.containsKey("startLine")) {
startLine =
jsonDecoder.decodeInt(jsonPath + ".startLine", json["startLine"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "startLine");
}
int startColumn;
if (json.containsKey("startColumn")) {
startColumn = jsonDecoder.decodeInt(
jsonPath + ".startColumn", json["startColumn"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "startColumn");
}
return new NavigationTarget(
kind, fileIndex, offset, length, startLine, startColumn);
} else {
throw jsonDecoder.mismatch(jsonPath, "NavigationTarget", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["kind"] = kind.toJson();
result["fileIndex"] = fileIndex;
result["offset"] = offset;
result["length"] = length;
result["startLine"] = startLine;
result["startColumn"] = startColumn;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is NavigationTarget) {
return kind == other.kind &&
fileIndex == other.fileIndex &&
offset == other.offset &&
length == other.length &&
startLine == other.startLine &&
startColumn == other.startColumn;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
hash = JenkinsSmiHash.combine(hash, fileIndex.hashCode);
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
hash = JenkinsSmiHash.combine(hash, startLine.hashCode);
hash = JenkinsSmiHash.combine(hash, startColumn.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* Occurrences
*
* {
* "element": Element
* "offsets": List<int>
* "length": int
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class Occurrences implements HasToJson {
Element _element;
List<int> _offsets;
int _length;
/**
* The element that was referenced.
*/
Element get element => _element;
/**
* The element that was referenced.
*/
void set element(Element value) {
assert(value != null);
this._element = value;
}
/**
* The offsets of the name of the referenced element within the file.
*/
List<int> get offsets => _offsets;
/**
* The offsets of the name of the referenced element within the file.
*/
void set offsets(List<int> value) {
assert(value != null);
this._offsets = value;
}
/**
* The length of the name of the referenced element.
*/
int get length => _length;
/**
* The length of the name of the referenced element.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
Occurrences(Element element, List<int> offsets, int length) {
this.element = element;
this.offsets = offsets;
this.length = length;
}
factory Occurrences.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
Element element;
if (json.containsKey("element")) {
element = new Element.fromJson(
jsonDecoder, jsonPath + ".element", json["element"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "element");
}
List<int> offsets;
if (json.containsKey("offsets")) {
offsets = jsonDecoder.decodeList(
jsonPath + ".offsets", json["offsets"], jsonDecoder.decodeInt);
} else {
throw jsonDecoder.mismatch(jsonPath, "offsets");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
return new Occurrences(element, offsets, length);
} else {
throw jsonDecoder.mismatch(jsonPath, "Occurrences", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["element"] = element.toJson();
result["offsets"] = offsets;
result["length"] = length;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is Occurrences) {
return element == other.element &&
listEqual(offsets, other.offsets, (int a, int b) => a == b) &&
length == other.length;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, element.hashCode);
hash = JenkinsSmiHash.combine(hash, offsets.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* Outline
*
* {
* "element": Element
* "offset": int
* "length": int
* "codeOffset": int
* "codeLength": int
* "children": optional List<Outline>
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class Outline implements HasToJson {
Element _element;
int _offset;
int _length;
int _codeOffset;
int _codeLength;
List<Outline> _children;
/**
* A description of the element represented by this node.
*/
Element get element => _element;
/**
* A description of the element represented by this node.
*/
void set element(Element value) {
assert(value != null);
this._element = value;
}
/**
* The offset of the first character of the element. This is different than
* the offset in the Element, which is the offset of the name of the element.
* It can be used, for example, to map locations in the file back to an
* outline.
*/
int get offset => _offset;
/**
* The offset of the first character of the element. This is different than
* the offset in the Element, which is the offset of the name of the element.
* It can be used, for example, to map locations in the file back to an
* outline.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
/**
* The length of the element.
*/
int get length => _length;
/**
* The length of the element.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
/**
* The offset of the first character of the element code, which is neither
* documentation, nor annotation.
*/
int get codeOffset => _codeOffset;
/**
* The offset of the first character of the element code, which is neither
* documentation, nor annotation.
*/
void set codeOffset(int value) {
assert(value != null);
this._codeOffset = value;
}
/**
* The length of the element code.
*/
int get codeLength => _codeLength;
/**
* The length of the element code.
*/
void set codeLength(int value) {
assert(value != null);
this._codeLength = value;
}
/**
* The children of the node. The field will be omitted if the node has no
* children. Children are sorted by offset.
*/
List<Outline> get children => _children;
/**
* The children of the node. The field will be omitted if the node has no
* children. Children are sorted by offset.
*/
void set children(List<Outline> value) {
this._children = value;
}
Outline(
Element element, int offset, int length, int codeOffset, int codeLength,
{List<Outline> children}) {
this.element = element;
this.offset = offset;
this.length = length;
this.codeOffset = codeOffset;
this.codeLength = codeLength;
this.children = children;
}
factory Outline.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
Element element;
if (json.containsKey("element")) {
element = new Element.fromJson(
jsonDecoder, jsonPath + ".element", json["element"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "element");
}
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
int codeOffset;
if (json.containsKey("codeOffset")) {
codeOffset =
jsonDecoder.decodeInt(jsonPath + ".codeOffset", json["codeOffset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "codeOffset");
}
int codeLength;
if (json.containsKey("codeLength")) {
codeLength =
jsonDecoder.decodeInt(jsonPath + ".codeLength", json["codeLength"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "codeLength");
}
List<Outline> children;
if (json.containsKey("children")) {
children = jsonDecoder.decodeList(
jsonPath + ".children",
json["children"],
(String jsonPath, Object json) =>
new Outline.fromJson(jsonDecoder, jsonPath, json));
}
return new Outline(element, offset, length, codeOffset, codeLength,
children: children);
} else {
throw jsonDecoder.mismatch(jsonPath, "Outline", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["element"] = element.toJson();
result["offset"] = offset;
result["length"] = length;
result["codeOffset"] = codeOffset;
result["codeLength"] = codeLength;
if (children != null) {
result["children"] =
children.map((Outline value) => value.toJson()).toList();
}
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is Outline) {
return element == other.element &&
offset == other.offset &&
length == other.length &&
codeOffset == other.codeOffset &&
codeLength == other.codeLength &&
listEqual(children, other.children, (Outline a, Outline b) => a == b);
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, element.hashCode);
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
hash = JenkinsSmiHash.combine(hash, codeOffset.hashCode);
hash = JenkinsSmiHash.combine(hash, codeLength.hashCode);
hash = JenkinsSmiHash.combine(hash, children.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* Position
*
* {
* "file": FilePath
* "offset": int
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class Position implements HasToJson {
String _file;
int _offset;
/**
* The file containing the position.
*/
String get file => _file;
/**
* The file containing the position.
*/
void set file(String value) {
assert(value != null);
this._file = value;
}
/**
* The offset of the position.
*/
int get offset => _offset;
/**
* The offset of the position.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
Position(String file, int offset) {
this.file = file;
this.offset = offset;
}
factory Position.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
String file;
if (json.containsKey("file")) {
file = jsonDecoder.decodeString(jsonPath + ".file", json["file"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "file");
}
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
return new Position(file, offset);
} else {
throw jsonDecoder.mismatch(jsonPath, "Position", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["file"] = file;
result["offset"] = offset;
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is Position) {
return file == other.file && offset == other.offset;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, file.hashCode);
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* RefactoringKind
*
* enum {
* CONVERT_GETTER_TO_METHOD
* CONVERT_METHOD_TO_GETTER
* EXTRACT_LOCAL_VARIABLE
* EXTRACT_METHOD
* EXTRACT_WIDGET
* INLINE_LOCAL_VARIABLE
* INLINE_METHOD
* MOVE_FILE
* RENAME
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class RefactoringKind implements Enum {
static const RefactoringKind CONVERT_GETTER_TO_METHOD =
const RefactoringKind._("CONVERT_GETTER_TO_METHOD");
static const RefactoringKind CONVERT_METHOD_TO_GETTER =
const RefactoringKind._("CONVERT_METHOD_TO_GETTER");
static const RefactoringKind EXTRACT_LOCAL_VARIABLE =
const RefactoringKind._("EXTRACT_LOCAL_VARIABLE");
static const RefactoringKind EXTRACT_METHOD =
const RefactoringKind._("EXTRACT_METHOD");
static const RefactoringKind EXTRACT_WIDGET =
const RefactoringKind._("EXTRACT_WIDGET");
static const RefactoringKind INLINE_LOCAL_VARIABLE =
const RefactoringKind._("INLINE_LOCAL_VARIABLE");
static const RefactoringKind INLINE_METHOD =
const RefactoringKind._("INLINE_METHOD");
static const RefactoringKind MOVE_FILE = const RefactoringKind._("MOVE_FILE");
static const RefactoringKind RENAME = const RefactoringKind._("RENAME");
/**
* A list containing all of the enum values that are defined.
*/
static const List<RefactoringKind> VALUES = const <RefactoringKind>[
CONVERT_GETTER_TO_METHOD,
CONVERT_METHOD_TO_GETTER,
EXTRACT_LOCAL_VARIABLE,
EXTRACT_METHOD,
EXTRACT_WIDGET,
INLINE_LOCAL_VARIABLE,
INLINE_METHOD,
MOVE_FILE,
RENAME
];
@override
final String name;
const RefactoringKind._(this.name);
factory RefactoringKind(String name) {
switch (name) {
case "CONVERT_GETTER_TO_METHOD":
return CONVERT_GETTER_TO_METHOD;
case "CONVERT_METHOD_TO_GETTER":
return CONVERT_METHOD_TO_GETTER;
case "EXTRACT_LOCAL_VARIABLE":
return EXTRACT_LOCAL_VARIABLE;
case "EXTRACT_METHOD":
return EXTRACT_METHOD;
case "EXTRACT_WIDGET":
return EXTRACT_WIDGET;
case "INLINE_LOCAL_VARIABLE":
return INLINE_LOCAL_VARIABLE;
case "INLINE_METHOD":
return INLINE_METHOD;
case "MOVE_FILE":
return MOVE_FILE;
case "RENAME":
return RENAME;
}
throw new Exception('Illegal enum value: $name');
}
factory RefactoringKind.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new RefactoringKind(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "RefactoringKind", json);
}
@override
String toString() => "RefactoringKind.$name";
String toJson() => name;
}
/**
* RefactoringMethodParameter
*
* {
* "id": optional String
* "kind": RefactoringMethodParameterKind
* "type": String
* "name": String
* "parameters": optional String
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class RefactoringMethodParameter implements HasToJson {
String _id;
RefactoringMethodParameterKind _kind;
String _type;
String _name;
String _parameters;
/**
* The unique identifier of the parameter. Clients may omit this field for
* the parameters they want to add.
*/
String get id => _id;
/**
* The unique identifier of the parameter. Clients may omit this field for
* the parameters they want to add.
*/
void set id(String value) {
this._id = value;
}
/**
* The kind of the parameter.
*/
RefactoringMethodParameterKind get kind => _kind;
/**
* The kind of the parameter.
*/
void set kind(RefactoringMethodParameterKind value) {
assert(value != null);
this._kind = value;
}
/**
* The type that should be given to the parameter, or the return type of the
* parameter's function type.
*/
String get type => _type;
/**
* The type that should be given to the parameter, or the return type of the
* parameter's function type.
*/
void set type(String value) {
assert(value != null);
this._type = value;
}
/**
* The name that should be given to the parameter.
*/
String get name => _name;
/**
* The name that should be given to the parameter.
*/
void set name(String value) {
assert(value != null);
this._name = value;
}
/**
* The parameter list of the parameter's function type. If the parameter is
* not of a function type, this field will not be defined. If the function
* type has zero parameters, this field will have a value of '()'.
*/
String get parameters => _parameters;
/**
* The parameter list of the parameter's function type. If the parameter is
* not of a function type, this field will not be defined. If the function
* type has zero parameters, this field will have a value of '()'.
*/
void set parameters(String value) {
this._parameters = value;
}
RefactoringMethodParameter(
RefactoringMethodParameterKind kind, String type, String name,
{String id, String parameters}) {
this.id = id;
this.kind = kind;
this.type = type;
this.name = name;
this.parameters = parameters;
}
factory RefactoringMethodParameter.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
String id;
if (json.containsKey("id")) {
id = jsonDecoder.decodeString(jsonPath + ".id", json["id"]);
}
RefactoringMethodParameterKind kind;
if (json.containsKey("kind")) {
kind = new RefactoringMethodParameterKind.fromJson(
jsonDecoder, jsonPath + ".kind", json["kind"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "kind");
}
String type;
if (json.containsKey("type")) {
type = jsonDecoder.decodeString(jsonPath + ".type", json["type"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "type");
}
String name;
if (json.containsKey("name")) {
name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "name");
}
String parameters;
if (json.containsKey("parameters")) {
parameters = jsonDecoder.decodeString(
jsonPath + ".parameters", json["parameters"]);
}
return new RefactoringMethodParameter(kind, type, name,
id: id, parameters: parameters);
} else {
throw jsonDecoder.mismatch(jsonPath, "RefactoringMethodParameter", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
if (id != null) {
result["id"] = id;
}
result["kind"] = kind.toJson();
result["type"] = type;
result["name"] = name;
if (parameters != null) {
result["parameters"] = parameters;
}
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is RefactoringMethodParameter) {
return id == other.id &&
kind == other.kind &&
type == other.type &&
name == other.name &&
parameters == other.parameters;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, id.hashCode);
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
hash = JenkinsSmiHash.combine(hash, type.hashCode);
hash = JenkinsSmiHash.combine(hash, name.hashCode);
hash = JenkinsSmiHash.combine(hash, parameters.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* RefactoringMethodParameterKind
*
* enum {
* REQUIRED
* POSITIONAL
* NAMED
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class RefactoringMethodParameterKind implements Enum {
static const RefactoringMethodParameterKind REQUIRED =
const RefactoringMethodParameterKind._("REQUIRED");
static const RefactoringMethodParameterKind POSITIONAL =
const RefactoringMethodParameterKind._("POSITIONAL");
static const RefactoringMethodParameterKind NAMED =
const RefactoringMethodParameterKind._("NAMED");
/**
* A list containing all of the enum values that are defined.
*/
static const List<RefactoringMethodParameterKind> VALUES =
const <RefactoringMethodParameterKind>[REQUIRED, POSITIONAL, NAMED];
@override
final String name;
const RefactoringMethodParameterKind._(this.name);
factory RefactoringMethodParameterKind(String name) {
switch (name) {
case "REQUIRED":
return REQUIRED;
case "POSITIONAL":
return POSITIONAL;
case "NAMED":
return NAMED;
}
throw new Exception('Illegal enum value: $name');
}
factory RefactoringMethodParameterKind.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new RefactoringMethodParameterKind(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(
jsonPath, "RefactoringMethodParameterKind", json);
}
@override
String toString() => "RefactoringMethodParameterKind.$name";
String toJson() => name;
}
/**
* RefactoringProblem
*
* {
* "severity": RefactoringProblemSeverity
* "message": String
* "location": optional Location
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class RefactoringProblem implements HasToJson {
RefactoringProblemSeverity _severity;
String _message;
Location _location;
/**
* The severity of the problem being represented.
*/
RefactoringProblemSeverity get severity => _severity;
/**
* The severity of the problem being represented.
*/
void set severity(RefactoringProblemSeverity value) {
assert(value != null);
this._severity = value;
}
/**
* A human-readable description of the problem being represented.
*/
String get message => _message;
/**
* A human-readable description of the problem being represented.
*/
void set message(String value) {
assert(value != null);
this._message = value;
}
/**
* The location of the problem being represented. This field is omitted
* unless there is a specific location associated with the problem (such as a
* location where an element being renamed will be shadowed).
*/
Location get location => _location;
/**
* The location of the problem being represented. This field is omitted
* unless there is a specific location associated with the problem (such as a
* location where an element being renamed will be shadowed).
*/
void set location(Location value) {
this._location = value;
}
RefactoringProblem(RefactoringProblemSeverity severity, String message,
{Location location}) {
this.severity = severity;
this.message = message;
this.location = location;
}
factory RefactoringProblem.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
RefactoringProblemSeverity severity;
if (json.containsKey("severity")) {
severity = new RefactoringProblemSeverity.fromJson(
jsonDecoder, jsonPath + ".severity", json["severity"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "severity");
}
String message;
if (json.containsKey("message")) {
message =
jsonDecoder.decodeString(jsonPath + ".message", json["message"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "message");
}
Location location;
if (json.containsKey("location")) {
location = new Location.fromJson(
jsonDecoder, jsonPath + ".location", json["location"]);
}
return new RefactoringProblem(severity, message, location: location);
} else {
throw jsonDecoder.mismatch(jsonPath, "RefactoringProblem", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["severity"] = severity.toJson();
result["message"] = message;
if (location != null) {
result["location"] = location.toJson();
}
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is RefactoringProblem) {
return severity == other.severity &&
message == other.message &&
location == other.location;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, severity.hashCode);
hash = JenkinsSmiHash.combine(hash, message.hashCode);
hash = JenkinsSmiHash.combine(hash, location.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* RefactoringProblemSeverity
*
* enum {
* INFO
* WARNING
* ERROR
* FATAL
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class RefactoringProblemSeverity implements Enum {
/**
* A minor code problem. No example, because it is not used yet.
*/
static const RefactoringProblemSeverity INFO =
const RefactoringProblemSeverity._("INFO");
/**
* A minor code problem. For example names of local variables should be camel
* case and start with a lower case letter. Staring the name of a variable
* with an upper case is OK from the language point of view, but it is nice
* to warn the user.
*/
static const RefactoringProblemSeverity WARNING =
const RefactoringProblemSeverity._("WARNING");
/**
* The refactoring technically can be performed, but there is a logical
* problem. For example the name of a local variable being extracted
* conflicts with another name in the scope, or duplicate parameter names in
* the method being extracted, or a conflict between a parameter name and a
* local variable, etc. In some cases the location of the problem is also
* provided, so the IDE can show user the location and the problem, and let
* the user decide whether they want to perform the refactoring. For example
* the name conflict might be expected, and the user wants to fix it
* afterwards.
*/
static const RefactoringProblemSeverity ERROR =
const RefactoringProblemSeverity._("ERROR");
/**
* A fatal error, which prevents performing the refactoring. For example the
* name of a local variable being extracted is not a valid identifier, or
* selection is not a valid expression.
*/
static const RefactoringProblemSeverity FATAL =
const RefactoringProblemSeverity._("FATAL");
/**
* A list containing all of the enum values that are defined.
*/
static const List<RefactoringProblemSeverity> VALUES =
const <RefactoringProblemSeverity>[INFO, WARNING, ERROR, FATAL];
@override
final String name;
const RefactoringProblemSeverity._(this.name);
factory RefactoringProblemSeverity(String name) {
switch (name) {
case "INFO":
return INFO;
case "WARNING":
return WARNING;
case "ERROR":
return ERROR;
case "FATAL":
return FATAL;
}
throw new Exception('Illegal enum value: $name');
}
factory RefactoringProblemSeverity.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json is String) {
try {
return new RefactoringProblemSeverity(json);
} catch (_) {
// Fall through
}
}
throw jsonDecoder.mismatch(jsonPath, "RefactoringProblemSeverity", json);
}
/**
* Returns the [RefactoringProblemSeverity] with the maximal severity.
*/
static RefactoringProblemSeverity max(
RefactoringProblemSeverity a, RefactoringProblemSeverity b) =>
maxRefactoringProblemSeverity(a, b);
@override
String toString() => "RefactoringProblemSeverity.$name";
String toJson() => name;
}
/**
* RemoveContentOverlay
*
* {
* "type": "remove"
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class RemoveContentOverlay implements HasToJson {
RemoveContentOverlay();
factory RemoveContentOverlay.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
if (json["type"] != "remove") {
throw jsonDecoder.mismatch(jsonPath, "equal " + "remove", json);
}
return new RemoveContentOverlay();
} else {
throw jsonDecoder.mismatch(jsonPath, "RemoveContentOverlay", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["type"] = "remove";
return result;
}
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is RemoveContentOverlay) {
return true;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, 114870849);
return JenkinsSmiHash.finish(hash);
}
}
/**
* SourceChange
*
* {
* "message": String
* "edits": List<SourceFileEdit>
* "linkedEditGroups": List<LinkedEditGroup>
* "selection": optional Position
* "id": optional String
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class SourceChange implements HasToJson {
String _message;
List<SourceFileEdit> _edits;
List<LinkedEditGroup> _linkedEditGroups;
Position _selection;
String _id;
/**
* A human-readable description of the change to be applied.
*/
String get message => _message;
/**
* A human-readable description of the change to be applied.
*/
void set message(String value) {
assert(value != null);
this._message = value;
}
/**
* A list of the edits used to effect the change, grouped by file.
*/
List<SourceFileEdit> get edits => _edits;
/**
* A list of the edits used to effect the change, grouped by file.
*/
void set edits(List<SourceFileEdit> value) {
assert(value != null);
this._edits = value;
}
/**
* A list of the linked editing groups used to customize the changes that
* were made.
*/
List<LinkedEditGroup> get linkedEditGroups => _linkedEditGroups;
/**
* A list of the linked editing groups used to customize the changes that
* were made.
*/
void set linkedEditGroups(List<LinkedEditGroup> value) {
assert(value != null);
this._linkedEditGroups = value;
}
/**
* The position that should be selected after the edits have been applied.
*/
Position get selection => _selection;
/**
* The position that should be selected after the edits have been applied.
*/
void set selection(Position value) {
this._selection = value;
}
/**
* The optional identifier of the change kind. The identifier remains stable
* even if the message changes, or is parameterized.
*/
String get id => _id;
/**
* The optional identifier of the change kind. The identifier remains stable
* even if the message changes, or is parameterized.
*/
void set id(String value) {
this._id = value;
}
SourceChange(String message,
{List<SourceFileEdit> edits,
List<LinkedEditGroup> linkedEditGroups,
Position selection,
String id}) {
this.message = message;
if (edits == null) {
this.edits = <SourceFileEdit>[];
} else {
this.edits = edits;
}
if (linkedEditGroups == null) {
this.linkedEditGroups = <LinkedEditGroup>[];
} else {
this.linkedEditGroups = linkedEditGroups;
}
this.selection = selection;
this.id = id;
}
factory SourceChange.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
String message;
if (json.containsKey("message")) {
message =
jsonDecoder.decodeString(jsonPath + ".message", json["message"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "message");
}
List<SourceFileEdit> edits;
if (json.containsKey("edits")) {
edits = jsonDecoder.decodeList(
jsonPath + ".edits",
json["edits"],
(String jsonPath, Object json) =>
new SourceFileEdit.fromJson(jsonDecoder, jsonPath, json));
} else {
throw jsonDecoder.mismatch(jsonPath, "edits");
}
List<LinkedEditGroup> linkedEditGroups;
if (json.containsKey("linkedEditGroups")) {
linkedEditGroups = jsonDecoder.decodeList(
jsonPath + ".linkedEditGroups",
json["linkedEditGroups"],
(String jsonPath, Object json) =>
new LinkedEditGroup.fromJson(jsonDecoder, jsonPath, json));
} else {
throw jsonDecoder.mismatch(jsonPath, "linkedEditGroups");
}
Position selection;
if (json.containsKey("selection")) {
selection = new Position.fromJson(
jsonDecoder, jsonPath + ".selection", json["selection"]);
}
String id;
if (json.containsKey("id")) {
id = jsonDecoder.decodeString(jsonPath + ".id", json["id"]);
}
return new SourceChange(message,
edits: edits,
linkedEditGroups: linkedEditGroups,
selection: selection,
id: id);
} else {
throw jsonDecoder.mismatch(jsonPath, "SourceChange", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["message"] = message;
result["edits"] =
edits.map((SourceFileEdit value) => value.toJson()).toList();
result["linkedEditGroups"] = linkedEditGroups
.map((LinkedEditGroup value) => value.toJson())
.toList();
if (selection != null) {
result["selection"] = selection.toJson();
}
if (id != null) {
result["id"] = id;
}
return result;
}
/**
* Adds [edit] to the [FileEdit] for the given [file].
*/
void addEdit(String file, int fileStamp, SourceEdit edit) =>
addEditToSourceChange(this, file, fileStamp, edit);
/**
* Adds the given [FileEdit].
*/
void addFileEdit(SourceFileEdit edit) {
edits.add(edit);
}
/**
* Adds the given [LinkedEditGroup].
*/
void addLinkedEditGroup(LinkedEditGroup linkedEditGroup) {
linkedEditGroups.add(linkedEditGroup);
}
/**
* Returns the [FileEdit] for the given [file], maybe `null`.
*/
SourceFileEdit getFileEdit(String file) => getChangeFileEdit(this, file);
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is SourceChange) {
return message == other.message &&
listEqual(edits, other.edits,
(SourceFileEdit a, SourceFileEdit b) => a == b) &&
listEqual(linkedEditGroups, other.linkedEditGroups,
(LinkedEditGroup a, LinkedEditGroup b) => a == b) &&
selection == other.selection &&
id == other.id;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, message.hashCode);
hash = JenkinsSmiHash.combine(hash, edits.hashCode);
hash = JenkinsSmiHash.combine(hash, linkedEditGroups.hashCode);
hash = JenkinsSmiHash.combine(hash, selection.hashCode);
hash = JenkinsSmiHash.combine(hash, id.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* SourceEdit
*
* {
* "offset": int
* "length": int
* "replacement": String
* "id": optional String
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class SourceEdit implements HasToJson {
/**
* Get the result of applying a set of [edits] to the given [code]. Edits are
* applied in the order they appear in [edits].
*/
static String applySequence(String code, Iterable<SourceEdit> edits) =>
applySequenceOfEdits(code, edits);
int _offset;
int _length;
String _replacement;
String _id;
/**
* The offset of the region to be modified.
*/
int get offset => _offset;
/**
* The offset of the region to be modified.
*/
void set offset(int value) {
assert(value != null);
this._offset = value;
}
/**
* The length of the region to be modified.
*/
int get length => _length;
/**
* The length of the region to be modified.
*/
void set length(int value) {
assert(value != null);
this._length = value;
}
/**
* The code that is to replace the specified region in the original code.
*/
String get replacement => _replacement;
/**
* The code that is to replace the specified region in the original code.
*/
void set replacement(String value) {
assert(value != null);
this._replacement = value;
}
/**
* An identifier that uniquely identifies this source edit from other edits
* in the same response. This field is omitted unless a containing structure
* needs to be able to identify the edit for some reason.
*
* For example, some refactoring operations can produce edits that might not
* be appropriate (referred to as potential edits). Such edits will have an
* id so that they can be referenced. Edits in the same response that do not
* need to be referenced will not have an id.
*/
String get id => _id;
/**
* An identifier that uniquely identifies this source edit from other edits
* in the same response. This field is omitted unless a containing structure
* needs to be able to identify the edit for some reason.
*
* For example, some refactoring operations can produce edits that might not
* be appropriate (referred to as potential edits). Such edits will have an
* id so that they can be referenced. Edits in the same response that do not
* need to be referenced will not have an id.
*/
void set id(String value) {
this._id = value;
}
SourceEdit(int offset, int length, String replacement, {String id}) {
this.offset = offset;
this.length = length;
this.replacement = replacement;
this.id = id;
}
factory SourceEdit.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
int offset;
if (json.containsKey("offset")) {
offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "offset");
}
int length;
if (json.containsKey("length")) {
length = jsonDecoder.decodeInt(jsonPath + ".length", json["length"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "length");
}
String replacement;
if (json.containsKey("replacement")) {
replacement = jsonDecoder.decodeString(
jsonPath + ".replacement", json["replacement"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "replacement");
}
String id;
if (json.containsKey("id")) {
id = jsonDecoder.decodeString(jsonPath + ".id", json["id"]);
}
return new SourceEdit(offset, length, replacement, id: id);
} else {
throw jsonDecoder.mismatch(jsonPath, "SourceEdit", json);
}
}
/**
* The end of the region to be modified.
*/
int get end => offset + length;
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["offset"] = offset;
result["length"] = length;
result["replacement"] = replacement;
if (id != null) {
result["id"] = id;
}
return result;
}
/**
* Get the result of applying the edit to the given [code].
*/
String apply(String code) => applyEdit(code, this);
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is SourceEdit) {
return offset == other.offset &&
length == other.length &&
replacement == other.replacement &&
id == other.id;
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, offset.hashCode);
hash = JenkinsSmiHash.combine(hash, length.hashCode);
hash = JenkinsSmiHash.combine(hash, replacement.hashCode);
hash = JenkinsSmiHash.combine(hash, id.hashCode);
return JenkinsSmiHash.finish(hash);
}
}
/**
* SourceFileEdit
*
* {
* "file": FilePath
* "fileStamp": long
* "edits": List<SourceEdit>
* }
*
* Clients may not extend, implement or mix-in this class.
*/
class SourceFileEdit implements HasToJson {
String _file;
int _fileStamp;
List<SourceEdit> _edits;
/**
* The file containing the code to be modified.
*/
String get file => _file;
/**
* The file containing the code to be modified.
*/
void set file(String value) {
assert(value != null);
this._file = value;
}
/**
* The modification stamp of the file at the moment when the change was
* created, in milliseconds since the "Unix epoch". Will be -1 if the file
* did not exist and should be created. The client may use this field to make
* sure that the file was not changed since then, so it is safe to apply the
* change.
*/
int get fileStamp => _fileStamp;
/**
* The modification stamp of the file at the moment when the change was
* created, in milliseconds since the "Unix epoch". Will be -1 if the file
* did not exist and should be created. The client may use this field to make
* sure that the file was not changed since then, so it is safe to apply the
* change.
*/
void set fileStamp(int value) {
assert(value != null);
this._fileStamp = value;
}
/**
* A list of the edits used to effect the change.
*/
List<SourceEdit> get edits => _edits;
/**
* A list of the edits used to effect the change.
*/
void set edits(List<SourceEdit> value) {
assert(value != null);
this._edits = value;
}
SourceFileEdit(String file, int fileStamp, {List<SourceEdit> edits}) {
this.file = file;
this.fileStamp = fileStamp;
if (edits == null) {
this.edits = <SourceEdit>[];
} else {
this.edits = edits;
}
}
factory SourceFileEdit.fromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json) {
if (json == null) {
json = {};
}
if (json is Map) {
String file;
if (json.containsKey("file")) {
file = jsonDecoder.decodeString(jsonPath + ".file", json["file"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "file");
}
int fileStamp;
if (json.containsKey("fileStamp")) {
fileStamp =
jsonDecoder.decodeInt(jsonPath + ".fileStamp", json["fileStamp"]);
} else {
throw jsonDecoder.mismatch(jsonPath, "fileStamp");
}
List<SourceEdit> edits;
if (json.containsKey("edits")) {
edits = jsonDecoder.decodeList(
jsonPath + ".edits",
json["edits"],
(String jsonPath, Object json) =>
new SourceEdit.fromJson(jsonDecoder, jsonPath, json));
} else {
throw jsonDecoder.mismatch(jsonPath, "edits");
}
return new SourceFileEdit(file, fileStamp, edits: edits);
} else {
throw jsonDecoder.mismatch(jsonPath, "SourceFileEdit", json);
}
}
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> result = {};
result["file"] = file;
result["fileStamp"] = fileStamp;
result["edits"] = edits.map((SourceEdit value) => value.toJson()).toList();
return result;
}
/**
* Adds the given [Edit] to the list.
*/
void add(SourceEdit edit) => addEditForSource(this, edit);
/**
* Adds the given [Edit]s.
*/
void addAll(Iterable<SourceEdit> edits) => addAllEditsForSource(this, edits);
@override
String toString() => json.encode(toJson());
@override
bool operator ==(other) {
if (other is SourceFileEdit) {
return file == other.file &&
fileStamp == other.fileStamp &&
listEqual(edits, other.edits, (SourceEdit a, SourceEdit b) => a == b);
}
return false;
}
@override
int get hashCode {
int hash = 0;
hash = JenkinsSmiHash.combine(hash, file.hashCode);
hash = JenkinsSmiHash.combine(hash, fileStamp.hashCode);
hash = JenkinsSmiHash.combine(hash, edits.hashCode);
return JenkinsSmiHash.finish(hash);
}
}