Version 2.1.0-dev.9.0
Merge commit 'bf26f760b1bb3d5fea6bda110f6a17b590364120' into dev
Cherry-pick commit '8c20adffe66ff672111aa5ab4dbbd557df097e30' into dev
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5a55218..1b5b04a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,5 @@
+## 2.1.0-dev.9.0
+
## 2.1.0-dev.8.0
#### `dart:html`
@@ -150,6 +152,7 @@
### Core library changes
* Add `HashMap.fromEntries` and `LinkedHashmap.fromEntries` constructors.
+* Add `ArgumentError.checkNotNull` utility method.
### Tool Changes
diff --git a/DEPS b/DEPS
index d3af193..3ded0c6 100644
--- a/DEPS
+++ b/DEPS
@@ -89,7 +89,7 @@
"http_multi_server_tag" : "2.0.5",
"http_parser_tag" : "3.1.1",
"http_retry_tag": "0.1.1",
- "http_tag" : "0.11.3+17",
+ "http_tag" : "0.12.0",
"http_throttle_tag" : "1.0.2",
"idl_parser_rev": "5fb1ebf49d235b5a70c9f49047e83b0654031eb7",
"intl_tag": "0.15.7",
@@ -144,7 +144,10 @@
"web_socket_channel_tag": "1.0.9",
"WebCore_rev": "fb11e887f77919450e497344da570d780e078bc8",
"yaml_tag": "2.1.15",
- "zlib_rev": "c3d0a6190f2f8c924a05ab6cc97b8f975bddd33f",
+ "zlib_rev": "c44fb7248079cc3d5563b14b3f758aee60d6b415",
+ "crashpad_rev": "bf327d8ceb6a669607b0dbab5a83a275d03f99ed",
+ "minichromium_rev": "8d641e30a8b12088649606b912c2bc4947419ccc",
+ "googletest_rev": "f854f1d27488996dc8a6db3c9453f80b02585e12",
}
deps = {
@@ -376,11 +379,23 @@
"@" + Var("web_socket_channel_tag"),
Var("dart_root") + "/third_party/pkg/yaml":
Var("dart_git") + "yaml.git" + "@" + Var("yaml_tag"),
- Var("dart_root") + "/third_party/cygwin": {
- "url": Var("chromium_git") + "/chromium/deps/cygwin.git" + "@" +
+}
+
+deps_os = {
+ "win": {
+ Var("dart_root") + "/third_party/cygwin":
+ Var("chromium_git") + "/chromium/deps/cygwin.git" + "@" +
"c89e446b273697fadf3a10ff1007a97c0b7de6df",
- "condition": "checkout_win",
- },
+ Var("dart_root") + "/third_party/crashpad/crashpad":
+ Var("chromium_git") + "/crashpad/crashpad.git" + "@" +
+ Var("crashpad_rev"),
+ Var("dart_root") + "/third_party/mini_chromium/mini_chromium":
+ Var("chromium_git") + "/chromium/mini_chromium" + "@" +
+ Var("minichromium_rev"),
+ Var("dart_root") + "/third_party/googletest":
+ Var("fuchsia_git") + "/third_party/googletest" + "@" +
+ Var("googletest_rev"),
+ }
}
# TODO(iposva): Move the necessary tools so that hooks can be run
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
index 0334944..109e3fc 100644
--- a/build/config/BUILDCONFIG.gn
+++ b/build/config/BUILDCONFIG.gn
@@ -269,6 +269,9 @@
}
_native_compiler_configs += [ _default_optimization_config ]
+# zlib's BUILD.gn expects to have this config among default configs.
+_native_compiler_configs += [ "//build/config/compiler:default_optimization" ]
+
# Symbol setup.
_default_symbols_config = "//build/config/compiler:symbols"
_native_compiler_configs += [ _default_symbols_config ]
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 4e9d66b..8025521 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -748,6 +748,13 @@
}
}
+# These are two named configs that zlib's BUILD.gn expects to exist.
+config("default_optimization") {
+}
+
+config("optimize_speed") {
+}
+
# Symbols ----------------------------------------------------------------------
config("symbols") {
diff --git a/build/config/win/BUILD.gn b/build/config/win/BUILD.gn
index 458479e..daf26ed 100644
--- a/build/config/win/BUILD.gn
+++ b/build/config/win/BUILD.gn
@@ -73,9 +73,6 @@
# exceeds maximum allowable size (80000000)
# which started happening more regularly after VS2013 Update 4.
"/maxilksize:2147483647",
-
- # Force the creation of a .lib file for all executable() targets.
- "/EXPORT:main",
]
# ASLR makes debugging with windbg difficult because Chrome.exe and
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
new file mode 100644
index 0000000..5f803c9
--- /dev/null
+++ b/build/secondary/third_party/android_tools/BUILD.gn
@@ -0,0 +1,29 @@
+# Copyright 2018 The Dart project Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/android/config.gni")
+
+config("cpu_features_include") {
+ include_dirs = [ "$android_ndk_root/sources/android/cpufeatures" ]
+}
+
+config("cpu_features_warnings") {
+ if (is_clang) {
+ # cpu-features.c has few unused functions on x86 b/26403333
+ cflags = [ "-Wno-unused-function" ]
+ }
+}
+
+source_set("cpu_features") {
+ sources = [
+ "$android_ndk_root/sources/android/cpufeatures/cpu-features.c",
+ ]
+ public_configs = [ ":cpu_features_include" ]
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+ # Must be after no_chromium_code for warning flags to be ordered correctly.
+ ":cpu_features_warnings",
+ ]
+}
diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn
index b8d222a..0784d03 100644
--- a/build/toolchain/win/BUILD.gn
+++ b/build/toolchain/win/BUILD.gn
@@ -22,13 +22,13 @@
# Setup the Visual Studio state.
toolchain_data = exec_script("setup_toolchain.py",
- [
- visual_studio_path,
- windows_sdk_path,
- visual_studio_runtime_dirs,
- current_cpu,
- ],
- "scope")
+ [
+ visual_studio_path,
+ windows_sdk_path,
+ visual_studio_runtime_dirs,
+ current_cpu,
+ ],
+ "scope")
if (vc_bin_dir == "") {
vc_bin_dir = toolchain_data.vc_bin_dir
@@ -164,6 +164,26 @@
rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}"
}
+ tool("solink_module") {
+ dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" # e.g. foo.dll
+ pdbname = "${dllname}.pdb"
+ rspfile = "${dllname}.rsp"
+
+ command = "$python_path $tool_wrapper_path link-wrapper $env False link.exe /nologo /DLL /OUT:$dllname /PDB:$pdbname @$rspfile"
+ default_output_extension = ".dll"
+ default_output_dir = "{{root_out_dir}}"
+ description = "LINK_MODULE(DLL) {{output}}"
+ outputs = [
+ dllname,
+ pdbname,
+ ]
+ runtime_outputs = outputs
+
+ # The use of inputs_newline is to work around a fixed per-line buffer
+ # size in the linker.
+ rspfile_content = "{{libs}} {{solibs}} {{inputs_newline}} {{ldflags}}"
+ }
+
tool("link") {
binary_output =
"{{root_out_dir}}/{{target_output_name}}{{output_extension}}"
@@ -194,8 +214,7 @@
}
tool("copy") {
- command =
- "$python_path $tool_wrapper_path recursive-mirror {{source}} {{output}}"
+ command = "$python_path $tool_wrapper_path recursive-mirror {{source}} {{output}}"
description = "COPY {{source}} {{output}}"
}
diff --git a/docs/language/dartLangSpec.tex b/docs/language/dartLangSpec.tex
index 7e381b9..c04765f 100644
--- a/docs/language/dartLangSpec.tex
+++ b/docs/language/dartLangSpec.tex
@@ -63,6 +63,10 @@
% - Eliminate all references to checked and production mode, Dart 2 does
% not have modes.
% - Integrate feature specification on noSuchMethod forwarders.
+% - Specify that bound satisfaction in generic type alias type parameters
+% must imply bound satisfaction everywhere in the body.
+% - Specify that super-bounded generic type alias applications must trigger
+% a well-boundedness check on all types occurring in the denoted type.
%
% 2.0
% - Don't allow functions as assert test values.
@@ -3538,11 +3542,6 @@
It is a compile-time error if $T$ is not well-bounded
(\ref{superBoundedTypes}).
-\commentary{
-That is, if the number of type arguments is wrong,
-or one or more of the upper bounds has been violated.
-}
-
\LMHash{}
Otherwise, said parameterized type \code{C<$T_1, \ldots,\ T_m$>} denotes an application of the generic class declared by $G$ to the type arguments $T_1, \ldots, T_m$.
This yields a class $C'$ whose members are equivalent to those of a class declaration which is obtained from the declaration of $G$ by replacing each occurrence of $X_j$ by $T_j$.
@@ -3553,22 +3552,35 @@
}
\LMHash{}
-A {\em generic type alias} introduces a mapping from actual type argument lists to types.
-Consider a generic type alias declaration $G$ named \code{F} with formal type parameter declarations
+A {\em generic type alias}
+introduces a mapping from actual type argument lists to types.
+Consider a generic type alias declaration $G$ named \code{F}
+with formal type parameter declarations
$X_1\ \EXTENDS\ B_1, \ldots,\ X_m\ \EXTENDS\ B_m$,
-and right hand side $T$,
-and the parameterized type $S$ of the form \code{F<$T_1, \ldots,\ T_l$>}.
+%% TODO(eernst): 'right hand side' works only for a type alias using `=`.
+%% Explain what "the right hand side" means for an old-style declaration.
+and right hand side $T$.
\LMHash{}
+Under the assumption that $X_1,\ \ldots,\ X_m$ are types such that
+$X_j <: B_j$, for all $j \in 1 .. m$,
+it is a compile-time error if any type in $T$ is not regular-bounded.
+
+\commentary{
+This means that the bounds declared for
+the formal type parameters of a generic type alias
+must be such that when they are satisfied,
+the bounds that pertain to any type in the body must also be satisfied.
+}
+
+\LMHash{}
+Let $G$, \code{F}, and $X_1,\ \ldots,\ X_m$ be as defined above,
+let $T_1,\ \ldots,\ T_l$ be types,
+and let $S$ be the parameterized type \code{F<$T_1, \ldots,\ T_l$>}.
It is a compile-time error if $m \not= l$.
It is a compile-time error if $S$ is not well-bounded
(\ref{superBoundedTypes}).
-\commentary{
-That is, if the number of type arguments is wrong,
-or one or more of the upper bounds has been violated.
-}
-
\LMHash{}
Otherwise, said parameterized type
\code{F<$T_1, \ldots,\ T_m$>}
@@ -3577,10 +3589,38 @@
This yields the type
$[T_1/X_1, \ldots, T_m/X_m]T$.
+\rationale{
+The requirement that satisfaction of the bounds on
+the formal type parameters of a generic type alias $G$
+must imply satisfaction of all bounds pertaining to
+every type that occurs in the body of $G$
+limits the expressive power of generic type aliases.
+However, it would require the constraints on formal type parameters
+to be expressed in a much more powerful language
+if we were to allow a significantly larger set of types
+to be expressed using a generic type alias.
+}
+
\commentary{
-A generic type alias does not correspond to any entities at run time,
-it is only an alias for an existing type.
-Hence, we may consider it as syntactic sugar which is eliminated before the program runs.
+For example, consider the following code:
+}
+
+\begin{dartCode}
+\CLASS{} A<X \EXTENDS{} \VOID{} \FUNCTION(num)> \{\}
+\TYPEDEF{} F<Y> = A<\VOID{} \FUNCTION(Y)> \FUNCTION(); // \comment{compile-time error}
+\end{dartCode}
+
+\commentary{
+There is no way to specify a bound on \code{Y} in the declaration of \code{F}
+which will ensure that all bounds on the right hand side are respected.
+This is because the actual requirement is that \code{Y} must be
+a \emph{supertype} of \code{num},
+but Dart does not support lower bounds for type parameters.
+The type \code{A<\VOID{} \FUNCTION(U)> \FUNCTION()}
+can still be specified explicitly
+for every \code{U} which satisfies the bounds declared by \code{A}.
+So the types can be expressed,
+they just cannot be abbreviated using a generic type alias.
}
\LMHash{}
@@ -3768,13 +3808,13 @@
for some $j \in 1 .. n$.
\item $T$ is of the form \code{$G$<$S_1, \ldots,\ S_n$>}
- where $G$ denotes a parameterized type alias such that
+ where $G$ denotes a generic type alias such that
$j \in 1 .. n$,
the formal type parameter corresponding to $S_j$ is covariant,
and $S$ occurs in a covariant position in $S_j$.
\item $T$ is of the form \code{$G$<$S_1, \ldots,\ S_n$>}
- where $G$ denotes a parameterized type alias such that
+ where $G$ denotes a generic type alias such that
$j \in 1 .. n$,
the formal type parameter corresponding to $S_j$ is contravariant,
and $S$ occurs in a contravariant position in $S_j$.
@@ -3816,13 +3856,13 @@
for some $j \in 1 .. n$.
\item $T$ is of the form \code{$G$<$S_1, \ldots,\ S_n$>}
- where $G$ denotes a parameterized type alias such that
+ where $G$ denotes a generic type alias such that
$j \in 1 .. n$,
the formal type parameter corresponding to $S_j$ is covariant,
and $S$ occurs in a contravariant position in $S_j$.
\item $T$ is of the form \code{$G$<$S_1, \ldots,\ S_n$>}
- where $G$ denotes a parameterized type alias such that
+ where $G$ denotes a generic type alias such that
$j \in 1 .. n$,
the formal type parameter corresponding to $S_j$ is contravariant,
and $S$ occurs in a covariant position in $S_j$.
@@ -3834,7 +3874,7 @@
\begin{itemize}
\item $T$ is of the form \code{$G$<$S_1,\ \ldots,\ S_n$>}
- where $G$ denotes a generic class or a parameterized type alias,
+ where $G$ denotes a generic class or a generic type alias,
and $S$ occurs in an invariant position in $S_j$ for some $j \in 1 .. n$.
\item $T$ is of the form
@@ -3860,7 +3900,7 @@
for some $i \in 1 .. m$.
\item $T$ is of the form \code{$G$<$S_1, \ldots,\ S_n$>}
- where $G$ denotes a parameterized type alias,
+ where $G$ denotes a generic type alias,
$j \in 1 .. n$,
the formal type parameter corresponding to $S_j$ is invariant,
and $S$ occurs in $S_j$.
@@ -3919,9 +3959,16 @@
\LMHash{}
Every type which is not a parameterized type is {\em regular-bounded}.
+
+\commentary{
+In particular, every non-generic class and every function type
+is a regular-bounded type.
+}
+
+\LMHash{}
Let $T$ be a parameterized type of the form
\code{$G$<$S_1, \ldots,\ S_n$>}
-where $G$ denotes a generic class or a parameterized type alias.
+where $G$ denotes a generic class or a generic type alias.
Let
\code{$X_1\ \EXTENDS\ B_1, \ldots,\ X_n\ \EXTENDS\ B_n$}
be the formal type parameter declarations of $G$.
@@ -3931,14 +3978,14 @@
for all $j \in 1 .. n$.
\commentary{
-This means that each actual type argument satisfies the declared upper
-bound for the corresponding formal type parameter.
+This means that regular-bounded types are those types
+that do not violate their type parameter bounds.
}
\LMHash{}
Let $T$ be a parameterized type of the form
\code{$G$<$S_1, \ldots,\ S_n$>}
-where $G$ denotes a generic class or a parameterized type alias.
+where $G$ denotes a generic class or a generic type alias.
$T$ is {\em super-bounded} if{}f the following conditions are both true:
\begin{itemize}
@@ -3953,6 +4000,11 @@
It is then required that
\code{$G$<$S'_1, \ldots,\ S'_n$>}
is regular-bounded.
+ %
+ Moreover, if $G$ denotes a generic type alias with body $U$,
+ it is required that every type that occurs as a subterm of
+ $[S_1/X_1, \ldots,\ S_n/X_n]U$
+ is well-bounded (defined below).
\end{itemize}
\commentary{
@@ -3979,7 +4031,7 @@
\item $T$ is an immediate subterm of a redirecting factory constructor
signature
(\ref{redirectingFactoryConstructors}).
-\item $T$ is an immediate subterm of an \EXTENDS{} clause
+\item $T$ is an immediate subterm of an \EXTENDS{} clause of a class
(\ref{superclasses}),
or it occurs as an element in the type list of an \IMPLEMENTS{} clause
(\ref{superinterfaces}),
@@ -4017,6 +4069,9 @@
\rationale{
Super-bounded types enable the expression of informative common supertypes
of some sets of types whose common supertypes would otherwise be much less informative.
+}
+
+\commentary{
For example, consider the following class:
}
@@ -4026,7 +4081,7 @@
\}
\end{dartCode}
-\rationale{
+\commentary{
Without super-bounded types,
there is no type $T$ which makes \code{C<$T$>} a common supertype of
all types of the form \code{C<$S$>}
@@ -4037,12 +4092,14 @@
as its type annotation,
which means that a member like \code{next} is not known to exist
(which is what we mean by saying that the type is `less informative').
+}
+\rationale{
We could introduce a notion of recursive (infinite) types, and express
the least upper bound of all types of the form \code{C<$S$>} as
some syntax whose meaning could be approximated by
\code{C<C<C<C<$\ldots$>$\!$>$\!$>$\!$>}.
-
+%
However, we expect that any such concept in Dart would incur a significant cost
on developers and implementations in terms of added complexity and subtlety,
so we have chosen not to do that.
@@ -4063,7 +4120,7 @@
If \code{c} has type \code{C<C<\DYNAMIC>{}>}
then \code{c.next.next} has type \DYNAMIC{}
and \code{c.next.next.whatever} has no compile-time error,
-but if \code{c} has type \code{C<C<\VOID>{}>} then
+but if \code{c} has type \code{C<C<\VOID>{}>} then already
\code{Object x = c.next.next;} is a compile-time error.
It is thus possible for developers to get a more or less strict treatment
of expressions whose type proceeds beyond the given finite unfolding.
diff --git a/docs/language/informal/super-bounded-types.md b/docs/language/informal/super-bounded-types.md
index cfcb996..6ecb027 100644
--- a/docs/language/informal/super-bounded-types.md
+++ b/docs/language/informal/super-bounded-types.md
@@ -2,10 +2,14 @@
**Author**: eernst@.
-**Version**: 0.7 (2018-06-01).
+**Version**: 0.8 (2018-10-16).
**Status**: Background material.
The language specification has the normative text on this topic.
+Note that the rules have changed, which means that
+**this document cannot be used as a reference**, it can only be
+used to get an overview of the ideas; please refer to the language
+specification for all technical details.
**This document** is an informal specification of the support in Dart 2 for
using certain generic types where the declared bounds are violated. The
@@ -31,9 +35,9 @@
...
}
```
-cannot be invoked with `foo<List<dynamic>>('Hello!')`, nor can the type
+cannot be invoked with `foo<List<dynamic>>([])`, nor can the type
argument be inferred to `List<dynamic>` in an invocation like
-`foo('Hello!')`. But `C<void> x = new C<int>();` is OK, and so is
+`foo([])`. But `C<void> x = new C<int>();` is OK, and so is
`x is C<Object>`.
@@ -194,9 +198,11 @@
Finally, if we choose to use `C<void>` and so on then we will not even be
able to access the object where the type information ends: we cannot use
-the value of an expression like `c0.next` at all without an explicit
-cast. This means that we cannot pass `c0.next` as an argument to a function
-that accepts a `C<S>` (for any `S`) without an explicit cast.
+the value of an expression like `c0.next` without an explicit
+cast (OK, `void v = c0.next;` is accepted, but it is mostly impossible to
+use the value of an expression of type `void`). This means that we cannot
+pass `c0.next` as an argument to a function that accepts a `C<S>`
+(for any `S`) without an explicit cast.
In summary, the choice of `dynamic`, `Object`, and `void` offers a range of
approaches to the lack of typing information, but the amount of information
@@ -581,6 +587,9 @@
## Updates
+* Version 0.8 (2018-10-16), emphasized that this document is no longer
+ specifying the current rules, it is for background info only.
+
* Version 0.7 (2018-06-01), marked as background material: The normative
text on variance and on super-bounded types is now part of the language
specification.
diff --git a/pkg/analysis_server/doc/api.html b/pkg/analysis_server/doc/api.html
index 504713e..15e83c4 100644
--- a/pkg/analysis_server/doc/api.html
+++ b/pkg/analysis_server/doc/api.html
@@ -109,7 +109,7 @@
<body>
<h1>Analysis Server API Specification</h1>
<h1 style="color:#999999">Version
- 1.21.0
+ 1.21.1
</h1>
<p>
This document contains a specification of the API provided by the
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 715570c..0ef82e1 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -87,7 +87,7 @@
* The version of the analysis server. The value should be replaced
* automatically during the build.
*/
- static final String VERSION = '1.20.5';
+ static final String VERSION = '1.21.1';
/**
* The options of this server instance.
diff --git a/pkg/analysis_server/tool/spec/codegen_dart_protocol.dart b/pkg/analysis_server/tool/spec/codegen_dart_protocol.dart
index 681f646..f34ea9c 100644
--- a/pkg/analysis_server/tool/spec/codegen_dart_protocol.dart
+++ b/pkg/analysis_server/tool/spec/codegen_dart_protocol.dart
@@ -27,11 +27,27 @@
'deprecated': '0x20'
};
-GeneratedFile target(bool responseRequiresRequestTime) {
+GeneratedFile clientTarget(bool responseRequiresRequestTime) {
+ return new GeneratedFile(
+ '../analysis_server_client/lib/src/protocol/protocol_generated.dart',
+ (String pkgPath) async {
+ CodegenProtocolVisitor visitor = new CodegenProtocolVisitor(
+ 'analysis_server_client',
+ responseRequiresRequestTime,
+ false,
+ readApi(pkgPath));
+ return visitor.collectCode(visitor.visitApi);
+ });
+}
+
+GeneratedFile serverTarget(bool responseRequiresRequestTime) {
return new GeneratedFile('lib/protocol/protocol_generated.dart',
(String pkgPath) async {
CodegenProtocolVisitor visitor = new CodegenProtocolVisitor(
- path.basename(pkgPath), responseRequiresRequestTime, readApi(pkgPath));
+ path.basename(pkgPath),
+ responseRequiresRequestTime,
+ true,
+ readApi(pkgPath));
return visitor.collectCode(visitor.visitApi);
});
}
@@ -80,6 +96,12 @@
final bool responseRequiresRequestTime;
/**
+ * A flag indicating whether this generated code is for the server
+ * (analysis_server) or for the client (analysis_server_client).
+ */
+ final bool isServer;
+
+ /**
* Visitor used to produce doc comments.
*/
final ToHtmlVisitor toHtmlVisitor;
@@ -91,8 +113,8 @@
*/
final Map<String, ImpliedType> impliedTypes;
- CodegenProtocolVisitor(
- this.packageName, this.responseRequiresRequestTime, Api api)
+ CodegenProtocolVisitor(this.packageName, this.responseRequiresRequestTime,
+ this.isServer, Api api)
: toHtmlVisitor = new ToHtmlVisitor(api),
impliedTypes = computeImpliedTypes(api),
super(api) {
@@ -403,14 +425,24 @@
void emitImports() {
writeln("import 'dart:convert' hide JsonDecoder;");
writeln();
- writeln("import 'package:analyzer/src/generated/utilities_general.dart';");
- writeln("import 'package:$packageName/protocol/protocol.dart';");
- writeln(
- "import 'package:$packageName/src/protocol/protocol_internal.dart';");
- for (String uri in api.types.importUris) {
- write("import '");
- write(uri);
- writeln("';");
+ if (isServer) {
+ writeln(
+ "import 'package:analyzer/src/generated/utilities_general.dart';");
+ writeln("import 'package:$packageName/protocol/protocol.dart';");
+ writeln(
+ "import 'package:$packageName/src/protocol/protocol_internal.dart';");
+ for (String uri in api.types.importUris) {
+ write("import '");
+ write(uri);
+ writeln("';");
+ }
+ } else {
+ writeln("import 'package:$packageName/src/protocol/protocol_base.dart';");
+ writeln(
+ "import 'package:$packageName/src/protocol/protocol_common.dart';");
+ writeln(
+ "import 'package:$packageName/src/protocol/protocol_internal.dart';");
+ writeln("import 'package:$packageName/src/protocol/protocol_util.dart';");
}
}
diff --git a/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart b/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart
index d224c46..8ddfb5e 100644
--- a/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart
+++ b/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart
@@ -8,7 +8,14 @@
import 'codegen_dart.dart';
import 'from_html.dart';
-final GeneratedFile target = new GeneratedFile(
+final GeneratedFile clientTarget = new GeneratedFile(
+ '../analysis_server_client/lib/src/protocol/protocol_constants.dart',
+ (String pkgPath) async {
+ CodegenVisitor visitor = new CodegenVisitor(readApi(pkgPath));
+ return visitor.collectCode(visitor.visitApi);
+});
+
+final GeneratedFile serverTarget = new GeneratedFile(
'lib/protocol/protocol_constants.dart', (String pkgPath) async {
CodegenVisitor visitor = new CodegenVisitor(readApi(pkgPath));
return visitor.collectCode(visitor.visitApi);
diff --git a/pkg/analysis_server/tool/spec/generate_all.dart b/pkg/analysis_server/tool/spec/generate_all.dart
index 8b567a3..39cd887 100644
--- a/pkg/analysis_server/tool/spec/generate_all.dart
+++ b/pkg/analysis_server/tool/spec/generate_all.dart
@@ -30,11 +30,13 @@
List<GeneratedContent> get allTargets {
List<GeneratedContent> targets = <GeneratedContent>[];
targets.add(codegen_analysis_server.target);
- targets.add(codegen_dart_protocol.target(false));
+ targets.add(codegen_dart_protocol.clientTarget(false));
+ targets.add(codegen_dart_protocol.serverTarget(false));
targets.add(codegen_java_types.targetDir);
targets.add(codegen_inttest_methods.target);
targets.add(codegen_matchers.target);
- targets.add(codegen_protocol_constants.target);
+ targets.add(codegen_protocol_constants.clientTarget);
+ targets.add(codegen_protocol_constants.serverTarget);
targets.add(to_html.target);
return targets;
}
diff --git a/pkg/analysis_server/tool/spec/spec_input.html b/pkg/analysis_server/tool/spec/spec_input.html
index c8f9864..8eced61 100644
--- a/pkg/analysis_server/tool/spec/spec_input.html
+++ b/pkg/analysis_server/tool/spec/spec_input.html
@@ -7,7 +7,7 @@
<body>
<h1>Analysis Server API Specification</h1>
<h1 style="color:#999999">Version
- <version>1.21.0</version>
+ <version>1.21.1</version>
</h1>
<p>
This document contains a specification of the API provided by the
diff --git a/pkg/analysis_server_client/lib/protocol.dart b/pkg/analysis_server_client/lib/protocol.dart
new file mode 100644
index 0000000..ca508e8
--- /dev/null
+++ b/pkg/analysis_server_client/lib/protocol.dart
@@ -0,0 +1,10 @@
+// Copyright (c) 2018, 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.
+
+export 'package:analysis_server_client/src/protocol/protocol_base.dart';
+export 'package:analysis_server_client/src/protocol/protocol_common.dart';
+export 'package:analysis_server_client/src/protocol/protocol_constants.dart';
+export 'package:analysis_server_client/src/protocol/protocol_internal.dart'
+ show ResponseDecoder;
+export 'package:analysis_server_client/src/protocol/protocol_generated.dart';
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_base.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_base.dart
new file mode 100644
index 0000000..040972f
--- /dev/null
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_base.dart
@@ -0,0 +1,674 @@
+// Copyright (c) 2018, 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.
+
+/**
+ * Support for client code that needs to interact with the requests, responses
+ * and notifications that are part of the analysis server's wire protocol.
+ */
+import 'dart:convert' hide JsonDecoder;
+
+import 'package:analysis_server_client/src/protocol/protocol_generated.dart';
+import 'package:analysis_server_client/src/protocol/protocol_internal.dart';
+
+/**
+ * An interface for enumerated types in the protocol.
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+abstract class Enum {
+ /**
+ * The name of the enumerated value. This should match the name of the static
+ * getter which provides access to this enumerated value.
+ */
+ String get name;
+}
+
+/**
+ * A notification that can be sent from the server about an event that occurred.
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class Notification {
+ /**
+ * The name of the JSON attribute containing the name of the event that
+ * triggered the notification.
+ */
+ static const String EVENT = 'event';
+
+ /**
+ * The name of the JSON attribute containing the result values.
+ */
+ static const String PARAMS = 'params';
+
+ /**
+ * The name of the event that triggered the notification.
+ */
+ final String event;
+
+ /**
+ * A table mapping the names of notification parameters to their values, or
+ * `null` if there are no notification parameters.
+ */
+ final Map<String, Object> params;
+
+ /**
+ * Initialize a newly created [Notification] to have the given [event] name.
+ * If [params] is provided, it will be used as the params; otherwise no
+ * params will be used.
+ */
+ Notification(this.event, [this.params]);
+
+ /**
+ * Initialize a newly created instance based on the given JSON data.
+ */
+ factory Notification.fromJson(Map json) {
+ return new Notification(json[Notification.EVENT],
+ json[Notification.PARAMS] as Map<String, Object>);
+ }
+
+ /**
+ * Return a table representing the structure of the Json object that will be
+ * sent to the client to represent this response.
+ */
+ Map<String, Object> toJson() {
+ Map<String, Object> jsonObject = {};
+ jsonObject[EVENT] = event;
+ if (params != null) {
+ jsonObject[PARAMS] = params;
+ }
+ return jsonObject;
+ }
+}
+
+/**
+ * A request that was received from the client.
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class Request {
+ /**
+ * The name of the JSON attribute containing the id of the request.
+ */
+ static const String ID = 'id';
+
+ /**
+ * The name of the JSON attribute containing the name of the request.
+ */
+ static const String METHOD = 'method';
+
+ /**
+ * The name of the JSON attribute containing the request parameters.
+ */
+ static const String PARAMS = 'params';
+
+ /**
+ * The name of the optional JSON attribute indicating the time (milliseconds
+ * since epoch) at which the client made the request.
+ */
+ static const String CLIENT_REQUEST_TIME = 'clientRequestTime';
+
+ /**
+ * The unique identifier used to identify this request.
+ */
+ final String id;
+
+ /**
+ * The method being requested.
+ */
+ final String method;
+
+ /**
+ * A table mapping the names of request parameters to their values.
+ */
+ final Map<String, Object> params;
+
+ /**
+ * The time (milliseconds since epoch) at which the client made the request
+ * or `null` if this information is not provided by the client.
+ */
+ final int clientRequestTime;
+
+ /**
+ * Initialize a newly created [Request] to have the given [id] and [method]
+ * name. If [params] is supplied, it is used as the "params" map for the
+ * request. Otherwise an empty "params" map is allocated.
+ */
+ Request(this.id, this.method,
+ [Map<String, Object> params, this.clientRequestTime])
+ : params = params ?? <String, Object>{};
+
+ /**
+ * Return a request parsed from the given json, or `null` if the [data] is
+ * not a valid json representation of a request. The [data] is expected to
+ * have the following format:
+ *
+ * {
+ * 'clientRequestTime': millisecondsSinceEpoch
+ * 'id': String,
+ * 'method': methodName,
+ * 'params': {
+ * paramter_name: value
+ * }
+ * }
+ *
+ * where both the parameters and clientRequestTime are optional.
+ *
+ * The parameters can contain any number of name/value pairs. The
+ * clientRequestTime must be an int representing the time at which the client
+ * issued the request (milliseconds since epoch).
+ */
+ factory Request.fromJson(Map<String, Object> result) {
+ var id = result[Request.ID];
+ var method = result[Request.METHOD];
+ if (id is! String || method is! String) {
+ return null;
+ }
+ var time = result[Request.CLIENT_REQUEST_TIME];
+ if (time != null && time is! int) {
+ return null;
+ }
+ var params = result[Request.PARAMS];
+ if (params is Map || params == null) {
+ return new Request(id, method, params as Map<String, Object>, time);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Return a request parsed from the given [data], or `null` if the [data] is
+ * not a valid json representation of a request. The [data] is expected to
+ * have the following format:
+ *
+ * {
+ * 'clientRequestTime': millisecondsSinceEpoch
+ * 'id': String,
+ * 'method': methodName,
+ * 'params': {
+ * paramter_name: value
+ * }
+ * }
+ *
+ * where both the parameters and clientRequestTime are optional.
+ *
+ * The parameters can contain any number of name/value pairs. The
+ * clientRequestTime must be an int representing the time at which the client
+ * issued the request (milliseconds since epoch).
+ */
+ factory Request.fromString(String data) {
+ try {
+ var result = json.decode(data);
+ if (result is Map) {
+ return new Request.fromJson(result as Map<String, dynamic>);
+ }
+ return null;
+ } catch (exception) {
+ return null;
+ }
+ }
+
+ @override
+ int get hashCode {
+ return id.hashCode;
+ }
+
+ @override
+ bool operator ==(Object other) {
+ return other is Request &&
+ id == other.id &&
+ method == other.method &&
+ clientRequestTime == other.clientRequestTime &&
+ _equalMaps(params, other.params);
+ }
+
+ /**
+ * Return a table representing the structure of the Json object that will be
+ * sent to the client to represent this response.
+ */
+ Map<String, Object> toJson() {
+ Map<String, Object> jsonObject = <String, Object>{};
+ jsonObject[ID] = id;
+ jsonObject[METHOD] = method;
+ if (params.isNotEmpty) {
+ jsonObject[PARAMS] = params;
+ }
+ if (clientRequestTime != null) {
+ jsonObject[CLIENT_REQUEST_TIME] = clientRequestTime;
+ }
+ return jsonObject;
+ }
+
+ bool _equalLists(List first, List second) {
+ if (first == null) {
+ return second == null;
+ }
+ if (second == null) {
+ return false;
+ }
+ int length = first.length;
+ if (length != second.length) {
+ return false;
+ }
+ for (int i = 0; i < length; i++) {
+ if (!_equalObjects(first[i], second[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ bool _equalMaps(Map first, Map second) {
+ if (first == null) {
+ return second == null;
+ }
+ if (second == null) {
+ return false;
+ }
+ if (first.length != second.length) {
+ return false;
+ }
+ for (var key in first.keys) {
+ if (!second.containsKey(key)) {
+ return false;
+ }
+ if (!_equalObjects(first[key], second[key])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ bool _equalObjects(Object first, Object second) {
+ if (first == null) {
+ return second == null;
+ }
+ if (second == null) {
+ return false;
+ }
+ if (first is Map) {
+ if (second is Map) {
+ return _equalMaps(first, second);
+ }
+ return false;
+ }
+ if (first is List) {
+ if (second is List) {
+ return _equalLists(first, second);
+ }
+ return false;
+ }
+ return first == second;
+ }
+}
+
+/**
+ * An exception that occurred during the handling of a request that requires
+ * that an error be returned to the client.
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RequestFailure implements Exception {
+ /**
+ * The response to be returned as a result of the failure.
+ */
+ final Response response;
+
+ /**
+ * Initialize a newly created exception to return the given reponse.
+ */
+ RequestFailure(this.response);
+}
+
+/**
+ * An object that can handle requests and produce responses for them.
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+abstract class RequestHandler {
+ /**
+ * Attempt to handle the given [request]. If the request is not recognized by
+ * this handler, return `null` so that other handlers will be given a chance
+ * to handle it. Otherwise, return the response that should be passed back to
+ * the client.
+ */
+ Response handleRequest(Request request);
+}
+
+/**
+ * A response to a request.
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class Response {
+ /**
+ * The [Response] instance that is returned when a real [Response] cannot
+ * be provided at the moment.
+ */
+ static final Response DELAYED_RESPONSE = new Response('DELAYED_RESPONSE');
+
+ /**
+ * The name of the JSON attribute containing the id of the request for which
+ * this is a response.
+ */
+ static const String ID = 'id';
+
+ /**
+ * The name of the JSON attribute containing the error message.
+ */
+ static const String ERROR = 'error';
+
+ /**
+ * The name of the JSON attribute containing the result values.
+ */
+ static const String RESULT = 'result';
+
+ /**
+ * The unique identifier used to identify the request that this response is
+ * associated with.
+ */
+ final String id;
+
+ /**
+ * The error that was caused by attempting to handle the request, or `null` if
+ * there was no error.
+ */
+ final RequestError error;
+
+ /**
+ * A table mapping the names of result fields to their values. Should be
+ * `null` if there is no result to send.
+ */
+ Map<String, Object> result;
+
+ /**
+ * Initialize a newly created instance to represent a response to a request
+ * with the given [id]. If [_result] is provided, it will be used as the
+ * result; otherwise an empty result will be used. If an [error] is provided
+ * then the response will represent an error condition.
+ */
+ Response(this.id, {Map<String, Object> result, this.error}) : result = result;
+
+ /**
+ * Create and return the `DEBUG_PORT_COULD_NOT_BE_OPENED` error response.
+ */
+ Response.debugPortCouldNotBeOpened(Request request, dynamic error)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.DEBUG_PORT_COULD_NOT_BE_OPENED, '$error'));
+
+ /**
+ * Initialize a newly created instance to represent the FILE_NOT_ANALYZED
+ * error condition.
+ */
+ Response.fileNotAnalyzed(Request request, String file)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.FILE_NOT_ANALYZED,
+ 'File is not analyzed: $file.'));
+
+ /**
+ * Initialize a newly created instance to represent the FORMAT_INVALID_FILE
+ * error condition.
+ */
+ Response.formatInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.FORMAT_INVALID_FILE,
+ 'Error during `${request.method}`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the FORMAT_WITH_ERROR
+ * error condition.
+ */
+ Response.formatWithErrors(Request request)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.FORMAT_WITH_ERRORS,
+ 'Error during `edit.format`: source contains syntax errors.'));
+
+ /**
+ * Initialize a newly created instance based on the given JSON data.
+ */
+ factory Response.fromJson(Map json) {
+ try {
+ Object id = json[Response.ID];
+ if (id is! String) {
+ return null;
+ }
+ Object error = json[Response.ERROR];
+ RequestError decodedError;
+ if (error is Map) {
+ decodedError = new RequestError.fromJson(
+ new ResponseDecoder(null), '.error', error);
+ }
+ Object result = json[Response.RESULT];
+ Map<String, Object> decodedResult;
+ if (result is Map) {
+ decodedResult = result as Map<String, Object>;
+ }
+ return new Response(id, error: decodedError, result: decodedResult);
+ } catch (exception) {
+ return null;
+ }
+ }
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_ERRORS_INVALID_FILE error condition.
+ */
+ Response.getErrorsInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.GET_ERRORS_INVALID_FILE,
+ 'Error during `analysis.getErrors`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_IMPORTED_ELEMENTS_INVALID_FILE error condition.
+ */
+ Response.getImportedElementsInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.GET_IMPORTED_ELEMENTS_INVALID_FILE,
+ 'Error during `analysis.getImportedElements`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_KYTHE_ENTRIES_INVALID_FILE error condition.
+ */
+ Response.getKytheEntriesInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.GET_KYTHE_ENTRIES_INVALID_FILE,
+ 'Error during `analysis.getKytheEntries`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_NAVIGATION_INVALID_FILE error condition.
+ */
+ Response.getNavigationInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.GET_NAVIGATION_INVALID_FILE,
+ 'Error during `analysis.getNavigation`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_REACHABLE_SOURCES_INVALID_FILE error condition.
+ */
+ Response.getReachableSourcesInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.GET_REACHABLE_SOURCES_INVALID_FILE,
+ 'Error during `analysis.getReachableSources`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_SIGNATURE_INVALID_FILE error condition.
+ */
+ Response.getSignatureInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.GET_SIGNATURE_INVALID_FILE,
+ 'Error during `analysis.getSignature`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_SIGNATURE_INVALID_OFFSET error condition.
+ */
+ Response.getSignatureInvalidOffset(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.GET_SIGNATURE_INVALID_OFFSET,
+ 'Error during `analysis.getSignature`: invalid offset.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * GET_SIGNATURE_UNKNOWN_FUNCTION error condition.
+ */
+ Response.getSignatureUnknownFunction(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.GET_SIGNATURE_UNKNOWN_FUNCTION,
+ 'Error during `analysis.getSignature`: unknown function.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * IMPORT_ELEMENTS_INVALID_FILE error condition.
+ */
+ Response.importElementsInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.IMPORT_ELEMENTS_INVALID_FILE,
+ 'Error during `edit.importElements`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent an error condition caused
+ * by an analysis.reanalyze [request] that specifies an analysis root that is
+ * not in the current list of analysis roots.
+ */
+ Response.invalidAnalysisRoot(Request request, String rootPath)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.INVALID_ANALYSIS_ROOT,
+ "Invalid analysis root: $rootPath"));
+
+ /**
+ * Initialize a newly created instance to represent an error condition caused
+ * by a [request] that specifies an execution context whose context root does
+ * not exist.
+ */
+ Response.invalidExecutionContext(Request request, String contextId)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.INVALID_EXECUTION_CONTEXT,
+ "Invalid execution context: $contextId"));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * INVALID_FILE_PATH_FORMAT error condition.
+ */
+ Response.invalidFilePathFormat(Request request, path)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.INVALID_FILE_PATH_FORMAT,
+ 'Invalid file path format: $path'));
+
+ /**
+ * Initialize a newly created instance to represent an error condition caused
+ * by a [request] that had invalid parameter. [path] is the path to the
+ * invalid parameter, in Javascript notation (e.g. "foo.bar" means that the
+ * parameter "foo" contained a key "bar" whose value was the wrong type).
+ * [expectation] is a description of the type of data that was expected.
+ */
+ Response.invalidParameter(Request request, String path, String expectation)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.INVALID_PARAMETER,
+ "Invalid parameter '$path'. $expectation."));
+
+ /**
+ * Initialize a newly created instance to represent an error condition caused
+ * by a malformed request.
+ */
+ Response.invalidRequestFormat()
+ : this('',
+ error: new RequestError(
+ RequestErrorCode.INVALID_REQUEST, 'Invalid request'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * ORGANIZE_DIRECTIVES_ERROR error condition.
+ */
+ Response.organizeDirectivesError(Request request, String message)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.ORGANIZE_DIRECTIVES_ERROR, message));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * REFACTORING_REQUEST_CANCELLED error condition.
+ */
+ Response.refactoringRequestCancelled(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.REFACTORING_REQUEST_CANCELLED,
+ 'The `edit.getRefactoring` request was cancelled.'));
+
+ /**
+ * Initialize a newly created instance to represent the SERVER_ERROR error
+ * condition.
+ */
+ factory Response.serverError(Request request, exception, stackTrace) {
+ RequestError error =
+ new RequestError(RequestErrorCode.SERVER_ERROR, exception.toString());
+ if (stackTrace != null) {
+ error.stackTrace = stackTrace.toString();
+ }
+ return new Response(request.id, error: error);
+ }
+
+ /**
+ * Initialize a newly created instance to represent the
+ * SORT_MEMBERS_INVALID_FILE error condition.
+ */
+ Response.sortMembersInvalidFile(Request request)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.SORT_MEMBERS_INVALID_FILE,
+ 'Error during `edit.sortMembers`: invalid file.'));
+
+ /**
+ * Initialize a newly created instance to represent the
+ * SORT_MEMBERS_PARSE_ERRORS error condition.
+ */
+ Response.sortMembersParseErrors(Request request, int numErrors)
+ : this(request.id,
+ error: new RequestError(RequestErrorCode.SORT_MEMBERS_PARSE_ERRORS,
+ 'Error during `edit.sortMembers`: file has $numErrors scan/parse errors.'));
+
+ /**
+ * Initialize a newly created instance to represent an error condition caused
+ * by a [request] that cannot be handled by any known handlers.
+ */
+ Response.unknownRequest(Request request)
+ : this(request.id,
+ error: new RequestError(
+ RequestErrorCode.UNKNOWN_REQUEST, 'Unknown request'));
+
+ /**
+ * Initialize a newly created instance to represent an error condition caused
+ * by a [request] for a service that is not supported.
+ */
+ Response.unsupportedFeature(String requestId, String message)
+ : this(requestId,
+ error: new RequestError(
+ RequestErrorCode.UNSUPPORTED_FEATURE, message));
+
+ /**
+ * Return a table representing the structure of the Json object that will be
+ * sent to the client to represent this response.
+ */
+ Map<String, Object> toJson() {
+ Map<String, Object> jsonObject = <String, Object>{};
+ jsonObject[ID] = id;
+ if (error != null) {
+ jsonObject[ERROR] = error.toJson();
+ }
+ if (result != null) {
+ jsonObject[RESULT] = result;
+ }
+ return jsonObject;
+ }
+}
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_common.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_common.dart
new file mode 100644
index 0000000..497c026
--- /dev/null
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_common.dart
@@ -0,0 +1,6119 @@
+// Copyright (c) 2018, 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:analysis_server_client/src/protocol/protocol_util.dart';
+import 'package:analysis_server_client/src/protocol/protocol_base.dart';
+import 'package:analysis_server_client/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(
+ {bool isAbstract: false,
+ bool isConst: false,
+ bool isFinal: false,
+ bool isStatic: false,
+ bool isPrivate: false,
+ bool 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
+ * MIXIN
+ * 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 MIXIN = const ElementKind._("MIXIN");
+
+ 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,
+ MIXIN,
+ 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 "MIXIN":
+ return MIXIN;
+ 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
+ * INVOCATION
+ * LITERAL
+ * }
+ *
+ * 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");
+
+ static const FoldingKind INVOCATION = const FoldingKind._("INVOCATION");
+
+ static const FoldingKind LITERAL = const FoldingKind._("LITERAL");
+
+ /**
+ * 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,
+ INVOCATION,
+ LITERAL
+ ];
+
+ @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;
+ case "INVOCATION":
+ return INVOCATION;
+ case "LITERAL":
+ return LITERAL;
+ }
+ 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);
+ }
+}
+
+/**
+ * ParameterInfo
+ *
+ * {
+ * "kind": ParameterKind
+ * "name": String
+ * "type": String
+ * "defaultValue": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ParameterInfo implements HasToJson {
+ ParameterKind _kind;
+
+ String _name;
+
+ String _type;
+
+ String _defaultValue;
+
+ /**
+ * The kind of the parameter.
+ */
+ ParameterKind get kind => _kind;
+
+ /**
+ * The kind of the parameter.
+ */
+ void set kind(ParameterKind value) {
+ assert(value != null);
+ this._kind = value;
+ }
+
+ /**
+ * The name of the parameter.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the parameter.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * The type of the parameter.
+ */
+ String get type => _type;
+
+ /**
+ * The type of the parameter.
+ */
+ void set type(String value) {
+ assert(value != null);
+ this._type = value;
+ }
+
+ /**
+ * The default value for this parameter. This value will be omitted if the
+ * parameter does not have a default value.
+ */
+ String get defaultValue => _defaultValue;
+
+ /**
+ * The default value for this parameter. This value will be omitted if the
+ * parameter does not have a default value.
+ */
+ void set defaultValue(String value) {
+ this._defaultValue = value;
+ }
+
+ ParameterInfo(ParameterKind kind, String name, String type,
+ {String defaultValue}) {
+ this.kind = kind;
+ this.name = name;
+ this.type = type;
+ this.defaultValue = defaultValue;
+ }
+
+ factory ParameterInfo.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ ParameterKind kind;
+ if (json.containsKey("kind")) {
+ kind = new ParameterKind.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");
+ }
+ String type;
+ if (json.containsKey("type")) {
+ type = jsonDecoder.decodeString(jsonPath + ".type", json["type"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "type");
+ }
+ String defaultValue;
+ if (json.containsKey("defaultValue")) {
+ defaultValue = jsonDecoder.decodeString(
+ jsonPath + ".defaultValue", json["defaultValue"]);
+ }
+ return new ParameterInfo(kind, name, type, defaultValue: defaultValue);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ParameterInfo", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["kind"] = kind.toJson();
+ result["name"] = name;
+ result["type"] = type;
+ if (defaultValue != null) {
+ result["defaultValue"] = defaultValue;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ParameterInfo) {
+ return kind == other.kind &&
+ name == other.name &&
+ type == other.type &&
+ defaultValue == other.defaultValue;
+ }
+ 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, type.hashCode);
+ hash = JenkinsSmiHash.combine(hash, defaultValue.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ParameterKind
+ *
+ * enum {
+ * NAMED
+ * OPTIONAL
+ * REQUIRED
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ParameterKind implements Enum {
+ /**
+ * A named parameter.
+ */
+ static const ParameterKind NAMED = const ParameterKind._("NAMED");
+
+ /**
+ * An optional parameter.
+ */
+ static const ParameterKind OPTIONAL = const ParameterKind._("OPTIONAL");
+
+ /**
+ * A required parameter.
+ */
+ static const ParameterKind REQUIRED = const ParameterKind._("REQUIRED");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<ParameterKind> VALUES = const <ParameterKind>[
+ NAMED,
+ OPTIONAL,
+ REQUIRED
+ ];
+
+ @override
+ final String name;
+
+ const ParameterKind._(this.name);
+
+ factory ParameterKind(String name) {
+ switch (name) {
+ case "NAMED":
+ return NAMED;
+ case "OPTIONAL":
+ return OPTIONAL;
+ case "REQUIRED":
+ return REQUIRED;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory ParameterKind.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new ParameterKind(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "ParameterKind", json);
+ }
+
+ @override
+ String toString() => "ParameterKind.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * 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);
+ }
+}
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_constants.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_constants.dart
new file mode 100644
index 0000000..9d85d08
--- /dev/null
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_constants.dart
@@ -0,0 +1,304 @@
+// 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".
+
+const String ANALYSIS_NOTIFICATION_ANALYZED_FILES = 'analysis.analyzedFiles';
+const String ANALYSIS_NOTIFICATION_ANALYZED_FILES_DIRECTORIES = 'directories';
+const String ANALYSIS_NOTIFICATION_CLOSING_LABELS = 'analysis.closingLabels';
+const String ANALYSIS_NOTIFICATION_CLOSING_LABELS_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_CLOSING_LABELS_LABELS = 'labels';
+const String ANALYSIS_NOTIFICATION_ERRORS = 'analysis.errors';
+const String ANALYSIS_NOTIFICATION_ERRORS_ERRORS = 'errors';
+const String ANALYSIS_NOTIFICATION_ERRORS_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_FLUSH_RESULTS = 'analysis.flushResults';
+const String ANALYSIS_NOTIFICATION_FLUSH_RESULTS_FILES = 'files';
+const String ANALYSIS_NOTIFICATION_FOLDING = 'analysis.folding';
+const String ANALYSIS_NOTIFICATION_FOLDING_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_FOLDING_REGIONS = 'regions';
+const String ANALYSIS_NOTIFICATION_HIGHLIGHTS = 'analysis.highlights';
+const String ANALYSIS_NOTIFICATION_HIGHLIGHTS_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_HIGHLIGHTS_REGIONS = 'regions';
+const String ANALYSIS_NOTIFICATION_IMPLEMENTED = 'analysis.implemented';
+const String ANALYSIS_NOTIFICATION_IMPLEMENTED_CLASSES = 'classes';
+const String ANALYSIS_NOTIFICATION_IMPLEMENTED_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_IMPLEMENTED_MEMBERS = 'members';
+const String ANALYSIS_NOTIFICATION_INVALIDATE = 'analysis.invalidate';
+const String ANALYSIS_NOTIFICATION_INVALIDATE_DELTA = 'delta';
+const String ANALYSIS_NOTIFICATION_INVALIDATE_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_INVALIDATE_LENGTH = 'length';
+const String ANALYSIS_NOTIFICATION_INVALIDATE_OFFSET = 'offset';
+const String ANALYSIS_NOTIFICATION_NAVIGATION = 'analysis.navigation';
+const String ANALYSIS_NOTIFICATION_NAVIGATION_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_NAVIGATION_FILES = 'files';
+const String ANALYSIS_NOTIFICATION_NAVIGATION_REGIONS = 'regions';
+const String ANALYSIS_NOTIFICATION_NAVIGATION_TARGETS = 'targets';
+const String ANALYSIS_NOTIFICATION_OCCURRENCES = 'analysis.occurrences';
+const String ANALYSIS_NOTIFICATION_OCCURRENCES_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_OCCURRENCES_OCCURRENCES = 'occurrences';
+const String ANALYSIS_NOTIFICATION_OUTLINE = 'analysis.outline';
+const String ANALYSIS_NOTIFICATION_OUTLINE_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_OUTLINE_KIND = 'kind';
+const String ANALYSIS_NOTIFICATION_OUTLINE_LIBRARY_NAME = 'libraryName';
+const String ANALYSIS_NOTIFICATION_OUTLINE_OUTLINE = 'outline';
+const String ANALYSIS_NOTIFICATION_OVERRIDES = 'analysis.overrides';
+const String ANALYSIS_NOTIFICATION_OVERRIDES_FILE = 'file';
+const String ANALYSIS_NOTIFICATION_OVERRIDES_OVERRIDES = 'overrides';
+const String ANALYSIS_REQUEST_GET_ERRORS = 'analysis.getErrors';
+const String ANALYSIS_REQUEST_GET_ERRORS_FILE = 'file';
+const String ANALYSIS_REQUEST_GET_HOVER = 'analysis.getHover';
+const String ANALYSIS_REQUEST_GET_HOVER_FILE = 'file';
+const String ANALYSIS_REQUEST_GET_HOVER_OFFSET = 'offset';
+const String ANALYSIS_REQUEST_GET_IMPORTED_ELEMENTS =
+ 'analysis.getImportedElements';
+const String ANALYSIS_REQUEST_GET_IMPORTED_ELEMENTS_FILE = 'file';
+const String ANALYSIS_REQUEST_GET_IMPORTED_ELEMENTS_LENGTH = 'length';
+const String ANALYSIS_REQUEST_GET_IMPORTED_ELEMENTS_OFFSET = 'offset';
+const String ANALYSIS_REQUEST_GET_LIBRARY_DEPENDENCIES =
+ 'analysis.getLibraryDependencies';
+const String ANALYSIS_REQUEST_GET_NAVIGATION = 'analysis.getNavigation';
+const String ANALYSIS_REQUEST_GET_NAVIGATION_FILE = 'file';
+const String ANALYSIS_REQUEST_GET_NAVIGATION_LENGTH = 'length';
+const String ANALYSIS_REQUEST_GET_NAVIGATION_OFFSET = 'offset';
+const String ANALYSIS_REQUEST_GET_REACHABLE_SOURCES =
+ 'analysis.getReachableSources';
+const String ANALYSIS_REQUEST_GET_REACHABLE_SOURCES_FILE = 'file';
+const String ANALYSIS_REQUEST_GET_SIGNATURE = 'analysis.getSignature';
+const String ANALYSIS_REQUEST_GET_SIGNATURE_FILE = 'file';
+const String ANALYSIS_REQUEST_GET_SIGNATURE_OFFSET = 'offset';
+const String ANALYSIS_REQUEST_REANALYZE = 'analysis.reanalyze';
+const String ANALYSIS_REQUEST_REANALYZE_ROOTS = 'roots';
+const String ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS = 'analysis.setAnalysisRoots';
+const String ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS_EXCLUDED = 'excluded';
+const String ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS_INCLUDED = 'included';
+const String ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS_PACKAGE_ROOTS = 'packageRoots';
+const String ANALYSIS_REQUEST_SET_GENERAL_SUBSCRIPTIONS =
+ 'analysis.setGeneralSubscriptions';
+const String ANALYSIS_REQUEST_SET_GENERAL_SUBSCRIPTIONS_SUBSCRIPTIONS =
+ 'subscriptions';
+const String ANALYSIS_REQUEST_SET_PRIORITY_FILES = 'analysis.setPriorityFiles';
+const String ANALYSIS_REQUEST_SET_PRIORITY_FILES_FILES = 'files';
+const String ANALYSIS_REQUEST_SET_SUBSCRIPTIONS = 'analysis.setSubscriptions';
+const String ANALYSIS_REQUEST_SET_SUBSCRIPTIONS_SUBSCRIPTIONS = 'subscriptions';
+const String ANALYSIS_REQUEST_UPDATE_CONTENT = 'analysis.updateContent';
+const String ANALYSIS_REQUEST_UPDATE_CONTENT_FILES = 'files';
+const String ANALYSIS_REQUEST_UPDATE_OPTIONS = 'analysis.updateOptions';
+const String ANALYSIS_REQUEST_UPDATE_OPTIONS_OPTIONS = 'options';
+const String ANALYSIS_RESPONSE_GET_ERRORS_ERRORS = 'errors';
+const String ANALYSIS_RESPONSE_GET_HOVER_HOVERS = 'hovers';
+const String ANALYSIS_RESPONSE_GET_IMPORTED_ELEMENTS_ELEMENTS = 'elements';
+const String ANALYSIS_RESPONSE_GET_LIBRARY_DEPENDENCIES_LIBRARIES = 'libraries';
+const String ANALYSIS_RESPONSE_GET_LIBRARY_DEPENDENCIES_PACKAGE_MAP =
+ 'packageMap';
+const String ANALYSIS_RESPONSE_GET_NAVIGATION_FILES = 'files';
+const String ANALYSIS_RESPONSE_GET_NAVIGATION_REGIONS = 'regions';
+const String ANALYSIS_RESPONSE_GET_NAVIGATION_TARGETS = 'targets';
+const String ANALYSIS_RESPONSE_GET_REACHABLE_SOURCES_SOURCES = 'sources';
+const String ANALYSIS_RESPONSE_GET_SIGNATURE_DARTDOC = 'dartdoc';
+const String ANALYSIS_RESPONSE_GET_SIGNATURE_NAME = 'name';
+const String ANALYSIS_RESPONSE_GET_SIGNATURE_PARAMETERS = 'parameters';
+const String ANALYTICS_REQUEST_ENABLE = 'analytics.enable';
+const String ANALYTICS_REQUEST_ENABLE_VALUE = 'value';
+const String ANALYTICS_REQUEST_IS_ENABLED = 'analytics.isEnabled';
+const String ANALYTICS_REQUEST_SEND_EVENT = 'analytics.sendEvent';
+const String ANALYTICS_REQUEST_SEND_EVENT_ACTION = 'action';
+const String ANALYTICS_REQUEST_SEND_TIMING = 'analytics.sendTiming';
+const String ANALYTICS_REQUEST_SEND_TIMING_EVENT = 'event';
+const String ANALYTICS_REQUEST_SEND_TIMING_MILLIS = 'millis';
+const String ANALYTICS_RESPONSE_IS_ENABLED_ENABLED = 'enabled';
+const String COMPLETION_NOTIFICATION_RESULTS = 'completion.results';
+const String COMPLETION_NOTIFICATION_RESULTS_ID = 'id';
+const String COMPLETION_NOTIFICATION_RESULTS_IS_LAST = 'isLast';
+const String COMPLETION_NOTIFICATION_RESULTS_REPLACEMENT_LENGTH =
+ 'replacementLength';
+const String COMPLETION_NOTIFICATION_RESULTS_REPLACEMENT_OFFSET =
+ 'replacementOffset';
+const String COMPLETION_NOTIFICATION_RESULTS_RESULTS = 'results';
+const String COMPLETION_REQUEST_GET_SUGGESTIONS = 'completion.getSuggestions';
+const String COMPLETION_REQUEST_GET_SUGGESTIONS_FILE = 'file';
+const String COMPLETION_REQUEST_GET_SUGGESTIONS_OFFSET = 'offset';
+const String COMPLETION_RESPONSE_GET_SUGGESTIONS_ID = 'id';
+const String DIAGNOSTIC_REQUEST_GET_DIAGNOSTICS = 'diagnostic.getDiagnostics';
+const String DIAGNOSTIC_REQUEST_GET_SERVER_PORT = 'diagnostic.getServerPort';
+const String DIAGNOSTIC_RESPONSE_GET_DIAGNOSTICS_CONTEXTS = 'contexts';
+const String DIAGNOSTIC_RESPONSE_GET_SERVER_PORT_PORT = 'port';
+const String EDIT_REQUEST_DARTFIX = 'edit.dartfix';
+const String EDIT_REQUEST_DARTFIX_INCLUDED = 'included';
+const String EDIT_REQUEST_FORMAT = 'edit.format';
+const String EDIT_REQUEST_FORMAT_FILE = 'file';
+const String EDIT_REQUEST_FORMAT_LINE_LENGTH = 'lineLength';
+const String EDIT_REQUEST_FORMAT_SELECTION_LENGTH = 'selectionLength';
+const String EDIT_REQUEST_FORMAT_SELECTION_OFFSET = 'selectionOffset';
+const String EDIT_REQUEST_GET_ASSISTS = 'edit.getAssists';
+const String EDIT_REQUEST_GET_ASSISTS_FILE = 'file';
+const String EDIT_REQUEST_GET_ASSISTS_LENGTH = 'length';
+const String EDIT_REQUEST_GET_ASSISTS_OFFSET = 'offset';
+const String EDIT_REQUEST_GET_AVAILABLE_REFACTORINGS =
+ 'edit.getAvailableRefactorings';
+const String EDIT_REQUEST_GET_AVAILABLE_REFACTORINGS_FILE = 'file';
+const String EDIT_REQUEST_GET_AVAILABLE_REFACTORINGS_LENGTH = 'length';
+const String EDIT_REQUEST_GET_AVAILABLE_REFACTORINGS_OFFSET = 'offset';
+const String EDIT_REQUEST_GET_FIXES = 'edit.getFixes';
+const String EDIT_REQUEST_GET_FIXES_FILE = 'file';
+const String EDIT_REQUEST_GET_FIXES_OFFSET = 'offset';
+const String EDIT_REQUEST_GET_POSTFIX_COMPLETION = 'edit.getPostfixCompletion';
+const String EDIT_REQUEST_GET_POSTFIX_COMPLETION_FILE = 'file';
+const String EDIT_REQUEST_GET_POSTFIX_COMPLETION_KEY = 'key';
+const String EDIT_REQUEST_GET_POSTFIX_COMPLETION_OFFSET = 'offset';
+const String EDIT_REQUEST_GET_REFACTORING = 'edit.getRefactoring';
+const String EDIT_REQUEST_GET_REFACTORING_FILE = 'file';
+const String EDIT_REQUEST_GET_REFACTORING_KIND = 'kind';
+const String EDIT_REQUEST_GET_REFACTORING_LENGTH = 'length';
+const String EDIT_REQUEST_GET_REFACTORING_OFFSET = 'offset';
+const String EDIT_REQUEST_GET_REFACTORING_OPTIONS = 'options';
+const String EDIT_REQUEST_GET_REFACTORING_VALIDATE_ONLY = 'validateOnly';
+const String EDIT_REQUEST_GET_STATEMENT_COMPLETION =
+ 'edit.getStatementCompletion';
+const String EDIT_REQUEST_GET_STATEMENT_COMPLETION_FILE = 'file';
+const String EDIT_REQUEST_GET_STATEMENT_COMPLETION_OFFSET = 'offset';
+const String EDIT_REQUEST_IMPORT_ELEMENTS = 'edit.importElements';
+const String EDIT_REQUEST_IMPORT_ELEMENTS_ELEMENTS = 'elements';
+const String EDIT_REQUEST_IMPORT_ELEMENTS_FILE = 'file';
+const String EDIT_REQUEST_IS_POSTFIX_COMPLETION_APPLICABLE =
+ 'edit.isPostfixCompletionApplicable';
+const String EDIT_REQUEST_IS_POSTFIX_COMPLETION_APPLICABLE_FILE = 'file';
+const String EDIT_REQUEST_IS_POSTFIX_COMPLETION_APPLICABLE_KEY = 'key';
+const String EDIT_REQUEST_IS_POSTFIX_COMPLETION_APPLICABLE_OFFSET = 'offset';
+const String EDIT_REQUEST_LIST_POSTFIX_COMPLETION_TEMPLATES =
+ 'edit.listPostfixCompletionTemplates';
+const String EDIT_REQUEST_ORGANIZE_DIRECTIVES = 'edit.organizeDirectives';
+const String EDIT_REQUEST_ORGANIZE_DIRECTIVES_FILE = 'file';
+const String EDIT_REQUEST_SORT_MEMBERS = 'edit.sortMembers';
+const String EDIT_REQUEST_SORT_MEMBERS_FILE = 'file';
+const String EDIT_RESPONSE_DARTFIX_DESCRIPTION_OF_FIXES = 'descriptionOfFixes';
+const String EDIT_RESPONSE_DARTFIX_FIXES = 'fixes';
+const String EDIT_RESPONSE_DARTFIX_HAS_ERRORS = 'hasErrors';
+const String EDIT_RESPONSE_DARTFIX_OTHER_RECOMMENDATIONS =
+ 'otherRecommendations';
+const String EDIT_RESPONSE_FORMAT_EDITS = 'edits';
+const String EDIT_RESPONSE_FORMAT_SELECTION_LENGTH = 'selectionLength';
+const String EDIT_RESPONSE_FORMAT_SELECTION_OFFSET = 'selectionOffset';
+const String EDIT_RESPONSE_GET_ASSISTS_ASSISTS = 'assists';
+const String EDIT_RESPONSE_GET_AVAILABLE_REFACTORINGS_KINDS = 'kinds';
+const String EDIT_RESPONSE_GET_FIXES_FIXES = 'fixes';
+const String EDIT_RESPONSE_GET_POSTFIX_COMPLETION_CHANGE = 'change';
+const String EDIT_RESPONSE_GET_REFACTORING_CHANGE = 'change';
+const String EDIT_RESPONSE_GET_REFACTORING_FEEDBACK = 'feedback';
+const String EDIT_RESPONSE_GET_REFACTORING_FINAL_PROBLEMS = 'finalProblems';
+const String EDIT_RESPONSE_GET_REFACTORING_INITIAL_PROBLEMS = 'initialProblems';
+const String EDIT_RESPONSE_GET_REFACTORING_OPTIONS_PROBLEMS = 'optionsProblems';
+const String EDIT_RESPONSE_GET_REFACTORING_POTENTIAL_EDITS = 'potentialEdits';
+const String EDIT_RESPONSE_GET_STATEMENT_COMPLETION_CHANGE = 'change';
+const String EDIT_RESPONSE_GET_STATEMENT_COMPLETION_WHITESPACE_ONLY =
+ 'whitespaceOnly';
+const String EDIT_RESPONSE_IMPORT_ELEMENTS_EDIT = 'edit';
+const String EDIT_RESPONSE_IS_POSTFIX_COMPLETION_APPLICABLE_VALUE = 'value';
+const String EDIT_RESPONSE_LIST_POSTFIX_COMPLETION_TEMPLATES_TEMPLATES =
+ 'templates';
+const String EDIT_RESPONSE_ORGANIZE_DIRECTIVES_EDIT = 'edit';
+const String EDIT_RESPONSE_SORT_MEMBERS_EDIT = 'edit';
+const String EXECUTION_NOTIFICATION_LAUNCH_DATA = 'execution.launchData';
+const String EXECUTION_NOTIFICATION_LAUNCH_DATA_FILE = 'file';
+const String EXECUTION_NOTIFICATION_LAUNCH_DATA_KIND = 'kind';
+const String EXECUTION_NOTIFICATION_LAUNCH_DATA_REFERENCED_FILES =
+ 'referencedFiles';
+const String EXECUTION_REQUEST_CREATE_CONTEXT = 'execution.createContext';
+const String EXECUTION_REQUEST_CREATE_CONTEXT_CONTEXT_ROOT = 'contextRoot';
+const String EXECUTION_REQUEST_DELETE_CONTEXT = 'execution.deleteContext';
+const String EXECUTION_REQUEST_DELETE_CONTEXT_ID = 'id';
+const String EXECUTION_REQUEST_GET_SUGGESTIONS = 'execution.getSuggestions';
+const String EXECUTION_REQUEST_GET_SUGGESTIONS_CODE = 'code';
+const String EXECUTION_REQUEST_GET_SUGGESTIONS_CONTEXT_FILE = 'contextFile';
+const String EXECUTION_REQUEST_GET_SUGGESTIONS_CONTEXT_OFFSET = 'contextOffset';
+const String EXECUTION_REQUEST_GET_SUGGESTIONS_EXPRESSIONS = 'expressions';
+const String EXECUTION_REQUEST_GET_SUGGESTIONS_OFFSET = 'offset';
+const String EXECUTION_REQUEST_GET_SUGGESTIONS_VARIABLES = 'variables';
+const String EXECUTION_REQUEST_MAP_URI = 'execution.mapUri';
+const String EXECUTION_REQUEST_MAP_URI_FILE = 'file';
+const String EXECUTION_REQUEST_MAP_URI_ID = 'id';
+const String EXECUTION_REQUEST_MAP_URI_URI = 'uri';
+const String EXECUTION_REQUEST_SET_SUBSCRIPTIONS = 'execution.setSubscriptions';
+const String EXECUTION_REQUEST_SET_SUBSCRIPTIONS_SUBSCRIPTIONS =
+ 'subscriptions';
+const String EXECUTION_RESPONSE_CREATE_CONTEXT_ID = 'id';
+const String EXECUTION_RESPONSE_GET_SUGGESTIONS_EXPRESSIONS = 'expressions';
+const String EXECUTION_RESPONSE_GET_SUGGESTIONS_SUGGESTIONS = 'suggestions';
+const String EXECUTION_RESPONSE_MAP_URI_FILE = 'file';
+const String EXECUTION_RESPONSE_MAP_URI_URI = 'uri';
+const String FLUTTER_NOTIFICATION_OUTLINE = 'flutter.outline';
+const String FLUTTER_NOTIFICATION_OUTLINE_FILE = 'file';
+const String FLUTTER_NOTIFICATION_OUTLINE_INSTRUMENTED_CODE =
+ 'instrumentedCode';
+const String FLUTTER_NOTIFICATION_OUTLINE_OUTLINE = 'outline';
+const String FLUTTER_REQUEST_GET_CHANGE_ADD_FOR_DESIGN_TIME_CONSTRUCTOR =
+ 'flutter.getChangeAddForDesignTimeConstructor';
+const String FLUTTER_REQUEST_GET_CHANGE_ADD_FOR_DESIGN_TIME_CONSTRUCTOR_FILE =
+ 'file';
+const String FLUTTER_REQUEST_GET_CHANGE_ADD_FOR_DESIGN_TIME_CONSTRUCTOR_OFFSET =
+ 'offset';
+const String FLUTTER_REQUEST_SET_SUBSCRIPTIONS = 'flutter.setSubscriptions';
+const String FLUTTER_REQUEST_SET_SUBSCRIPTIONS_SUBSCRIPTIONS = 'subscriptions';
+const String
+ FLUTTER_RESPONSE_GET_CHANGE_ADD_FOR_DESIGN_TIME_CONSTRUCTOR_CHANGE =
+ 'change';
+const String KYTHE_REQUEST_GET_KYTHE_ENTRIES = 'kythe.getKytheEntries';
+const String KYTHE_REQUEST_GET_KYTHE_ENTRIES_FILE = 'file';
+const String KYTHE_RESPONSE_GET_KYTHE_ENTRIES_ENTRIES = 'entries';
+const String KYTHE_RESPONSE_GET_KYTHE_ENTRIES_FILES = 'files';
+const String SEARCH_NOTIFICATION_RESULTS = 'search.results';
+const String SEARCH_NOTIFICATION_RESULTS_ID = 'id';
+const String SEARCH_NOTIFICATION_RESULTS_IS_LAST = 'isLast';
+const String SEARCH_NOTIFICATION_RESULTS_RESULTS = 'results';
+const String SEARCH_REQUEST_FIND_ELEMENT_REFERENCES =
+ 'search.findElementReferences';
+const String SEARCH_REQUEST_FIND_ELEMENT_REFERENCES_FILE = 'file';
+const String SEARCH_REQUEST_FIND_ELEMENT_REFERENCES_INCLUDE_POTENTIAL =
+ 'includePotential';
+const String SEARCH_REQUEST_FIND_ELEMENT_REFERENCES_OFFSET = 'offset';
+const String SEARCH_REQUEST_FIND_MEMBER_DECLARATIONS =
+ 'search.findMemberDeclarations';
+const String SEARCH_REQUEST_FIND_MEMBER_DECLARATIONS_NAME = 'name';
+const String SEARCH_REQUEST_FIND_MEMBER_REFERENCES =
+ 'search.findMemberReferences';
+const String SEARCH_REQUEST_FIND_MEMBER_REFERENCES_NAME = 'name';
+const String SEARCH_REQUEST_FIND_TOP_LEVEL_DECLARATIONS =
+ 'search.findTopLevelDeclarations';
+const String SEARCH_REQUEST_FIND_TOP_LEVEL_DECLARATIONS_PATTERN = 'pattern';
+const String SEARCH_REQUEST_GET_ELEMENT_DECLARATIONS =
+ 'search.getElementDeclarations';
+const String SEARCH_REQUEST_GET_ELEMENT_DECLARATIONS_FILE = 'file';
+const String SEARCH_REQUEST_GET_ELEMENT_DECLARATIONS_MAX_RESULTS = 'maxResults';
+const String SEARCH_REQUEST_GET_ELEMENT_DECLARATIONS_PATTERN = 'pattern';
+const String SEARCH_REQUEST_GET_TYPE_HIERARCHY = 'search.getTypeHierarchy';
+const String SEARCH_REQUEST_GET_TYPE_HIERARCHY_FILE = 'file';
+const String SEARCH_REQUEST_GET_TYPE_HIERARCHY_OFFSET = 'offset';
+const String SEARCH_REQUEST_GET_TYPE_HIERARCHY_SUPER_ONLY = 'superOnly';
+const String SEARCH_RESPONSE_FIND_ELEMENT_REFERENCES_ELEMENT = 'element';
+const String SEARCH_RESPONSE_FIND_ELEMENT_REFERENCES_ID = 'id';
+const String SEARCH_RESPONSE_FIND_MEMBER_DECLARATIONS_ID = 'id';
+const String SEARCH_RESPONSE_FIND_MEMBER_REFERENCES_ID = 'id';
+const String SEARCH_RESPONSE_FIND_TOP_LEVEL_DECLARATIONS_ID = 'id';
+const String SEARCH_RESPONSE_GET_ELEMENT_DECLARATIONS_DECLARATIONS =
+ 'declarations';
+const String SEARCH_RESPONSE_GET_ELEMENT_DECLARATIONS_FILES = 'files';
+const String SEARCH_RESPONSE_GET_TYPE_HIERARCHY_HIERARCHY_ITEMS =
+ 'hierarchyItems';
+const String SERVER_NOTIFICATION_CONNECTED = 'server.connected';
+const String SERVER_NOTIFICATION_CONNECTED_PID = 'pid';
+const String SERVER_NOTIFICATION_CONNECTED_SESSION_ID = 'sessionId';
+const String SERVER_NOTIFICATION_CONNECTED_VERSION = 'version';
+const String SERVER_NOTIFICATION_ERROR = 'server.error';
+const String SERVER_NOTIFICATION_ERROR_IS_FATAL = 'isFatal';
+const String SERVER_NOTIFICATION_ERROR_MESSAGE = 'message';
+const String SERVER_NOTIFICATION_ERROR_STACK_TRACE = 'stackTrace';
+const String SERVER_NOTIFICATION_STATUS = 'server.status';
+const String SERVER_NOTIFICATION_STATUS_ANALYSIS = 'analysis';
+const String SERVER_NOTIFICATION_STATUS_PUB = 'pub';
+const String SERVER_REQUEST_GET_VERSION = 'server.getVersion';
+const String SERVER_REQUEST_SET_SUBSCRIPTIONS = 'server.setSubscriptions';
+const String SERVER_REQUEST_SET_SUBSCRIPTIONS_SUBSCRIPTIONS = 'subscriptions';
+const String SERVER_REQUEST_SHUTDOWN = 'server.shutdown';
+const String SERVER_RESPONSE_GET_VERSION_VERSION = 'version';
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart
new file mode 100644
index 0000000..2bbf169
--- /dev/null
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart
@@ -0,0 +1,19528 @@
+// 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:analysis_server_client/src/protocol/protocol_base.dart';
+import 'package:analysis_server_client/src/protocol/protocol_common.dart';
+import 'package:analysis_server_client/src/protocol/protocol_internal.dart';
+import 'package:analysis_server_client/src/protocol/protocol_util.dart';
+
+/**
+ * analysis.analyzedFiles params
+ *
+ * {
+ * "directories": List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisAnalyzedFilesParams implements HasToJson {
+ List<String> _directories;
+
+ /**
+ * A list of the paths of the files that are being analyzed.
+ */
+ List<String> get directories => _directories;
+
+ /**
+ * A list of the paths of the files that are being analyzed.
+ */
+ void set directories(List<String> value) {
+ assert(value != null);
+ this._directories = value;
+ }
+
+ AnalysisAnalyzedFilesParams(List<String> directories) {
+ this.directories = directories;
+ }
+
+ factory AnalysisAnalyzedFilesParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> directories;
+ if (json.containsKey("directories")) {
+ directories = jsonDecoder.decodeList(jsonPath + ".directories",
+ json["directories"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "directories");
+ }
+ return new AnalysisAnalyzedFilesParams(directories);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.analyzedFiles params", json);
+ }
+ }
+
+ factory AnalysisAnalyzedFilesParams.fromNotification(
+ Notification notification) {
+ return new AnalysisAnalyzedFilesParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["directories"] = directories;
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.analyzedFiles", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisAnalyzedFilesParams) {
+ return listEqual(
+ directories, other.directories, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, directories.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.closingLabels params
+ *
+ * {
+ * "file": FilePath
+ * "labels": List<ClosingLabel>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisClosingLabelsParams implements HasToJson {
+ String _file;
+
+ List<ClosingLabel> _labels;
+
+ /**
+ * The file the closing labels relate to.
+ */
+ String get file => _file;
+
+ /**
+ * The file the closing labels relate to.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * Closing labels relevant to the file. Each item represents a useful label
+ * associated with some range with may be useful to display to the user
+ * within the editor at the end of the range to indicate what construct is
+ * closed at that location. Closing labels include constructor/method calls
+ * and List arguments that span multiple lines. Note that the ranges that are
+ * returned can overlap each other because they may be associated with
+ * constructs that can be nested.
+ */
+ List<ClosingLabel> get labels => _labels;
+
+ /**
+ * Closing labels relevant to the file. Each item represents a useful label
+ * associated with some range with may be useful to display to the user
+ * within the editor at the end of the range to indicate what construct is
+ * closed at that location. Closing labels include constructor/method calls
+ * and List arguments that span multiple lines. Note that the ranges that are
+ * returned can overlap each other because they may be associated with
+ * constructs that can be nested.
+ */
+ void set labels(List<ClosingLabel> value) {
+ assert(value != null);
+ this._labels = value;
+ }
+
+ AnalysisClosingLabelsParams(String file, List<ClosingLabel> labels) {
+ this.file = file;
+ this.labels = labels;
+ }
+
+ factory AnalysisClosingLabelsParams.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");
+ }
+ List<ClosingLabel> labels;
+ if (json.containsKey("labels")) {
+ labels = jsonDecoder.decodeList(
+ jsonPath + ".labels",
+ json["labels"],
+ (String jsonPath, Object json) =>
+ new ClosingLabel.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "labels");
+ }
+ return new AnalysisClosingLabelsParams(file, labels);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.closingLabels params", json);
+ }
+ }
+
+ factory AnalysisClosingLabelsParams.fromNotification(
+ Notification notification) {
+ return new AnalysisClosingLabelsParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["labels"] =
+ labels.map((ClosingLabel value) => value.toJson()).toList();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.closingLabels", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisClosingLabelsParams) {
+ return file == other.file &&
+ listEqual(
+ labels, other.labels, (ClosingLabel a, ClosingLabel b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, labels.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * AnalysisErrorFixes
+ *
+ * {
+ * "error": AnalysisError
+ * "fixes": List<SourceChange>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisErrorFixes implements HasToJson {
+ AnalysisError _error;
+
+ List<SourceChange> _fixes;
+
+ /**
+ * The error with which the fixes are associated.
+ */
+ AnalysisError get error => _error;
+
+ /**
+ * The error with which the fixes are associated.
+ */
+ void set error(AnalysisError value) {
+ assert(value != null);
+ this._error = value;
+ }
+
+ /**
+ * The fixes associated with the error.
+ */
+ List<SourceChange> get fixes => _fixes;
+
+ /**
+ * The fixes associated with the error.
+ */
+ void set fixes(List<SourceChange> value) {
+ assert(value != null);
+ this._fixes = value;
+ }
+
+ AnalysisErrorFixes(AnalysisError error, {List<SourceChange> fixes}) {
+ this.error = error;
+ if (fixes == null) {
+ this.fixes = <SourceChange>[];
+ } else {
+ this.fixes = fixes;
+ }
+ }
+
+ factory AnalysisErrorFixes.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ AnalysisError error;
+ if (json.containsKey("error")) {
+ error = new AnalysisError.fromJson(
+ jsonDecoder, jsonPath + ".error", json["error"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "error");
+ }
+ List<SourceChange> fixes;
+ if (json.containsKey("fixes")) {
+ fixes = jsonDecoder.decodeList(
+ jsonPath + ".fixes",
+ json["fixes"],
+ (String jsonPath, Object json) =>
+ new SourceChange.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "fixes");
+ }
+ return new AnalysisErrorFixes(error, fixes: fixes);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "AnalysisErrorFixes", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["error"] = error.toJson();
+ result["fixes"] =
+ fixes.map((SourceChange value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisErrorFixes) {
+ return error == other.error &&
+ listEqual(
+ fixes, other.fixes, (SourceChange a, SourceChange b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, error.hashCode);
+ hash = JenkinsSmiHash.combine(hash, fixes.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.errors params
+ *
+ * {
+ * "file": FilePath
+ * "errors": List<AnalysisError>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisErrorsParams implements HasToJson {
+ String _file;
+
+ List<AnalysisError> _errors;
+
+ /**
+ * The file containing the errors.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the errors.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The errors contained in the file.
+ */
+ List<AnalysisError> get errors => _errors;
+
+ /**
+ * The errors contained in the file.
+ */
+ void set errors(List<AnalysisError> value) {
+ assert(value != null);
+ this._errors = value;
+ }
+
+ AnalysisErrorsParams(String file, List<AnalysisError> errors) {
+ this.file = file;
+ this.errors = errors;
+ }
+
+ factory AnalysisErrorsParams.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");
+ }
+ List<AnalysisError> errors;
+ if (json.containsKey("errors")) {
+ errors = jsonDecoder.decodeList(
+ jsonPath + ".errors",
+ json["errors"],
+ (String jsonPath, Object json) =>
+ new AnalysisError.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "errors");
+ }
+ return new AnalysisErrorsParams(file, errors);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.errors params", json);
+ }
+ }
+
+ factory AnalysisErrorsParams.fromNotification(Notification notification) {
+ return new AnalysisErrorsParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["errors"] =
+ errors.map((AnalysisError value) => value.toJson()).toList();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.errors", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisErrorsParams) {
+ return file == other.file &&
+ listEqual(errors, other.errors,
+ (AnalysisError a, AnalysisError b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, errors.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.flushResults params
+ *
+ * {
+ * "files": List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisFlushResultsParams implements HasToJson {
+ List<String> _files;
+
+ /**
+ * The files that are no longer being analyzed.
+ */
+ List<String> get files => _files;
+
+ /**
+ * The files that are no longer being analyzed.
+ */
+ void set files(List<String> value) {
+ assert(value != null);
+ this._files = value;
+ }
+
+ AnalysisFlushResultsParams(List<String> files) {
+ this.files = files;
+ }
+
+ factory AnalysisFlushResultsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> files;
+ if (json.containsKey("files")) {
+ files = jsonDecoder.decodeList(
+ jsonPath + ".files", json["files"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "files");
+ }
+ return new AnalysisFlushResultsParams(files);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.flushResults params", json);
+ }
+ }
+
+ factory AnalysisFlushResultsParams.fromNotification(
+ Notification notification) {
+ return new AnalysisFlushResultsParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["files"] = files;
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.flushResults", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisFlushResultsParams) {
+ return listEqual(files, other.files, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, files.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.folding params
+ *
+ * {
+ * "file": FilePath
+ * "regions": List<FoldingRegion>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisFoldingParams implements HasToJson {
+ String _file;
+
+ List<FoldingRegion> _regions;
+
+ /**
+ * The file containing the folding regions.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the folding regions.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The folding regions contained in the file.
+ */
+ List<FoldingRegion> get regions => _regions;
+
+ /**
+ * The folding regions contained in the file.
+ */
+ void set regions(List<FoldingRegion> value) {
+ assert(value != null);
+ this._regions = value;
+ }
+
+ AnalysisFoldingParams(String file, List<FoldingRegion> regions) {
+ this.file = file;
+ this.regions = regions;
+ }
+
+ factory AnalysisFoldingParams.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");
+ }
+ List<FoldingRegion> regions;
+ if (json.containsKey("regions")) {
+ regions = jsonDecoder.decodeList(
+ jsonPath + ".regions",
+ json["regions"],
+ (String jsonPath, Object json) =>
+ new FoldingRegion.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "regions");
+ }
+ return new AnalysisFoldingParams(file, regions);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.folding params", json);
+ }
+ }
+
+ factory AnalysisFoldingParams.fromNotification(Notification notification) {
+ return new AnalysisFoldingParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["regions"] =
+ regions.map((FoldingRegion value) => value.toJson()).toList();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.folding", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisFoldingParams) {
+ return file == other.file &&
+ listEqual(regions, other.regions,
+ (FoldingRegion a, FoldingRegion b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, regions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getErrors params
+ *
+ * {
+ * "file": FilePath
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetErrorsParams implements RequestParams {
+ String _file;
+
+ /**
+ * The file for which errors are being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file for which errors are being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ AnalysisGetErrorsParams(String file) {
+ this.file = file;
+ }
+
+ factory AnalysisGetErrorsParams.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");
+ }
+ return new AnalysisGetErrorsParams(file);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.getErrors params", json);
+ }
+ }
+
+ factory AnalysisGetErrorsParams.fromRequest(Request request) {
+ return new AnalysisGetErrorsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.getErrors", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetErrorsParams) {
+ return file == other.file;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getErrors result
+ *
+ * {
+ * "errors": List<AnalysisError>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetErrorsResult implements ResponseResult {
+ List<AnalysisError> _errors;
+
+ /**
+ * The errors associated with the file.
+ */
+ List<AnalysisError> get errors => _errors;
+
+ /**
+ * The errors associated with the file.
+ */
+ void set errors(List<AnalysisError> value) {
+ assert(value != null);
+ this._errors = value;
+ }
+
+ AnalysisGetErrorsResult(List<AnalysisError> errors) {
+ this.errors = errors;
+ }
+
+ factory AnalysisGetErrorsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<AnalysisError> errors;
+ if (json.containsKey("errors")) {
+ errors = jsonDecoder.decodeList(
+ jsonPath + ".errors",
+ json["errors"],
+ (String jsonPath, Object json) =>
+ new AnalysisError.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "errors");
+ }
+ return new AnalysisGetErrorsResult(errors);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.getErrors result", json);
+ }
+ }
+
+ factory AnalysisGetErrorsResult.fromResponse(Response response) {
+ return new AnalysisGetErrorsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["errors"] =
+ errors.map((AnalysisError value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetErrorsResult) {
+ return listEqual(
+ errors, other.errors, (AnalysisError a, AnalysisError b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, errors.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getHover params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetHoverParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ /**
+ * The file in which hover information is being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file in which hover information is being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset for which hover information is being requested.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset for which hover information is being requested.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ AnalysisGetHoverParams(String file, int offset) {
+ this.file = file;
+ this.offset = offset;
+ }
+
+ factory AnalysisGetHoverParams.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 AnalysisGetHoverParams(file, offset);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.getHover params", json);
+ }
+ }
+
+ factory AnalysisGetHoverParams.fromRequest(Request request) {
+ return new AnalysisGetHoverParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.getHover", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetHoverParams) {
+ 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);
+ }
+}
+
+/**
+ * analysis.getHover result
+ *
+ * {
+ * "hovers": List<HoverInformation>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetHoverResult implements ResponseResult {
+ List<HoverInformation> _hovers;
+
+ /**
+ * The hover information associated with the location. The list will be empty
+ * if no information could be determined for the location. The list can
+ * contain multiple items if the file is being analyzed in multiple contexts
+ * in conflicting ways (such as a part that is included in multiple
+ * libraries).
+ */
+ List<HoverInformation> get hovers => _hovers;
+
+ /**
+ * The hover information associated with the location. The list will be empty
+ * if no information could be determined for the location. The list can
+ * contain multiple items if the file is being analyzed in multiple contexts
+ * in conflicting ways (such as a part that is included in multiple
+ * libraries).
+ */
+ void set hovers(List<HoverInformation> value) {
+ assert(value != null);
+ this._hovers = value;
+ }
+
+ AnalysisGetHoverResult(List<HoverInformation> hovers) {
+ this.hovers = hovers;
+ }
+
+ factory AnalysisGetHoverResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<HoverInformation> hovers;
+ if (json.containsKey("hovers")) {
+ hovers = jsonDecoder.decodeList(
+ jsonPath + ".hovers",
+ json["hovers"],
+ (String jsonPath, Object json) =>
+ new HoverInformation.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "hovers");
+ }
+ return new AnalysisGetHoverResult(hovers);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.getHover result", json);
+ }
+ }
+
+ factory AnalysisGetHoverResult.fromResponse(Response response) {
+ return new AnalysisGetHoverResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["hovers"] =
+ hovers.map((HoverInformation value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetHoverResult) {
+ return listEqual(hovers, other.hovers,
+ (HoverInformation a, HoverInformation b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, hovers.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getImportedElements params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * "length": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetImportedElementsParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ int _length;
+
+ /**
+ * The file in which import information is being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file in which import information is being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the region for which import information is being requested.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the region for which import information is being requested.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the region for which import information is being requested.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the region for which import information is being requested.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ AnalysisGetImportedElementsParams(String file, int offset, int length) {
+ this.file = file;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ factory AnalysisGetImportedElementsParams.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");
+ }
+ return new AnalysisGetImportedElementsParams(file, offset, length);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getImportedElements params", json);
+ }
+ }
+
+ factory AnalysisGetImportedElementsParams.fromRequest(Request request) {
+ return new AnalysisGetImportedElementsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ result["length"] = length;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.getImportedElements", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetImportedElementsParams) {
+ return file == other.file &&
+ offset == other.offset &&
+ length == other.length;
+ }
+ 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);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getImportedElements result
+ *
+ * {
+ * "elements": List<ImportedElements>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetImportedElementsResult implements ResponseResult {
+ List<ImportedElements> _elements;
+
+ /**
+ * The information about the elements that are referenced in the specified
+ * region of the specified file that come from imported libraries.
+ */
+ List<ImportedElements> get elements => _elements;
+
+ /**
+ * The information about the elements that are referenced in the specified
+ * region of the specified file that come from imported libraries.
+ */
+ void set elements(List<ImportedElements> value) {
+ assert(value != null);
+ this._elements = value;
+ }
+
+ AnalysisGetImportedElementsResult(List<ImportedElements> elements) {
+ this.elements = elements;
+ }
+
+ factory AnalysisGetImportedElementsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<ImportedElements> elements;
+ if (json.containsKey("elements")) {
+ elements = jsonDecoder.decodeList(
+ jsonPath + ".elements",
+ json["elements"],
+ (String jsonPath, Object json) =>
+ new ImportedElements.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "elements");
+ }
+ return new AnalysisGetImportedElementsResult(elements);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getImportedElements result", json);
+ }
+ }
+
+ factory AnalysisGetImportedElementsResult.fromResponse(Response response) {
+ return new AnalysisGetImportedElementsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["elements"] =
+ elements.map((ImportedElements value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetImportedElementsResult) {
+ return listEqual(elements, other.elements,
+ (ImportedElements a, ImportedElements b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, elements.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getLibraryDependencies params
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetLibraryDependenciesParams implements RequestParams {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.getLibraryDependencies", null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetLibraryDependenciesParams) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 246577680;
+ }
+}
+
+/**
+ * analysis.getLibraryDependencies result
+ *
+ * {
+ * "libraries": List<FilePath>
+ * "packageMap": Map<String, Map<String, List<FilePath>>>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetLibraryDependenciesResult implements ResponseResult {
+ List<String> _libraries;
+
+ Map<String, Map<String, List<String>>> _packageMap;
+
+ /**
+ * A list of the paths of library elements referenced by files in existing
+ * analysis roots.
+ */
+ List<String> get libraries => _libraries;
+
+ /**
+ * A list of the paths of library elements referenced by files in existing
+ * analysis roots.
+ */
+ void set libraries(List<String> value) {
+ assert(value != null);
+ this._libraries = value;
+ }
+
+ /**
+ * A mapping from context source roots to package maps which map package
+ * names to source directories for use in client-side package URI resolution.
+ */
+ Map<String, Map<String, List<String>>> get packageMap => _packageMap;
+
+ /**
+ * A mapping from context source roots to package maps which map package
+ * names to source directories for use in client-side package URI resolution.
+ */
+ void set packageMap(Map<String, Map<String, List<String>>> value) {
+ assert(value != null);
+ this._packageMap = value;
+ }
+
+ AnalysisGetLibraryDependenciesResult(List<String> libraries,
+ Map<String, Map<String, List<String>>> packageMap) {
+ this.libraries = libraries;
+ this.packageMap = packageMap;
+ }
+
+ factory AnalysisGetLibraryDependenciesResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> libraries;
+ if (json.containsKey("libraries")) {
+ libraries = jsonDecoder.decodeList(jsonPath + ".libraries",
+ json["libraries"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "libraries");
+ }
+ Map<String, Map<String, List<String>>> packageMap;
+ if (json.containsKey("packageMap")) {
+ packageMap = jsonDecoder.decodeMap(
+ jsonPath + ".packageMap", json["packageMap"],
+ valueDecoder: (String jsonPath, Object json) =>
+ jsonDecoder.decodeMap(jsonPath, json,
+ valueDecoder: (String jsonPath, Object json) => jsonDecoder
+ .decodeList(jsonPath, json, jsonDecoder.decodeString)));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "packageMap");
+ }
+ return new AnalysisGetLibraryDependenciesResult(libraries, packageMap);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getLibraryDependencies result", json);
+ }
+ }
+
+ factory AnalysisGetLibraryDependenciesResult.fromResponse(Response response) {
+ return new AnalysisGetLibraryDependenciesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["libraries"] = libraries;
+ result["packageMap"] = packageMap;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetLibraryDependenciesResult) {
+ return listEqual(
+ libraries, other.libraries, (String a, String b) => a == b) &&
+ mapEqual(
+ packageMap,
+ other.packageMap,
+ (Map<String, List<String>> a, Map<String, List<String>> b) =>
+ mapEqual(
+ a,
+ b,
+ (List<String> a, List<String> b) =>
+ listEqual(a, b, (String a, String b) => a == b)));
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, libraries.hashCode);
+ hash = JenkinsSmiHash.combine(hash, packageMap.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getNavigation params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * "length": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetNavigationParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ int _length;
+
+ /**
+ * The file in which navigation information is being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file in which navigation information is being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the region for which navigation information is being
+ * requested.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the region for which navigation information is being
+ * requested.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the region for which navigation information is being
+ * requested.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the region for which navigation information is being
+ * requested.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ AnalysisGetNavigationParams(String file, int offset, int length) {
+ this.file = file;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ factory AnalysisGetNavigationParams.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");
+ }
+ return new AnalysisGetNavigationParams(file, offset, length);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getNavigation params", json);
+ }
+ }
+
+ factory AnalysisGetNavigationParams.fromRequest(Request request) {
+ return new AnalysisGetNavigationParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ result["length"] = length;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.getNavigation", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetNavigationParams) {
+ return file == other.file &&
+ offset == other.offset &&
+ length == other.length;
+ }
+ 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);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getNavigation result
+ *
+ * {
+ * "files": List<FilePath>
+ * "targets": List<NavigationTarget>
+ * "regions": List<NavigationRegion>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetNavigationResult implements ResponseResult {
+ List<String> _files;
+
+ List<NavigationTarget> _targets;
+
+ List<NavigationRegion> _regions;
+
+ /**
+ * A list of the paths of files that are referenced by the navigation
+ * targets.
+ */
+ List<String> get files => _files;
+
+ /**
+ * A list of the paths of files that are referenced by the navigation
+ * targets.
+ */
+ void set files(List<String> value) {
+ assert(value != null);
+ this._files = value;
+ }
+
+ /**
+ * A list of the navigation targets that are referenced by the navigation
+ * regions.
+ */
+ List<NavigationTarget> get targets => _targets;
+
+ /**
+ * A list of the navigation targets that are referenced by the navigation
+ * regions.
+ */
+ void set targets(List<NavigationTarget> value) {
+ assert(value != null);
+ this._targets = value;
+ }
+
+ /**
+ * A list of the navigation regions within the requested region of the file.
+ */
+ List<NavigationRegion> get regions => _regions;
+
+ /**
+ * A list of the navigation regions within the requested region of the file.
+ */
+ void set regions(List<NavigationRegion> value) {
+ assert(value != null);
+ this._regions = value;
+ }
+
+ AnalysisGetNavigationResult(List<String> files,
+ List<NavigationTarget> targets, List<NavigationRegion> regions) {
+ this.files = files;
+ this.targets = targets;
+ this.regions = regions;
+ }
+
+ factory AnalysisGetNavigationResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> files;
+ if (json.containsKey("files")) {
+ files = jsonDecoder.decodeList(
+ jsonPath + ".files", json["files"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "files");
+ }
+ List<NavigationTarget> targets;
+ if (json.containsKey("targets")) {
+ targets = jsonDecoder.decodeList(
+ jsonPath + ".targets",
+ json["targets"],
+ (String jsonPath, Object json) =>
+ new NavigationTarget.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "targets");
+ }
+ List<NavigationRegion> regions;
+ if (json.containsKey("regions")) {
+ regions = jsonDecoder.decodeList(
+ jsonPath + ".regions",
+ json["regions"],
+ (String jsonPath, Object json) =>
+ new NavigationRegion.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "regions");
+ }
+ return new AnalysisGetNavigationResult(files, targets, regions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getNavigation result", json);
+ }
+ }
+
+ factory AnalysisGetNavigationResult.fromResponse(Response response) {
+ return new AnalysisGetNavigationResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["files"] = files;
+ result["targets"] =
+ targets.map((NavigationTarget value) => value.toJson()).toList();
+ result["regions"] =
+ regions.map((NavigationRegion value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetNavigationResult) {
+ return listEqual(files, other.files, (String a, String b) => a == b) &&
+ listEqual(targets, other.targets,
+ (NavigationTarget a, NavigationTarget b) => a == b) &&
+ listEqual(regions, other.regions,
+ (NavigationRegion a, NavigationRegion b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, files.hashCode);
+ hash = JenkinsSmiHash.combine(hash, targets.hashCode);
+ hash = JenkinsSmiHash.combine(hash, regions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getReachableSources params
+ *
+ * {
+ * "file": FilePath
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetReachableSourcesParams implements RequestParams {
+ String _file;
+
+ /**
+ * The file for which reachable source information is being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file for which reachable source information is being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ AnalysisGetReachableSourcesParams(String file) {
+ this.file = file;
+ }
+
+ factory AnalysisGetReachableSourcesParams.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");
+ }
+ return new AnalysisGetReachableSourcesParams(file);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getReachableSources params", json);
+ }
+ }
+
+ factory AnalysisGetReachableSourcesParams.fromRequest(Request request) {
+ return new AnalysisGetReachableSourcesParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.getReachableSources", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetReachableSourcesParams) {
+ return file == other.file;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getReachableSources result
+ *
+ * {
+ * "sources": Map<String, List<String>>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetReachableSourcesResult implements ResponseResult {
+ Map<String, List<String>> _sources;
+
+ /**
+ * A mapping from source URIs to directly reachable source URIs. For example,
+ * a file "foo.dart" that imports "bar.dart" would have the corresponding
+ * mapping { "file:///foo.dart" : ["file:///bar.dart"] }. If "bar.dart" has
+ * further imports (or exports) there will be a mapping from the URI
+ * "file:///bar.dart" to them. To check if a specific URI is reachable from a
+ * given file, clients can check for its presence in the resulting key set.
+ */
+ Map<String, List<String>> get sources => _sources;
+
+ /**
+ * A mapping from source URIs to directly reachable source URIs. For example,
+ * a file "foo.dart" that imports "bar.dart" would have the corresponding
+ * mapping { "file:///foo.dart" : ["file:///bar.dart"] }. If "bar.dart" has
+ * further imports (or exports) there will be a mapping from the URI
+ * "file:///bar.dart" to them. To check if a specific URI is reachable from a
+ * given file, clients can check for its presence in the resulting key set.
+ */
+ void set sources(Map<String, List<String>> value) {
+ assert(value != null);
+ this._sources = value;
+ }
+
+ AnalysisGetReachableSourcesResult(Map<String, List<String>> sources) {
+ this.sources = sources;
+ }
+
+ factory AnalysisGetReachableSourcesResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ Map<String, List<String>> sources;
+ if (json.containsKey("sources")) {
+ sources = jsonDecoder.decodeMap(jsonPath + ".sources", json["sources"],
+ valueDecoder: (String jsonPath, Object json) => jsonDecoder
+ .decodeList(jsonPath, json, jsonDecoder.decodeString));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "sources");
+ }
+ return new AnalysisGetReachableSourcesResult(sources);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getReachableSources result", json);
+ }
+ }
+
+ factory AnalysisGetReachableSourcesResult.fromResponse(Response response) {
+ return new AnalysisGetReachableSourcesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["sources"] = sources;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetReachableSourcesResult) {
+ return mapEqual(
+ sources,
+ other.sources,
+ (List<String> a, List<String> b) =>
+ listEqual(a, b, (String a, String b) => a == b));
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, sources.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.getSignature params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetSignatureParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ /**
+ * The file in which signature information is being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file in which signature information is being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The location for which signature information is being requested.
+ */
+ int get offset => _offset;
+
+ /**
+ * The location for which signature information is being requested.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ AnalysisGetSignatureParams(String file, int offset) {
+ this.file = file;
+ this.offset = offset;
+ }
+
+ factory AnalysisGetSignatureParams.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 AnalysisGetSignatureParams(file, offset);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getSignature params", json);
+ }
+ }
+
+ factory AnalysisGetSignatureParams.fromRequest(Request request) {
+ return new AnalysisGetSignatureParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.getSignature", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetSignatureParams) {
+ 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);
+ }
+}
+
+/**
+ * analysis.getSignature result
+ *
+ * {
+ * "name": String
+ * "parameters": List<ParameterInfo>
+ * "dartdoc": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisGetSignatureResult implements ResponseResult {
+ String _name;
+
+ List<ParameterInfo> _parameters;
+
+ String _dartdoc;
+
+ /**
+ * The name of the function being invoked at the given offset.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the function being invoked at the given offset.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * A list of information about each of the parameters of the function being
+ * invoked.
+ */
+ List<ParameterInfo> get parameters => _parameters;
+
+ /**
+ * A list of information about each of the parameters of the function being
+ * invoked.
+ */
+ void set parameters(List<ParameterInfo> value) {
+ assert(value != null);
+ this._parameters = value;
+ }
+
+ /**
+ * The dartdoc associated with the function being invoked. Other than the
+ * removal of the comment delimiters, including leading asterisks in the case
+ * of a block comment, the dartdoc is unprocessed markdown. This data is
+ * omitted if there is no referenced element, or if the element has no
+ * dartdoc.
+ */
+ String get dartdoc => _dartdoc;
+
+ /**
+ * The dartdoc associated with the function being invoked. Other than the
+ * removal of the comment delimiters, including leading asterisks in the case
+ * of a block comment, the dartdoc is unprocessed markdown. This data is
+ * omitted if there is no referenced element, or if the element has no
+ * dartdoc.
+ */
+ void set dartdoc(String value) {
+ this._dartdoc = value;
+ }
+
+ AnalysisGetSignatureResult(String name, List<ParameterInfo> parameters,
+ {String dartdoc}) {
+ this.name = name;
+ this.parameters = parameters;
+ this.dartdoc = dartdoc;
+ }
+
+ factory AnalysisGetSignatureResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ List<ParameterInfo> parameters;
+ if (json.containsKey("parameters")) {
+ parameters = jsonDecoder.decodeList(
+ jsonPath + ".parameters",
+ json["parameters"],
+ (String jsonPath, Object json) =>
+ new ParameterInfo.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "parameters");
+ }
+ String dartdoc;
+ if (json.containsKey("dartdoc")) {
+ dartdoc =
+ jsonDecoder.decodeString(jsonPath + ".dartdoc", json["dartdoc"]);
+ }
+ return new AnalysisGetSignatureResult(name, parameters, dartdoc: dartdoc);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.getSignature result", json);
+ }
+ }
+
+ factory AnalysisGetSignatureResult.fromResponse(Response response) {
+ return new AnalysisGetSignatureResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["parameters"] =
+ parameters.map((ParameterInfo value) => value.toJson()).toList();
+ if (dartdoc != null) {
+ result["dartdoc"] = dartdoc;
+ }
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisGetSignatureResult) {
+ return name == other.name &&
+ listEqual(parameters, other.parameters,
+ (ParameterInfo a, ParameterInfo b) => a == b) &&
+ dartdoc == other.dartdoc;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parameters.hashCode);
+ hash = JenkinsSmiHash.combine(hash, dartdoc.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.highlights params
+ *
+ * {
+ * "file": FilePath
+ * "regions": List<HighlightRegion>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisHighlightsParams implements HasToJson {
+ String _file;
+
+ List<HighlightRegion> _regions;
+
+ /**
+ * The file containing the highlight regions.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the highlight regions.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The highlight regions contained in the file. Each highlight region
+ * represents a particular syntactic or semantic meaning associated with some
+ * range. Note that the highlight regions that are returned can overlap other
+ * highlight regions if there is more than one meaning associated with a
+ * particular region.
+ */
+ List<HighlightRegion> get regions => _regions;
+
+ /**
+ * The highlight regions contained in the file. Each highlight region
+ * represents a particular syntactic or semantic meaning associated with some
+ * range. Note that the highlight regions that are returned can overlap other
+ * highlight regions if there is more than one meaning associated with a
+ * particular region.
+ */
+ void set regions(List<HighlightRegion> value) {
+ assert(value != null);
+ this._regions = value;
+ }
+
+ AnalysisHighlightsParams(String file, List<HighlightRegion> regions) {
+ this.file = file;
+ this.regions = regions;
+ }
+
+ factory AnalysisHighlightsParams.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");
+ }
+ List<HighlightRegion> regions;
+ if (json.containsKey("regions")) {
+ regions = jsonDecoder.decodeList(
+ jsonPath + ".regions",
+ json["regions"],
+ (String jsonPath, Object json) =>
+ new HighlightRegion.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "regions");
+ }
+ return new AnalysisHighlightsParams(file, regions);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.highlights params", json);
+ }
+ }
+
+ factory AnalysisHighlightsParams.fromNotification(Notification notification) {
+ return new AnalysisHighlightsParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["regions"] =
+ regions.map((HighlightRegion value) => value.toJson()).toList();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.highlights", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisHighlightsParams) {
+ return file == other.file &&
+ listEqual(regions, other.regions,
+ (HighlightRegion a, HighlightRegion b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, regions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.implemented params
+ *
+ * {
+ * "file": FilePath
+ * "classes": List<ImplementedClass>
+ * "members": List<ImplementedMember>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisImplementedParams implements HasToJson {
+ String _file;
+
+ List<ImplementedClass> _classes;
+
+ List<ImplementedMember> _members;
+
+ /**
+ * The file with which the implementations are associated.
+ */
+ String get file => _file;
+
+ /**
+ * The file with which the implementations are associated.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The classes defined in the file that are implemented or extended.
+ */
+ List<ImplementedClass> get classes => _classes;
+
+ /**
+ * The classes defined in the file that are implemented or extended.
+ */
+ void set classes(List<ImplementedClass> value) {
+ assert(value != null);
+ this._classes = value;
+ }
+
+ /**
+ * The member defined in the file that are implemented or overridden.
+ */
+ List<ImplementedMember> get members => _members;
+
+ /**
+ * The member defined in the file that are implemented or overridden.
+ */
+ void set members(List<ImplementedMember> value) {
+ assert(value != null);
+ this._members = value;
+ }
+
+ AnalysisImplementedParams(String file, List<ImplementedClass> classes,
+ List<ImplementedMember> members) {
+ this.file = file;
+ this.classes = classes;
+ this.members = members;
+ }
+
+ factory AnalysisImplementedParams.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");
+ }
+ List<ImplementedClass> classes;
+ if (json.containsKey("classes")) {
+ classes = jsonDecoder.decodeList(
+ jsonPath + ".classes",
+ json["classes"],
+ (String jsonPath, Object json) =>
+ new ImplementedClass.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "classes");
+ }
+ List<ImplementedMember> members;
+ if (json.containsKey("members")) {
+ members = jsonDecoder.decodeList(
+ jsonPath + ".members",
+ json["members"],
+ (String jsonPath, Object json) =>
+ new ImplementedMember.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "members");
+ }
+ return new AnalysisImplementedParams(file, classes, members);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.implemented params", json);
+ }
+ }
+
+ factory AnalysisImplementedParams.fromNotification(
+ Notification notification) {
+ return new AnalysisImplementedParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["classes"] =
+ classes.map((ImplementedClass value) => value.toJson()).toList();
+ result["members"] =
+ members.map((ImplementedMember value) => value.toJson()).toList();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.implemented", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisImplementedParams) {
+ return file == other.file &&
+ listEqual(classes, other.classes,
+ (ImplementedClass a, ImplementedClass b) => a == b) &&
+ listEqual(members, other.members,
+ (ImplementedMember a, ImplementedMember b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, classes.hashCode);
+ hash = JenkinsSmiHash.combine(hash, members.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.invalidate params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * "length": int
+ * "delta": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisInvalidateParams implements HasToJson {
+ String _file;
+
+ int _offset;
+
+ int _length;
+
+ int _delta;
+
+ /**
+ * The file whose information has been invalidated.
+ */
+ String get file => _file;
+
+ /**
+ * The file whose information has been invalidated.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the invalidated region.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the invalidated region.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the invalidated region.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the invalidated region.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * The delta to be applied to the offsets in information that follows the
+ * invalidated region in order to update it so that it doesn't need to be
+ * re-requested.
+ */
+ int get delta => _delta;
+
+ /**
+ * The delta to be applied to the offsets in information that follows the
+ * invalidated region in order to update it so that it doesn't need to be
+ * re-requested.
+ */
+ void set delta(int value) {
+ assert(value != null);
+ this._delta = value;
+ }
+
+ AnalysisInvalidateParams(String file, int offset, int length, int delta) {
+ this.file = file;
+ this.offset = offset;
+ this.length = length;
+ this.delta = delta;
+ }
+
+ factory AnalysisInvalidateParams.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 delta;
+ if (json.containsKey("delta")) {
+ delta = jsonDecoder.decodeInt(jsonPath + ".delta", json["delta"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "delta");
+ }
+ return new AnalysisInvalidateParams(file, offset, length, delta);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.invalidate params", json);
+ }
+ }
+
+ factory AnalysisInvalidateParams.fromNotification(Notification notification) {
+ return new AnalysisInvalidateParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ result["length"] = length;
+ result["delta"] = delta;
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.invalidate", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisInvalidateParams) {
+ return file == other.file &&
+ offset == other.offset &&
+ length == other.length &&
+ delta == other.delta;
+ }
+ 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, delta.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.navigation params
+ *
+ * {
+ * "file": FilePath
+ * "regions": List<NavigationRegion>
+ * "targets": List<NavigationTarget>
+ * "files": List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisNavigationParams implements HasToJson {
+ String _file;
+
+ List<NavigationRegion> _regions;
+
+ List<NavigationTarget> _targets;
+
+ List<String> _files;
+
+ /**
+ * The file containing the navigation regions.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the navigation regions.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The navigation regions contained in the file. The regions are sorted by
+ * their offsets. Each navigation region represents a list of targets
+ * associated with some range. The lists will usually contain a single
+ * target, but can contain more in the case of a part that is included in
+ * multiple libraries or in Dart code that is compiled against multiple
+ * versions of a package. Note that the navigation regions that are returned
+ * do not overlap other navigation regions.
+ */
+ List<NavigationRegion> get regions => _regions;
+
+ /**
+ * The navigation regions contained in the file. The regions are sorted by
+ * their offsets. Each navigation region represents a list of targets
+ * associated with some range. The lists will usually contain a single
+ * target, but can contain more in the case of a part that is included in
+ * multiple libraries or in Dart code that is compiled against multiple
+ * versions of a package. Note that the navigation regions that are returned
+ * do not overlap other navigation regions.
+ */
+ void set regions(List<NavigationRegion> value) {
+ assert(value != null);
+ this._regions = value;
+ }
+
+ /**
+ * The navigation targets referenced in the file. They are referenced by
+ * NavigationRegions by their index in this array.
+ */
+ List<NavigationTarget> get targets => _targets;
+
+ /**
+ * The navigation targets referenced in the file. They are referenced by
+ * NavigationRegions by their index in this array.
+ */
+ void set targets(List<NavigationTarget> value) {
+ assert(value != null);
+ this._targets = value;
+ }
+
+ /**
+ * The files containing navigation targets referenced in the file. They are
+ * referenced by NavigationTargets by their index in this array.
+ */
+ List<String> get files => _files;
+
+ /**
+ * The files containing navigation targets referenced in the file. They are
+ * referenced by NavigationTargets by their index in this array.
+ */
+ void set files(List<String> value) {
+ assert(value != null);
+ this._files = value;
+ }
+
+ AnalysisNavigationParams(String file, List<NavigationRegion> regions,
+ List<NavigationTarget> targets, List<String> files) {
+ this.file = file;
+ this.regions = regions;
+ this.targets = targets;
+ this.files = files;
+ }
+
+ factory AnalysisNavigationParams.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");
+ }
+ List<NavigationRegion> regions;
+ if (json.containsKey("regions")) {
+ regions = jsonDecoder.decodeList(
+ jsonPath + ".regions",
+ json["regions"],
+ (String jsonPath, Object json) =>
+ new NavigationRegion.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "regions");
+ }
+ List<NavigationTarget> targets;
+ if (json.containsKey("targets")) {
+ targets = jsonDecoder.decodeList(
+ jsonPath + ".targets",
+ json["targets"],
+ (String jsonPath, Object json) =>
+ new NavigationTarget.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "targets");
+ }
+ List<String> files;
+ if (json.containsKey("files")) {
+ files = jsonDecoder.decodeList(
+ jsonPath + ".files", json["files"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "files");
+ }
+ return new AnalysisNavigationParams(file, regions, targets, files);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.navigation params", json);
+ }
+ }
+
+ factory AnalysisNavigationParams.fromNotification(Notification notification) {
+ return new AnalysisNavigationParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["regions"] =
+ regions.map((NavigationRegion value) => value.toJson()).toList();
+ result["targets"] =
+ targets.map((NavigationTarget value) => value.toJson()).toList();
+ result["files"] = files;
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.navigation", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisNavigationParams) {
+ return file == other.file &&
+ listEqual(regions, other.regions,
+ (NavigationRegion a, NavigationRegion b) => a == b) &&
+ listEqual(targets, other.targets,
+ (NavigationTarget a, NavigationTarget b) => a == b) &&
+ listEqual(files, other.files, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, regions.hashCode);
+ hash = JenkinsSmiHash.combine(hash, targets.hashCode);
+ hash = JenkinsSmiHash.combine(hash, files.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.occurrences params
+ *
+ * {
+ * "file": FilePath
+ * "occurrences": List<Occurrences>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisOccurrencesParams implements HasToJson {
+ String _file;
+
+ List<Occurrences> _occurrences;
+
+ /**
+ * The file in which the references occur.
+ */
+ String get file => _file;
+
+ /**
+ * The file in which the references occur.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The occurrences of references to elements within the file.
+ */
+ List<Occurrences> get occurrences => _occurrences;
+
+ /**
+ * The occurrences of references to elements within the file.
+ */
+ void set occurrences(List<Occurrences> value) {
+ assert(value != null);
+ this._occurrences = value;
+ }
+
+ AnalysisOccurrencesParams(String file, List<Occurrences> occurrences) {
+ this.file = file;
+ this.occurrences = occurrences;
+ }
+
+ factory AnalysisOccurrencesParams.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");
+ }
+ List<Occurrences> occurrences;
+ if (json.containsKey("occurrences")) {
+ occurrences = jsonDecoder.decodeList(
+ jsonPath + ".occurrences",
+ json["occurrences"],
+ (String jsonPath, Object json) =>
+ new Occurrences.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "occurrences");
+ }
+ return new AnalysisOccurrencesParams(file, occurrences);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.occurrences params", json);
+ }
+ }
+
+ factory AnalysisOccurrencesParams.fromNotification(
+ Notification notification) {
+ return new AnalysisOccurrencesParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["occurrences"] =
+ occurrences.map((Occurrences value) => value.toJson()).toList();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.occurrences", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisOccurrencesParams) {
+ return file == other.file &&
+ listEqual(occurrences, other.occurrences,
+ (Occurrences a, Occurrences b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, occurrences.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * AnalysisOptions
+ *
+ * {
+ * "enableAsync": optional bool
+ * "enableDeferredLoading": optional bool
+ * "enableEnums": optional bool
+ * "enableNullAwareOperators": optional bool
+ * "enableSuperMixins": optional bool
+ * "generateDart2jsHints": optional bool
+ * "generateHints": optional bool
+ * "generateLints": optional bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisOptions implements HasToJson {
+ bool _enableAsync;
+
+ bool _enableDeferredLoading;
+
+ bool _enableEnums;
+
+ bool _enableNullAwareOperators;
+
+ bool _enableSuperMixins;
+
+ bool _generateDart2jsHints;
+
+ bool _generateHints;
+
+ bool _generateLints;
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed async feature.
+ */
+ bool get enableAsync => _enableAsync;
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed async feature.
+ */
+ void set enableAsync(bool value) {
+ this._enableAsync = value;
+ }
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed deferred
+ * loading feature.
+ */
+ bool get enableDeferredLoading => _enableDeferredLoading;
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed deferred
+ * loading feature.
+ */
+ void set enableDeferredLoading(bool value) {
+ this._enableDeferredLoading = value;
+ }
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed enum feature.
+ */
+ bool get enableEnums => _enableEnums;
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed enum feature.
+ */
+ void set enableEnums(bool value) {
+ this._enableEnums = value;
+ }
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed "null aware
+ * operators" feature.
+ */
+ bool get enableNullAwareOperators => _enableNullAwareOperators;
+
+ /**
+ * Deprecated: this feature is always enabled.
+ *
+ * True if the client wants to enable support for the proposed "null aware
+ * operators" feature.
+ */
+ void set enableNullAwareOperators(bool value) {
+ this._enableNullAwareOperators = value;
+ }
+
+ /**
+ * True if the client wants to enable support for the proposed "less
+ * restricted mixins" proposal (DEP 34).
+ */
+ bool get enableSuperMixins => _enableSuperMixins;
+
+ /**
+ * True if the client wants to enable support for the proposed "less
+ * restricted mixins" proposal (DEP 34).
+ */
+ void set enableSuperMixins(bool value) {
+ this._enableSuperMixins = value;
+ }
+
+ /**
+ * True if hints that are specific to dart2js should be generated. This
+ * option is ignored if generateHints is false.
+ */
+ bool get generateDart2jsHints => _generateDart2jsHints;
+
+ /**
+ * True if hints that are specific to dart2js should be generated. This
+ * option is ignored if generateHints is false.
+ */
+ void set generateDart2jsHints(bool value) {
+ this._generateDart2jsHints = value;
+ }
+
+ /**
+ * True if hints should be generated as part of generating errors and
+ * warnings.
+ */
+ bool get generateHints => _generateHints;
+
+ /**
+ * True if hints should be generated as part of generating errors and
+ * warnings.
+ */
+ void set generateHints(bool value) {
+ this._generateHints = value;
+ }
+
+ /**
+ * True if lints should be generated as part of generating errors and
+ * warnings.
+ */
+ bool get generateLints => _generateLints;
+
+ /**
+ * True if lints should be generated as part of generating errors and
+ * warnings.
+ */
+ void set generateLints(bool value) {
+ this._generateLints = value;
+ }
+
+ AnalysisOptions(
+ {bool enableAsync,
+ bool enableDeferredLoading,
+ bool enableEnums,
+ bool enableNullAwareOperators,
+ bool enableSuperMixins,
+ bool generateDart2jsHints,
+ bool generateHints,
+ bool generateLints}) {
+ this.enableAsync = enableAsync;
+ this.enableDeferredLoading = enableDeferredLoading;
+ this.enableEnums = enableEnums;
+ this.enableNullAwareOperators = enableNullAwareOperators;
+ this.enableSuperMixins = enableSuperMixins;
+ this.generateDart2jsHints = generateDart2jsHints;
+ this.generateHints = generateHints;
+ this.generateLints = generateLints;
+ }
+
+ factory AnalysisOptions.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool enableAsync;
+ if (json.containsKey("enableAsync")) {
+ enableAsync = jsonDecoder.decodeBool(
+ jsonPath + ".enableAsync", json["enableAsync"]);
+ }
+ bool enableDeferredLoading;
+ if (json.containsKey("enableDeferredLoading")) {
+ enableDeferredLoading = jsonDecoder.decodeBool(
+ jsonPath + ".enableDeferredLoading", json["enableDeferredLoading"]);
+ }
+ bool enableEnums;
+ if (json.containsKey("enableEnums")) {
+ enableEnums = jsonDecoder.decodeBool(
+ jsonPath + ".enableEnums", json["enableEnums"]);
+ }
+ bool enableNullAwareOperators;
+ if (json.containsKey("enableNullAwareOperators")) {
+ enableNullAwareOperators = jsonDecoder.decodeBool(
+ jsonPath + ".enableNullAwareOperators",
+ json["enableNullAwareOperators"]);
+ }
+ bool enableSuperMixins;
+ if (json.containsKey("enableSuperMixins")) {
+ enableSuperMixins = jsonDecoder.decodeBool(
+ jsonPath + ".enableSuperMixins", json["enableSuperMixins"]);
+ }
+ bool generateDart2jsHints;
+ if (json.containsKey("generateDart2jsHints")) {
+ generateDart2jsHints = jsonDecoder.decodeBool(
+ jsonPath + ".generateDart2jsHints", json["generateDart2jsHints"]);
+ }
+ bool generateHints;
+ if (json.containsKey("generateHints")) {
+ generateHints = jsonDecoder.decodeBool(
+ jsonPath + ".generateHints", json["generateHints"]);
+ }
+ bool generateLints;
+ if (json.containsKey("generateLints")) {
+ generateLints = jsonDecoder.decodeBool(
+ jsonPath + ".generateLints", json["generateLints"]);
+ }
+ return new AnalysisOptions(
+ enableAsync: enableAsync,
+ enableDeferredLoading: enableDeferredLoading,
+ enableEnums: enableEnums,
+ enableNullAwareOperators: enableNullAwareOperators,
+ enableSuperMixins: enableSuperMixins,
+ generateDart2jsHints: generateDart2jsHints,
+ generateHints: generateHints,
+ generateLints: generateLints);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "AnalysisOptions", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (enableAsync != null) {
+ result["enableAsync"] = enableAsync;
+ }
+ if (enableDeferredLoading != null) {
+ result["enableDeferredLoading"] = enableDeferredLoading;
+ }
+ if (enableEnums != null) {
+ result["enableEnums"] = enableEnums;
+ }
+ if (enableNullAwareOperators != null) {
+ result["enableNullAwareOperators"] = enableNullAwareOperators;
+ }
+ if (enableSuperMixins != null) {
+ result["enableSuperMixins"] = enableSuperMixins;
+ }
+ if (generateDart2jsHints != null) {
+ result["generateDart2jsHints"] = generateDart2jsHints;
+ }
+ if (generateHints != null) {
+ result["generateHints"] = generateHints;
+ }
+ if (generateLints != null) {
+ result["generateLints"] = generateLints;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisOptions) {
+ return enableAsync == other.enableAsync &&
+ enableDeferredLoading == other.enableDeferredLoading &&
+ enableEnums == other.enableEnums &&
+ enableNullAwareOperators == other.enableNullAwareOperators &&
+ enableSuperMixins == other.enableSuperMixins &&
+ generateDart2jsHints == other.generateDart2jsHints &&
+ generateHints == other.generateHints &&
+ generateLints == other.generateLints;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, enableAsync.hashCode);
+ hash = JenkinsSmiHash.combine(hash, enableDeferredLoading.hashCode);
+ hash = JenkinsSmiHash.combine(hash, enableEnums.hashCode);
+ hash = JenkinsSmiHash.combine(hash, enableNullAwareOperators.hashCode);
+ hash = JenkinsSmiHash.combine(hash, enableSuperMixins.hashCode);
+ hash = JenkinsSmiHash.combine(hash, generateDart2jsHints.hashCode);
+ hash = JenkinsSmiHash.combine(hash, generateHints.hashCode);
+ hash = JenkinsSmiHash.combine(hash, generateLints.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.outline params
+ *
+ * {
+ * "file": FilePath
+ * "kind": FileKind
+ * "libraryName": optional String
+ * "outline": Outline
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisOutlineParams implements HasToJson {
+ String _file;
+
+ FileKind _kind;
+
+ String _libraryName;
+
+ Outline _outline;
+
+ /**
+ * The file with which the outline is associated.
+ */
+ String get file => _file;
+
+ /**
+ * The file with which the outline is associated.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The kind of the file.
+ */
+ FileKind get kind => _kind;
+
+ /**
+ * The kind of the file.
+ */
+ void set kind(FileKind value) {
+ assert(value != null);
+ this._kind = value;
+ }
+
+ /**
+ * The name of the library defined by the file using a "library" directive,
+ * or referenced by a "part of" directive. If both "library" and "part of"
+ * directives are present, then the "library" directive takes precedence.
+ * This field will be omitted if the file has neither "library" nor "part of"
+ * directives.
+ */
+ String get libraryName => _libraryName;
+
+ /**
+ * The name of the library defined by the file using a "library" directive,
+ * or referenced by a "part of" directive. If both "library" and "part of"
+ * directives are present, then the "library" directive takes precedence.
+ * This field will be omitted if the file has neither "library" nor "part of"
+ * directives.
+ */
+ void set libraryName(String value) {
+ this._libraryName = value;
+ }
+
+ /**
+ * The outline associated with the file.
+ */
+ Outline get outline => _outline;
+
+ /**
+ * The outline associated with the file.
+ */
+ void set outline(Outline value) {
+ assert(value != null);
+ this._outline = value;
+ }
+
+ AnalysisOutlineParams(String file, FileKind kind, Outline outline,
+ {String libraryName}) {
+ this.file = file;
+ this.kind = kind;
+ this.libraryName = libraryName;
+ this.outline = outline;
+ }
+
+ factory AnalysisOutlineParams.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");
+ }
+ FileKind kind;
+ if (json.containsKey("kind")) {
+ kind = new FileKind.fromJson(
+ jsonDecoder, jsonPath + ".kind", json["kind"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "kind");
+ }
+ String libraryName;
+ if (json.containsKey("libraryName")) {
+ libraryName = jsonDecoder.decodeString(
+ jsonPath + ".libraryName", json["libraryName"]);
+ }
+ Outline outline;
+ if (json.containsKey("outline")) {
+ outline = new Outline.fromJson(
+ jsonDecoder, jsonPath + ".outline", json["outline"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "outline");
+ }
+ return new AnalysisOutlineParams(file, kind, outline,
+ libraryName: libraryName);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.outline params", json);
+ }
+ }
+
+ factory AnalysisOutlineParams.fromNotification(Notification notification) {
+ return new AnalysisOutlineParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["kind"] = kind.toJson();
+ if (libraryName != null) {
+ result["libraryName"] = libraryName;
+ }
+ result["outline"] = outline.toJson();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.outline", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisOutlineParams) {
+ return file == other.file &&
+ kind == other.kind &&
+ libraryName == other.libraryName &&
+ outline == other.outline;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, kind.hashCode);
+ hash = JenkinsSmiHash.combine(hash, libraryName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, outline.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.overrides params
+ *
+ * {
+ * "file": FilePath
+ * "overrides": List<Override>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisOverridesParams implements HasToJson {
+ String _file;
+
+ List<Override> _overrides;
+
+ /**
+ * The file with which the overrides are associated.
+ */
+ String get file => _file;
+
+ /**
+ * The file with which the overrides are associated.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The overrides associated with the file.
+ */
+ List<Override> get overrides => _overrides;
+
+ /**
+ * The overrides associated with the file.
+ */
+ void set overrides(List<Override> value) {
+ assert(value != null);
+ this._overrides = value;
+ }
+
+ AnalysisOverridesParams(String file, List<Override> overrides) {
+ this.file = file;
+ this.overrides = overrides;
+ }
+
+ factory AnalysisOverridesParams.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");
+ }
+ List<Override> overrides;
+ if (json.containsKey("overrides")) {
+ overrides = jsonDecoder.decodeList(
+ jsonPath + ".overrides",
+ json["overrides"],
+ (String jsonPath, Object json) =>
+ new Override.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "overrides");
+ }
+ return new AnalysisOverridesParams(file, overrides);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.overrides params", json);
+ }
+ }
+
+ factory AnalysisOverridesParams.fromNotification(Notification notification) {
+ return new AnalysisOverridesParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["overrides"] =
+ overrides.map((Override value) => value.toJson()).toList();
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("analysis.overrides", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisOverridesParams) {
+ return file == other.file &&
+ listEqual(
+ overrides, other.overrides, (Override a, Override b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, overrides.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.reanalyze params
+ *
+ * {
+ * "roots": optional List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisReanalyzeParams implements RequestParams {
+ List<String> _roots;
+
+ /**
+ * A list of the analysis roots that are to be re-analyzed.
+ */
+ List<String> get roots => _roots;
+
+ /**
+ * A list of the analysis roots that are to be re-analyzed.
+ */
+ void set roots(List<String> value) {
+ this._roots = value;
+ }
+
+ AnalysisReanalyzeParams({List<String> roots}) {
+ this.roots = roots;
+ }
+
+ factory AnalysisReanalyzeParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> roots;
+ if (json.containsKey("roots")) {
+ roots = jsonDecoder.decodeList(
+ jsonPath + ".roots", json["roots"], jsonDecoder.decodeString);
+ }
+ return new AnalysisReanalyzeParams(roots: roots);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analysis.reanalyze params", json);
+ }
+ }
+
+ factory AnalysisReanalyzeParams.fromRequest(Request request) {
+ return new AnalysisReanalyzeParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (roots != null) {
+ result["roots"] = roots;
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.reanalyze", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisReanalyzeParams) {
+ return listEqual(roots, other.roots, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, roots.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.reanalyze result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisReanalyzeResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisReanalyzeResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 846803925;
+ }
+}
+
+/**
+ * AnalysisService
+ *
+ * enum {
+ * CLOSING_LABELS
+ * FOLDING
+ * HIGHLIGHTS
+ * IMPLEMENTED
+ * INVALIDATE
+ * NAVIGATION
+ * OCCURRENCES
+ * OUTLINE
+ * OVERRIDES
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisService implements Enum {
+ static const AnalysisService CLOSING_LABELS =
+ const AnalysisService._("CLOSING_LABELS");
+
+ static const AnalysisService FOLDING = const AnalysisService._("FOLDING");
+
+ static const AnalysisService HIGHLIGHTS =
+ const AnalysisService._("HIGHLIGHTS");
+
+ static const AnalysisService IMPLEMENTED =
+ const AnalysisService._("IMPLEMENTED");
+
+ /**
+ * This service is not currently implemented and will become a
+ * GeneralAnalysisService in a future release.
+ */
+ static const AnalysisService INVALIDATE =
+ const AnalysisService._("INVALIDATE");
+
+ static const AnalysisService NAVIGATION =
+ const AnalysisService._("NAVIGATION");
+
+ static const AnalysisService OCCURRENCES =
+ const AnalysisService._("OCCURRENCES");
+
+ static const AnalysisService OUTLINE = const AnalysisService._("OUTLINE");
+
+ static const AnalysisService OVERRIDES = const AnalysisService._("OVERRIDES");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<AnalysisService> VALUES = const <AnalysisService>[
+ CLOSING_LABELS,
+ FOLDING,
+ HIGHLIGHTS,
+ IMPLEMENTED,
+ INVALIDATE,
+ NAVIGATION,
+ OCCURRENCES,
+ OUTLINE,
+ OVERRIDES
+ ];
+
+ @override
+ final String name;
+
+ const AnalysisService._(this.name);
+
+ factory AnalysisService(String name) {
+ switch (name) {
+ case "CLOSING_LABELS":
+ return CLOSING_LABELS;
+ case "FOLDING":
+ return FOLDING;
+ case "HIGHLIGHTS":
+ return HIGHLIGHTS;
+ case "IMPLEMENTED":
+ return IMPLEMENTED;
+ case "INVALIDATE":
+ return INVALIDATE;
+ case "NAVIGATION":
+ return NAVIGATION;
+ case "OCCURRENCES":
+ return OCCURRENCES;
+ case "OUTLINE":
+ return OUTLINE;
+ case "OVERRIDES":
+ return OVERRIDES;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory AnalysisService.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new AnalysisService(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "AnalysisService", json);
+ }
+
+ @override
+ String toString() => "AnalysisService.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * analysis.setAnalysisRoots params
+ *
+ * {
+ * "included": List<FilePath>
+ * "excluded": List<FilePath>
+ * "packageRoots": optional Map<FilePath, FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetAnalysisRootsParams implements RequestParams {
+ List<String> _included;
+
+ List<String> _excluded;
+
+ Map<String, String> _packageRoots;
+
+ /**
+ * A list of the files and directories that should be analyzed.
+ */
+ List<String> get included => _included;
+
+ /**
+ * A list of the files and directories that should be analyzed.
+ */
+ void set included(List<String> value) {
+ assert(value != null);
+ this._included = value;
+ }
+
+ /**
+ * A list of the files and directories within the included directories that
+ * should not be analyzed.
+ */
+ List<String> get excluded => _excluded;
+
+ /**
+ * A list of the files and directories within the included directories that
+ * should not be analyzed.
+ */
+ void set excluded(List<String> value) {
+ assert(value != null);
+ this._excluded = value;
+ }
+
+ /**
+ * A mapping from source directories to package roots that should override
+ * the normal package: URI resolution mechanism.
+ *
+ * If a package root is a directory, then the analyzer will behave as though
+ * the associated source directory in the map contains a special pubspec.yaml
+ * file which resolves any package: URI to the corresponding path within that
+ * package root directory. The effect is the same as specifying the package
+ * root directory as a "--package_root" parameter to the Dart VM when
+ * executing any Dart file inside the source directory.
+ *
+ * If a package root is a file, then the analyzer will behave as though that
+ * file is a ".packages" file in the source directory. The effect is the same
+ * as specifying the file as a "--packages" parameter to the Dart VM when
+ * executing any Dart file inside the source directory.
+ *
+ * Files in any directories that are not overridden by this mapping have
+ * their package: URI's resolved using the normal pubspec.yaml mechanism. If
+ * this field is absent, or the empty map is specified, that indicates that
+ * the normal pubspec.yaml mechanism should always be used.
+ */
+ Map<String, String> get packageRoots => _packageRoots;
+
+ /**
+ * A mapping from source directories to package roots that should override
+ * the normal package: URI resolution mechanism.
+ *
+ * If a package root is a directory, then the analyzer will behave as though
+ * the associated source directory in the map contains a special pubspec.yaml
+ * file which resolves any package: URI to the corresponding path within that
+ * package root directory. The effect is the same as specifying the package
+ * root directory as a "--package_root" parameter to the Dart VM when
+ * executing any Dart file inside the source directory.
+ *
+ * If a package root is a file, then the analyzer will behave as though that
+ * file is a ".packages" file in the source directory. The effect is the same
+ * as specifying the file as a "--packages" parameter to the Dart VM when
+ * executing any Dart file inside the source directory.
+ *
+ * Files in any directories that are not overridden by this mapping have
+ * their package: URI's resolved using the normal pubspec.yaml mechanism. If
+ * this field is absent, or the empty map is specified, that indicates that
+ * the normal pubspec.yaml mechanism should always be used.
+ */
+ void set packageRoots(Map<String, String> value) {
+ this._packageRoots = value;
+ }
+
+ AnalysisSetAnalysisRootsParams(List<String> included, List<String> excluded,
+ {Map<String, String> packageRoots}) {
+ this.included = included;
+ this.excluded = excluded;
+ this.packageRoots = packageRoots;
+ }
+
+ factory AnalysisSetAnalysisRootsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> included;
+ if (json.containsKey("included")) {
+ included = jsonDecoder.decodeList(
+ jsonPath + ".included", json["included"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "included");
+ }
+ List<String> excluded;
+ if (json.containsKey("excluded")) {
+ excluded = jsonDecoder.decodeList(
+ jsonPath + ".excluded", json["excluded"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "excluded");
+ }
+ Map<String, String> packageRoots;
+ if (json.containsKey("packageRoots")) {
+ packageRoots = jsonDecoder.decodeMap(
+ jsonPath + ".packageRoots", json["packageRoots"],
+ valueDecoder: jsonDecoder.decodeString);
+ }
+ return new AnalysisSetAnalysisRootsParams(included, excluded,
+ packageRoots: packageRoots);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.setAnalysisRoots params", json);
+ }
+ }
+
+ factory AnalysisSetAnalysisRootsParams.fromRequest(Request request) {
+ return new AnalysisSetAnalysisRootsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["included"] = included;
+ result["excluded"] = excluded;
+ if (packageRoots != null) {
+ result["packageRoots"] = packageRoots;
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.setAnalysisRoots", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetAnalysisRootsParams) {
+ return listEqual(
+ included, other.included, (String a, String b) => a == b) &&
+ listEqual(excluded, other.excluded, (String a, String b) => a == b) &&
+ mapEqual(
+ packageRoots, other.packageRoots, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, included.hashCode);
+ hash = JenkinsSmiHash.combine(hash, excluded.hashCode);
+ hash = JenkinsSmiHash.combine(hash, packageRoots.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.setAnalysisRoots result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetAnalysisRootsResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetAnalysisRootsResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 866004753;
+ }
+}
+
+/**
+ * analysis.setGeneralSubscriptions params
+ *
+ * {
+ * "subscriptions": List<GeneralAnalysisService>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetGeneralSubscriptionsParams implements RequestParams {
+ List<GeneralAnalysisService> _subscriptions;
+
+ /**
+ * A list of the services being subscribed to.
+ */
+ List<GeneralAnalysisService> get subscriptions => _subscriptions;
+
+ /**
+ * A list of the services being subscribed to.
+ */
+ void set subscriptions(List<GeneralAnalysisService> value) {
+ assert(value != null);
+ this._subscriptions = value;
+ }
+
+ AnalysisSetGeneralSubscriptionsParams(
+ List<GeneralAnalysisService> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+ factory AnalysisSetGeneralSubscriptionsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<GeneralAnalysisService> subscriptions;
+ if (json.containsKey("subscriptions")) {
+ subscriptions = jsonDecoder.decodeList(
+ jsonPath + ".subscriptions",
+ json["subscriptions"],
+ (String jsonPath, Object json) =>
+ new GeneralAnalysisService.fromJson(
+ jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "subscriptions");
+ }
+ return new AnalysisSetGeneralSubscriptionsParams(subscriptions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.setGeneralSubscriptions params", json);
+ }
+ }
+
+ factory AnalysisSetGeneralSubscriptionsParams.fromRequest(Request request) {
+ return new AnalysisSetGeneralSubscriptionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["subscriptions"] = subscriptions
+ .map((GeneralAnalysisService value) => value.toJson())
+ .toList();
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.setGeneralSubscriptions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetGeneralSubscriptionsParams) {
+ return listEqual(subscriptions, other.subscriptions,
+ (GeneralAnalysisService a, GeneralAnalysisService b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, subscriptions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.setGeneralSubscriptions result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetGeneralSubscriptionsResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetGeneralSubscriptionsResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 386759562;
+ }
+}
+
+/**
+ * analysis.setPriorityFiles params
+ *
+ * {
+ * "files": List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetPriorityFilesParams implements RequestParams {
+ List<String> _files;
+
+ /**
+ * The files that are to be a priority for analysis.
+ */
+ List<String> get files => _files;
+
+ /**
+ * The files that are to be a priority for analysis.
+ */
+ void set files(List<String> value) {
+ assert(value != null);
+ this._files = value;
+ }
+
+ AnalysisSetPriorityFilesParams(List<String> files) {
+ this.files = files;
+ }
+
+ factory AnalysisSetPriorityFilesParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> files;
+ if (json.containsKey("files")) {
+ files = jsonDecoder.decodeList(
+ jsonPath + ".files", json["files"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "files");
+ }
+ return new AnalysisSetPriorityFilesParams(files);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.setPriorityFiles params", json);
+ }
+ }
+
+ factory AnalysisSetPriorityFilesParams.fromRequest(Request request) {
+ return new AnalysisSetPriorityFilesParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["files"] = files;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.setPriorityFiles", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetPriorityFilesParams) {
+ return listEqual(files, other.files, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, files.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.setPriorityFiles result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetPriorityFilesResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetPriorityFilesResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 330050055;
+ }
+}
+
+/**
+ * analysis.setSubscriptions params
+ *
+ * {
+ * "subscriptions": Map<AnalysisService, List<FilePath>>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetSubscriptionsParams implements RequestParams {
+ Map<AnalysisService, List<String>> _subscriptions;
+
+ /**
+ * A table mapping services to a list of the files being subscribed to the
+ * service.
+ */
+ Map<AnalysisService, List<String>> get subscriptions => _subscriptions;
+
+ /**
+ * A table mapping services to a list of the files being subscribed to the
+ * service.
+ */
+ void set subscriptions(Map<AnalysisService, List<String>> value) {
+ assert(value != null);
+ this._subscriptions = value;
+ }
+
+ AnalysisSetSubscriptionsParams(
+ Map<AnalysisService, List<String>> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+ factory AnalysisSetSubscriptionsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ Map<AnalysisService, List<String>> subscriptions;
+ if (json.containsKey("subscriptions")) {
+ subscriptions = jsonDecoder.decodeMap(
+ jsonPath + ".subscriptions", json["subscriptions"],
+ keyDecoder: (String jsonPath, Object json) =>
+ new AnalysisService.fromJson(jsonDecoder, jsonPath, json),
+ valueDecoder: (String jsonPath, Object json) => jsonDecoder
+ .decodeList(jsonPath, json, jsonDecoder.decodeString));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "subscriptions");
+ }
+ return new AnalysisSetSubscriptionsParams(subscriptions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.setSubscriptions params", json);
+ }
+ }
+
+ factory AnalysisSetSubscriptionsParams.fromRequest(Request request) {
+ return new AnalysisSetSubscriptionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["subscriptions"] = mapMap(subscriptions,
+ keyCallback: (AnalysisService value) => value.toJson());
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.setSubscriptions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetSubscriptionsParams) {
+ return mapEqual(
+ subscriptions,
+ other.subscriptions,
+ (List<String> a, List<String> b) =>
+ listEqual(a, b, (String a, String b) => a == b));
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, subscriptions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.setSubscriptions result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisSetSubscriptionsResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisSetSubscriptionsResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 218088493;
+ }
+}
+
+/**
+ * AnalysisStatus
+ *
+ * {
+ * "isAnalyzing": bool
+ * "analysisTarget": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisStatus implements HasToJson {
+ bool _isAnalyzing;
+
+ String _analysisTarget;
+
+ /**
+ * True if analysis is currently being performed.
+ */
+ bool get isAnalyzing => _isAnalyzing;
+
+ /**
+ * True if analysis is currently being performed.
+ */
+ void set isAnalyzing(bool value) {
+ assert(value != null);
+ this._isAnalyzing = value;
+ }
+
+ /**
+ * The name of the current target of analysis. This field is omitted if
+ * analyzing is false.
+ */
+ String get analysisTarget => _analysisTarget;
+
+ /**
+ * The name of the current target of analysis. This field is omitted if
+ * analyzing is false.
+ */
+ void set analysisTarget(String value) {
+ this._analysisTarget = value;
+ }
+
+ AnalysisStatus(bool isAnalyzing, {String analysisTarget}) {
+ this.isAnalyzing = isAnalyzing;
+ this.analysisTarget = analysisTarget;
+ }
+
+ factory AnalysisStatus.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool isAnalyzing;
+ if (json.containsKey("isAnalyzing")) {
+ isAnalyzing = jsonDecoder.decodeBool(
+ jsonPath + ".isAnalyzing", json["isAnalyzing"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "isAnalyzing");
+ }
+ String analysisTarget;
+ if (json.containsKey("analysisTarget")) {
+ analysisTarget = jsonDecoder.decodeString(
+ jsonPath + ".analysisTarget", json["analysisTarget"]);
+ }
+ return new AnalysisStatus(isAnalyzing, analysisTarget: analysisTarget);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "AnalysisStatus", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["isAnalyzing"] = isAnalyzing;
+ if (analysisTarget != null) {
+ result["analysisTarget"] = analysisTarget;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisStatus) {
+ return isAnalyzing == other.isAnalyzing &&
+ analysisTarget == other.analysisTarget;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, isAnalyzing.hashCode);
+ hash = JenkinsSmiHash.combine(hash, analysisTarget.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.updateContent params
+ *
+ * {
+ * "files": Map<FilePath, AddContentOverlay | ChangeContentOverlay | RemoveContentOverlay>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisUpdateContentParams implements RequestParams {
+ Map<String, dynamic> _files;
+
+ /**
+ * A table mapping the files whose content has changed to a description of
+ * the content change.
+ */
+ Map<String, dynamic> get files => _files;
+
+ /**
+ * A table mapping the files whose content has changed to a description of
+ * the content change.
+ */
+ void set files(Map<String, dynamic> value) {
+ assert(value != null);
+ this._files = value;
+ }
+
+ AnalysisUpdateContentParams(Map<String, dynamic> files) {
+ this.files = files;
+ }
+
+ factory AnalysisUpdateContentParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ Map<String, dynamic> files;
+ if (json.containsKey("files")) {
+ files = jsonDecoder.decodeMap(jsonPath + ".files", json["files"],
+ valueDecoder: (String jsonPath, Object json) =>
+ jsonDecoder.decodeUnion(jsonPath, json, "type", {
+ "add": (String jsonPath, Object json) =>
+ new AddContentOverlay.fromJson(
+ jsonDecoder, jsonPath, json),
+ "change": (String jsonPath, Object json) =>
+ new ChangeContentOverlay.fromJson(
+ jsonDecoder, jsonPath, json),
+ "remove": (String jsonPath, Object json) =>
+ new RemoveContentOverlay.fromJson(
+ jsonDecoder, jsonPath, json)
+ }));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "files");
+ }
+ return new AnalysisUpdateContentParams(files);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.updateContent params", json);
+ }
+ }
+
+ factory AnalysisUpdateContentParams.fromRequest(Request request) {
+ return new AnalysisUpdateContentParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["files"] =
+ mapMap(files, valueCallback: (dynamic value) => value.toJson());
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.updateContent", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisUpdateContentParams) {
+ return mapEqual(files, other.files, (dynamic a, dynamic b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, files.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.updateContent result
+ *
+ * {
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisUpdateContentResult implements ResponseResult {
+ AnalysisUpdateContentResult();
+
+ factory AnalysisUpdateContentResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ return new AnalysisUpdateContentResult();
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.updateContent result", json);
+ }
+ }
+
+ factory AnalysisUpdateContentResult.fromResponse(Response response) {
+ return new AnalysisUpdateContentResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisUpdateContentResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.updateOptions params
+ *
+ * {
+ * "options": AnalysisOptions
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisUpdateOptionsParams implements RequestParams {
+ AnalysisOptions _options;
+
+ /**
+ * The options that are to be used to control analysis.
+ */
+ AnalysisOptions get options => _options;
+
+ /**
+ * The options that are to be used to control analysis.
+ */
+ void set options(AnalysisOptions value) {
+ assert(value != null);
+ this._options = value;
+ }
+
+ AnalysisUpdateOptionsParams(AnalysisOptions options) {
+ this.options = options;
+ }
+
+ factory AnalysisUpdateOptionsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ AnalysisOptions options;
+ if (json.containsKey("options")) {
+ options = new AnalysisOptions.fromJson(
+ jsonDecoder, jsonPath + ".options", json["options"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "options");
+ }
+ return new AnalysisUpdateOptionsParams(options);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "analysis.updateOptions params", json);
+ }
+ }
+
+ factory AnalysisUpdateOptionsParams.fromRequest(Request request) {
+ return new AnalysisUpdateOptionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["options"] = options.toJson();
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analysis.updateOptions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisUpdateOptionsParams) {
+ return options == other.options;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, options.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analysis.updateOptions result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalysisUpdateOptionsResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalysisUpdateOptionsResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 179689467;
+ }
+}
+
+/**
+ * analytics.enable params
+ *
+ * {
+ * "value": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsEnableParams implements RequestParams {
+ bool _value;
+
+ /**
+ * Enable or disable analytics.
+ */
+ bool get value => _value;
+
+ /**
+ * Enable or disable analytics.
+ */
+ void set value(bool value) {
+ assert(value != null);
+ this._value = value;
+ }
+
+ AnalyticsEnableParams(bool value) {
+ this.value = value;
+ }
+
+ factory AnalyticsEnableParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool value;
+ if (json.containsKey("value")) {
+ value = jsonDecoder.decodeBool(jsonPath + ".value", json["value"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "value");
+ }
+ return new AnalyticsEnableParams(value);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analytics.enable params", json);
+ }
+ }
+
+ factory AnalyticsEnableParams.fromRequest(Request request) {
+ return new AnalyticsEnableParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["value"] = value;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analytics.enable", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsEnableParams) {
+ return value == other.value;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, value.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analytics.enable result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsEnableResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsEnableResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 237990792;
+ }
+}
+
+/**
+ * analytics.isEnabled params
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsIsEnabledParams implements RequestParams {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analytics.isEnabled", null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsIsEnabledParams) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 57215544;
+ }
+}
+
+/**
+ * analytics.isEnabled result
+ *
+ * {
+ * "enabled": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsIsEnabledResult implements ResponseResult {
+ bool _enabled;
+
+ /**
+ * Whether sending analytics is enabled or not.
+ */
+ bool get enabled => _enabled;
+
+ /**
+ * Whether sending analytics is enabled or not.
+ */
+ void set enabled(bool value) {
+ assert(value != null);
+ this._enabled = value;
+ }
+
+ AnalyticsIsEnabledResult(bool enabled) {
+ this.enabled = enabled;
+ }
+
+ factory AnalyticsIsEnabledResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool enabled;
+ if (json.containsKey("enabled")) {
+ enabled =
+ jsonDecoder.decodeBool(jsonPath + ".enabled", json["enabled"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "enabled");
+ }
+ return new AnalyticsIsEnabledResult(enabled);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analytics.isEnabled result", json);
+ }
+ }
+
+ factory AnalyticsIsEnabledResult.fromResponse(Response response) {
+ return new AnalyticsIsEnabledResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["enabled"] = enabled;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsIsEnabledResult) {
+ return enabled == other.enabled;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, enabled.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analytics.sendEvent params
+ *
+ * {
+ * "action": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsSendEventParams implements RequestParams {
+ String _action;
+
+ /**
+ * The value used to indicate which action was performed.
+ */
+ String get action => _action;
+
+ /**
+ * The value used to indicate which action was performed.
+ */
+ void set action(String value) {
+ assert(value != null);
+ this._action = value;
+ }
+
+ AnalyticsSendEventParams(String action) {
+ this.action = action;
+ }
+
+ factory AnalyticsSendEventParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String action;
+ if (json.containsKey("action")) {
+ action = jsonDecoder.decodeString(jsonPath + ".action", json["action"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "action");
+ }
+ return new AnalyticsSendEventParams(action);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analytics.sendEvent params", json);
+ }
+ }
+
+ factory AnalyticsSendEventParams.fromRequest(Request request) {
+ return new AnalyticsSendEventParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["action"] = action;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analytics.sendEvent", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsSendEventParams) {
+ return action == other.action;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, action.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analytics.sendEvent result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsSendEventResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsSendEventResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 227063188;
+ }
+}
+
+/**
+ * analytics.sendTiming params
+ *
+ * {
+ * "event": String
+ * "millis": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsSendTimingParams implements RequestParams {
+ String _event;
+
+ int _millis;
+
+ /**
+ * The name of the event.
+ */
+ String get event => _event;
+
+ /**
+ * The name of the event.
+ */
+ void set event(String value) {
+ assert(value != null);
+ this._event = value;
+ }
+
+ /**
+ * The duration of the event in milliseconds.
+ */
+ int get millis => _millis;
+
+ /**
+ * The duration of the event in milliseconds.
+ */
+ void set millis(int value) {
+ assert(value != null);
+ this._millis = value;
+ }
+
+ AnalyticsSendTimingParams(String event, int millis) {
+ this.event = event;
+ this.millis = millis;
+ }
+
+ factory AnalyticsSendTimingParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String event;
+ if (json.containsKey("event")) {
+ event = jsonDecoder.decodeString(jsonPath + ".event", json["event"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "event");
+ }
+ int millis;
+ if (json.containsKey("millis")) {
+ millis = jsonDecoder.decodeInt(jsonPath + ".millis", json["millis"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "millis");
+ }
+ return new AnalyticsSendTimingParams(event, millis);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "analytics.sendTiming params", json);
+ }
+ }
+
+ factory AnalyticsSendTimingParams.fromRequest(Request request) {
+ return new AnalyticsSendTimingParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["event"] = event;
+ result["millis"] = millis;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "analytics.sendTiming", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsSendTimingParams) {
+ return event == other.event && millis == other.millis;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, event.hashCode);
+ hash = JenkinsSmiHash.combine(hash, millis.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * analytics.sendTiming result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class AnalyticsSendTimingResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is AnalyticsSendTimingResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 875010924;
+ }
+}
+
+/**
+ * ClosingLabel
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * "label": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ClosingLabel implements HasToJson {
+ int _offset;
+
+ int _length;
+
+ String _label;
+
+ /**
+ * The offset of the construct being labelled.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the construct being labelled.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the whole construct to be labelled.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the whole construct to be labelled.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * The label associated with this range that should be displayed to the user.
+ */
+ String get label => _label;
+
+ /**
+ * The label associated with this range that should be displayed to the user.
+ */
+ void set label(String value) {
+ assert(value != null);
+ this._label = value;
+ }
+
+ ClosingLabel(int offset, int length, String label) {
+ this.offset = offset;
+ this.length = length;
+ this.label = label;
+ }
+
+ factory ClosingLabel.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 label;
+ if (json.containsKey("label")) {
+ label = jsonDecoder.decodeString(jsonPath + ".label", json["label"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "label");
+ }
+ return new ClosingLabel(offset, length, label);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ClosingLabel", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ result["label"] = label;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ClosingLabel) {
+ return offset == other.offset &&
+ length == other.length &&
+ label == other.label;
+ }
+ 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, label.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * completion.getSuggestions params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class CompletionGetSuggestionsParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ /**
+ * The file containing the point at which suggestions are to be made.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the point at which suggestions are to be made.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset within the file at which suggestions are to be made.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset within the file at which suggestions are to be made.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ CompletionGetSuggestionsParams(String file, int offset) {
+ this.file = file;
+ this.offset = offset;
+ }
+
+ factory CompletionGetSuggestionsParams.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 CompletionGetSuggestionsParams(file, offset);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "completion.getSuggestions params", json);
+ }
+ }
+
+ factory CompletionGetSuggestionsParams.fromRequest(Request request) {
+ return new CompletionGetSuggestionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "completion.getSuggestions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is CompletionGetSuggestionsParams) {
+ 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);
+ }
+}
+
+/**
+ * completion.getSuggestions result
+ *
+ * {
+ * "id": CompletionId
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class CompletionGetSuggestionsResult implements ResponseResult {
+ String _id;
+
+ /**
+ * The identifier used to associate results with this completion request.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier used to associate results with this completion request.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ CompletionGetSuggestionsResult(String id) {
+ this.id = id;
+ }
+
+ factory CompletionGetSuggestionsResult.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ return new CompletionGetSuggestionsResult(id);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "completion.getSuggestions result", json);
+ }
+ }
+
+ factory CompletionGetSuggestionsResult.fromResponse(Response response) {
+ return new CompletionGetSuggestionsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is CompletionGetSuggestionsResult) {
+ return id == other.id;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * completion.results params
+ *
+ * {
+ * "id": CompletionId
+ * "replacementOffset": int
+ * "replacementLength": int
+ * "results": List<CompletionSuggestion>
+ * "isLast": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class CompletionResultsParams implements HasToJson {
+ String _id;
+
+ int _replacementOffset;
+
+ int _replacementLength;
+
+ List<CompletionSuggestion> _results;
+
+ bool _isLast;
+
+ /**
+ * The id associated with the completion.
+ */
+ String get id => _id;
+
+ /**
+ * The id associated with the completion.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ /**
+ * The offset of the start of the text to be replaced. This will be different
+ * than the offset used to request the completion suggestions if there was a
+ * portion of an identifier before the original offset. In particular, the
+ * replacementOffset will be the offset of the beginning of said identifier.
+ */
+ int get replacementOffset => _replacementOffset;
+
+ /**
+ * The offset of the start of the text to be replaced. This will be different
+ * than the offset used to request the completion suggestions if there was a
+ * portion of an identifier before the original offset. In particular, the
+ * replacementOffset will be the offset of the beginning of said identifier.
+ */
+ void set replacementOffset(int value) {
+ assert(value != null);
+ this._replacementOffset = value;
+ }
+
+ /**
+ * The length of the text to be replaced if the remainder of the identifier
+ * containing the cursor is to be replaced when the suggestion is applied
+ * (that is, the number of characters in the existing identifier).
+ */
+ int get replacementLength => _replacementLength;
+
+ /**
+ * The length of the text to be replaced if the remainder of the identifier
+ * containing the cursor is to be replaced when the suggestion is applied
+ * (that is, the number of characters in the existing identifier).
+ */
+ void set replacementLength(int value) {
+ assert(value != null);
+ this._replacementLength = value;
+ }
+
+ /**
+ * The completion suggestions being reported. The notification contains all
+ * possible completions at the requested cursor position, even those that do
+ * not match the characters the user has already typed. This allows the
+ * client to respond to further keystrokes from the user without having to
+ * make additional requests.
+ */
+ List<CompletionSuggestion> get results => _results;
+
+ /**
+ * The completion suggestions being reported. The notification contains all
+ * possible completions at the requested cursor position, even those that do
+ * not match the characters the user has already typed. This allows the
+ * client to respond to further keystrokes from the user without having to
+ * make additional requests.
+ */
+ void set results(List<CompletionSuggestion> value) {
+ assert(value != null);
+ this._results = value;
+ }
+
+ /**
+ * True if this is that last set of results that will be returned for the
+ * indicated completion.
+ */
+ bool get isLast => _isLast;
+
+ /**
+ * True if this is that last set of results that will be returned for the
+ * indicated completion.
+ */
+ void set isLast(bool value) {
+ assert(value != null);
+ this._isLast = value;
+ }
+
+ CompletionResultsParams(String id, int replacementOffset,
+ int replacementLength, List<CompletionSuggestion> results, bool isLast) {
+ this.id = id;
+ this.replacementOffset = replacementOffset;
+ this.replacementLength = replacementLength;
+ this.results = results;
+ this.isLast = isLast;
+ }
+
+ factory CompletionResultsParams.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ int replacementOffset;
+ if (json.containsKey("replacementOffset")) {
+ replacementOffset = jsonDecoder.decodeInt(
+ jsonPath + ".replacementOffset", json["replacementOffset"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "replacementOffset");
+ }
+ int replacementLength;
+ if (json.containsKey("replacementLength")) {
+ replacementLength = jsonDecoder.decodeInt(
+ jsonPath + ".replacementLength", json["replacementLength"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "replacementLength");
+ }
+ List<CompletionSuggestion> results;
+ if (json.containsKey("results")) {
+ results = jsonDecoder.decodeList(
+ jsonPath + ".results",
+ json["results"],
+ (String jsonPath, Object json) =>
+ new CompletionSuggestion.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "results");
+ }
+ bool isLast;
+ if (json.containsKey("isLast")) {
+ isLast = jsonDecoder.decodeBool(jsonPath + ".isLast", json["isLast"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "isLast");
+ }
+ return new CompletionResultsParams(
+ id, replacementOffset, replacementLength, results, isLast);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "completion.results params", json);
+ }
+ }
+
+ factory CompletionResultsParams.fromNotification(Notification notification) {
+ return new CompletionResultsParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ result["replacementOffset"] = replacementOffset;
+ result["replacementLength"] = replacementLength;
+ result["results"] =
+ results.map((CompletionSuggestion value) => value.toJson()).toList();
+ result["isLast"] = isLast;
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("completion.results", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is CompletionResultsParams) {
+ return id == other.id &&
+ replacementOffset == other.replacementOffset &&
+ replacementLength == other.replacementLength &&
+ listEqual(results, other.results,
+ (CompletionSuggestion a, CompletionSuggestion b) => a == b) &&
+ isLast == other.isLast;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ hash = JenkinsSmiHash.combine(hash, replacementOffset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, replacementLength.hashCode);
+ hash = JenkinsSmiHash.combine(hash, results.hashCode);
+ hash = JenkinsSmiHash.combine(hash, isLast.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ContextData
+ *
+ * {
+ * "name": String
+ * "explicitFileCount": int
+ * "implicitFileCount": int
+ * "workItemQueueLength": int
+ * "cacheEntryExceptions": List<String>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ContextData implements HasToJson {
+ String _name;
+
+ int _explicitFileCount;
+
+ int _implicitFileCount;
+
+ int _workItemQueueLength;
+
+ List<String> _cacheEntryExceptions;
+
+ /**
+ * The name of the context.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the context.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * Explicitly analyzed files.
+ */
+ int get explicitFileCount => _explicitFileCount;
+
+ /**
+ * Explicitly analyzed files.
+ */
+ void set explicitFileCount(int value) {
+ assert(value != null);
+ this._explicitFileCount = value;
+ }
+
+ /**
+ * Implicitly analyzed files.
+ */
+ int get implicitFileCount => _implicitFileCount;
+
+ /**
+ * Implicitly analyzed files.
+ */
+ void set implicitFileCount(int value) {
+ assert(value != null);
+ this._implicitFileCount = value;
+ }
+
+ /**
+ * The number of work items in the queue.
+ */
+ int get workItemQueueLength => _workItemQueueLength;
+
+ /**
+ * The number of work items in the queue.
+ */
+ void set workItemQueueLength(int value) {
+ assert(value != null);
+ this._workItemQueueLength = value;
+ }
+
+ /**
+ * Exceptions associated with cache entries.
+ */
+ List<String> get cacheEntryExceptions => _cacheEntryExceptions;
+
+ /**
+ * Exceptions associated with cache entries.
+ */
+ void set cacheEntryExceptions(List<String> value) {
+ assert(value != null);
+ this._cacheEntryExceptions = value;
+ }
+
+ ContextData(String name, int explicitFileCount, int implicitFileCount,
+ int workItemQueueLength, List<String> cacheEntryExceptions) {
+ this.name = name;
+ this.explicitFileCount = explicitFileCount;
+ this.implicitFileCount = implicitFileCount;
+ this.workItemQueueLength = workItemQueueLength;
+ this.cacheEntryExceptions = cacheEntryExceptions;
+ }
+
+ factory ContextData.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ int explicitFileCount;
+ if (json.containsKey("explicitFileCount")) {
+ explicitFileCount = jsonDecoder.decodeInt(
+ jsonPath + ".explicitFileCount", json["explicitFileCount"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "explicitFileCount");
+ }
+ int implicitFileCount;
+ if (json.containsKey("implicitFileCount")) {
+ implicitFileCount = jsonDecoder.decodeInt(
+ jsonPath + ".implicitFileCount", json["implicitFileCount"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "implicitFileCount");
+ }
+ int workItemQueueLength;
+ if (json.containsKey("workItemQueueLength")) {
+ workItemQueueLength = jsonDecoder.decodeInt(
+ jsonPath + ".workItemQueueLength", json["workItemQueueLength"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "workItemQueueLength");
+ }
+ List<String> cacheEntryExceptions;
+ if (json.containsKey("cacheEntryExceptions")) {
+ cacheEntryExceptions = jsonDecoder.decodeList(
+ jsonPath + ".cacheEntryExceptions",
+ json["cacheEntryExceptions"],
+ jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "cacheEntryExceptions");
+ }
+ return new ContextData(name, explicitFileCount, implicitFileCount,
+ workItemQueueLength, cacheEntryExceptions);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ContextData", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["explicitFileCount"] = explicitFileCount;
+ result["implicitFileCount"] = implicitFileCount;
+ result["workItemQueueLength"] = workItemQueueLength;
+ result["cacheEntryExceptions"] = cacheEntryExceptions;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ContextData) {
+ return name == other.name &&
+ explicitFileCount == other.explicitFileCount &&
+ implicitFileCount == other.implicitFileCount &&
+ workItemQueueLength == other.workItemQueueLength &&
+ listEqual(cacheEntryExceptions, other.cacheEntryExceptions,
+ (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, explicitFileCount.hashCode);
+ hash = JenkinsSmiHash.combine(hash, implicitFileCount.hashCode);
+ hash = JenkinsSmiHash.combine(hash, workItemQueueLength.hashCode);
+ hash = JenkinsSmiHash.combine(hash, cacheEntryExceptions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * convertGetterToMethod feedback
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ConvertGetterToMethodFeedback extends RefactoringFeedback
+ implements HasToJson {
+ @override
+ bool operator ==(other) {
+ if (other is ConvertGetterToMethodFeedback) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 616032599;
+ }
+}
+
+/**
+ * convertGetterToMethod options
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ConvertGetterToMethodOptions extends RefactoringOptions
+ implements HasToJson {
+ @override
+ bool operator ==(other) {
+ if (other is ConvertGetterToMethodOptions) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 488848400;
+ }
+}
+
+/**
+ * convertMethodToGetter feedback
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ConvertMethodToGetterFeedback extends RefactoringFeedback
+ implements HasToJson {
+ @override
+ bool operator ==(other) {
+ if (other is ConvertMethodToGetterFeedback) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 165291526;
+ }
+}
+
+/**
+ * convertMethodToGetter options
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ConvertMethodToGetterOptions extends RefactoringOptions
+ implements HasToJson {
+ @override
+ bool operator ==(other) {
+ if (other is ConvertMethodToGetterOptions) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 27952290;
+ }
+}
+
+/**
+ * diagnostic.getDiagnostics params
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class DiagnosticGetDiagnosticsParams implements RequestParams {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "diagnostic.getDiagnostics", null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is DiagnosticGetDiagnosticsParams) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 587526202;
+ }
+}
+
+/**
+ * diagnostic.getDiagnostics result
+ *
+ * {
+ * "contexts": List<ContextData>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class DiagnosticGetDiagnosticsResult implements ResponseResult {
+ List<ContextData> _contexts;
+
+ /**
+ * The list of analysis contexts.
+ */
+ List<ContextData> get contexts => _contexts;
+
+ /**
+ * The list of analysis contexts.
+ */
+ void set contexts(List<ContextData> value) {
+ assert(value != null);
+ this._contexts = value;
+ }
+
+ DiagnosticGetDiagnosticsResult(List<ContextData> contexts) {
+ this.contexts = contexts;
+ }
+
+ factory DiagnosticGetDiagnosticsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<ContextData> contexts;
+ if (json.containsKey("contexts")) {
+ contexts = jsonDecoder.decodeList(
+ jsonPath + ".contexts",
+ json["contexts"],
+ (String jsonPath, Object json) =>
+ new ContextData.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "contexts");
+ }
+ return new DiagnosticGetDiagnosticsResult(contexts);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "diagnostic.getDiagnostics result", json);
+ }
+ }
+
+ factory DiagnosticGetDiagnosticsResult.fromResponse(Response response) {
+ return new DiagnosticGetDiagnosticsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["contexts"] =
+ contexts.map((ContextData value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is DiagnosticGetDiagnosticsResult) {
+ return listEqual(
+ contexts, other.contexts, (ContextData a, ContextData b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, contexts.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * diagnostic.getServerPort params
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class DiagnosticGetServerPortParams implements RequestParams {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "diagnostic.getServerPort", null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is DiagnosticGetServerPortParams) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 367508704;
+ }
+}
+
+/**
+ * diagnostic.getServerPort result
+ *
+ * {
+ * "port": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class DiagnosticGetServerPortResult implements ResponseResult {
+ int _port;
+
+ /**
+ * The diagnostic server port.
+ */
+ int get port => _port;
+
+ /**
+ * The diagnostic server port.
+ */
+ void set port(int value) {
+ assert(value != null);
+ this._port = value;
+ }
+
+ DiagnosticGetServerPortResult(int port) {
+ this.port = port;
+ }
+
+ factory DiagnosticGetServerPortResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ int port;
+ if (json.containsKey("port")) {
+ port = jsonDecoder.decodeInt(jsonPath + ".port", json["port"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "port");
+ }
+ return new DiagnosticGetServerPortResult(port);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "diagnostic.getServerPort result", json);
+ }
+ }
+
+ factory DiagnosticGetServerPortResult.fromResponse(Response response) {
+ return new DiagnosticGetServerPortResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["port"] = port;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is DiagnosticGetServerPortResult) {
+ return port == other.port;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, port.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.dartfix params
+ *
+ * {
+ * "included": List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditDartfixParams implements RequestParams {
+ List<String> _included;
+
+ /**
+ * A list of the files and directories for which edits should be suggested.
+ *
+ * If a request is made with a path that is invalid, e.g. is not absolute and
+ * normalized, an error of type INVALID_FILE_PATH_FORMAT will be generated.
+ * If a request is made for a file which does not exist, or which is not
+ * currently subject to analysis (e.g. because it is not associated with any
+ * analysis root specified to analysis.setAnalysisRoots), an error of type
+ * FILE_NOT_ANALYZED will be generated.
+ */
+ List<String> get included => _included;
+
+ /**
+ * A list of the files and directories for which edits should be suggested.
+ *
+ * If a request is made with a path that is invalid, e.g. is not absolute and
+ * normalized, an error of type INVALID_FILE_PATH_FORMAT will be generated.
+ * If a request is made for a file which does not exist, or which is not
+ * currently subject to analysis (e.g. because it is not associated with any
+ * analysis root specified to analysis.setAnalysisRoots), an error of type
+ * FILE_NOT_ANALYZED will be generated.
+ */
+ void set included(List<String> value) {
+ assert(value != null);
+ this._included = value;
+ }
+
+ EditDartfixParams(List<String> included) {
+ this.included = included;
+ }
+
+ factory EditDartfixParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> included;
+ if (json.containsKey("included")) {
+ included = jsonDecoder.decodeList(
+ jsonPath + ".included", json["included"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "included");
+ }
+ return new EditDartfixParams(included);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.dartfix params", json);
+ }
+ }
+
+ factory EditDartfixParams.fromRequest(Request request) {
+ return new EditDartfixParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["included"] = included;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.dartfix", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditDartfixParams) {
+ return listEqual(
+ included, other.included, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, included.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.dartfix result
+ *
+ * {
+ * "descriptionOfFixes": List<String>
+ * "otherRecommendations": List<String>
+ * "hasErrors": bool
+ * "fixes": List<SourceFileEdit>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditDartfixResult implements ResponseResult {
+ List<String> _descriptionOfFixes;
+
+ List<String> _otherRecommendations;
+
+ bool _hasErrors;
+
+ List<SourceFileEdit> _fixes;
+
+ /**
+ * A list of human readable changes made by applying the fixes.
+ */
+ List<String> get descriptionOfFixes => _descriptionOfFixes;
+
+ /**
+ * A list of human readable changes made by applying the fixes.
+ */
+ void set descriptionOfFixes(List<String> value) {
+ assert(value != null);
+ this._descriptionOfFixes = value;
+ }
+
+ /**
+ * A list of human readable recommended changes that cannot be made
+ * automatically.
+ */
+ List<String> get otherRecommendations => _otherRecommendations;
+
+ /**
+ * A list of human readable recommended changes that cannot be made
+ * automatically.
+ */
+ void set otherRecommendations(List<String> value) {
+ assert(value != null);
+ this._otherRecommendations = value;
+ }
+
+ /**
+ * True if the analyzed source contains errors that might impact the
+ * correctness of the recommended fixes that can be automatically applied.
+ */
+ bool get hasErrors => _hasErrors;
+
+ /**
+ * True if the analyzed source contains errors that might impact the
+ * correctness of the recommended fixes that can be automatically applied.
+ */
+ void set hasErrors(bool value) {
+ assert(value != null);
+ this._hasErrors = value;
+ }
+
+ /**
+ * The suggested fixes.
+ */
+ List<SourceFileEdit> get fixes => _fixes;
+
+ /**
+ * The suggested fixes.
+ */
+ void set fixes(List<SourceFileEdit> value) {
+ assert(value != null);
+ this._fixes = value;
+ }
+
+ EditDartfixResult(
+ List<String> descriptionOfFixes,
+ List<String> otherRecommendations,
+ bool hasErrors,
+ List<SourceFileEdit> fixes) {
+ this.descriptionOfFixes = descriptionOfFixes;
+ this.otherRecommendations = otherRecommendations;
+ this.hasErrors = hasErrors;
+ this.fixes = fixes;
+ }
+
+ factory EditDartfixResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<String> descriptionOfFixes;
+ if (json.containsKey("descriptionOfFixes")) {
+ descriptionOfFixes = jsonDecoder.decodeList(
+ jsonPath + ".descriptionOfFixes",
+ json["descriptionOfFixes"],
+ jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "descriptionOfFixes");
+ }
+ List<String> otherRecommendations;
+ if (json.containsKey("otherRecommendations")) {
+ otherRecommendations = jsonDecoder.decodeList(
+ jsonPath + ".otherRecommendations",
+ json["otherRecommendations"],
+ jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "otherRecommendations");
+ }
+ bool hasErrors;
+ if (json.containsKey("hasErrors")) {
+ hasErrors =
+ jsonDecoder.decodeBool(jsonPath + ".hasErrors", json["hasErrors"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "hasErrors");
+ }
+ List<SourceFileEdit> fixes;
+ if (json.containsKey("fixes")) {
+ fixes = jsonDecoder.decodeList(
+ jsonPath + ".fixes",
+ json["fixes"],
+ (String jsonPath, Object json) =>
+ new SourceFileEdit.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "fixes");
+ }
+ return new EditDartfixResult(
+ descriptionOfFixes, otherRecommendations, hasErrors, fixes);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.dartfix result", json);
+ }
+ }
+
+ factory EditDartfixResult.fromResponse(Response response) {
+ return new EditDartfixResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["descriptionOfFixes"] = descriptionOfFixes;
+ result["otherRecommendations"] = otherRecommendations;
+ result["hasErrors"] = hasErrors;
+ result["fixes"] =
+ fixes.map((SourceFileEdit value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditDartfixResult) {
+ return listEqual(descriptionOfFixes, other.descriptionOfFixes,
+ (String a, String b) => a == b) &&
+ listEqual(otherRecommendations, other.otherRecommendations,
+ (String a, String b) => a == b) &&
+ hasErrors == other.hasErrors &&
+ listEqual(fixes, other.fixes,
+ (SourceFileEdit a, SourceFileEdit b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, descriptionOfFixes.hashCode);
+ hash = JenkinsSmiHash.combine(hash, otherRecommendations.hashCode);
+ hash = JenkinsSmiHash.combine(hash, hasErrors.hashCode);
+ hash = JenkinsSmiHash.combine(hash, fixes.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.format params
+ *
+ * {
+ * "file": FilePath
+ * "selectionOffset": int
+ * "selectionLength": int
+ * "lineLength": optional int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditFormatParams implements RequestParams {
+ String _file;
+
+ int _selectionOffset;
+
+ int _selectionLength;
+
+ int _lineLength;
+
+ /**
+ * The file containing the code to be formatted.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the code to be formatted.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the current selection in the file.
+ */
+ int get selectionOffset => _selectionOffset;
+
+ /**
+ * The offset of the current selection in the file.
+ */
+ void set selectionOffset(int value) {
+ assert(value != null);
+ this._selectionOffset = value;
+ }
+
+ /**
+ * The length of the current selection in the file.
+ */
+ int get selectionLength => _selectionLength;
+
+ /**
+ * The length of the current selection in the file.
+ */
+ void set selectionLength(int value) {
+ assert(value != null);
+ this._selectionLength = value;
+ }
+
+ /**
+ * The line length to be used by the formatter.
+ */
+ int get lineLength => _lineLength;
+
+ /**
+ * The line length to be used by the formatter.
+ */
+ void set lineLength(int value) {
+ this._lineLength = value;
+ }
+
+ EditFormatParams(String file, int selectionOffset, int selectionLength,
+ {int lineLength}) {
+ this.file = file;
+ this.selectionOffset = selectionOffset;
+ this.selectionLength = selectionLength;
+ this.lineLength = lineLength;
+ }
+
+ factory EditFormatParams.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 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");
+ }
+ int lineLength;
+ if (json.containsKey("lineLength")) {
+ lineLength =
+ jsonDecoder.decodeInt(jsonPath + ".lineLength", json["lineLength"]);
+ }
+ return new EditFormatParams(file, selectionOffset, selectionLength,
+ lineLength: lineLength);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.format params", json);
+ }
+ }
+
+ factory EditFormatParams.fromRequest(Request request) {
+ return new EditFormatParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["selectionOffset"] = selectionOffset;
+ result["selectionLength"] = selectionLength;
+ if (lineLength != null) {
+ result["lineLength"] = lineLength;
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.format", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditFormatParams) {
+ return file == other.file &&
+ selectionOffset == other.selectionOffset &&
+ selectionLength == other.selectionLength &&
+ lineLength == other.lineLength;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, selectionOffset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, selectionLength.hashCode);
+ hash = JenkinsSmiHash.combine(hash, lineLength.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.format result
+ *
+ * {
+ * "edits": List<SourceEdit>
+ * "selectionOffset": int
+ * "selectionLength": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditFormatResult implements ResponseResult {
+ List<SourceEdit> _edits;
+
+ int _selectionOffset;
+
+ int _selectionLength;
+
+ /**
+ * The edit(s) to be applied in order to format the code. The list will be
+ * empty if the code was already formatted (there are no changes).
+ */
+ List<SourceEdit> get edits => _edits;
+
+ /**
+ * The edit(s) to be applied in order to format the code. The list will be
+ * empty if the code was already formatted (there are no changes).
+ */
+ void set edits(List<SourceEdit> value) {
+ assert(value != null);
+ this._edits = value;
+ }
+
+ /**
+ * The offset of the selection after formatting the code.
+ */
+ int get selectionOffset => _selectionOffset;
+
+ /**
+ * The offset of the selection after formatting the code.
+ */
+ void set selectionOffset(int value) {
+ assert(value != null);
+ this._selectionOffset = value;
+ }
+
+ /**
+ * The length of the selection after formatting the code.
+ */
+ int get selectionLength => _selectionLength;
+
+ /**
+ * The length of the selection after formatting the code.
+ */
+ void set selectionLength(int value) {
+ assert(value != null);
+ this._selectionLength = value;
+ }
+
+ EditFormatResult(
+ List<SourceEdit> edits, int selectionOffset, int selectionLength) {
+ this.edits = edits;
+ this.selectionOffset = selectionOffset;
+ this.selectionLength = selectionLength;
+ }
+
+ factory EditFormatResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ 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");
+ }
+ 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");
+ }
+ return new EditFormatResult(edits, selectionOffset, selectionLength);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.format result", json);
+ }
+ }
+
+ factory EditFormatResult.fromResponse(Response response) {
+ return new EditFormatResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["edits"] = edits.map((SourceEdit value) => value.toJson()).toList();
+ result["selectionOffset"] = selectionOffset;
+ result["selectionLength"] = selectionLength;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditFormatResult) {
+ return listEqual(
+ edits, other.edits, (SourceEdit a, SourceEdit b) => a == b) &&
+ selectionOffset == other.selectionOffset &&
+ selectionLength == other.selectionLength;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, edits.hashCode);
+ hash = JenkinsSmiHash.combine(hash, selectionOffset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, selectionLength.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getAssists params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * "length": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetAssistsParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ int _length;
+
+ /**
+ * The file containing the code for which assists are being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the code for which assists are being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the code for which assists are being requested.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the code for which assists are being requested.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the code for which assists are being requested.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the code for which assists are being requested.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ EditGetAssistsParams(String file, int offset, int length) {
+ this.file = file;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ factory EditGetAssistsParams.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");
+ }
+ return new EditGetAssistsParams(file, offset, length);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.getAssists params", json);
+ }
+ }
+
+ factory EditGetAssistsParams.fromRequest(Request request) {
+ return new EditGetAssistsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ result["length"] = length;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.getAssists", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetAssistsParams) {
+ return file == other.file &&
+ offset == other.offset &&
+ length == other.length;
+ }
+ 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);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getAssists result
+ *
+ * {
+ * "assists": List<SourceChange>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetAssistsResult implements ResponseResult {
+ List<SourceChange> _assists;
+
+ /**
+ * The assists that are available at the given location.
+ */
+ List<SourceChange> get assists => _assists;
+
+ /**
+ * The assists that are available at the given location.
+ */
+ void set assists(List<SourceChange> value) {
+ assert(value != null);
+ this._assists = value;
+ }
+
+ EditGetAssistsResult(List<SourceChange> assists) {
+ this.assists = assists;
+ }
+
+ factory EditGetAssistsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<SourceChange> assists;
+ if (json.containsKey("assists")) {
+ assists = jsonDecoder.decodeList(
+ jsonPath + ".assists",
+ json["assists"],
+ (String jsonPath, Object json) =>
+ new SourceChange.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "assists");
+ }
+ return new EditGetAssistsResult(assists);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.getAssists result", json);
+ }
+ }
+
+ factory EditGetAssistsResult.fromResponse(Response response) {
+ return new EditGetAssistsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["assists"] =
+ assists.map((SourceChange value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetAssistsResult) {
+ return listEqual(
+ assists, other.assists, (SourceChange a, SourceChange b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, assists.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getAvailableRefactorings params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * "length": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetAvailableRefactoringsParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ int _length;
+
+ /**
+ * The file containing the code on which the refactoring would be based.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the code on which the refactoring would be based.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the code on which the refactoring would be based.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the code on which the refactoring would be based.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the code on which the refactoring would be based.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the code on which the refactoring would be based.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ EditGetAvailableRefactoringsParams(String file, int offset, int length) {
+ this.file = file;
+ this.offset = offset;
+ this.length = length;
+ }
+
+ factory EditGetAvailableRefactoringsParams.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");
+ }
+ return new EditGetAvailableRefactoringsParams(file, offset, length);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.getAvailableRefactorings params", json);
+ }
+ }
+
+ factory EditGetAvailableRefactoringsParams.fromRequest(Request request) {
+ return new EditGetAvailableRefactoringsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ result["length"] = length;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.getAvailableRefactorings", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetAvailableRefactoringsParams) {
+ return file == other.file &&
+ offset == other.offset &&
+ length == other.length;
+ }
+ 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);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getAvailableRefactorings result
+ *
+ * {
+ * "kinds": List<RefactoringKind>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetAvailableRefactoringsResult implements ResponseResult {
+ List<RefactoringKind> _kinds;
+
+ /**
+ * The kinds of refactorings that are valid for the given selection.
+ */
+ List<RefactoringKind> get kinds => _kinds;
+
+ /**
+ * The kinds of refactorings that are valid for the given selection.
+ */
+ void set kinds(List<RefactoringKind> value) {
+ assert(value != null);
+ this._kinds = value;
+ }
+
+ EditGetAvailableRefactoringsResult(List<RefactoringKind> kinds) {
+ this.kinds = kinds;
+ }
+
+ factory EditGetAvailableRefactoringsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<RefactoringKind> kinds;
+ if (json.containsKey("kinds")) {
+ kinds = jsonDecoder.decodeList(
+ jsonPath + ".kinds",
+ json["kinds"],
+ (String jsonPath, Object json) =>
+ new RefactoringKind.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "kinds");
+ }
+ return new EditGetAvailableRefactoringsResult(kinds);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.getAvailableRefactorings result", json);
+ }
+ }
+
+ factory EditGetAvailableRefactoringsResult.fromResponse(Response response) {
+ return new EditGetAvailableRefactoringsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["kinds"] =
+ kinds.map((RefactoringKind value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetAvailableRefactoringsResult) {
+ return listEqual(
+ kinds, other.kinds, (RefactoringKind a, RefactoringKind b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, kinds.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getFixes params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetFixesParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ /**
+ * The file containing the errors for which fixes are being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the errors for which fixes are being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset used to select the errors for which fixes will be returned.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset used to select the errors for which fixes will be returned.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ EditGetFixesParams(String file, int offset) {
+ this.file = file;
+ this.offset = offset;
+ }
+
+ factory EditGetFixesParams.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 EditGetFixesParams(file, offset);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.getFixes params", json);
+ }
+ }
+
+ factory EditGetFixesParams.fromRequest(Request request) {
+ return new EditGetFixesParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.getFixes", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetFixesParams) {
+ 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);
+ }
+}
+
+/**
+ * edit.getFixes result
+ *
+ * {
+ * "fixes": List<AnalysisErrorFixes>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetFixesResult implements ResponseResult {
+ List<AnalysisErrorFixes> _fixes;
+
+ /**
+ * The fixes that are available for the errors at the given offset.
+ */
+ List<AnalysisErrorFixes> get fixes => _fixes;
+
+ /**
+ * The fixes that are available for the errors at the given offset.
+ */
+ void set fixes(List<AnalysisErrorFixes> value) {
+ assert(value != null);
+ this._fixes = value;
+ }
+
+ EditGetFixesResult(List<AnalysisErrorFixes> fixes) {
+ this.fixes = fixes;
+ }
+
+ factory EditGetFixesResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<AnalysisErrorFixes> fixes;
+ if (json.containsKey("fixes")) {
+ fixes = jsonDecoder.decodeList(
+ jsonPath + ".fixes",
+ json["fixes"],
+ (String jsonPath, Object json) =>
+ new AnalysisErrorFixes.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "fixes");
+ }
+ return new EditGetFixesResult(fixes);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.getFixes result", json);
+ }
+ }
+
+ factory EditGetFixesResult.fromResponse(Response response) {
+ return new EditGetFixesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["fixes"] =
+ fixes.map((AnalysisErrorFixes value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetFixesResult) {
+ return listEqual(fixes, other.fixes,
+ (AnalysisErrorFixes a, AnalysisErrorFixes b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, fixes.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getPostfixCompletion params
+ *
+ * {
+ * "file": FilePath
+ * "key": String
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetPostfixCompletionParams implements RequestParams {
+ String _file;
+
+ String _key;
+
+ int _offset;
+
+ /**
+ * The file containing the postfix template to be expanded.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the postfix template to be expanded.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The unique name that identifies the template in use.
+ */
+ String get key => _key;
+
+ /**
+ * The unique name that identifies the template in use.
+ */
+ void set key(String value) {
+ assert(value != null);
+ this._key = value;
+ }
+
+ /**
+ * The offset used to identify the code to which the template will be
+ * applied.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset used to identify the code to which the template will be
+ * applied.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ EditGetPostfixCompletionParams(String file, String key, int offset) {
+ this.file = file;
+ this.key = key;
+ this.offset = offset;
+ }
+
+ factory EditGetPostfixCompletionParams.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");
+ }
+ String key;
+ if (json.containsKey("key")) {
+ key = jsonDecoder.decodeString(jsonPath + ".key", json["key"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "key");
+ }
+ int offset;
+ if (json.containsKey("offset")) {
+ offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "offset");
+ }
+ return new EditGetPostfixCompletionParams(file, key, offset);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.getPostfixCompletion params", json);
+ }
+ }
+
+ factory EditGetPostfixCompletionParams.fromRequest(Request request) {
+ return new EditGetPostfixCompletionParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["key"] = key;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.getPostfixCompletion", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetPostfixCompletionParams) {
+ return file == other.file && key == other.key && offset == other.offset;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, key.hashCode);
+ hash = JenkinsSmiHash.combine(hash, offset.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getPostfixCompletion result
+ *
+ * {
+ * "change": SourceChange
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetPostfixCompletionResult implements ResponseResult {
+ SourceChange _change;
+
+ /**
+ * The change to be applied in order to complete the statement.
+ */
+ SourceChange get change => _change;
+
+ /**
+ * The change to be applied in order to complete the statement.
+ */
+ void set change(SourceChange value) {
+ assert(value != null);
+ this._change = value;
+ }
+
+ EditGetPostfixCompletionResult(SourceChange change) {
+ this.change = change;
+ }
+
+ factory EditGetPostfixCompletionResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ SourceChange change;
+ if (json.containsKey("change")) {
+ change = new SourceChange.fromJson(
+ jsonDecoder, jsonPath + ".change", json["change"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "change");
+ }
+ return new EditGetPostfixCompletionResult(change);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.getPostfixCompletion result", json);
+ }
+ }
+
+ factory EditGetPostfixCompletionResult.fromResponse(Response response) {
+ return new EditGetPostfixCompletionResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["change"] = change.toJson();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetPostfixCompletionResult) {
+ return change == other.change;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, change.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getRefactoring params
+ *
+ * {
+ * "kind": RefactoringKind
+ * "file": FilePath
+ * "offset": int
+ * "length": int
+ * "validateOnly": bool
+ * "options": optional RefactoringOptions
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetRefactoringParams implements RequestParams {
+ RefactoringKind _kind;
+
+ String _file;
+
+ int _offset;
+
+ int _length;
+
+ bool _validateOnly;
+
+ RefactoringOptions _options;
+
+ /**
+ * The kind of refactoring to be performed.
+ */
+ RefactoringKind get kind => _kind;
+
+ /**
+ * The kind of refactoring to be performed.
+ */
+ void set kind(RefactoringKind value) {
+ assert(value != null);
+ this._kind = value;
+ }
+
+ /**
+ * The file containing the code involved in the refactoring.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the code involved in the refactoring.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the region involved in the refactoring.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the region involved in the refactoring.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the region involved in the refactoring.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the region involved in the refactoring.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * True if the client is only requesting that the values of the options be
+ * validated and no change be generated.
+ */
+ bool get validateOnly => _validateOnly;
+
+ /**
+ * True if the client is only requesting that the values of the options be
+ * validated and no change be generated.
+ */
+ void set validateOnly(bool value) {
+ assert(value != null);
+ this._validateOnly = value;
+ }
+
+ /**
+ * Data used to provide values provided by the user. The structure of the
+ * data is dependent on the kind of refactoring being performed. The data
+ * that is expected is documented in the section titled Refactorings, labeled
+ * as "Options". This field can be omitted if the refactoring does not
+ * require any options or if the values of those options are not known.
+ */
+ RefactoringOptions get options => _options;
+
+ /**
+ * Data used to provide values provided by the user. The structure of the
+ * data is dependent on the kind of refactoring being performed. The data
+ * that is expected is documented in the section titled Refactorings, labeled
+ * as "Options". This field can be omitted if the refactoring does not
+ * require any options or if the values of those options are not known.
+ */
+ void set options(RefactoringOptions value) {
+ this._options = value;
+ }
+
+ EditGetRefactoringParams(RefactoringKind kind, String file, int offset,
+ int length, bool validateOnly,
+ {RefactoringOptions options}) {
+ this.kind = kind;
+ this.file = file;
+ this.offset = offset;
+ this.length = length;
+ this.validateOnly = validateOnly;
+ this.options = options;
+ }
+
+ factory EditGetRefactoringParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ RefactoringKind kind;
+ if (json.containsKey("kind")) {
+ kind = new RefactoringKind.fromJson(
+ jsonDecoder, jsonPath + ".kind", json["kind"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "kind");
+ }
+ 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");
+ }
+ bool validateOnly;
+ if (json.containsKey("validateOnly")) {
+ validateOnly = jsonDecoder.decodeBool(
+ jsonPath + ".validateOnly", json["validateOnly"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "validateOnly");
+ }
+ RefactoringOptions options;
+ if (json.containsKey("options")) {
+ options = new RefactoringOptions.fromJson(
+ jsonDecoder, jsonPath + ".options", json["options"], kind);
+ }
+ return new EditGetRefactoringParams(
+ kind, file, offset, length, validateOnly,
+ options: options);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.getRefactoring params", json);
+ }
+ }
+
+ factory EditGetRefactoringParams.fromRequest(Request request) {
+ var params = new EditGetRefactoringParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ REQUEST_ID_REFACTORING_KINDS[request.id] = params.kind;
+ return params;
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["kind"] = kind.toJson();
+ result["file"] = file;
+ result["offset"] = offset;
+ result["length"] = length;
+ result["validateOnly"] = validateOnly;
+ if (options != null) {
+ result["options"] = options.toJson();
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.getRefactoring", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetRefactoringParams) {
+ return kind == other.kind &&
+ file == other.file &&
+ offset == other.offset &&
+ length == other.length &&
+ validateOnly == other.validateOnly &&
+ options == other.options;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, kind.hashCode);
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, offset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, length.hashCode);
+ hash = JenkinsSmiHash.combine(hash, validateOnly.hashCode);
+ hash = JenkinsSmiHash.combine(hash, options.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getRefactoring result
+ *
+ * {
+ * "initialProblems": List<RefactoringProblem>
+ * "optionsProblems": List<RefactoringProblem>
+ * "finalProblems": List<RefactoringProblem>
+ * "feedback": optional RefactoringFeedback
+ * "change": optional SourceChange
+ * "potentialEdits": optional List<String>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetRefactoringResult implements ResponseResult {
+ List<RefactoringProblem> _initialProblems;
+
+ List<RefactoringProblem> _optionsProblems;
+
+ List<RefactoringProblem> _finalProblems;
+
+ RefactoringFeedback _feedback;
+
+ SourceChange _change;
+
+ List<String> _potentialEdits;
+
+ /**
+ * The initial status of the refactoring, i.e. problems related to the
+ * context in which the refactoring is requested. The array will be empty if
+ * there are no known problems.
+ */
+ List<RefactoringProblem> get initialProblems => _initialProblems;
+
+ /**
+ * The initial status of the refactoring, i.e. problems related to the
+ * context in which the refactoring is requested. The array will be empty if
+ * there are no known problems.
+ */
+ void set initialProblems(List<RefactoringProblem> value) {
+ assert(value != null);
+ this._initialProblems = value;
+ }
+
+ /**
+ * The options validation status, i.e. problems in the given options, such as
+ * light-weight validation of a new name, flags compatibility, etc. The array
+ * will be empty if there are no known problems.
+ */
+ List<RefactoringProblem> get optionsProblems => _optionsProblems;
+
+ /**
+ * The options validation status, i.e. problems in the given options, such as
+ * light-weight validation of a new name, flags compatibility, etc. The array
+ * will be empty if there are no known problems.
+ */
+ void set optionsProblems(List<RefactoringProblem> value) {
+ assert(value != null);
+ this._optionsProblems = value;
+ }
+
+ /**
+ * The final status of the refactoring, i.e. problems identified in the
+ * result of a full, potentially expensive validation and / or change
+ * creation. The array will be empty if there are no known problems.
+ */
+ List<RefactoringProblem> get finalProblems => _finalProblems;
+
+ /**
+ * The final status of the refactoring, i.e. problems identified in the
+ * result of a full, potentially expensive validation and / or change
+ * creation. The array will be empty if there are no known problems.
+ */
+ void set finalProblems(List<RefactoringProblem> value) {
+ assert(value != null);
+ this._finalProblems = value;
+ }
+
+ /**
+ * Data used to provide feedback to the user. The structure of the data is
+ * dependent on the kind of refactoring being created. The data that is
+ * returned is documented in the section titled Refactorings, labeled as
+ * "Feedback".
+ */
+ RefactoringFeedback get feedback => _feedback;
+
+ /**
+ * Data used to provide feedback to the user. The structure of the data is
+ * dependent on the kind of refactoring being created. The data that is
+ * returned is documented in the section titled Refactorings, labeled as
+ * "Feedback".
+ */
+ void set feedback(RefactoringFeedback value) {
+ this._feedback = value;
+ }
+
+ /**
+ * The changes that are to be applied to affect the refactoring. This field
+ * will be omitted if there are problems that prevent a set of changes from
+ * being computed, such as having no options specified for a refactoring that
+ * requires them, or if only validation was requested.
+ */
+ SourceChange get change => _change;
+
+ /**
+ * The changes that are to be applied to affect the refactoring. This field
+ * will be omitted if there are problems that prevent a set of changes from
+ * being computed, such as having no options specified for a refactoring that
+ * requires them, or if only validation was requested.
+ */
+ void set change(SourceChange value) {
+ this._change = value;
+ }
+
+ /**
+ * The ids of source edits that are not known to be valid. An edit is not
+ * known to be valid if there was insufficient type information for the
+ * server to be able to determine whether or not the code needs to be
+ * modified, such as when a member is being renamed and there is a reference
+ * to a member from an unknown type. This field will be omitted if the change
+ * field is omitted or if there are no potential edits for the refactoring.
+ */
+ List<String> get potentialEdits => _potentialEdits;
+
+ /**
+ * The ids of source edits that are not known to be valid. An edit is not
+ * known to be valid if there was insufficient type information for the
+ * server to be able to determine whether or not the code needs to be
+ * modified, such as when a member is being renamed and there is a reference
+ * to a member from an unknown type. This field will be omitted if the change
+ * field is omitted or if there are no potential edits for the refactoring.
+ */
+ void set potentialEdits(List<String> value) {
+ this._potentialEdits = value;
+ }
+
+ EditGetRefactoringResult(
+ List<RefactoringProblem> initialProblems,
+ List<RefactoringProblem> optionsProblems,
+ List<RefactoringProblem> finalProblems,
+ {RefactoringFeedback feedback,
+ SourceChange change,
+ List<String> potentialEdits}) {
+ this.initialProblems = initialProblems;
+ this.optionsProblems = optionsProblems;
+ this.finalProblems = finalProblems;
+ this.feedback = feedback;
+ this.change = change;
+ this.potentialEdits = potentialEdits;
+ }
+
+ factory EditGetRefactoringResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<RefactoringProblem> initialProblems;
+ if (json.containsKey("initialProblems")) {
+ initialProblems = jsonDecoder.decodeList(
+ jsonPath + ".initialProblems",
+ json["initialProblems"],
+ (String jsonPath, Object json) =>
+ new RefactoringProblem.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "initialProblems");
+ }
+ List<RefactoringProblem> optionsProblems;
+ if (json.containsKey("optionsProblems")) {
+ optionsProblems = jsonDecoder.decodeList(
+ jsonPath + ".optionsProblems",
+ json["optionsProblems"],
+ (String jsonPath, Object json) =>
+ new RefactoringProblem.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "optionsProblems");
+ }
+ List<RefactoringProblem> finalProblems;
+ if (json.containsKey("finalProblems")) {
+ finalProblems = jsonDecoder.decodeList(
+ jsonPath + ".finalProblems",
+ json["finalProblems"],
+ (String jsonPath, Object json) =>
+ new RefactoringProblem.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "finalProblems");
+ }
+ RefactoringFeedback feedback;
+ if (json.containsKey("feedback")) {
+ feedback = new RefactoringFeedback.fromJson(
+ jsonDecoder, jsonPath + ".feedback", json["feedback"], json);
+ }
+ SourceChange change;
+ if (json.containsKey("change")) {
+ change = new SourceChange.fromJson(
+ jsonDecoder, jsonPath + ".change", json["change"]);
+ }
+ List<String> potentialEdits;
+ if (json.containsKey("potentialEdits")) {
+ potentialEdits = jsonDecoder.decodeList(jsonPath + ".potentialEdits",
+ json["potentialEdits"], jsonDecoder.decodeString);
+ }
+ return new EditGetRefactoringResult(
+ initialProblems, optionsProblems, finalProblems,
+ feedback: feedback, change: change, potentialEdits: potentialEdits);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.getRefactoring result", json);
+ }
+ }
+
+ factory EditGetRefactoringResult.fromResponse(Response response) {
+ return new EditGetRefactoringResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["initialProblems"] = initialProblems
+ .map((RefactoringProblem value) => value.toJson())
+ .toList();
+ result["optionsProblems"] = optionsProblems
+ .map((RefactoringProblem value) => value.toJson())
+ .toList();
+ result["finalProblems"] = finalProblems
+ .map((RefactoringProblem value) => value.toJson())
+ .toList();
+ if (feedback != null) {
+ result["feedback"] = feedback.toJson();
+ }
+ if (change != null) {
+ result["change"] = change.toJson();
+ }
+ if (potentialEdits != null) {
+ result["potentialEdits"] = potentialEdits;
+ }
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetRefactoringResult) {
+ return listEqual(initialProblems, other.initialProblems,
+ (RefactoringProblem a, RefactoringProblem b) => a == b) &&
+ listEqual(optionsProblems, other.optionsProblems,
+ (RefactoringProblem a, RefactoringProblem b) => a == b) &&
+ listEqual(finalProblems, other.finalProblems,
+ (RefactoringProblem a, RefactoringProblem b) => a == b) &&
+ feedback == other.feedback &&
+ change == other.change &&
+ listEqual(potentialEdits, other.potentialEdits,
+ (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, initialProblems.hashCode);
+ hash = JenkinsSmiHash.combine(hash, optionsProblems.hashCode);
+ hash = JenkinsSmiHash.combine(hash, finalProblems.hashCode);
+ hash = JenkinsSmiHash.combine(hash, feedback.hashCode);
+ hash = JenkinsSmiHash.combine(hash, change.hashCode);
+ hash = JenkinsSmiHash.combine(hash, potentialEdits.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.getStatementCompletion params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetStatementCompletionParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ /**
+ * The file containing the statement to be completed.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the statement to be completed.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset used to identify the statement to be completed.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset used to identify the statement to be completed.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ EditGetStatementCompletionParams(String file, int offset) {
+ this.file = file;
+ this.offset = offset;
+ }
+
+ factory EditGetStatementCompletionParams.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 EditGetStatementCompletionParams(file, offset);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.getStatementCompletion params", json);
+ }
+ }
+
+ factory EditGetStatementCompletionParams.fromRequest(Request request) {
+ return new EditGetStatementCompletionParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.getStatementCompletion", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetStatementCompletionParams) {
+ 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);
+ }
+}
+
+/**
+ * edit.getStatementCompletion result
+ *
+ * {
+ * "change": SourceChange
+ * "whitespaceOnly": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditGetStatementCompletionResult implements ResponseResult {
+ SourceChange _change;
+
+ bool _whitespaceOnly;
+
+ /**
+ * The change to be applied in order to complete the statement.
+ */
+ SourceChange get change => _change;
+
+ /**
+ * The change to be applied in order to complete the statement.
+ */
+ void set change(SourceChange value) {
+ assert(value != null);
+ this._change = value;
+ }
+
+ /**
+ * Will be true if the change contains nothing but whitespace characters, or
+ * is empty.
+ */
+ bool get whitespaceOnly => _whitespaceOnly;
+
+ /**
+ * Will be true if the change contains nothing but whitespace characters, or
+ * is empty.
+ */
+ void set whitespaceOnly(bool value) {
+ assert(value != null);
+ this._whitespaceOnly = value;
+ }
+
+ EditGetStatementCompletionResult(SourceChange change, bool whitespaceOnly) {
+ this.change = change;
+ this.whitespaceOnly = whitespaceOnly;
+ }
+
+ factory EditGetStatementCompletionResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ SourceChange change;
+ if (json.containsKey("change")) {
+ change = new SourceChange.fromJson(
+ jsonDecoder, jsonPath + ".change", json["change"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "change");
+ }
+ bool whitespaceOnly;
+ if (json.containsKey("whitespaceOnly")) {
+ whitespaceOnly = jsonDecoder.decodeBool(
+ jsonPath + ".whitespaceOnly", json["whitespaceOnly"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "whitespaceOnly");
+ }
+ return new EditGetStatementCompletionResult(change, whitespaceOnly);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.getStatementCompletion result", json);
+ }
+ }
+
+ factory EditGetStatementCompletionResult.fromResponse(Response response) {
+ return new EditGetStatementCompletionResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["change"] = change.toJson();
+ result["whitespaceOnly"] = whitespaceOnly;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditGetStatementCompletionResult) {
+ return change == other.change && whitespaceOnly == other.whitespaceOnly;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, change.hashCode);
+ hash = JenkinsSmiHash.combine(hash, whitespaceOnly.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.importElements params
+ *
+ * {
+ * "file": FilePath
+ * "elements": List<ImportedElements>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditImportElementsParams implements RequestParams {
+ String _file;
+
+ List<ImportedElements> _elements;
+
+ /**
+ * The file in which the specified elements are to be made accessible.
+ */
+ String get file => _file;
+
+ /**
+ * The file in which the specified elements are to be made accessible.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The elements to be made accessible in the specified file.
+ */
+ List<ImportedElements> get elements => _elements;
+
+ /**
+ * The elements to be made accessible in the specified file.
+ */
+ void set elements(List<ImportedElements> value) {
+ assert(value != null);
+ this._elements = value;
+ }
+
+ EditImportElementsParams(String file, List<ImportedElements> elements) {
+ this.file = file;
+ this.elements = elements;
+ }
+
+ factory EditImportElementsParams.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");
+ }
+ List<ImportedElements> elements;
+ if (json.containsKey("elements")) {
+ elements = jsonDecoder.decodeList(
+ jsonPath + ".elements",
+ json["elements"],
+ (String jsonPath, Object json) =>
+ new ImportedElements.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "elements");
+ }
+ return new EditImportElementsParams(file, elements);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.importElements params", json);
+ }
+ }
+
+ factory EditImportElementsParams.fromRequest(Request request) {
+ return new EditImportElementsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["elements"] =
+ elements.map((ImportedElements value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.importElements", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditImportElementsParams) {
+ return file == other.file &&
+ listEqual(elements, other.elements,
+ (ImportedElements a, ImportedElements b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, elements.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.importElements result
+ *
+ * {
+ * "edit": optional SourceFileEdit
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditImportElementsResult implements ResponseResult {
+ SourceFileEdit _edit;
+
+ /**
+ * The edits to be applied in order to make the specified elements
+ * accessible. The file to be edited will be the defining compilation unit of
+ * the library containing the file specified in the request, which can be
+ * different than the file specified in the request if the specified file is
+ * a part file. This field will be omitted if there are no edits that need to
+ * be applied.
+ */
+ SourceFileEdit get edit => _edit;
+
+ /**
+ * The edits to be applied in order to make the specified elements
+ * accessible. The file to be edited will be the defining compilation unit of
+ * the library containing the file specified in the request, which can be
+ * different than the file specified in the request if the specified file is
+ * a part file. This field will be omitted if there are no edits that need to
+ * be applied.
+ */
+ void set edit(SourceFileEdit value) {
+ this._edit = value;
+ }
+
+ EditImportElementsResult({SourceFileEdit edit}) {
+ this.edit = edit;
+ }
+
+ factory EditImportElementsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ SourceFileEdit edit;
+ if (json.containsKey("edit")) {
+ edit = new SourceFileEdit.fromJson(
+ jsonDecoder, jsonPath + ".edit", json["edit"]);
+ }
+ return new EditImportElementsResult(edit: edit);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.importElements result", json);
+ }
+ }
+
+ factory EditImportElementsResult.fromResponse(Response response) {
+ return new EditImportElementsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (edit != null) {
+ result["edit"] = edit.toJson();
+ }
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditImportElementsResult) {
+ return edit == other.edit;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, edit.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.isPostfixCompletionApplicable params
+ *
+ * {
+ * "file": FilePath
+ * "key": String
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditIsPostfixCompletionApplicableParams implements RequestParams {
+ String _file;
+
+ String _key;
+
+ int _offset;
+
+ /**
+ * The file containing the postfix template to be expanded.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the postfix template to be expanded.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The unique name that identifies the template in use.
+ */
+ String get key => _key;
+
+ /**
+ * The unique name that identifies the template in use.
+ */
+ void set key(String value) {
+ assert(value != null);
+ this._key = value;
+ }
+
+ /**
+ * The offset used to identify the code to which the template will be
+ * applied.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset used to identify the code to which the template will be
+ * applied.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ EditIsPostfixCompletionApplicableParams(String file, String key, int offset) {
+ this.file = file;
+ this.key = key;
+ this.offset = offset;
+ }
+
+ factory EditIsPostfixCompletionApplicableParams.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");
+ }
+ String key;
+ if (json.containsKey("key")) {
+ key = jsonDecoder.decodeString(jsonPath + ".key", json["key"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "key");
+ }
+ int offset;
+ if (json.containsKey("offset")) {
+ offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "offset");
+ }
+ return new EditIsPostfixCompletionApplicableParams(file, key, offset);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.isPostfixCompletionApplicable params", json);
+ }
+ }
+
+ factory EditIsPostfixCompletionApplicableParams.fromRequest(Request request) {
+ return new EditIsPostfixCompletionApplicableParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["key"] = key;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.isPostfixCompletionApplicable", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditIsPostfixCompletionApplicableParams) {
+ return file == other.file && key == other.key && offset == other.offset;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, key.hashCode);
+ hash = JenkinsSmiHash.combine(hash, offset.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.isPostfixCompletionApplicable result
+ *
+ * {
+ * "value": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditIsPostfixCompletionApplicableResult implements ResponseResult {
+ bool _value;
+
+ /**
+ * True if the template can be expanded at the given location.
+ */
+ bool get value => _value;
+
+ /**
+ * True if the template can be expanded at the given location.
+ */
+ void set value(bool value) {
+ assert(value != null);
+ this._value = value;
+ }
+
+ EditIsPostfixCompletionApplicableResult(bool value) {
+ this.value = value;
+ }
+
+ factory EditIsPostfixCompletionApplicableResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool value;
+ if (json.containsKey("value")) {
+ value = jsonDecoder.decodeBool(jsonPath + ".value", json["value"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "value");
+ }
+ return new EditIsPostfixCompletionApplicableResult(value);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.isPostfixCompletionApplicable result", json);
+ }
+ }
+
+ factory EditIsPostfixCompletionApplicableResult.fromResponse(
+ Response response) {
+ return new EditIsPostfixCompletionApplicableResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["value"] = value;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditIsPostfixCompletionApplicableResult) {
+ return value == other.value;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, value.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.listPostfixCompletionTemplates params
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditListPostfixCompletionTemplatesParams implements RequestParams {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.listPostfixCompletionTemplates", null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is EditListPostfixCompletionTemplatesParams) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 690713107;
+ }
+}
+
+/**
+ * edit.listPostfixCompletionTemplates result
+ *
+ * {
+ * "templates": List<PostfixTemplateDescriptor>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditListPostfixCompletionTemplatesResult implements ResponseResult {
+ List<PostfixTemplateDescriptor> _templates;
+
+ /**
+ * The list of available templates.
+ */
+ List<PostfixTemplateDescriptor> get templates => _templates;
+
+ /**
+ * The list of available templates.
+ */
+ void set templates(List<PostfixTemplateDescriptor> value) {
+ assert(value != null);
+ this._templates = value;
+ }
+
+ EditListPostfixCompletionTemplatesResult(
+ List<PostfixTemplateDescriptor> templates) {
+ this.templates = templates;
+ }
+
+ factory EditListPostfixCompletionTemplatesResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<PostfixTemplateDescriptor> templates;
+ if (json.containsKey("templates")) {
+ templates = jsonDecoder.decodeList(
+ jsonPath + ".templates",
+ json["templates"],
+ (String jsonPath, Object json) =>
+ new PostfixTemplateDescriptor.fromJson(
+ jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "templates");
+ }
+ return new EditListPostfixCompletionTemplatesResult(templates);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.listPostfixCompletionTemplates result", json);
+ }
+ }
+
+ factory EditListPostfixCompletionTemplatesResult.fromResponse(
+ Response response) {
+ return new EditListPostfixCompletionTemplatesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["templates"] = templates
+ .map((PostfixTemplateDescriptor value) => value.toJson())
+ .toList();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditListPostfixCompletionTemplatesResult) {
+ return listEqual(templates, other.templates,
+ (PostfixTemplateDescriptor a, PostfixTemplateDescriptor b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, templates.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.organizeDirectives params
+ *
+ * {
+ * "file": FilePath
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditOrganizeDirectivesParams implements RequestParams {
+ String _file;
+
+ /**
+ * The Dart file to organize directives in.
+ */
+ String get file => _file;
+
+ /**
+ * The Dart file to organize directives in.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ EditOrganizeDirectivesParams(String file) {
+ this.file = file;
+ }
+
+ factory EditOrganizeDirectivesParams.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");
+ }
+ return new EditOrganizeDirectivesParams(file);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.organizeDirectives params", json);
+ }
+ }
+
+ factory EditOrganizeDirectivesParams.fromRequest(Request request) {
+ return new EditOrganizeDirectivesParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.organizeDirectives", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditOrganizeDirectivesParams) {
+ return file == other.file;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.organizeDirectives result
+ *
+ * {
+ * "edit": SourceFileEdit
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditOrganizeDirectivesResult implements ResponseResult {
+ SourceFileEdit _edit;
+
+ /**
+ * The file edit that is to be applied to the given file to effect the
+ * organizing.
+ */
+ SourceFileEdit get edit => _edit;
+
+ /**
+ * The file edit that is to be applied to the given file to effect the
+ * organizing.
+ */
+ void set edit(SourceFileEdit value) {
+ assert(value != null);
+ this._edit = value;
+ }
+
+ EditOrganizeDirectivesResult(SourceFileEdit edit) {
+ this.edit = edit;
+ }
+
+ factory EditOrganizeDirectivesResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ SourceFileEdit edit;
+ if (json.containsKey("edit")) {
+ edit = new SourceFileEdit.fromJson(
+ jsonDecoder, jsonPath + ".edit", json["edit"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit");
+ }
+ return new EditOrganizeDirectivesResult(edit);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "edit.organizeDirectives result", json);
+ }
+ }
+
+ factory EditOrganizeDirectivesResult.fromResponse(Response response) {
+ return new EditOrganizeDirectivesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["edit"] = edit.toJson();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditOrganizeDirectivesResult) {
+ return edit == other.edit;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, edit.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.sortMembers params
+ *
+ * {
+ * "file": FilePath
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditSortMembersParams implements RequestParams {
+ String _file;
+
+ /**
+ * The Dart file to sort.
+ */
+ String get file => _file;
+
+ /**
+ * The Dart file to sort.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ EditSortMembersParams(String file) {
+ this.file = file;
+ }
+
+ factory EditSortMembersParams.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");
+ }
+ return new EditSortMembersParams(file);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.sortMembers params", json);
+ }
+ }
+
+ factory EditSortMembersParams.fromRequest(Request request) {
+ return new EditSortMembersParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "edit.sortMembers", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditSortMembersParams) {
+ return file == other.file;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * edit.sortMembers result
+ *
+ * {
+ * "edit": SourceFileEdit
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class EditSortMembersResult implements ResponseResult {
+ SourceFileEdit _edit;
+
+ /**
+ * The file edit that is to be applied to the given file to effect the
+ * sorting.
+ */
+ SourceFileEdit get edit => _edit;
+
+ /**
+ * The file edit that is to be applied to the given file to effect the
+ * sorting.
+ */
+ void set edit(SourceFileEdit value) {
+ assert(value != null);
+ this._edit = value;
+ }
+
+ EditSortMembersResult(SourceFileEdit edit) {
+ this.edit = edit;
+ }
+
+ factory EditSortMembersResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ SourceFileEdit edit;
+ if (json.containsKey("edit")) {
+ edit = new SourceFileEdit.fromJson(
+ jsonDecoder, jsonPath + ".edit", json["edit"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit");
+ }
+ return new EditSortMembersResult(edit);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "edit.sortMembers result", json);
+ }
+ }
+
+ factory EditSortMembersResult.fromResponse(Response response) {
+ return new EditSortMembersResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["edit"] = edit.toJson();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is EditSortMembersResult) {
+ return edit == other.edit;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, edit.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ElementDeclaration
+ *
+ * {
+ * "name": String
+ * "kind": ElementKind
+ * "fileIndex": int
+ * "offset": int
+ * "line": int
+ * "column": int
+ * "codeOffset": int
+ * "codeLength": int
+ * "className": optional String
+ * "mixinName": optional String
+ * "parameters": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ElementDeclaration implements HasToJson {
+ String _name;
+
+ ElementKind _kind;
+
+ int _fileIndex;
+
+ int _offset;
+
+ int _line;
+
+ int _column;
+
+ int _codeOffset;
+
+ int _codeLength;
+
+ String _className;
+
+ String _mixinName;
+
+ String _parameters;
+
+ /**
+ * The name of the declaration.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the declaration.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * The kind of the element that corresponds to the declaration.
+ */
+ ElementKind get kind => _kind;
+
+ /**
+ * The kind of the element that corresponds to the declaration.
+ */
+ void set kind(ElementKind value) {
+ assert(value != null);
+ this._kind = value;
+ }
+
+ /**
+ * The index of the file (in the enclosing response).
+ */
+ int get fileIndex => _fileIndex;
+
+ /**
+ * The index of the file (in the enclosing response).
+ */
+ void set fileIndex(int value) {
+ assert(value != null);
+ this._fileIndex = value;
+ }
+
+ /**
+ * The offset of the declaration name in the file.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the declaration name in the file.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The one-based index of the line containing the declaration name.
+ */
+ int get line => _line;
+
+ /**
+ * The one-based index of the line containing the declaration name.
+ */
+ void set line(int value) {
+ assert(value != null);
+ this._line = value;
+ }
+
+ /**
+ * The one-based index of the column containing the declaration name.
+ */
+ int get column => _column;
+
+ /**
+ * The one-based index of the column containing the declaration name.
+ */
+ void set column(int value) {
+ assert(value != null);
+ this._column = value;
+ }
+
+ /**
+ * The offset of the first character of the declaration code in the file.
+ */
+ int get codeOffset => _codeOffset;
+
+ /**
+ * The offset of the first character of the declaration code in the file.
+ */
+ void set codeOffset(int value) {
+ assert(value != null);
+ this._codeOffset = value;
+ }
+
+ /**
+ * The length of the declaration code in the file.
+ */
+ int get codeLength => _codeLength;
+
+ /**
+ * The length of the declaration code in the file.
+ */
+ void set codeLength(int value) {
+ assert(value != null);
+ this._codeLength = value;
+ }
+
+ /**
+ * The name of the class enclosing this declaration. If the declaration is
+ * not a class member, this field will be absent.
+ */
+ String get className => _className;
+
+ /**
+ * The name of the class enclosing this declaration. If the declaration is
+ * not a class member, this field will be absent.
+ */
+ void set className(String value) {
+ this._className = value;
+ }
+
+ /**
+ * The name of the mixin enclosing this declaration. If the declaration is
+ * not a mixin member, this field will be absent.
+ */
+ String get mixinName => _mixinName;
+
+ /**
+ * The name of the mixin enclosing this declaration. If the declaration is
+ * not a mixin member, this field will be absent.
+ */
+ void set mixinName(String value) {
+ this._mixinName = 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 "()". The value
+ * should not be treated as exact presentation of parameters, it is just
+ * approximation of parameters to give the user general idea.
+ */
+ 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 "()". The value
+ * should not be treated as exact presentation of parameters, it is just
+ * approximation of parameters to give the user general idea.
+ */
+ void set parameters(String value) {
+ this._parameters = value;
+ }
+
+ ElementDeclaration(String name, ElementKind kind, int fileIndex, int offset,
+ int line, int column, int codeOffset, int codeLength,
+ {String className, String mixinName, String parameters}) {
+ this.name = name;
+ this.kind = kind;
+ this.fileIndex = fileIndex;
+ this.offset = offset;
+ this.line = line;
+ this.column = column;
+ this.codeOffset = codeOffset;
+ this.codeLength = codeLength;
+ this.className = className;
+ this.mixinName = mixinName;
+ this.parameters = parameters;
+ }
+
+ factory ElementDeclaration.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ 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 line;
+ if (json.containsKey("line")) {
+ line = jsonDecoder.decodeInt(jsonPath + ".line", json["line"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "line");
+ }
+ int column;
+ if (json.containsKey("column")) {
+ column = jsonDecoder.decodeInt(jsonPath + ".column", json["column"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "column");
+ }
+ 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");
+ }
+ String className;
+ if (json.containsKey("className")) {
+ className = jsonDecoder.decodeString(
+ jsonPath + ".className", json["className"]);
+ }
+ String mixinName;
+ if (json.containsKey("mixinName")) {
+ mixinName = jsonDecoder.decodeString(
+ jsonPath + ".mixinName", json["mixinName"]);
+ }
+ String parameters;
+ if (json.containsKey("parameters")) {
+ parameters = jsonDecoder.decodeString(
+ jsonPath + ".parameters", json["parameters"]);
+ }
+ return new ElementDeclaration(
+ name, kind, fileIndex, offset, line, column, codeOffset, codeLength,
+ className: className, mixinName: mixinName, parameters: parameters);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ElementDeclaration", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["kind"] = kind.toJson();
+ result["fileIndex"] = fileIndex;
+ result["offset"] = offset;
+ result["line"] = line;
+ result["column"] = column;
+ result["codeOffset"] = codeOffset;
+ result["codeLength"] = codeLength;
+ if (className != null) {
+ result["className"] = className;
+ }
+ if (mixinName != null) {
+ result["mixinName"] = mixinName;
+ }
+ if (parameters != null) {
+ result["parameters"] = parameters;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ElementDeclaration) {
+ return name == other.name &&
+ kind == other.kind &&
+ fileIndex == other.fileIndex &&
+ offset == other.offset &&
+ line == other.line &&
+ column == other.column &&
+ codeOffset == other.codeOffset &&
+ codeLength == other.codeLength &&
+ className == other.className &&
+ mixinName == other.mixinName &&
+ parameters == other.parameters;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, kind.hashCode);
+ hash = JenkinsSmiHash.combine(hash, fileIndex.hashCode);
+ hash = JenkinsSmiHash.combine(hash, offset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, line.hashCode);
+ hash = JenkinsSmiHash.combine(hash, column.hashCode);
+ hash = JenkinsSmiHash.combine(hash, codeOffset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, codeLength.hashCode);
+ hash = JenkinsSmiHash.combine(hash, className.hashCode);
+ hash = JenkinsSmiHash.combine(hash, mixinName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parameters.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ExecutableFile
+ *
+ * {
+ * "file": FilePath
+ * "kind": ExecutableKind
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutableFile implements HasToJson {
+ String _file;
+
+ ExecutableKind _kind;
+
+ /**
+ * The path of the executable file.
+ */
+ String get file => _file;
+
+ /**
+ * The path of the executable file.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The kind of the executable file.
+ */
+ ExecutableKind get kind => _kind;
+
+ /**
+ * The kind of the executable file.
+ */
+ void set kind(ExecutableKind value) {
+ assert(value != null);
+ this._kind = value;
+ }
+
+ ExecutableFile(String file, ExecutableKind kind) {
+ this.file = file;
+ this.kind = kind;
+ }
+
+ factory ExecutableFile.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");
+ }
+ ExecutableKind kind;
+ if (json.containsKey("kind")) {
+ kind = new ExecutableKind.fromJson(
+ jsonDecoder, jsonPath + ".kind", json["kind"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "kind");
+ }
+ return new ExecutableFile(file, kind);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ExecutableFile", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["kind"] = kind.toJson();
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutableFile) {
+ return file == other.file && kind == other.kind;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, kind.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ExecutableKind
+ *
+ * enum {
+ * CLIENT
+ * EITHER
+ * NOT_EXECUTABLE
+ * SERVER
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutableKind implements Enum {
+ static const ExecutableKind CLIENT = const ExecutableKind._("CLIENT");
+
+ static const ExecutableKind EITHER = const ExecutableKind._("EITHER");
+
+ static const ExecutableKind NOT_EXECUTABLE =
+ const ExecutableKind._("NOT_EXECUTABLE");
+
+ static const ExecutableKind SERVER = const ExecutableKind._("SERVER");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<ExecutableKind> VALUES = const <ExecutableKind>[
+ CLIENT,
+ EITHER,
+ NOT_EXECUTABLE,
+ SERVER
+ ];
+
+ @override
+ final String name;
+
+ const ExecutableKind._(this.name);
+
+ factory ExecutableKind(String name) {
+ switch (name) {
+ case "CLIENT":
+ return CLIENT;
+ case "EITHER":
+ return EITHER;
+ case "NOT_EXECUTABLE":
+ return NOT_EXECUTABLE;
+ case "SERVER":
+ return SERVER;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory ExecutableKind.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new ExecutableKind(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "ExecutableKind", json);
+ }
+
+ @override
+ String toString() => "ExecutableKind.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * execution.createContext params
+ *
+ * {
+ * "contextRoot": FilePath
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionCreateContextParams implements RequestParams {
+ String _contextRoot;
+
+ /**
+ * The path of the Dart or HTML file that will be launched, or the path of
+ * the directory containing the file.
+ */
+ String get contextRoot => _contextRoot;
+
+ /**
+ * The path of the Dart or HTML file that will be launched, or the path of
+ * the directory containing the file.
+ */
+ void set contextRoot(String value) {
+ assert(value != null);
+ this._contextRoot = value;
+ }
+
+ ExecutionCreateContextParams(String contextRoot) {
+ this.contextRoot = contextRoot;
+ }
+
+ factory ExecutionCreateContextParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String contextRoot;
+ if (json.containsKey("contextRoot")) {
+ contextRoot = jsonDecoder.decodeString(
+ jsonPath + ".contextRoot", json["contextRoot"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "contextRoot");
+ }
+ return new ExecutionCreateContextParams(contextRoot);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "execution.createContext params", json);
+ }
+ }
+
+ factory ExecutionCreateContextParams.fromRequest(Request request) {
+ return new ExecutionCreateContextParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["contextRoot"] = contextRoot;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "execution.createContext", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionCreateContextParams) {
+ return contextRoot == other.contextRoot;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, contextRoot.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.createContext result
+ *
+ * {
+ * "id": ExecutionContextId
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionCreateContextResult implements ResponseResult {
+ String _id;
+
+ /**
+ * The identifier used to refer to the execution context that was created.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier used to refer to the execution context that was created.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ ExecutionCreateContextResult(String id) {
+ this.id = id;
+ }
+
+ factory ExecutionCreateContextResult.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ return new ExecutionCreateContextResult(id);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "execution.createContext result", json);
+ }
+ }
+
+ factory ExecutionCreateContextResult.fromResponse(Response response) {
+ return new ExecutionCreateContextResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionCreateContextResult) {
+ return id == other.id;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.deleteContext params
+ *
+ * {
+ * "id": ExecutionContextId
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionDeleteContextParams implements RequestParams {
+ String _id;
+
+ /**
+ * The identifier of the execution context that is to be deleted.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier of the execution context that is to be deleted.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ ExecutionDeleteContextParams(String id) {
+ this.id = id;
+ }
+
+ factory ExecutionDeleteContextParams.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ return new ExecutionDeleteContextParams(id);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "execution.deleteContext params", json);
+ }
+ }
+
+ factory ExecutionDeleteContextParams.fromRequest(Request request) {
+ return new ExecutionDeleteContextParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "execution.deleteContext", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionDeleteContextParams) {
+ return id == other.id;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.deleteContext result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionDeleteContextResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionDeleteContextResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 479954425;
+ }
+}
+
+/**
+ * execution.getSuggestions params
+ *
+ * {
+ * "code": String
+ * "offset": int
+ * "contextFile": FilePath
+ * "contextOffset": int
+ * "variables": List<RuntimeCompletionVariable>
+ * "expressions": optional List<RuntimeCompletionExpression>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionGetSuggestionsParams implements RequestParams {
+ String _code;
+
+ int _offset;
+
+ String _contextFile;
+
+ int _contextOffset;
+
+ List<RuntimeCompletionVariable> _variables;
+
+ List<RuntimeCompletionExpression> _expressions;
+
+ /**
+ * The code to get suggestions in.
+ */
+ String get code => _code;
+
+ /**
+ * The code to get suggestions in.
+ */
+ void set code(String value) {
+ assert(value != null);
+ this._code = value;
+ }
+
+ /**
+ * The offset within the code to get suggestions at.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset within the code to get suggestions at.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The path of the context file, e.g. the file of the current debugger frame.
+ * The combination of the context file and context offset can be used to
+ * ensure that all variables of the context are available for completion
+ * (with their static types).
+ */
+ String get contextFile => _contextFile;
+
+ /**
+ * The path of the context file, e.g. the file of the current debugger frame.
+ * The combination of the context file and context offset can be used to
+ * ensure that all variables of the context are available for completion
+ * (with their static types).
+ */
+ void set contextFile(String value) {
+ assert(value != null);
+ this._contextFile = value;
+ }
+
+ /**
+ * The offset in the context file, e.g. the line offset in the current
+ * debugger frame.
+ */
+ int get contextOffset => _contextOffset;
+
+ /**
+ * The offset in the context file, e.g. the line offset in the current
+ * debugger frame.
+ */
+ void set contextOffset(int value) {
+ assert(value != null);
+ this._contextOffset = value;
+ }
+
+ /**
+ * The runtime context variables that are potentially referenced in the code.
+ */
+ List<RuntimeCompletionVariable> get variables => _variables;
+
+ /**
+ * The runtime context variables that are potentially referenced in the code.
+ */
+ void set variables(List<RuntimeCompletionVariable> value) {
+ assert(value != null);
+ this._variables = value;
+ }
+
+ /**
+ * The list of sub-expressions in the code for which the client wants to
+ * provide runtime types. It does not have to be the full list of expressions
+ * requested by the server, for missing expressions their static types will
+ * be used.
+ *
+ * When this field is omitted, the server will return completion suggestions
+ * only when there are no interesting sub-expressions in the given code. The
+ * client may provide an empty list, in this case the server will return
+ * completion suggestions.
+ */
+ List<RuntimeCompletionExpression> get expressions => _expressions;
+
+ /**
+ * The list of sub-expressions in the code for which the client wants to
+ * provide runtime types. It does not have to be the full list of expressions
+ * requested by the server, for missing expressions their static types will
+ * be used.
+ *
+ * When this field is omitted, the server will return completion suggestions
+ * only when there are no interesting sub-expressions in the given code. The
+ * client may provide an empty list, in this case the server will return
+ * completion suggestions.
+ */
+ void set expressions(List<RuntimeCompletionExpression> value) {
+ this._expressions = value;
+ }
+
+ ExecutionGetSuggestionsParams(String code, int offset, String contextFile,
+ int contextOffset, List<RuntimeCompletionVariable> variables,
+ {List<RuntimeCompletionExpression> expressions}) {
+ this.code = code;
+ this.offset = offset;
+ this.contextFile = contextFile;
+ this.contextOffset = contextOffset;
+ this.variables = variables;
+ this.expressions = expressions;
+ }
+
+ factory ExecutionGetSuggestionsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String code;
+ if (json.containsKey("code")) {
+ code = jsonDecoder.decodeString(jsonPath + ".code", json["code"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "code");
+ }
+ int offset;
+ if (json.containsKey("offset")) {
+ offset = jsonDecoder.decodeInt(jsonPath + ".offset", json["offset"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "offset");
+ }
+ String contextFile;
+ if (json.containsKey("contextFile")) {
+ contextFile = jsonDecoder.decodeString(
+ jsonPath + ".contextFile", json["contextFile"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "contextFile");
+ }
+ int contextOffset;
+ if (json.containsKey("contextOffset")) {
+ contextOffset = jsonDecoder.decodeInt(
+ jsonPath + ".contextOffset", json["contextOffset"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "contextOffset");
+ }
+ List<RuntimeCompletionVariable> variables;
+ if (json.containsKey("variables")) {
+ variables = jsonDecoder.decodeList(
+ jsonPath + ".variables",
+ json["variables"],
+ (String jsonPath, Object json) =>
+ new RuntimeCompletionVariable.fromJson(
+ jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "variables");
+ }
+ List<RuntimeCompletionExpression> expressions;
+ if (json.containsKey("expressions")) {
+ expressions = jsonDecoder.decodeList(
+ jsonPath + ".expressions",
+ json["expressions"],
+ (String jsonPath, Object json) =>
+ new RuntimeCompletionExpression.fromJson(
+ jsonDecoder, jsonPath, json));
+ }
+ return new ExecutionGetSuggestionsParams(
+ code, offset, contextFile, contextOffset, variables,
+ expressions: expressions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "execution.getSuggestions params", json);
+ }
+ }
+
+ factory ExecutionGetSuggestionsParams.fromRequest(Request request) {
+ return new ExecutionGetSuggestionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["code"] = code;
+ result["offset"] = offset;
+ result["contextFile"] = contextFile;
+ result["contextOffset"] = contextOffset;
+ result["variables"] = variables
+ .map((RuntimeCompletionVariable value) => value.toJson())
+ .toList();
+ if (expressions != null) {
+ result["expressions"] = expressions
+ .map((RuntimeCompletionExpression value) => value.toJson())
+ .toList();
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "execution.getSuggestions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionGetSuggestionsParams) {
+ return code == other.code &&
+ offset == other.offset &&
+ contextFile == other.contextFile &&
+ contextOffset == other.contextOffset &&
+ listEqual(
+ variables,
+ other.variables,
+ (RuntimeCompletionVariable a, RuntimeCompletionVariable b) =>
+ a == b) &&
+ listEqual(
+ expressions,
+ other.expressions,
+ (RuntimeCompletionExpression a, RuntimeCompletionExpression b) =>
+ a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, code.hashCode);
+ hash = JenkinsSmiHash.combine(hash, offset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, contextFile.hashCode);
+ hash = JenkinsSmiHash.combine(hash, contextOffset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, variables.hashCode);
+ hash = JenkinsSmiHash.combine(hash, expressions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.getSuggestions result
+ *
+ * {
+ * "suggestions": optional List<CompletionSuggestion>
+ * "expressions": optional List<RuntimeCompletionExpression>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionGetSuggestionsResult implements ResponseResult {
+ List<CompletionSuggestion> _suggestions;
+
+ List<RuntimeCompletionExpression> _expressions;
+
+ /**
+ * The completion suggestions. In contrast to usual completion request,
+ * suggestions for private elements also will be provided.
+ *
+ * If there are sub-expressions that can have different runtime types, and
+ * are considered to be safe to evaluate at runtime (e.g. getters), so using
+ * their actual runtime types can improve completion results, the server
+ * omits this field in the response, and instead will return the
+ * "expressions" field.
+ */
+ List<CompletionSuggestion> get suggestions => _suggestions;
+
+ /**
+ * The completion suggestions. In contrast to usual completion request,
+ * suggestions for private elements also will be provided.
+ *
+ * If there are sub-expressions that can have different runtime types, and
+ * are considered to be safe to evaluate at runtime (e.g. getters), so using
+ * their actual runtime types can improve completion results, the server
+ * omits this field in the response, and instead will return the
+ * "expressions" field.
+ */
+ void set suggestions(List<CompletionSuggestion> value) {
+ this._suggestions = value;
+ }
+
+ /**
+ * The list of sub-expressions in the code for which the server would like to
+ * know runtime types to provide better completion suggestions.
+ *
+ * This field is omitted the field "suggestions" is returned.
+ */
+ List<RuntimeCompletionExpression> get expressions => _expressions;
+
+ /**
+ * The list of sub-expressions in the code for which the server would like to
+ * know runtime types to provide better completion suggestions.
+ *
+ * This field is omitted the field "suggestions" is returned.
+ */
+ void set expressions(List<RuntimeCompletionExpression> value) {
+ this._expressions = value;
+ }
+
+ ExecutionGetSuggestionsResult(
+ {List<CompletionSuggestion> suggestions,
+ List<RuntimeCompletionExpression> expressions}) {
+ this.suggestions = suggestions;
+ this.expressions = expressions;
+ }
+
+ factory ExecutionGetSuggestionsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<CompletionSuggestion> suggestions;
+ if (json.containsKey("suggestions")) {
+ suggestions = jsonDecoder.decodeList(
+ jsonPath + ".suggestions",
+ json["suggestions"],
+ (String jsonPath, Object json) =>
+ new CompletionSuggestion.fromJson(jsonDecoder, jsonPath, json));
+ }
+ List<RuntimeCompletionExpression> expressions;
+ if (json.containsKey("expressions")) {
+ expressions = jsonDecoder.decodeList(
+ jsonPath + ".expressions",
+ json["expressions"],
+ (String jsonPath, Object json) =>
+ new RuntimeCompletionExpression.fromJson(
+ jsonDecoder, jsonPath, json));
+ }
+ return new ExecutionGetSuggestionsResult(
+ suggestions: suggestions, expressions: expressions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "execution.getSuggestions result", json);
+ }
+ }
+
+ factory ExecutionGetSuggestionsResult.fromResponse(Response response) {
+ return new ExecutionGetSuggestionsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (suggestions != null) {
+ result["suggestions"] = suggestions
+ .map((CompletionSuggestion value) => value.toJson())
+ .toList();
+ }
+ if (expressions != null) {
+ result["expressions"] = expressions
+ .map((RuntimeCompletionExpression value) => value.toJson())
+ .toList();
+ }
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionGetSuggestionsResult) {
+ return listEqual(suggestions, other.suggestions,
+ (CompletionSuggestion a, CompletionSuggestion b) => a == b) &&
+ listEqual(
+ expressions,
+ other.expressions,
+ (RuntimeCompletionExpression a, RuntimeCompletionExpression b) =>
+ a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, suggestions.hashCode);
+ hash = JenkinsSmiHash.combine(hash, expressions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.launchData params
+ *
+ * {
+ * "file": FilePath
+ * "kind": optional ExecutableKind
+ * "referencedFiles": optional List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionLaunchDataParams implements HasToJson {
+ String _file;
+
+ ExecutableKind _kind;
+
+ List<String> _referencedFiles;
+
+ /**
+ * The file for which launch data is being provided. This will either be a
+ * Dart library or an HTML file.
+ */
+ String get file => _file;
+
+ /**
+ * The file for which launch data is being provided. This will either be a
+ * Dart library or an HTML file.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The kind of the executable file. This field is omitted if the file is not
+ * a Dart file.
+ */
+ ExecutableKind get kind => _kind;
+
+ /**
+ * The kind of the executable file. This field is omitted if the file is not
+ * a Dart file.
+ */
+ void set kind(ExecutableKind value) {
+ this._kind = value;
+ }
+
+ /**
+ * A list of the Dart files that are referenced by the file. This field is
+ * omitted if the file is not an HTML file.
+ */
+ List<String> get referencedFiles => _referencedFiles;
+
+ /**
+ * A list of the Dart files that are referenced by the file. This field is
+ * omitted if the file is not an HTML file.
+ */
+ void set referencedFiles(List<String> value) {
+ this._referencedFiles = value;
+ }
+
+ ExecutionLaunchDataParams(String file,
+ {ExecutableKind kind, List<String> referencedFiles}) {
+ this.file = file;
+ this.kind = kind;
+ this.referencedFiles = referencedFiles;
+ }
+
+ factory ExecutionLaunchDataParams.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");
+ }
+ ExecutableKind kind;
+ if (json.containsKey("kind")) {
+ kind = new ExecutableKind.fromJson(
+ jsonDecoder, jsonPath + ".kind", json["kind"]);
+ }
+ List<String> referencedFiles;
+ if (json.containsKey("referencedFiles")) {
+ referencedFiles = jsonDecoder.decodeList(jsonPath + ".referencedFiles",
+ json["referencedFiles"], jsonDecoder.decodeString);
+ }
+ return new ExecutionLaunchDataParams(file,
+ kind: kind, referencedFiles: referencedFiles);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "execution.launchData params", json);
+ }
+ }
+
+ factory ExecutionLaunchDataParams.fromNotification(
+ Notification notification) {
+ return new ExecutionLaunchDataParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ if (kind != null) {
+ result["kind"] = kind.toJson();
+ }
+ if (referencedFiles != null) {
+ result["referencedFiles"] = referencedFiles;
+ }
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("execution.launchData", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionLaunchDataParams) {
+ return file == other.file &&
+ kind == other.kind &&
+ listEqual(referencedFiles, other.referencedFiles,
+ (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, kind.hashCode);
+ hash = JenkinsSmiHash.combine(hash, referencedFiles.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.mapUri params
+ *
+ * {
+ * "id": ExecutionContextId
+ * "file": optional FilePath
+ * "uri": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionMapUriParams implements RequestParams {
+ String _id;
+
+ String _file;
+
+ String _uri;
+
+ /**
+ * The identifier of the execution context in which the URI is to be mapped.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier of the execution context in which the URI is to be mapped.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ /**
+ * The path of the file to be mapped into a URI.
+ */
+ String get file => _file;
+
+ /**
+ * The path of the file to be mapped into a URI.
+ */
+ void set file(String value) {
+ this._file = value;
+ }
+
+ /**
+ * The URI to be mapped into a file path.
+ */
+ String get uri => _uri;
+
+ /**
+ * The URI to be mapped into a file path.
+ */
+ void set uri(String value) {
+ this._uri = value;
+ }
+
+ ExecutionMapUriParams(String id, {String file, String uri}) {
+ this.id = id;
+ this.file = file;
+ this.uri = uri;
+ }
+
+ factory ExecutionMapUriParams.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ String file;
+ if (json.containsKey("file")) {
+ file = jsonDecoder.decodeString(jsonPath + ".file", json["file"]);
+ }
+ String uri;
+ if (json.containsKey("uri")) {
+ uri = jsonDecoder.decodeString(jsonPath + ".uri", json["uri"]);
+ }
+ return new ExecutionMapUriParams(id, file: file, uri: uri);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "execution.mapUri params", json);
+ }
+ }
+
+ factory ExecutionMapUriParams.fromRequest(Request request) {
+ return new ExecutionMapUriParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ if (file != null) {
+ result["file"] = file;
+ }
+ if (uri != null) {
+ result["uri"] = uri;
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "execution.mapUri", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionMapUriParams) {
+ return id == other.id && file == other.file && uri == other.uri;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, uri.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.mapUri result
+ *
+ * {
+ * "file": optional FilePath
+ * "uri": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionMapUriResult implements ResponseResult {
+ String _file;
+
+ String _uri;
+
+ /**
+ * The file to which the URI was mapped. This field is omitted if the uri
+ * field was not given in the request.
+ */
+ String get file => _file;
+
+ /**
+ * The file to which the URI was mapped. This field is omitted if the uri
+ * field was not given in the request.
+ */
+ void set file(String value) {
+ this._file = value;
+ }
+
+ /**
+ * The URI to which the file path was mapped. This field is omitted if the
+ * file field was not given in the request.
+ */
+ String get uri => _uri;
+
+ /**
+ * The URI to which the file path was mapped. This field is omitted if the
+ * file field was not given in the request.
+ */
+ void set uri(String value) {
+ this._uri = value;
+ }
+
+ ExecutionMapUriResult({String file, String uri}) {
+ this.file = file;
+ this.uri = uri;
+ }
+
+ factory ExecutionMapUriResult.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"]);
+ }
+ String uri;
+ if (json.containsKey("uri")) {
+ uri = jsonDecoder.decodeString(jsonPath + ".uri", json["uri"]);
+ }
+ return new ExecutionMapUriResult(file: file, uri: uri);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "execution.mapUri result", json);
+ }
+ }
+
+ factory ExecutionMapUriResult.fromResponse(Response response) {
+ return new ExecutionMapUriResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (file != null) {
+ result["file"] = file;
+ }
+ if (uri != null) {
+ result["uri"] = uri;
+ }
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionMapUriResult) {
+ return file == other.file && uri == other.uri;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, uri.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ExecutionService
+ *
+ * enum {
+ * LAUNCH_DATA
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionService implements Enum {
+ static const ExecutionService LAUNCH_DATA =
+ const ExecutionService._("LAUNCH_DATA");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<ExecutionService> VALUES = const <ExecutionService>[
+ LAUNCH_DATA
+ ];
+
+ @override
+ final String name;
+
+ const ExecutionService._(this.name);
+
+ factory ExecutionService(String name) {
+ switch (name) {
+ case "LAUNCH_DATA":
+ return LAUNCH_DATA;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory ExecutionService.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new ExecutionService(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "ExecutionService", json);
+ }
+
+ @override
+ String toString() => "ExecutionService.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * execution.setSubscriptions params
+ *
+ * {
+ * "subscriptions": List<ExecutionService>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionSetSubscriptionsParams implements RequestParams {
+ List<ExecutionService> _subscriptions;
+
+ /**
+ * A list of the services being subscribed to.
+ */
+ List<ExecutionService> get subscriptions => _subscriptions;
+
+ /**
+ * A list of the services being subscribed to.
+ */
+ void set subscriptions(List<ExecutionService> value) {
+ assert(value != null);
+ this._subscriptions = value;
+ }
+
+ ExecutionSetSubscriptionsParams(List<ExecutionService> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+ factory ExecutionSetSubscriptionsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<ExecutionService> subscriptions;
+ if (json.containsKey("subscriptions")) {
+ subscriptions = jsonDecoder.decodeList(
+ jsonPath + ".subscriptions",
+ json["subscriptions"],
+ (String jsonPath, Object json) =>
+ new ExecutionService.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "subscriptions");
+ }
+ return new ExecutionSetSubscriptionsParams(subscriptions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "execution.setSubscriptions params", json);
+ }
+ }
+
+ factory ExecutionSetSubscriptionsParams.fromRequest(Request request) {
+ return new ExecutionSetSubscriptionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["subscriptions"] =
+ subscriptions.map((ExecutionService value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "execution.setSubscriptions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionSetSubscriptionsParams) {
+ return listEqual(subscriptions, other.subscriptions,
+ (ExecutionService a, ExecutionService b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, subscriptions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * execution.setSubscriptions result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExecutionSetSubscriptionsResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is ExecutionSetSubscriptionsResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 287678780;
+ }
+}
+
+/**
+ * extractLocalVariable feedback
+ *
+ * {
+ * "coveringExpressionOffsets": optional List<int>
+ * "coveringExpressionLengths": optional List<int>
+ * "names": List<String>
+ * "offsets": List<int>
+ * "lengths": List<int>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExtractLocalVariableFeedback extends RefactoringFeedback {
+ List<int> _coveringExpressionOffsets;
+
+ List<int> _coveringExpressionLengths;
+
+ List<String> _names;
+
+ List<int> _offsets;
+
+ List<int> _lengths;
+
+ /**
+ * The offsets of the expressions that cover the specified selection, from
+ * the down most to the up most.
+ */
+ List<int> get coveringExpressionOffsets => _coveringExpressionOffsets;
+
+ /**
+ * The offsets of the expressions that cover the specified selection, from
+ * the down most to the up most.
+ */
+ void set coveringExpressionOffsets(List<int> value) {
+ this._coveringExpressionOffsets = value;
+ }
+
+ /**
+ * The lengths of the expressions that cover the specified selection, from
+ * the down most to the up most.
+ */
+ List<int> get coveringExpressionLengths => _coveringExpressionLengths;
+
+ /**
+ * The lengths of the expressions that cover the specified selection, from
+ * the down most to the up most.
+ */
+ void set coveringExpressionLengths(List<int> value) {
+ this._coveringExpressionLengths = value;
+ }
+
+ /**
+ * The proposed names for the local variable.
+ */
+ List<String> get names => _names;
+
+ /**
+ * The proposed names for the local variable.
+ */
+ void set names(List<String> value) {
+ assert(value != null);
+ this._names = value;
+ }
+
+ /**
+ * The offsets of the expressions that would be replaced by a reference to
+ * the variable.
+ */
+ List<int> get offsets => _offsets;
+
+ /**
+ * The offsets of the expressions that would be replaced by a reference to
+ * the variable.
+ */
+ void set offsets(List<int> value) {
+ assert(value != null);
+ this._offsets = value;
+ }
+
+ /**
+ * The lengths of the expressions that would be replaced by a reference to
+ * the variable. The lengths correspond to the offsets. In other words, for a
+ * given expression, if the offset of that expression is offsets[i], then the
+ * length of that expression is lengths[i].
+ */
+ List<int> get lengths => _lengths;
+
+ /**
+ * The lengths of the expressions that would be replaced by a reference to
+ * the variable. The lengths correspond to the offsets. In other words, for a
+ * given expression, if the offset of that expression is offsets[i], then the
+ * length of that expression is lengths[i].
+ */
+ void set lengths(List<int> value) {
+ assert(value != null);
+ this._lengths = value;
+ }
+
+ ExtractLocalVariableFeedback(
+ List<String> names, List<int> offsets, List<int> lengths,
+ {List<int> coveringExpressionOffsets,
+ List<int> coveringExpressionLengths}) {
+ this.coveringExpressionOffsets = coveringExpressionOffsets;
+ this.coveringExpressionLengths = coveringExpressionLengths;
+ this.names = names;
+ this.offsets = offsets;
+ this.lengths = lengths;
+ }
+
+ factory ExtractLocalVariableFeedback.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<int> coveringExpressionOffsets;
+ if (json.containsKey("coveringExpressionOffsets")) {
+ coveringExpressionOffsets = jsonDecoder.decodeList(
+ jsonPath + ".coveringExpressionOffsets",
+ json["coveringExpressionOffsets"],
+ jsonDecoder.decodeInt);
+ }
+ List<int> coveringExpressionLengths;
+ if (json.containsKey("coveringExpressionLengths")) {
+ coveringExpressionLengths = jsonDecoder.decodeList(
+ jsonPath + ".coveringExpressionLengths",
+ json["coveringExpressionLengths"],
+ jsonDecoder.decodeInt);
+ }
+ List<String> names;
+ if (json.containsKey("names")) {
+ names = jsonDecoder.decodeList(
+ jsonPath + ".names", json["names"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "names");
+ }
+ List<int> offsets;
+ if (json.containsKey("offsets")) {
+ offsets = jsonDecoder.decodeList(
+ jsonPath + ".offsets", json["offsets"], jsonDecoder.decodeInt);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "offsets");
+ }
+ List<int> lengths;
+ if (json.containsKey("lengths")) {
+ lengths = jsonDecoder.decodeList(
+ jsonPath + ".lengths", json["lengths"], jsonDecoder.decodeInt);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "lengths");
+ }
+ return new ExtractLocalVariableFeedback(names, offsets, lengths,
+ coveringExpressionOffsets: coveringExpressionOffsets,
+ coveringExpressionLengths: coveringExpressionLengths);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "extractLocalVariable feedback", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (coveringExpressionOffsets != null) {
+ result["coveringExpressionOffsets"] = coveringExpressionOffsets;
+ }
+ if (coveringExpressionLengths != null) {
+ result["coveringExpressionLengths"] = coveringExpressionLengths;
+ }
+ result["names"] = names;
+ result["offsets"] = offsets;
+ result["lengths"] = lengths;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExtractLocalVariableFeedback) {
+ return listEqual(coveringExpressionOffsets,
+ other.coveringExpressionOffsets, (int a, int b) => a == b) &&
+ listEqual(coveringExpressionLengths, other.coveringExpressionLengths,
+ (int a, int b) => a == b) &&
+ listEqual(names, other.names, (String a, String b) => a == b) &&
+ listEqual(offsets, other.offsets, (int a, int b) => a == b) &&
+ listEqual(lengths, other.lengths, (int a, int b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, coveringExpressionOffsets.hashCode);
+ hash = JenkinsSmiHash.combine(hash, coveringExpressionLengths.hashCode);
+ hash = JenkinsSmiHash.combine(hash, names.hashCode);
+ hash = JenkinsSmiHash.combine(hash, offsets.hashCode);
+ hash = JenkinsSmiHash.combine(hash, lengths.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * extractLocalVariable options
+ *
+ * {
+ * "name": String
+ * "extractAll": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExtractLocalVariableOptions extends RefactoringOptions {
+ String _name;
+
+ bool _extractAll;
+
+ /**
+ * The name that the local variable should be given.
+ */
+ String get name => _name;
+
+ /**
+ * The name that the local variable should be given.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * True if all occurrences of the expression within the scope in which the
+ * variable will be defined should be replaced by a reference to the local
+ * variable. The expression used to initiate the refactoring will always be
+ * replaced.
+ */
+ bool get extractAll => _extractAll;
+
+ /**
+ * True if all occurrences of the expression within the scope in which the
+ * variable will be defined should be replaced by a reference to the local
+ * variable. The expression used to initiate the refactoring will always be
+ * replaced.
+ */
+ void set extractAll(bool value) {
+ assert(value != null);
+ this._extractAll = value;
+ }
+
+ ExtractLocalVariableOptions(String name, bool extractAll) {
+ this.name = name;
+ this.extractAll = extractAll;
+ }
+
+ factory ExtractLocalVariableOptions.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ bool extractAll;
+ if (json.containsKey("extractAll")) {
+ extractAll = jsonDecoder.decodeBool(
+ jsonPath + ".extractAll", json["extractAll"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "extractAll");
+ }
+ return new ExtractLocalVariableOptions(name, extractAll);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "extractLocalVariable options", json);
+ }
+ }
+
+ factory ExtractLocalVariableOptions.fromRefactoringParams(
+ EditGetRefactoringParams refactoringParams, Request request) {
+ return new ExtractLocalVariableOptions.fromJson(
+ new RequestDecoder(request), "options", refactoringParams.options);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["extractAll"] = extractAll;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExtractLocalVariableOptions) {
+ return name == other.name && extractAll == other.extractAll;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, extractAll.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * extractMethod feedback
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * "returnType": String
+ * "names": List<String>
+ * "canCreateGetter": bool
+ * "parameters": List<RefactoringMethodParameter>
+ * "offsets": List<int>
+ * "lengths": List<int>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExtractMethodFeedback extends RefactoringFeedback {
+ int _offset;
+
+ int _length;
+
+ String _returnType;
+
+ List<String> _names;
+
+ bool _canCreateGetter;
+
+ List<RefactoringMethodParameter> _parameters;
+
+ List<int> _offsets;
+
+ List<int> _lengths;
+
+ /**
+ * The offset to the beginning of the expression or statements that will be
+ * extracted.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset to the beginning of the expression or statements that will be
+ * extracted.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the expression or statements that will be extracted.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the expression or statements that will be extracted.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * The proposed return type for the method. If the returned element does not
+ * have a declared return type, this field will contain an empty string.
+ */
+ String get returnType => _returnType;
+
+ /**
+ * The proposed return type for the method. If the returned element does not
+ * have a declared return type, this field will contain an empty string.
+ */
+ void set returnType(String value) {
+ assert(value != null);
+ this._returnType = value;
+ }
+
+ /**
+ * The proposed names for the method.
+ */
+ List<String> get names => _names;
+
+ /**
+ * The proposed names for the method.
+ */
+ void set names(List<String> value) {
+ assert(value != null);
+ this._names = value;
+ }
+
+ /**
+ * True if a getter could be created rather than a method.
+ */
+ bool get canCreateGetter => _canCreateGetter;
+
+ /**
+ * True if a getter could be created rather than a method.
+ */
+ void set canCreateGetter(bool value) {
+ assert(value != null);
+ this._canCreateGetter = value;
+ }
+
+ /**
+ * The proposed parameters for the method.
+ */
+ List<RefactoringMethodParameter> get parameters => _parameters;
+
+ /**
+ * The proposed parameters for the method.
+ */
+ void set parameters(List<RefactoringMethodParameter> value) {
+ assert(value != null);
+ this._parameters = value;
+ }
+
+ /**
+ * The offsets of the expressions or statements that would be replaced by an
+ * invocation of the method.
+ */
+ List<int> get offsets => _offsets;
+
+ /**
+ * The offsets of the expressions or statements that would be replaced by an
+ * invocation of the method.
+ */
+ void set offsets(List<int> value) {
+ assert(value != null);
+ this._offsets = value;
+ }
+
+ /**
+ * The lengths of the expressions or statements that would be replaced by an
+ * invocation of the method. The lengths correspond to the offsets. In other
+ * words, for a given expression (or block of statements), if the offset of
+ * that expression is offsets[i], then the length of that expression is
+ * lengths[i].
+ */
+ List<int> get lengths => _lengths;
+
+ /**
+ * The lengths of the expressions or statements that would be replaced by an
+ * invocation of the method. The lengths correspond to the offsets. In other
+ * words, for a given expression (or block of statements), if the offset of
+ * that expression is offsets[i], then the length of that expression is
+ * lengths[i].
+ */
+ void set lengths(List<int> value) {
+ assert(value != null);
+ this._lengths = value;
+ }
+
+ ExtractMethodFeedback(
+ int offset,
+ int length,
+ String returnType,
+ List<String> names,
+ bool canCreateGetter,
+ List<RefactoringMethodParameter> parameters,
+ List<int> offsets,
+ List<int> lengths) {
+ this.offset = offset;
+ this.length = length;
+ this.returnType = returnType;
+ this.names = names;
+ this.canCreateGetter = canCreateGetter;
+ this.parameters = parameters;
+ this.offsets = offsets;
+ this.lengths = lengths;
+ }
+
+ factory ExtractMethodFeedback.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 returnType;
+ if (json.containsKey("returnType")) {
+ returnType = jsonDecoder.decodeString(
+ jsonPath + ".returnType", json["returnType"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "returnType");
+ }
+ List<String> names;
+ if (json.containsKey("names")) {
+ names = jsonDecoder.decodeList(
+ jsonPath + ".names", json["names"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "names");
+ }
+ bool canCreateGetter;
+ if (json.containsKey("canCreateGetter")) {
+ canCreateGetter = jsonDecoder.decodeBool(
+ jsonPath + ".canCreateGetter", json["canCreateGetter"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "canCreateGetter");
+ }
+ List<RefactoringMethodParameter> parameters;
+ if (json.containsKey("parameters")) {
+ parameters = jsonDecoder.decodeList(
+ jsonPath + ".parameters",
+ json["parameters"],
+ (String jsonPath, Object json) =>
+ new RefactoringMethodParameter.fromJson(
+ jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "parameters");
+ }
+ List<int> offsets;
+ if (json.containsKey("offsets")) {
+ offsets = jsonDecoder.decodeList(
+ jsonPath + ".offsets", json["offsets"], jsonDecoder.decodeInt);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "offsets");
+ }
+ List<int> lengths;
+ if (json.containsKey("lengths")) {
+ lengths = jsonDecoder.decodeList(
+ jsonPath + ".lengths", json["lengths"], jsonDecoder.decodeInt);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "lengths");
+ }
+ return new ExtractMethodFeedback(offset, length, returnType, names,
+ canCreateGetter, parameters, offsets, lengths);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "extractMethod feedback", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ result["returnType"] = returnType;
+ result["names"] = names;
+ result["canCreateGetter"] = canCreateGetter;
+ result["parameters"] = parameters
+ .map((RefactoringMethodParameter value) => value.toJson())
+ .toList();
+ result["offsets"] = offsets;
+ result["lengths"] = lengths;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExtractMethodFeedback) {
+ return offset == other.offset &&
+ length == other.length &&
+ returnType == other.returnType &&
+ listEqual(names, other.names, (String a, String b) => a == b) &&
+ canCreateGetter == other.canCreateGetter &&
+ listEqual(
+ parameters,
+ other.parameters,
+ (RefactoringMethodParameter a, RefactoringMethodParameter b) =>
+ a == b) &&
+ listEqual(offsets, other.offsets, (int a, int b) => a == b) &&
+ listEqual(lengths, other.lengths, (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, returnType.hashCode);
+ hash = JenkinsSmiHash.combine(hash, names.hashCode);
+ hash = JenkinsSmiHash.combine(hash, canCreateGetter.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parameters.hashCode);
+ hash = JenkinsSmiHash.combine(hash, offsets.hashCode);
+ hash = JenkinsSmiHash.combine(hash, lengths.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * extractMethod options
+ *
+ * {
+ * "returnType": String
+ * "createGetter": bool
+ * "name": String
+ * "parameters": List<RefactoringMethodParameter>
+ * "extractAll": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExtractMethodOptions extends RefactoringOptions {
+ String _returnType;
+
+ bool _createGetter;
+
+ String _name;
+
+ List<RefactoringMethodParameter> _parameters;
+
+ bool _extractAll;
+
+ /**
+ * The return type that should be defined for the method.
+ */
+ String get returnType => _returnType;
+
+ /**
+ * The return type that should be defined for the method.
+ */
+ void set returnType(String value) {
+ assert(value != null);
+ this._returnType = value;
+ }
+
+ /**
+ * True if a getter should be created rather than a method. It is an error if
+ * this field is true and the list of parameters is non-empty.
+ */
+ bool get createGetter => _createGetter;
+
+ /**
+ * True if a getter should be created rather than a method. It is an error if
+ * this field is true and the list of parameters is non-empty.
+ */
+ void set createGetter(bool value) {
+ assert(value != null);
+ this._createGetter = value;
+ }
+
+ /**
+ * The name that the method should be given.
+ */
+ String get name => _name;
+
+ /**
+ * The name that the method should be given.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * The parameters that should be defined for the method.
+ *
+ * It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL
+ * parameter. It is an error if a REQUIRED or POSITIONAL parameter follows a
+ * NAMED parameter.
+ *
+ * - To change the order and/or update proposed parameters, add parameters
+ * with the same identifiers as proposed.
+ * - To add new parameters, omit their identifier.
+ * - To remove some parameters, omit them in this list.
+ */
+ List<RefactoringMethodParameter> get parameters => _parameters;
+
+ /**
+ * The parameters that should be defined for the method.
+ *
+ * It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL
+ * parameter. It is an error if a REQUIRED or POSITIONAL parameter follows a
+ * NAMED parameter.
+ *
+ * - To change the order and/or update proposed parameters, add parameters
+ * with the same identifiers as proposed.
+ * - To add new parameters, omit their identifier.
+ * - To remove some parameters, omit them in this list.
+ */
+ void set parameters(List<RefactoringMethodParameter> value) {
+ assert(value != null);
+ this._parameters = value;
+ }
+
+ /**
+ * True if all occurrences of the expression or statements should be replaced
+ * by an invocation of the method. The expression or statements used to
+ * initiate the refactoring will always be replaced.
+ */
+ bool get extractAll => _extractAll;
+
+ /**
+ * True if all occurrences of the expression or statements should be replaced
+ * by an invocation of the method. The expression or statements used to
+ * initiate the refactoring will always be replaced.
+ */
+ void set extractAll(bool value) {
+ assert(value != null);
+ this._extractAll = value;
+ }
+
+ ExtractMethodOptions(String returnType, bool createGetter, String name,
+ List<RefactoringMethodParameter> parameters, bool extractAll) {
+ this.returnType = returnType;
+ this.createGetter = createGetter;
+ this.name = name;
+ this.parameters = parameters;
+ this.extractAll = extractAll;
+ }
+
+ factory ExtractMethodOptions.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String returnType;
+ if (json.containsKey("returnType")) {
+ returnType = jsonDecoder.decodeString(
+ jsonPath + ".returnType", json["returnType"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "returnType");
+ }
+ bool createGetter;
+ if (json.containsKey("createGetter")) {
+ createGetter = jsonDecoder.decodeBool(
+ jsonPath + ".createGetter", json["createGetter"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "createGetter");
+ }
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ List<RefactoringMethodParameter> parameters;
+ if (json.containsKey("parameters")) {
+ parameters = jsonDecoder.decodeList(
+ jsonPath + ".parameters",
+ json["parameters"],
+ (String jsonPath, Object json) =>
+ new RefactoringMethodParameter.fromJson(
+ jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "parameters");
+ }
+ bool extractAll;
+ if (json.containsKey("extractAll")) {
+ extractAll = jsonDecoder.decodeBool(
+ jsonPath + ".extractAll", json["extractAll"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "extractAll");
+ }
+ return new ExtractMethodOptions(
+ returnType, createGetter, name, parameters, extractAll);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "extractMethod options", json);
+ }
+ }
+
+ factory ExtractMethodOptions.fromRefactoringParams(
+ EditGetRefactoringParams refactoringParams, Request request) {
+ return new ExtractMethodOptions.fromJson(
+ new RequestDecoder(request), "options", refactoringParams.options);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["returnType"] = returnType;
+ result["createGetter"] = createGetter;
+ result["name"] = name;
+ result["parameters"] = parameters
+ .map((RefactoringMethodParameter value) => value.toJson())
+ .toList();
+ result["extractAll"] = extractAll;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExtractMethodOptions) {
+ return returnType == other.returnType &&
+ createGetter == other.createGetter &&
+ name == other.name &&
+ listEqual(
+ parameters,
+ other.parameters,
+ (RefactoringMethodParameter a, RefactoringMethodParameter b) =>
+ a == b) &&
+ extractAll == other.extractAll;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, returnType.hashCode);
+ hash = JenkinsSmiHash.combine(hash, createGetter.hashCode);
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parameters.hashCode);
+ hash = JenkinsSmiHash.combine(hash, extractAll.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * extractWidget feedback
+ *
+ * {
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExtractWidgetFeedback extends RefactoringFeedback {
+ ExtractWidgetFeedback();
+
+ factory ExtractWidgetFeedback.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ return new ExtractWidgetFeedback();
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "extractWidget feedback", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExtractWidgetFeedback) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * extractWidget options
+ *
+ * {
+ * "name": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ExtractWidgetOptions extends RefactoringOptions {
+ String _name;
+
+ /**
+ * The name that the widget class should be given.
+ */
+ String get name => _name;
+
+ /**
+ * The name that the widget class should be given.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ ExtractWidgetOptions(String name) {
+ this.name = name;
+ }
+
+ factory ExtractWidgetOptions.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ return new ExtractWidgetOptions(name);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "extractWidget options", json);
+ }
+ }
+
+ factory ExtractWidgetOptions.fromRefactoringParams(
+ EditGetRefactoringParams refactoringParams, Request request) {
+ return new ExtractWidgetOptions.fromJson(
+ new RequestDecoder(request), "options", refactoringParams.options);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ExtractWidgetOptions) {
+ return name == other.name;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * FileKind
+ *
+ * enum {
+ * LIBRARY
+ * PART
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FileKind implements Enum {
+ static const FileKind LIBRARY = const FileKind._("LIBRARY");
+
+ static const FileKind PART = const FileKind._("PART");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<FileKind> VALUES = const <FileKind>[LIBRARY, PART];
+
+ @override
+ final String name;
+
+ const FileKind._(this.name);
+
+ factory FileKind(String name) {
+ switch (name) {
+ case "LIBRARY":
+ return LIBRARY;
+ case "PART":
+ return PART;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory FileKind.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new FileKind(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "FileKind", json);
+ }
+
+ @override
+ String toString() => "FileKind.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * flutter.getChangeAddForDesignTimeConstructor params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterGetChangeAddForDesignTimeConstructorParams
+ implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ /**
+ * The file containing the code of the class.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the code of the class.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the class in the code.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the class in the code.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ FlutterGetChangeAddForDesignTimeConstructorParams(String file, int offset) {
+ this.file = file;
+ this.offset = offset;
+ }
+
+ factory FlutterGetChangeAddForDesignTimeConstructorParams.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 FlutterGetChangeAddForDesignTimeConstructorParams(
+ file, offset);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath,
+ "flutter.getChangeAddForDesignTimeConstructor params", json);
+ }
+ }
+
+ factory FlutterGetChangeAddForDesignTimeConstructorParams.fromRequest(
+ Request request) {
+ return new FlutterGetChangeAddForDesignTimeConstructorParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(
+ id, "flutter.getChangeAddForDesignTimeConstructor", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is FlutterGetChangeAddForDesignTimeConstructorParams) {
+ 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);
+ }
+}
+
+/**
+ * flutter.getChangeAddForDesignTimeConstructor result
+ *
+ * {
+ * "change": SourceChange
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterGetChangeAddForDesignTimeConstructorResult
+ implements ResponseResult {
+ SourceChange _change;
+
+ /**
+ * The change that adds the forDesignTime() constructor. If the change cannot
+ * be produced, an error is returned.
+ */
+ SourceChange get change => _change;
+
+ /**
+ * The change that adds the forDesignTime() constructor. If the change cannot
+ * be produced, an error is returned.
+ */
+ void set change(SourceChange value) {
+ assert(value != null);
+ this._change = value;
+ }
+
+ FlutterGetChangeAddForDesignTimeConstructorResult(SourceChange change) {
+ this.change = change;
+ }
+
+ factory FlutterGetChangeAddForDesignTimeConstructorResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ SourceChange change;
+ if (json.containsKey("change")) {
+ change = new SourceChange.fromJson(
+ jsonDecoder, jsonPath + ".change", json["change"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "change");
+ }
+ return new FlutterGetChangeAddForDesignTimeConstructorResult(change);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath,
+ "flutter.getChangeAddForDesignTimeConstructor result", json);
+ }
+ }
+
+ factory FlutterGetChangeAddForDesignTimeConstructorResult.fromResponse(
+ Response response) {
+ return new FlutterGetChangeAddForDesignTimeConstructorResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["change"] = change.toJson();
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is FlutterGetChangeAddForDesignTimeConstructorResult) {
+ return change == other.change;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, change.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * FlutterOutline
+ *
+ * {
+ * "kind": FlutterOutlineKind
+ * "offset": int
+ * "length": int
+ * "codeOffset": int
+ * "codeLength": int
+ * "label": optional String
+ * "dartElement": optional Element
+ * "attributes": optional List<FlutterOutlineAttribute>
+ * "className": optional String
+ * "parentAssociationLabel": optional String
+ * "variableName": optional String
+ * "children": optional List<FlutterOutline>
+ * "id": optional int
+ * "isWidgetClass": optional bool
+ * "renderConstructor": optional String
+ * "stateClassName": optional String
+ * "stateOffset": optional int
+ * "stateLength": optional int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterOutline implements HasToJson {
+ FlutterOutlineKind _kind;
+
+ int _offset;
+
+ int _length;
+
+ int _codeOffset;
+
+ int _codeLength;
+
+ String _label;
+
+ Element _dartElement;
+
+ List<FlutterOutlineAttribute> _attributes;
+
+ String _className;
+
+ String _parentAssociationLabel;
+
+ String _variableName;
+
+ List<FlutterOutline> _children;
+
+ int _id;
+
+ bool _isWidgetClass;
+
+ String _renderConstructor;
+
+ String _stateClassName;
+
+ int _stateOffset;
+
+ int _stateLength;
+
+ /**
+ * The kind of the node.
+ */
+ FlutterOutlineKind get kind => _kind;
+
+ /**
+ * The kind of the node.
+ */
+ void set kind(FlutterOutlineKind value) {
+ assert(value != null);
+ this._kind = 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 text label of the node children of the node. It is provided for any
+ * FlutterOutlineKind.GENERIC node, where better information is not
+ * available.
+ */
+ String get label => _label;
+
+ /**
+ * The text label of the node children of the node. It is provided for any
+ * FlutterOutlineKind.GENERIC node, where better information is not
+ * available.
+ */
+ void set label(String value) {
+ this._label = value;
+ }
+
+ /**
+ * If this node is a Dart element, the description of it; omitted otherwise.
+ */
+ Element get dartElement => _dartElement;
+
+ /**
+ * If this node is a Dart element, the description of it; omitted otherwise.
+ */
+ void set dartElement(Element value) {
+ this._dartElement = value;
+ }
+
+ /**
+ * Additional attributes for this node, which might be interesting to display
+ * on the client. These attributes are usually arguments for the instance
+ * creation or the invocation that created the widget.
+ */
+ List<FlutterOutlineAttribute> get attributes => _attributes;
+
+ /**
+ * Additional attributes for this node, which might be interesting to display
+ * on the client. These attributes are usually arguments for the instance
+ * creation or the invocation that created the widget.
+ */
+ void set attributes(List<FlutterOutlineAttribute> value) {
+ this._attributes = value;
+ }
+
+ /**
+ * If the node creates a new class instance, or a reference to an instance,
+ * this field has the name of the class.
+ */
+ String get className => _className;
+
+ /**
+ * If the node creates a new class instance, or a reference to an instance,
+ * this field has the name of the class.
+ */
+ void set className(String value) {
+ this._className = value;
+ }
+
+ /**
+ * A short text description how this node is associated with the parent node.
+ * For example "appBar" or "body" in Scaffold.
+ */
+ String get parentAssociationLabel => _parentAssociationLabel;
+
+ /**
+ * A short text description how this node is associated with the parent node.
+ * For example "appBar" or "body" in Scaffold.
+ */
+ void set parentAssociationLabel(String value) {
+ this._parentAssociationLabel = value;
+ }
+
+ /**
+ * If FlutterOutlineKind.VARIABLE, the name of the variable.
+ */
+ String get variableName => _variableName;
+
+ /**
+ * If FlutterOutlineKind.VARIABLE, the name of the variable.
+ */
+ void set variableName(String value) {
+ this._variableName = value;
+ }
+
+ /**
+ * The children of the node. The field will be omitted if the node has no
+ * children.
+ */
+ List<FlutterOutline> get children => _children;
+
+ /**
+ * The children of the node. The field will be omitted if the node has no
+ * children.
+ */
+ void set children(List<FlutterOutline> value) {
+ this._children = value;
+ }
+
+ /**
+ * If the node is a widget, and it is instrumented, the unique identifier of
+ * this widget, that can be used to associate rendering information with this
+ * node.
+ */
+ int get id => _id;
+
+ /**
+ * If the node is a widget, and it is instrumented, the unique identifier of
+ * this widget, that can be used to associate rendering information with this
+ * node.
+ */
+ void set id(int value) {
+ this._id = value;
+ }
+
+ /**
+ * True if the node is a widget class, so it can potentially be rendered,
+ * even if it does not yet have the rendering constructor. This field is
+ * omitted if the node is not a widget class.
+ */
+ bool get isWidgetClass => _isWidgetClass;
+
+ /**
+ * True if the node is a widget class, so it can potentially be rendered,
+ * even if it does not yet have the rendering constructor. This field is
+ * omitted if the node is not a widget class.
+ */
+ void set isWidgetClass(bool value) {
+ this._isWidgetClass = value;
+ }
+
+ /**
+ * If the node is a widget class that can be rendered for IDE, the name of
+ * the constructor that should be used to instantiate the widget. Empty
+ * string for default constructor. Absent if the node is not a widget class
+ * that can be rendered.
+ */
+ String get renderConstructor => _renderConstructor;
+
+ /**
+ * If the node is a widget class that can be rendered for IDE, the name of
+ * the constructor that should be used to instantiate the widget. Empty
+ * string for default constructor. Absent if the node is not a widget class
+ * that can be rendered.
+ */
+ void set renderConstructor(String value) {
+ this._renderConstructor = value;
+ }
+
+ /**
+ * If the node is a StatefulWidget, and its state class is defined in the
+ * same file, the name of the state class.
+ */
+ String get stateClassName => _stateClassName;
+
+ /**
+ * If the node is a StatefulWidget, and its state class is defined in the
+ * same file, the name of the state class.
+ */
+ void set stateClassName(String value) {
+ this._stateClassName = value;
+ }
+
+ /**
+ * If the node is a StatefulWidget that can be rendered, and its state class
+ * is defined in the same file, the offset of the state class code in the
+ * file.
+ */
+ int get stateOffset => _stateOffset;
+
+ /**
+ * If the node is a StatefulWidget that can be rendered, and its state class
+ * is defined in the same file, the offset of the state class code in the
+ * file.
+ */
+ void set stateOffset(int value) {
+ this._stateOffset = value;
+ }
+
+ /**
+ * If the node is a StatefulWidget that can be rendered, and its state class
+ * is defined in the same file, the length of the state class code in the
+ * file.
+ */
+ int get stateLength => _stateLength;
+
+ /**
+ * If the node is a StatefulWidget that can be rendered, and its state class
+ * is defined in the same file, the length of the state class code in the
+ * file.
+ */
+ void set stateLength(int value) {
+ this._stateLength = value;
+ }
+
+ FlutterOutline(FlutterOutlineKind kind, int offset, int length,
+ int codeOffset, int codeLength,
+ {String label,
+ Element dartElement,
+ List<FlutterOutlineAttribute> attributes,
+ String className,
+ String parentAssociationLabel,
+ String variableName,
+ List<FlutterOutline> children,
+ int id,
+ bool isWidgetClass,
+ String renderConstructor,
+ String stateClassName,
+ int stateOffset,
+ int stateLength}) {
+ this.kind = kind;
+ this.offset = offset;
+ this.length = length;
+ this.codeOffset = codeOffset;
+ this.codeLength = codeLength;
+ this.label = label;
+ this.dartElement = dartElement;
+ this.attributes = attributes;
+ this.className = className;
+ this.parentAssociationLabel = parentAssociationLabel;
+ this.variableName = variableName;
+ this.children = children;
+ this.id = id;
+ this.isWidgetClass = isWidgetClass;
+ this.renderConstructor = renderConstructor;
+ this.stateClassName = stateClassName;
+ this.stateOffset = stateOffset;
+ this.stateLength = stateLength;
+ }
+
+ factory FlutterOutline.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ FlutterOutlineKind kind;
+ if (json.containsKey("kind")) {
+ kind = new FlutterOutlineKind.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");
+ }
+ 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");
+ }
+ String label;
+ if (json.containsKey("label")) {
+ label = jsonDecoder.decodeString(jsonPath + ".label", json["label"]);
+ }
+ Element dartElement;
+ if (json.containsKey("dartElement")) {
+ dartElement = new Element.fromJson(
+ jsonDecoder, jsonPath + ".dartElement", json["dartElement"]);
+ }
+ List<FlutterOutlineAttribute> attributes;
+ if (json.containsKey("attributes")) {
+ attributes = jsonDecoder.decodeList(
+ jsonPath + ".attributes",
+ json["attributes"],
+ (String jsonPath, Object json) =>
+ new FlutterOutlineAttribute.fromJson(
+ jsonDecoder, jsonPath, json));
+ }
+ String className;
+ if (json.containsKey("className")) {
+ className = jsonDecoder.decodeString(
+ jsonPath + ".className", json["className"]);
+ }
+ String parentAssociationLabel;
+ if (json.containsKey("parentAssociationLabel")) {
+ parentAssociationLabel = jsonDecoder.decodeString(
+ jsonPath + ".parentAssociationLabel",
+ json["parentAssociationLabel"]);
+ }
+ String variableName;
+ if (json.containsKey("variableName")) {
+ variableName = jsonDecoder.decodeString(
+ jsonPath + ".variableName", json["variableName"]);
+ }
+ List<FlutterOutline> children;
+ if (json.containsKey("children")) {
+ children = jsonDecoder.decodeList(
+ jsonPath + ".children",
+ json["children"],
+ (String jsonPath, Object json) =>
+ new FlutterOutline.fromJson(jsonDecoder, jsonPath, json));
+ }
+ int id;
+ if (json.containsKey("id")) {
+ id = jsonDecoder.decodeInt(jsonPath + ".id", json["id"]);
+ }
+ bool isWidgetClass;
+ if (json.containsKey("isWidgetClass")) {
+ isWidgetClass = jsonDecoder.decodeBool(
+ jsonPath + ".isWidgetClass", json["isWidgetClass"]);
+ }
+ String renderConstructor;
+ if (json.containsKey("renderConstructor")) {
+ renderConstructor = jsonDecoder.decodeString(
+ jsonPath + ".renderConstructor", json["renderConstructor"]);
+ }
+ String stateClassName;
+ if (json.containsKey("stateClassName")) {
+ stateClassName = jsonDecoder.decodeString(
+ jsonPath + ".stateClassName", json["stateClassName"]);
+ }
+ int stateOffset;
+ if (json.containsKey("stateOffset")) {
+ stateOffset = jsonDecoder.decodeInt(
+ jsonPath + ".stateOffset", json["stateOffset"]);
+ }
+ int stateLength;
+ if (json.containsKey("stateLength")) {
+ stateLength = jsonDecoder.decodeInt(
+ jsonPath + ".stateLength", json["stateLength"]);
+ }
+ return new FlutterOutline(kind, offset, length, codeOffset, codeLength,
+ label: label,
+ dartElement: dartElement,
+ attributes: attributes,
+ className: className,
+ parentAssociationLabel: parentAssociationLabel,
+ variableName: variableName,
+ children: children,
+ id: id,
+ isWidgetClass: isWidgetClass,
+ renderConstructor: renderConstructor,
+ stateClassName: stateClassName,
+ stateOffset: stateOffset,
+ stateLength: stateLength);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "FlutterOutline", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["kind"] = kind.toJson();
+ result["offset"] = offset;
+ result["length"] = length;
+ result["codeOffset"] = codeOffset;
+ result["codeLength"] = codeLength;
+ if (label != null) {
+ result["label"] = label;
+ }
+ if (dartElement != null) {
+ result["dartElement"] = dartElement.toJson();
+ }
+ if (attributes != null) {
+ result["attributes"] = attributes
+ .map((FlutterOutlineAttribute value) => value.toJson())
+ .toList();
+ }
+ if (className != null) {
+ result["className"] = className;
+ }
+ if (parentAssociationLabel != null) {
+ result["parentAssociationLabel"] = parentAssociationLabel;
+ }
+ if (variableName != null) {
+ result["variableName"] = variableName;
+ }
+ if (children != null) {
+ result["children"] =
+ children.map((FlutterOutline value) => value.toJson()).toList();
+ }
+ if (id != null) {
+ result["id"] = id;
+ }
+ if (isWidgetClass != null) {
+ result["isWidgetClass"] = isWidgetClass;
+ }
+ if (renderConstructor != null) {
+ result["renderConstructor"] = renderConstructor;
+ }
+ if (stateClassName != null) {
+ result["stateClassName"] = stateClassName;
+ }
+ if (stateOffset != null) {
+ result["stateOffset"] = stateOffset;
+ }
+ if (stateLength != null) {
+ result["stateLength"] = stateLength;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is FlutterOutline) {
+ return kind == other.kind &&
+ offset == other.offset &&
+ length == other.length &&
+ codeOffset == other.codeOffset &&
+ codeLength == other.codeLength &&
+ label == other.label &&
+ dartElement == other.dartElement &&
+ listEqual(
+ attributes,
+ other.attributes,
+ (FlutterOutlineAttribute a, FlutterOutlineAttribute b) =>
+ a == b) &&
+ className == other.className &&
+ parentAssociationLabel == other.parentAssociationLabel &&
+ variableName == other.variableName &&
+ listEqual(children, other.children,
+ (FlutterOutline a, FlutterOutline b) => a == b) &&
+ id == other.id &&
+ isWidgetClass == other.isWidgetClass &&
+ renderConstructor == other.renderConstructor &&
+ stateClassName == other.stateClassName &&
+ stateOffset == other.stateOffset &&
+ stateLength == other.stateLength;
+ }
+ 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);
+ hash = JenkinsSmiHash.combine(hash, codeOffset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, codeLength.hashCode);
+ hash = JenkinsSmiHash.combine(hash, label.hashCode);
+ hash = JenkinsSmiHash.combine(hash, dartElement.hashCode);
+ hash = JenkinsSmiHash.combine(hash, attributes.hashCode);
+ hash = JenkinsSmiHash.combine(hash, className.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parentAssociationLabel.hashCode);
+ hash = JenkinsSmiHash.combine(hash, variableName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, children.hashCode);
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ hash = JenkinsSmiHash.combine(hash, isWidgetClass.hashCode);
+ hash = JenkinsSmiHash.combine(hash, renderConstructor.hashCode);
+ hash = JenkinsSmiHash.combine(hash, stateClassName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, stateOffset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, stateLength.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * FlutterOutlineAttribute
+ *
+ * {
+ * "name": String
+ * "label": String
+ * "literalValueBoolean": optional bool
+ * "literalValueInteger": optional int
+ * "literalValueString": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterOutlineAttribute implements HasToJson {
+ String _name;
+
+ String _label;
+
+ bool _literalValueBoolean;
+
+ int _literalValueInteger;
+
+ String _literalValueString;
+
+ /**
+ * The name of the attribute.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the attribute.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * The label of the attribute value, usually the Dart code. It might be quite
+ * long, the client should abbreviate as needed.
+ */
+ String get label => _label;
+
+ /**
+ * The label of the attribute value, usually the Dart code. It might be quite
+ * long, the client should abbreviate as needed.
+ */
+ void set label(String value) {
+ assert(value != null);
+ this._label = value;
+ }
+
+ /**
+ * The boolean literal value of the attribute. This field is absent if the
+ * value is not a boolean literal.
+ */
+ bool get literalValueBoolean => _literalValueBoolean;
+
+ /**
+ * The boolean literal value of the attribute. This field is absent if the
+ * value is not a boolean literal.
+ */
+ void set literalValueBoolean(bool value) {
+ this._literalValueBoolean = value;
+ }
+
+ /**
+ * The integer literal value of the attribute. This field is absent if the
+ * value is not an integer literal.
+ */
+ int get literalValueInteger => _literalValueInteger;
+
+ /**
+ * The integer literal value of the attribute. This field is absent if the
+ * value is not an integer literal.
+ */
+ void set literalValueInteger(int value) {
+ this._literalValueInteger = value;
+ }
+
+ /**
+ * The string literal value of the attribute. This field is absent if the
+ * value is not a string literal.
+ */
+ String get literalValueString => _literalValueString;
+
+ /**
+ * The string literal value of the attribute. This field is absent if the
+ * value is not a string literal.
+ */
+ void set literalValueString(String value) {
+ this._literalValueString = value;
+ }
+
+ FlutterOutlineAttribute(String name, String label,
+ {bool literalValueBoolean,
+ int literalValueInteger,
+ String literalValueString}) {
+ this.name = name;
+ this.label = label;
+ this.literalValueBoolean = literalValueBoolean;
+ this.literalValueInteger = literalValueInteger;
+ this.literalValueString = literalValueString;
+ }
+
+ factory FlutterOutlineAttribute.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ String label;
+ if (json.containsKey("label")) {
+ label = jsonDecoder.decodeString(jsonPath + ".label", json["label"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "label");
+ }
+ bool literalValueBoolean;
+ if (json.containsKey("literalValueBoolean")) {
+ literalValueBoolean = jsonDecoder.decodeBool(
+ jsonPath + ".literalValueBoolean", json["literalValueBoolean"]);
+ }
+ int literalValueInteger;
+ if (json.containsKey("literalValueInteger")) {
+ literalValueInteger = jsonDecoder.decodeInt(
+ jsonPath + ".literalValueInteger", json["literalValueInteger"]);
+ }
+ String literalValueString;
+ if (json.containsKey("literalValueString")) {
+ literalValueString = jsonDecoder.decodeString(
+ jsonPath + ".literalValueString", json["literalValueString"]);
+ }
+ return new FlutterOutlineAttribute(name, label,
+ literalValueBoolean: literalValueBoolean,
+ literalValueInteger: literalValueInteger,
+ literalValueString: literalValueString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "FlutterOutlineAttribute", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["label"] = label;
+ if (literalValueBoolean != null) {
+ result["literalValueBoolean"] = literalValueBoolean;
+ }
+ if (literalValueInteger != null) {
+ result["literalValueInteger"] = literalValueInteger;
+ }
+ if (literalValueString != null) {
+ result["literalValueString"] = literalValueString;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is FlutterOutlineAttribute) {
+ return name == other.name &&
+ label == other.label &&
+ literalValueBoolean == other.literalValueBoolean &&
+ literalValueInteger == other.literalValueInteger &&
+ literalValueString == other.literalValueString;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, label.hashCode);
+ hash = JenkinsSmiHash.combine(hash, literalValueBoolean.hashCode);
+ hash = JenkinsSmiHash.combine(hash, literalValueInteger.hashCode);
+ hash = JenkinsSmiHash.combine(hash, literalValueString.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * FlutterOutlineKind
+ *
+ * enum {
+ * DART_ELEMENT
+ * GENERIC
+ * NEW_INSTANCE
+ * INVOCATION
+ * VARIABLE
+ * PLACEHOLDER
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterOutlineKind implements Enum {
+ /**
+ * A dart element declaration.
+ */
+ static const FlutterOutlineKind DART_ELEMENT =
+ const FlutterOutlineKind._("DART_ELEMENT");
+
+ /**
+ * A generic Flutter element, without additional information.
+ */
+ static const FlutterOutlineKind GENERIC =
+ const FlutterOutlineKind._("GENERIC");
+
+ /**
+ * A new instance creation.
+ */
+ static const FlutterOutlineKind NEW_INSTANCE =
+ const FlutterOutlineKind._("NEW_INSTANCE");
+
+ /**
+ * An invocation of a method, a top-level function, a function expression,
+ * etc.
+ */
+ static const FlutterOutlineKind INVOCATION =
+ const FlutterOutlineKind._("INVOCATION");
+
+ /**
+ * A reference to a local variable, or a field.
+ */
+ static const FlutterOutlineKind VARIABLE =
+ const FlutterOutlineKind._("VARIABLE");
+
+ /**
+ * The parent node has a required Widget. The node works as a placeholder
+ * child to drop a new Widget to.
+ */
+ static const FlutterOutlineKind PLACEHOLDER =
+ const FlutterOutlineKind._("PLACEHOLDER");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<FlutterOutlineKind> VALUES = const <FlutterOutlineKind>[
+ DART_ELEMENT,
+ GENERIC,
+ NEW_INSTANCE,
+ INVOCATION,
+ VARIABLE,
+ PLACEHOLDER
+ ];
+
+ @override
+ final String name;
+
+ const FlutterOutlineKind._(this.name);
+
+ factory FlutterOutlineKind(String name) {
+ switch (name) {
+ case "DART_ELEMENT":
+ return DART_ELEMENT;
+ case "GENERIC":
+ return GENERIC;
+ case "NEW_INSTANCE":
+ return NEW_INSTANCE;
+ case "INVOCATION":
+ return INVOCATION;
+ case "VARIABLE":
+ return VARIABLE;
+ case "PLACEHOLDER":
+ return PLACEHOLDER;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory FlutterOutlineKind.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new FlutterOutlineKind(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "FlutterOutlineKind", json);
+ }
+
+ @override
+ String toString() => "FlutterOutlineKind.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * flutter.outline params
+ *
+ * {
+ * "file": FilePath
+ * "outline": FlutterOutline
+ * "instrumentedCode": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterOutlineParams implements HasToJson {
+ String _file;
+
+ FlutterOutline _outline;
+
+ String _instrumentedCode;
+
+ /**
+ * The file with which the outline is associated.
+ */
+ String get file => _file;
+
+ /**
+ * The file with which the outline is associated.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The outline associated with the file.
+ */
+ FlutterOutline get outline => _outline;
+
+ /**
+ * The outline associated with the file.
+ */
+ void set outline(FlutterOutline value) {
+ assert(value != null);
+ this._outline = value;
+ }
+
+ /**
+ * If the file has Flutter widgets that can be rendered, this field has the
+ * instrumented content of the file, that allows associating widgets with
+ * corresponding outline nodes. If there are no widgets to render, this field
+ * is absent.
+ */
+ String get instrumentedCode => _instrumentedCode;
+
+ /**
+ * If the file has Flutter widgets that can be rendered, this field has the
+ * instrumented content of the file, that allows associating widgets with
+ * corresponding outline nodes. If there are no widgets to render, this field
+ * is absent.
+ */
+ void set instrumentedCode(String value) {
+ this._instrumentedCode = value;
+ }
+
+ FlutterOutlineParams(String file, FlutterOutline outline,
+ {String instrumentedCode}) {
+ this.file = file;
+ this.outline = outline;
+ this.instrumentedCode = instrumentedCode;
+ }
+
+ factory FlutterOutlineParams.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");
+ }
+ FlutterOutline outline;
+ if (json.containsKey("outline")) {
+ outline = new FlutterOutline.fromJson(
+ jsonDecoder, jsonPath + ".outline", json["outline"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "outline");
+ }
+ String instrumentedCode;
+ if (json.containsKey("instrumentedCode")) {
+ instrumentedCode = jsonDecoder.decodeString(
+ jsonPath + ".instrumentedCode", json["instrumentedCode"]);
+ }
+ return new FlutterOutlineParams(file, outline,
+ instrumentedCode: instrumentedCode);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "flutter.outline params", json);
+ }
+ }
+
+ factory FlutterOutlineParams.fromNotification(Notification notification) {
+ return new FlutterOutlineParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["outline"] = outline.toJson();
+ if (instrumentedCode != null) {
+ result["instrumentedCode"] = instrumentedCode;
+ }
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("flutter.outline", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is FlutterOutlineParams) {
+ return file == other.file &&
+ outline == other.outline &&
+ instrumentedCode == other.instrumentedCode;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, outline.hashCode);
+ hash = JenkinsSmiHash.combine(hash, instrumentedCode.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * FlutterService
+ *
+ * enum {
+ * OUTLINE
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterService implements Enum {
+ static const FlutterService OUTLINE = const FlutterService._("OUTLINE");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<FlutterService> VALUES = const <FlutterService>[OUTLINE];
+
+ @override
+ final String name;
+
+ const FlutterService._(this.name);
+
+ factory FlutterService(String name) {
+ switch (name) {
+ case "OUTLINE":
+ return OUTLINE;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory FlutterService.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new FlutterService(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "FlutterService", json);
+ }
+
+ @override
+ String toString() => "FlutterService.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * flutter.setSubscriptions params
+ *
+ * {
+ * "subscriptions": Map<FlutterService, List<FilePath>>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterSetSubscriptionsParams implements RequestParams {
+ Map<FlutterService, List<String>> _subscriptions;
+
+ /**
+ * A table mapping services to a list of the files being subscribed to the
+ * service.
+ */
+ Map<FlutterService, List<String>> get subscriptions => _subscriptions;
+
+ /**
+ * A table mapping services to a list of the files being subscribed to the
+ * service.
+ */
+ void set subscriptions(Map<FlutterService, List<String>> value) {
+ assert(value != null);
+ this._subscriptions = value;
+ }
+
+ FlutterSetSubscriptionsParams(
+ Map<FlutterService, List<String>> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+ factory FlutterSetSubscriptionsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ Map<FlutterService, List<String>> subscriptions;
+ if (json.containsKey("subscriptions")) {
+ subscriptions = jsonDecoder.decodeMap(
+ jsonPath + ".subscriptions", json["subscriptions"],
+ keyDecoder: (String jsonPath, Object json) =>
+ new FlutterService.fromJson(jsonDecoder, jsonPath, json),
+ valueDecoder: (String jsonPath, Object json) => jsonDecoder
+ .decodeList(jsonPath, json, jsonDecoder.decodeString));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "subscriptions");
+ }
+ return new FlutterSetSubscriptionsParams(subscriptions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "flutter.setSubscriptions params", json);
+ }
+ }
+
+ factory FlutterSetSubscriptionsParams.fromRequest(Request request) {
+ return new FlutterSetSubscriptionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["subscriptions"] = mapMap(subscriptions,
+ keyCallback: (FlutterService value) => value.toJson());
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "flutter.setSubscriptions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is FlutterSetSubscriptionsParams) {
+ return mapEqual(
+ subscriptions,
+ other.subscriptions,
+ (List<String> a, List<String> b) =>
+ listEqual(a, b, (String a, String b) => a == b));
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, subscriptions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * flutter.setSubscriptions result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class FlutterSetSubscriptionsResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is FlutterSetSubscriptionsResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 628296315;
+ }
+}
+
+/**
+ * GeneralAnalysisService
+ *
+ * enum {
+ * ANALYZED_FILES
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class GeneralAnalysisService implements Enum {
+ static const GeneralAnalysisService ANALYZED_FILES =
+ const GeneralAnalysisService._("ANALYZED_FILES");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<GeneralAnalysisService> VALUES =
+ const <GeneralAnalysisService>[ANALYZED_FILES];
+
+ @override
+ final String name;
+
+ const GeneralAnalysisService._(this.name);
+
+ factory GeneralAnalysisService(String name) {
+ switch (name) {
+ case "ANALYZED_FILES":
+ return ANALYZED_FILES;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory GeneralAnalysisService.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new GeneralAnalysisService(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "GeneralAnalysisService", json);
+ }
+
+ @override
+ String toString() => "GeneralAnalysisService.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * HoverInformation
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * "containingLibraryPath": optional String
+ * "containingLibraryName": optional String
+ * "containingClassDescription": optional String
+ * "dartdoc": optional String
+ * "elementDescription": optional String
+ * "elementKind": optional String
+ * "isDeprecated": optional bool
+ * "parameter": optional String
+ * "propagatedType": optional String
+ * "staticType": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class HoverInformation implements HasToJson {
+ int _offset;
+
+ int _length;
+
+ String _containingLibraryPath;
+
+ String _containingLibraryName;
+
+ String _containingClassDescription;
+
+ String _dartdoc;
+
+ String _elementDescription;
+
+ String _elementKind;
+
+ bool _isDeprecated;
+
+ String _parameter;
+
+ String _propagatedType;
+
+ String _staticType;
+
+ /**
+ * The offset of the range of characters that encompasses the cursor position
+ * and has the same hover information as the cursor position.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the range of characters that encompasses the cursor position
+ * and has the same hover information as the cursor position.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the range of characters that encompasses the cursor position
+ * and has the same hover information as the cursor position.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the range of characters that encompasses the cursor position
+ * and has the same hover information as the cursor position.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * The path to the defining compilation unit of the library in which the
+ * referenced element is declared. This data is omitted if there is no
+ * referenced element, or if the element is declared inside an HTML file.
+ */
+ String get containingLibraryPath => _containingLibraryPath;
+
+ /**
+ * The path to the defining compilation unit of the library in which the
+ * referenced element is declared. This data is omitted if there is no
+ * referenced element, or if the element is declared inside an HTML file.
+ */
+ void set containingLibraryPath(String value) {
+ this._containingLibraryPath = value;
+ }
+
+ /**
+ * The name of the library in which the referenced element is declared. This
+ * data is omitted if there is no referenced element, or if the element is
+ * declared inside an HTML file.
+ */
+ String get containingLibraryName => _containingLibraryName;
+
+ /**
+ * The name of the library in which the referenced element is declared. This
+ * data is omitted if there is no referenced element, or if the element is
+ * declared inside an HTML file.
+ */
+ void set containingLibraryName(String value) {
+ this._containingLibraryName = value;
+ }
+
+ /**
+ * A human-readable description of the class declaring the element being
+ * referenced. This data is omitted if there is no referenced element, or if
+ * the element is not a class member.
+ */
+ String get containingClassDescription => _containingClassDescription;
+
+ /**
+ * A human-readable description of the class declaring the element being
+ * referenced. This data is omitted if there is no referenced element, or if
+ * the element is not a class member.
+ */
+ void set containingClassDescription(String value) {
+ this._containingClassDescription = value;
+ }
+
+ /**
+ * The dartdoc associated with the referenced element. Other than the removal
+ * of the comment delimiters, including leading asterisks in the case of a
+ * block comment, the dartdoc is unprocessed markdown. This data is omitted
+ * if there is no referenced element, or if the element has no dartdoc.
+ */
+ String get dartdoc => _dartdoc;
+
+ /**
+ * The dartdoc associated with the referenced element. Other than the removal
+ * of the comment delimiters, including leading asterisks in the case of a
+ * block comment, the dartdoc is unprocessed markdown. This data is omitted
+ * if there is no referenced element, or if the element has no dartdoc.
+ */
+ void set dartdoc(String value) {
+ this._dartdoc = value;
+ }
+
+ /**
+ * A human-readable description of the element being referenced. This data is
+ * omitted if there is no referenced element.
+ */
+ String get elementDescription => _elementDescription;
+
+ /**
+ * A human-readable description of the element being referenced. This data is
+ * omitted if there is no referenced element.
+ */
+ void set elementDescription(String value) {
+ this._elementDescription = value;
+ }
+
+ /**
+ * A human-readable description of the kind of element being referenced (such
+ * as "class" or "function type alias"). This data is omitted if there is no
+ * referenced element.
+ */
+ String get elementKind => _elementKind;
+
+ /**
+ * A human-readable description of the kind of element being referenced (such
+ * as "class" or "function type alias"). This data is omitted if there is no
+ * referenced element.
+ */
+ void set elementKind(String value) {
+ this._elementKind = value;
+ }
+
+ /**
+ * True if the referenced element is deprecated.
+ */
+ bool get isDeprecated => _isDeprecated;
+
+ /**
+ * True if the referenced element is deprecated.
+ */
+ void set isDeprecated(bool value) {
+ this._isDeprecated = value;
+ }
+
+ /**
+ * A human-readable description of the parameter corresponding to the
+ * expression being hovered over. This data is omitted if the location is not
+ * in an argument to a function.
+ */
+ String get parameter => _parameter;
+
+ /**
+ * A human-readable description of the parameter corresponding to the
+ * expression being hovered over. This data is omitted if the location is not
+ * in an argument to a function.
+ */
+ void set parameter(String value) {
+ this._parameter = value;
+ }
+
+ /**
+ * The name of the propagated type of the expression. This data is omitted if
+ * the location does not correspond to an expression or if there is no
+ * propagated type information.
+ */
+ String get propagatedType => _propagatedType;
+
+ /**
+ * The name of the propagated type of the expression. This data is omitted if
+ * the location does not correspond to an expression or if there is no
+ * propagated type information.
+ */
+ void set propagatedType(String value) {
+ this._propagatedType = value;
+ }
+
+ /**
+ * The name of the static type of the expression. This data is omitted if the
+ * location does not correspond to an expression.
+ */
+ String get staticType => _staticType;
+
+ /**
+ * The name of the static type of the expression. This data is omitted if the
+ * location does not correspond to an expression.
+ */
+ void set staticType(String value) {
+ this._staticType = value;
+ }
+
+ HoverInformation(int offset, int length,
+ {String containingLibraryPath,
+ String containingLibraryName,
+ String containingClassDescription,
+ String dartdoc,
+ String elementDescription,
+ String elementKind,
+ bool isDeprecated,
+ String parameter,
+ String propagatedType,
+ String staticType}) {
+ this.offset = offset;
+ this.length = length;
+ this.containingLibraryPath = containingLibraryPath;
+ this.containingLibraryName = containingLibraryName;
+ this.containingClassDescription = containingClassDescription;
+ this.dartdoc = dartdoc;
+ this.elementDescription = elementDescription;
+ this.elementKind = elementKind;
+ this.isDeprecated = isDeprecated;
+ this.parameter = parameter;
+ this.propagatedType = propagatedType;
+ this.staticType = staticType;
+ }
+
+ factory HoverInformation.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 containingLibraryPath;
+ if (json.containsKey("containingLibraryPath")) {
+ containingLibraryPath = jsonDecoder.decodeString(
+ jsonPath + ".containingLibraryPath", json["containingLibraryPath"]);
+ }
+ String containingLibraryName;
+ if (json.containsKey("containingLibraryName")) {
+ containingLibraryName = jsonDecoder.decodeString(
+ jsonPath + ".containingLibraryName", json["containingLibraryName"]);
+ }
+ String containingClassDescription;
+ if (json.containsKey("containingClassDescription")) {
+ containingClassDescription = jsonDecoder.decodeString(
+ jsonPath + ".containingClassDescription",
+ json["containingClassDescription"]);
+ }
+ String dartdoc;
+ if (json.containsKey("dartdoc")) {
+ dartdoc =
+ jsonDecoder.decodeString(jsonPath + ".dartdoc", json["dartdoc"]);
+ }
+ String elementDescription;
+ if (json.containsKey("elementDescription")) {
+ elementDescription = jsonDecoder.decodeString(
+ jsonPath + ".elementDescription", json["elementDescription"]);
+ }
+ String elementKind;
+ if (json.containsKey("elementKind")) {
+ elementKind = jsonDecoder.decodeString(
+ jsonPath + ".elementKind", json["elementKind"]);
+ }
+ bool isDeprecated;
+ if (json.containsKey("isDeprecated")) {
+ isDeprecated = jsonDecoder.decodeBool(
+ jsonPath + ".isDeprecated", json["isDeprecated"]);
+ }
+ String parameter;
+ if (json.containsKey("parameter")) {
+ parameter = jsonDecoder.decodeString(
+ jsonPath + ".parameter", json["parameter"]);
+ }
+ String propagatedType;
+ if (json.containsKey("propagatedType")) {
+ propagatedType = jsonDecoder.decodeString(
+ jsonPath + ".propagatedType", json["propagatedType"]);
+ }
+ String staticType;
+ if (json.containsKey("staticType")) {
+ staticType = jsonDecoder.decodeString(
+ jsonPath + ".staticType", json["staticType"]);
+ }
+ return new HoverInformation(offset, length,
+ containingLibraryPath: containingLibraryPath,
+ containingLibraryName: containingLibraryName,
+ containingClassDescription: containingClassDescription,
+ dartdoc: dartdoc,
+ elementDescription: elementDescription,
+ elementKind: elementKind,
+ isDeprecated: isDeprecated,
+ parameter: parameter,
+ propagatedType: propagatedType,
+ staticType: staticType);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "HoverInformation", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ if (containingLibraryPath != null) {
+ result["containingLibraryPath"] = containingLibraryPath;
+ }
+ if (containingLibraryName != null) {
+ result["containingLibraryName"] = containingLibraryName;
+ }
+ if (containingClassDescription != null) {
+ result["containingClassDescription"] = containingClassDescription;
+ }
+ if (dartdoc != null) {
+ result["dartdoc"] = dartdoc;
+ }
+ if (elementDescription != null) {
+ result["elementDescription"] = elementDescription;
+ }
+ if (elementKind != null) {
+ result["elementKind"] = elementKind;
+ }
+ if (isDeprecated != null) {
+ result["isDeprecated"] = isDeprecated;
+ }
+ if (parameter != null) {
+ result["parameter"] = parameter;
+ }
+ if (propagatedType != null) {
+ result["propagatedType"] = propagatedType;
+ }
+ if (staticType != null) {
+ result["staticType"] = staticType;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is HoverInformation) {
+ return offset == other.offset &&
+ length == other.length &&
+ containingLibraryPath == other.containingLibraryPath &&
+ containingLibraryName == other.containingLibraryName &&
+ containingClassDescription == other.containingClassDescription &&
+ dartdoc == other.dartdoc &&
+ elementDescription == other.elementDescription &&
+ elementKind == other.elementKind &&
+ isDeprecated == other.isDeprecated &&
+ parameter == other.parameter &&
+ propagatedType == other.propagatedType &&
+ staticType == other.staticType;
+ }
+ 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, containingLibraryPath.hashCode);
+ hash = JenkinsSmiHash.combine(hash, containingLibraryName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, containingClassDescription.hashCode);
+ hash = JenkinsSmiHash.combine(hash, dartdoc.hashCode);
+ hash = JenkinsSmiHash.combine(hash, elementDescription.hashCode);
+ hash = JenkinsSmiHash.combine(hash, elementKind.hashCode);
+ hash = JenkinsSmiHash.combine(hash, isDeprecated.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parameter.hashCode);
+ hash = JenkinsSmiHash.combine(hash, propagatedType.hashCode);
+ hash = JenkinsSmiHash.combine(hash, staticType.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ImplementedClass
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ImplementedClass implements HasToJson {
+ int _offset;
+
+ int _length;
+
+ /**
+ * The offset of the name of the implemented class.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the name of the implemented class.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the name of the implemented class.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the name of the implemented class.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ ImplementedClass(int offset, int length) {
+ this.offset = offset;
+ this.length = length;
+ }
+
+ factory ImplementedClass.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");
+ }
+ return new ImplementedClass(offset, length);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ImplementedClass", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ImplementedClass) {
+ return offset == other.offset && length == other.length;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, offset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, length.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ImplementedMember
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ImplementedMember implements HasToJson {
+ int _offset;
+
+ int _length;
+
+ /**
+ * The offset of the name of the implemented member.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the name of the implemented member.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the name of the implemented member.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the name of the implemented member.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ ImplementedMember(int offset, int length) {
+ this.offset = offset;
+ this.length = length;
+ }
+
+ factory ImplementedMember.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");
+ }
+ return new ImplementedMember(offset, length);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ImplementedMember", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ImplementedMember) {
+ return offset == other.offset && length == other.length;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, offset.hashCode);
+ hash = JenkinsSmiHash.combine(hash, length.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ImportedElements
+ *
+ * {
+ * "path": FilePath
+ * "prefix": String
+ * "elements": List<String>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ImportedElements implements HasToJson {
+ String _path;
+
+ String _prefix;
+
+ List<String> _elements;
+
+ /**
+ * The absolute and normalized path of the file containing the library.
+ */
+ String get path => _path;
+
+ /**
+ * The absolute and normalized path of the file containing the library.
+ */
+ void set path(String value) {
+ assert(value != null);
+ this._path = value;
+ }
+
+ /**
+ * The prefix that was used when importing the library into the original
+ * source.
+ */
+ String get prefix => _prefix;
+
+ /**
+ * The prefix that was used when importing the library into the original
+ * source.
+ */
+ void set prefix(String value) {
+ assert(value != null);
+ this._prefix = value;
+ }
+
+ /**
+ * The names of the elements imported from the library.
+ */
+ List<String> get elements => _elements;
+
+ /**
+ * The names of the elements imported from the library.
+ */
+ void set elements(List<String> value) {
+ assert(value != null);
+ this._elements = value;
+ }
+
+ ImportedElements(String path, String prefix, List<String> elements) {
+ this.path = path;
+ this.prefix = prefix;
+ this.elements = elements;
+ }
+
+ factory ImportedElements.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String path;
+ if (json.containsKey("path")) {
+ path = jsonDecoder.decodeString(jsonPath + ".path", json["path"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "path");
+ }
+ String prefix;
+ if (json.containsKey("prefix")) {
+ prefix = jsonDecoder.decodeString(jsonPath + ".prefix", json["prefix"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "prefix");
+ }
+ List<String> elements;
+ if (json.containsKey("elements")) {
+ elements = jsonDecoder.decodeList(
+ jsonPath + ".elements", json["elements"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "elements");
+ }
+ return new ImportedElements(path, prefix, elements);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "ImportedElements", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["path"] = path;
+ result["prefix"] = prefix;
+ result["elements"] = elements;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ImportedElements) {
+ return path == other.path &&
+ prefix == other.prefix &&
+ listEqual(elements, other.elements, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, path.hashCode);
+ hash = JenkinsSmiHash.combine(hash, prefix.hashCode);
+ hash = JenkinsSmiHash.combine(hash, elements.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * inlineLocalVariable feedback
+ *
+ * {
+ * "name": String
+ * "occurrences": int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class InlineLocalVariableFeedback extends RefactoringFeedback {
+ String _name;
+
+ int _occurrences;
+
+ /**
+ * The name of the variable being inlined.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the variable being inlined.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * The number of times the variable occurs.
+ */
+ int get occurrences => _occurrences;
+
+ /**
+ * The number of times the variable occurs.
+ */
+ void set occurrences(int value) {
+ assert(value != null);
+ this._occurrences = value;
+ }
+
+ InlineLocalVariableFeedback(String name, int occurrences) {
+ this.name = name;
+ this.occurrences = occurrences;
+ }
+
+ factory InlineLocalVariableFeedback.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ int occurrences;
+ if (json.containsKey("occurrences")) {
+ occurrences = jsonDecoder.decodeInt(
+ jsonPath + ".occurrences", json["occurrences"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "occurrences");
+ }
+ return new InlineLocalVariableFeedback(name, occurrences);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "inlineLocalVariable feedback", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["occurrences"] = occurrences;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is InlineLocalVariableFeedback) {
+ return name == other.name && occurrences == other.occurrences;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, occurrences.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * inlineLocalVariable options
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class InlineLocalVariableOptions extends RefactoringOptions
+ implements HasToJson {
+ @override
+ bool operator ==(other) {
+ if (other is InlineLocalVariableOptions) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 540364977;
+ }
+}
+
+/**
+ * inlineMethod feedback
+ *
+ * {
+ * "className": optional String
+ * "methodName": String
+ * "isDeclaration": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class InlineMethodFeedback extends RefactoringFeedback {
+ String _className;
+
+ String _methodName;
+
+ bool _isDeclaration;
+
+ /**
+ * The name of the class enclosing the method being inlined. If not a class
+ * member is being inlined, this field will be absent.
+ */
+ String get className => _className;
+
+ /**
+ * The name of the class enclosing the method being inlined. If not a class
+ * member is being inlined, this field will be absent.
+ */
+ void set className(String value) {
+ this._className = value;
+ }
+
+ /**
+ * The name of the method (or function) being inlined.
+ */
+ String get methodName => _methodName;
+
+ /**
+ * The name of the method (or function) being inlined.
+ */
+ void set methodName(String value) {
+ assert(value != null);
+ this._methodName = value;
+ }
+
+ /**
+ * True if the declaration of the method is selected. So all references
+ * should be inlined.
+ */
+ bool get isDeclaration => _isDeclaration;
+
+ /**
+ * True if the declaration of the method is selected. So all references
+ * should be inlined.
+ */
+ void set isDeclaration(bool value) {
+ assert(value != null);
+ this._isDeclaration = value;
+ }
+
+ InlineMethodFeedback(String methodName, bool isDeclaration,
+ {String className}) {
+ this.className = className;
+ this.methodName = methodName;
+ this.isDeclaration = isDeclaration;
+ }
+
+ factory InlineMethodFeedback.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String className;
+ if (json.containsKey("className")) {
+ className = jsonDecoder.decodeString(
+ jsonPath + ".className", json["className"]);
+ }
+ String methodName;
+ if (json.containsKey("methodName")) {
+ methodName = jsonDecoder.decodeString(
+ jsonPath + ".methodName", json["methodName"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "methodName");
+ }
+ bool isDeclaration;
+ if (json.containsKey("isDeclaration")) {
+ isDeclaration = jsonDecoder.decodeBool(
+ jsonPath + ".isDeclaration", json["isDeclaration"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "isDeclaration");
+ }
+ return new InlineMethodFeedback(methodName, isDeclaration,
+ className: className);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "inlineMethod feedback", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (className != null) {
+ result["className"] = className;
+ }
+ result["methodName"] = methodName;
+ result["isDeclaration"] = isDeclaration;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is InlineMethodFeedback) {
+ return className == other.className &&
+ methodName == other.methodName &&
+ isDeclaration == other.isDeclaration;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, className.hashCode);
+ hash = JenkinsSmiHash.combine(hash, methodName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, isDeclaration.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * inlineMethod options
+ *
+ * {
+ * "deleteSource": bool
+ * "inlineAll": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class InlineMethodOptions extends RefactoringOptions {
+ bool _deleteSource;
+
+ bool _inlineAll;
+
+ /**
+ * True if the method being inlined should be removed. It is an error if this
+ * field is true and inlineAll is false.
+ */
+ bool get deleteSource => _deleteSource;
+
+ /**
+ * True if the method being inlined should be removed. It is an error if this
+ * field is true and inlineAll is false.
+ */
+ void set deleteSource(bool value) {
+ assert(value != null);
+ this._deleteSource = value;
+ }
+
+ /**
+ * True if all invocations of the method should be inlined, or false if only
+ * the invocation site used to create this refactoring should be inlined.
+ */
+ bool get inlineAll => _inlineAll;
+
+ /**
+ * True if all invocations of the method should be inlined, or false if only
+ * the invocation site used to create this refactoring should be inlined.
+ */
+ void set inlineAll(bool value) {
+ assert(value != null);
+ this._inlineAll = value;
+ }
+
+ InlineMethodOptions(bool deleteSource, bool inlineAll) {
+ this.deleteSource = deleteSource;
+ this.inlineAll = inlineAll;
+ }
+
+ factory InlineMethodOptions.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool deleteSource;
+ if (json.containsKey("deleteSource")) {
+ deleteSource = jsonDecoder.decodeBool(
+ jsonPath + ".deleteSource", json["deleteSource"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "deleteSource");
+ }
+ bool inlineAll;
+ if (json.containsKey("inlineAll")) {
+ inlineAll =
+ jsonDecoder.decodeBool(jsonPath + ".inlineAll", json["inlineAll"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "inlineAll");
+ }
+ return new InlineMethodOptions(deleteSource, inlineAll);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "inlineMethod options", json);
+ }
+ }
+
+ factory InlineMethodOptions.fromRefactoringParams(
+ EditGetRefactoringParams refactoringParams, Request request) {
+ return new InlineMethodOptions.fromJson(
+ new RequestDecoder(request), "options", refactoringParams.options);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["deleteSource"] = deleteSource;
+ result["inlineAll"] = inlineAll;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is InlineMethodOptions) {
+ return deleteSource == other.deleteSource && inlineAll == other.inlineAll;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, deleteSource.hashCode);
+ hash = JenkinsSmiHash.combine(hash, inlineAll.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * kythe.getKytheEntries params
+ *
+ * {
+ * "file": FilePath
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class KytheGetKytheEntriesParams implements RequestParams {
+ String _file;
+
+ /**
+ * The file containing the code for which the Kythe Entry objects are being
+ * requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the code for which the Kythe Entry objects are being
+ * requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ KytheGetKytheEntriesParams(String file) {
+ this.file = file;
+ }
+
+ factory KytheGetKytheEntriesParams.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");
+ }
+ return new KytheGetKytheEntriesParams(file);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "kythe.getKytheEntries params", json);
+ }
+ }
+
+ factory KytheGetKytheEntriesParams.fromRequest(Request request) {
+ return new KytheGetKytheEntriesParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "kythe.getKytheEntries", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is KytheGetKytheEntriesParams) {
+ return file == other.file;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * kythe.getKytheEntries result
+ *
+ * {
+ * "entries": List<KytheEntry>
+ * "files": List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class KytheGetKytheEntriesResult implements ResponseResult {
+ List<KytheEntry> _entries;
+
+ List<String> _files;
+
+ /**
+ * The list of KytheEntry objects for the queried file.
+ */
+ List<KytheEntry> get entries => _entries;
+
+ /**
+ * The list of KytheEntry objects for the queried file.
+ */
+ void set entries(List<KytheEntry> value) {
+ assert(value != null);
+ this._entries = value;
+ }
+
+ /**
+ * The set of files paths that were required, but not in the file system, to
+ * give a complete and accurate Kythe graph for the file. This could be due
+ * to a referenced file that does not exist or generated files not being
+ * generated or passed before the call to "getKytheEntries".
+ */
+ List<String> get files => _files;
+
+ /**
+ * The set of files paths that were required, but not in the file system, to
+ * give a complete and accurate Kythe graph for the file. This could be due
+ * to a referenced file that does not exist or generated files not being
+ * generated or passed before the call to "getKytheEntries".
+ */
+ void set files(List<String> value) {
+ assert(value != null);
+ this._files = value;
+ }
+
+ KytheGetKytheEntriesResult(List<KytheEntry> entries, List<String> files) {
+ this.entries = entries;
+ this.files = files;
+ }
+
+ factory KytheGetKytheEntriesResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<KytheEntry> entries;
+ if (json.containsKey("entries")) {
+ entries = jsonDecoder.decodeList(
+ jsonPath + ".entries",
+ json["entries"],
+ (String jsonPath, Object json) =>
+ new KytheEntry.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "entries");
+ }
+ List<String> files;
+ if (json.containsKey("files")) {
+ files = jsonDecoder.decodeList(
+ jsonPath + ".files", json["files"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "files");
+ }
+ return new KytheGetKytheEntriesResult(entries, files);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "kythe.getKytheEntries result", json);
+ }
+ }
+
+ factory KytheGetKytheEntriesResult.fromResponse(Response response) {
+ return new KytheGetKytheEntriesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["entries"] =
+ entries.map((KytheEntry value) => value.toJson()).toList();
+ result["files"] = files;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is KytheGetKytheEntriesResult) {
+ return listEqual(
+ entries, other.entries, (KytheEntry a, KytheEntry b) => a == b) &&
+ listEqual(files, other.files, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, entries.hashCode);
+ hash = JenkinsSmiHash.combine(hash, files.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * moveFile feedback
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class MoveFileFeedback extends RefactoringFeedback implements HasToJson {
+ @override
+ bool operator ==(other) {
+ if (other is MoveFileFeedback) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 438975893;
+ }
+}
+
+/**
+ * moveFile options
+ *
+ * {
+ * "newFile": FilePath
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class MoveFileOptions extends RefactoringOptions {
+ String _newFile;
+
+ /**
+ * The new file path to which the given file is being moved.
+ */
+ String get newFile => _newFile;
+
+ /**
+ * The new file path to which the given file is being moved.
+ */
+ void set newFile(String value) {
+ assert(value != null);
+ this._newFile = value;
+ }
+
+ MoveFileOptions(String newFile) {
+ this.newFile = newFile;
+ }
+
+ factory MoveFileOptions.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String newFile;
+ if (json.containsKey("newFile")) {
+ newFile =
+ jsonDecoder.decodeString(jsonPath + ".newFile", json["newFile"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "newFile");
+ }
+ return new MoveFileOptions(newFile);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "moveFile options", json);
+ }
+ }
+
+ factory MoveFileOptions.fromRefactoringParams(
+ EditGetRefactoringParams refactoringParams, Request request) {
+ return new MoveFileOptions.fromJson(
+ new RequestDecoder(request), "options", refactoringParams.options);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["newFile"] = newFile;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is MoveFileOptions) {
+ return newFile == other.newFile;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, newFile.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * OverriddenMember
+ *
+ * {
+ * "element": Element
+ * "className": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class OverriddenMember implements HasToJson {
+ Element _element;
+
+ String _className;
+
+ /**
+ * The element that is being overridden.
+ */
+ Element get element => _element;
+
+ /**
+ * The element that is being overridden.
+ */
+ void set element(Element value) {
+ assert(value != null);
+ this._element = value;
+ }
+
+ /**
+ * The name of the class in which the member is defined.
+ */
+ String get className => _className;
+
+ /**
+ * The name of the class in which the member is defined.
+ */
+ void set className(String value) {
+ assert(value != null);
+ this._className = value;
+ }
+
+ OverriddenMember(Element element, String className) {
+ this.element = element;
+ this.className = className;
+ }
+
+ factory OverriddenMember.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");
+ }
+ String className;
+ if (json.containsKey("className")) {
+ className = jsonDecoder.decodeString(
+ jsonPath + ".className", json["className"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "className");
+ }
+ return new OverriddenMember(element, className);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "OverriddenMember", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["element"] = element.toJson();
+ result["className"] = className;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is OverriddenMember) {
+ return element == other.element && className == other.className;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, element.hashCode);
+ hash = JenkinsSmiHash.combine(hash, className.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * Override
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * "superclassMember": optional OverriddenMember
+ * "interfaceMembers": optional List<OverriddenMember>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class Override implements HasToJson {
+ int _offset;
+
+ int _length;
+
+ OverriddenMember _superclassMember;
+
+ List<OverriddenMember> _interfaceMembers;
+
+ /**
+ * The offset of the name of the overriding member.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the name of the overriding member.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the name of the overriding member.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the name of the overriding member.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * The member inherited from a superclass that is overridden by the
+ * overriding member. The field is omitted if there is no superclass member,
+ * in which case there must be at least one interface member.
+ */
+ OverriddenMember get superclassMember => _superclassMember;
+
+ /**
+ * The member inherited from a superclass that is overridden by the
+ * overriding member. The field is omitted if there is no superclass member,
+ * in which case there must be at least one interface member.
+ */
+ void set superclassMember(OverriddenMember value) {
+ this._superclassMember = value;
+ }
+
+ /**
+ * The members inherited from interfaces that are overridden by the
+ * overriding member. The field is omitted if there are no interface members,
+ * in which case there must be a superclass member.
+ */
+ List<OverriddenMember> get interfaceMembers => _interfaceMembers;
+
+ /**
+ * The members inherited from interfaces that are overridden by the
+ * overriding member. The field is omitted if there are no interface members,
+ * in which case there must be a superclass member.
+ */
+ void set interfaceMembers(List<OverriddenMember> value) {
+ this._interfaceMembers = value;
+ }
+
+ Override(int offset, int length,
+ {OverriddenMember superclassMember,
+ List<OverriddenMember> interfaceMembers}) {
+ this.offset = offset;
+ this.length = length;
+ this.superclassMember = superclassMember;
+ this.interfaceMembers = interfaceMembers;
+ }
+
+ factory Override.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");
+ }
+ OverriddenMember superclassMember;
+ if (json.containsKey("superclassMember")) {
+ superclassMember = new OverriddenMember.fromJson(jsonDecoder,
+ jsonPath + ".superclassMember", json["superclassMember"]);
+ }
+ List<OverriddenMember> interfaceMembers;
+ if (json.containsKey("interfaceMembers")) {
+ interfaceMembers = jsonDecoder.decodeList(
+ jsonPath + ".interfaceMembers",
+ json["interfaceMembers"],
+ (String jsonPath, Object json) =>
+ new OverriddenMember.fromJson(jsonDecoder, jsonPath, json));
+ }
+ return new Override(offset, length,
+ superclassMember: superclassMember,
+ interfaceMembers: interfaceMembers);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "Override", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ if (superclassMember != null) {
+ result["superclassMember"] = superclassMember.toJson();
+ }
+ if (interfaceMembers != null) {
+ result["interfaceMembers"] = interfaceMembers
+ .map((OverriddenMember value) => value.toJson())
+ .toList();
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is Override) {
+ return offset == other.offset &&
+ length == other.length &&
+ superclassMember == other.superclassMember &&
+ listEqual(interfaceMembers, other.interfaceMembers,
+ (OverriddenMember a, OverriddenMember 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, superclassMember.hashCode);
+ hash = JenkinsSmiHash.combine(hash, interfaceMembers.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * PostfixTemplateDescriptor
+ *
+ * {
+ * "name": String
+ * "key": String
+ * "example": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class PostfixTemplateDescriptor implements HasToJson {
+ String _name;
+
+ String _key;
+
+ String _example;
+
+ /**
+ * The template name, shown in the UI.
+ */
+ String get name => _name;
+
+ /**
+ * The template name, shown in the UI.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * The unique template key, not shown in the UI.
+ */
+ String get key => _key;
+
+ /**
+ * The unique template key, not shown in the UI.
+ */
+ void set key(String value) {
+ assert(value != null);
+ this._key = value;
+ }
+
+ /**
+ * A short example of the transformation performed when the template is
+ * applied.
+ */
+ String get example => _example;
+
+ /**
+ * A short example of the transformation performed when the template is
+ * applied.
+ */
+ void set example(String value) {
+ assert(value != null);
+ this._example = value;
+ }
+
+ PostfixTemplateDescriptor(String name, String key, String example) {
+ this.name = name;
+ this.key = key;
+ this.example = example;
+ }
+
+ factory PostfixTemplateDescriptor.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ String key;
+ if (json.containsKey("key")) {
+ key = jsonDecoder.decodeString(jsonPath + ".key", json["key"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "key");
+ }
+ String example;
+ if (json.containsKey("example")) {
+ example =
+ jsonDecoder.decodeString(jsonPath + ".example", json["example"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "example");
+ }
+ return new PostfixTemplateDescriptor(name, key, example);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "PostfixTemplateDescriptor", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["key"] = key;
+ result["example"] = example;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is PostfixTemplateDescriptor) {
+ return name == other.name && key == other.key && example == other.example;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, key.hashCode);
+ hash = JenkinsSmiHash.combine(hash, example.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * PubStatus
+ *
+ * {
+ * "isListingPackageDirs": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class PubStatus implements HasToJson {
+ bool _isListingPackageDirs;
+
+ /**
+ * True if the server is currently running pub to produce a list of package
+ * directories.
+ */
+ bool get isListingPackageDirs => _isListingPackageDirs;
+
+ /**
+ * True if the server is currently running pub to produce a list of package
+ * directories.
+ */
+ void set isListingPackageDirs(bool value) {
+ assert(value != null);
+ this._isListingPackageDirs = value;
+ }
+
+ PubStatus(bool isListingPackageDirs) {
+ this.isListingPackageDirs = isListingPackageDirs;
+ }
+
+ factory PubStatus.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool isListingPackageDirs;
+ if (json.containsKey("isListingPackageDirs")) {
+ isListingPackageDirs = jsonDecoder.decodeBool(
+ jsonPath + ".isListingPackageDirs", json["isListingPackageDirs"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "isListingPackageDirs");
+ }
+ return new PubStatus(isListingPackageDirs);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "PubStatus", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["isListingPackageDirs"] = isListingPackageDirs;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is PubStatus) {
+ return isListingPackageDirs == other.isListingPackageDirs;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, isListingPackageDirs.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * RefactoringFeedback
+ *
+ * {
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RefactoringFeedback implements HasToJson {
+ RefactoringFeedback();
+
+ factory RefactoringFeedback.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json, Map responseJson) {
+ return refactoringFeedbackFromJson(
+ jsonDecoder, jsonPath, json, responseJson);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RefactoringFeedback) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * RefactoringOptions
+ *
+ * {
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RefactoringOptions implements HasToJson {
+ RefactoringOptions();
+
+ factory RefactoringOptions.fromJson(JsonDecoder jsonDecoder, String jsonPath,
+ Object json, RefactoringKind kind) {
+ return refactoringOptionsFromJson(jsonDecoder, jsonPath, json, kind);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RefactoringOptions) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * rename feedback
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * "elementKindName": String
+ * "oldName": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RenameFeedback extends RefactoringFeedback {
+ int _offset;
+
+ int _length;
+
+ String _elementKindName;
+
+ String _oldName;
+
+ /**
+ * The offset to the beginning of the name selected to be renamed, or -1 if
+ * the name does not exist yet.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset to the beginning of the name selected to be renamed, or -1 if
+ * the name does not exist yet.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the name selected to be renamed.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the name selected to be renamed.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * The human-readable description of the kind of element being renamed (such
+ * as "class" or "function type alias").
+ */
+ String get elementKindName => _elementKindName;
+
+ /**
+ * The human-readable description of the kind of element being renamed (such
+ * as "class" or "function type alias").
+ */
+ void set elementKindName(String value) {
+ assert(value != null);
+ this._elementKindName = value;
+ }
+
+ /**
+ * The old name of the element before the refactoring.
+ */
+ String get oldName => _oldName;
+
+ /**
+ * The old name of the element before the refactoring.
+ */
+ void set oldName(String value) {
+ assert(value != null);
+ this._oldName = value;
+ }
+
+ RenameFeedback(
+ int offset, int length, String elementKindName, String oldName) {
+ this.offset = offset;
+ this.length = length;
+ this.elementKindName = elementKindName;
+ this.oldName = oldName;
+ }
+
+ factory RenameFeedback.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 elementKindName;
+ if (json.containsKey("elementKindName")) {
+ elementKindName = jsonDecoder.decodeString(
+ jsonPath + ".elementKindName", json["elementKindName"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "elementKindName");
+ }
+ String oldName;
+ if (json.containsKey("oldName")) {
+ oldName =
+ jsonDecoder.decodeString(jsonPath + ".oldName", json["oldName"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "oldName");
+ }
+ return new RenameFeedback(offset, length, elementKindName, oldName);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "rename feedback", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ result["elementKindName"] = elementKindName;
+ result["oldName"] = oldName;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RenameFeedback) {
+ return offset == other.offset &&
+ length == other.length &&
+ elementKindName == other.elementKindName &&
+ oldName == other.oldName;
+ }
+ 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, elementKindName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, oldName.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * rename options
+ *
+ * {
+ * "newName": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RenameOptions extends RefactoringOptions {
+ String _newName;
+
+ /**
+ * The name that the element should have after the refactoring.
+ */
+ String get newName => _newName;
+
+ /**
+ * The name that the element should have after the refactoring.
+ */
+ void set newName(String value) {
+ assert(value != null);
+ this._newName = value;
+ }
+
+ RenameOptions(String newName) {
+ this.newName = newName;
+ }
+
+ factory RenameOptions.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String newName;
+ if (json.containsKey("newName")) {
+ newName =
+ jsonDecoder.decodeString(jsonPath + ".newName", json["newName"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "newName");
+ }
+ return new RenameOptions(newName);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "rename options", json);
+ }
+ }
+
+ factory RenameOptions.fromRefactoringParams(
+ EditGetRefactoringParams refactoringParams, Request request) {
+ return new RenameOptions.fromJson(
+ new RequestDecoder(request), "options", refactoringParams.options);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["newName"] = newName;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RenameOptions) {
+ return newName == other.newName;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, newName.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * RequestError
+ *
+ * {
+ * "code": RequestErrorCode
+ * "message": String
+ * "stackTrace": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RequestError implements HasToJson {
+ RequestErrorCode _code;
+
+ String _message;
+
+ String _stackTrace;
+
+ /**
+ * A code that uniquely identifies the error that occurred.
+ */
+ RequestErrorCode get code => _code;
+
+ /**
+ * A code that uniquely identifies the error that occurred.
+ */
+ void set code(RequestErrorCode value) {
+ assert(value != null);
+ this._code = value;
+ }
+
+ /**
+ * A short description of the error.
+ */
+ String get message => _message;
+
+ /**
+ * A short description of the error.
+ */
+ void set message(String value) {
+ assert(value != null);
+ this._message = value;
+ }
+
+ /**
+ * The stack trace associated with processing the request, used for debugging
+ * the server.
+ */
+ String get stackTrace => _stackTrace;
+
+ /**
+ * The stack trace associated with processing the request, used for debugging
+ * the server.
+ */
+ void set stackTrace(String value) {
+ this._stackTrace = value;
+ }
+
+ RequestError(RequestErrorCode code, String message, {String stackTrace}) {
+ this.code = code;
+ this.message = message;
+ this.stackTrace = stackTrace;
+ }
+
+ factory RequestError.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ RequestErrorCode code;
+ if (json.containsKey("code")) {
+ code = new RequestErrorCode.fromJson(
+ jsonDecoder, jsonPath + ".code", json["code"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "code");
+ }
+ String message;
+ if (json.containsKey("message")) {
+ message =
+ jsonDecoder.decodeString(jsonPath + ".message", json["message"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "message");
+ }
+ String stackTrace;
+ if (json.containsKey("stackTrace")) {
+ stackTrace = jsonDecoder.decodeString(
+ jsonPath + ".stackTrace", json["stackTrace"]);
+ }
+ return new RequestError(code, message, stackTrace: stackTrace);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "RequestError", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["code"] = code.toJson();
+ result["message"] = message;
+ if (stackTrace != null) {
+ result["stackTrace"] = stackTrace;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RequestError) {
+ return code == other.code &&
+ message == other.message &&
+ stackTrace == other.stackTrace;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, code.hashCode);
+ hash = JenkinsSmiHash.combine(hash, message.hashCode);
+ hash = JenkinsSmiHash.combine(hash, stackTrace.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * RequestErrorCode
+ *
+ * enum {
+ * CONTENT_MODIFIED
+ * DEBUG_PORT_COULD_NOT_BE_OPENED
+ * FILE_NOT_ANALYZED
+ * FORMAT_INVALID_FILE
+ * FORMAT_WITH_ERRORS
+ * GET_ERRORS_INVALID_FILE
+ * GET_IMPORTED_ELEMENTS_INVALID_FILE
+ * GET_KYTHE_ENTRIES_INVALID_FILE
+ * GET_NAVIGATION_INVALID_FILE
+ * GET_REACHABLE_SOURCES_INVALID_FILE
+ * GET_SIGNATURE_INVALID_FILE
+ * GET_SIGNATURE_INVALID_OFFSET
+ * GET_SIGNATURE_UNKNOWN_FUNCTION
+ * IMPORT_ELEMENTS_INVALID_FILE
+ * INVALID_ANALYSIS_ROOT
+ * INVALID_EXECUTION_CONTEXT
+ * INVALID_FILE_PATH_FORMAT
+ * INVALID_OVERLAY_CHANGE
+ * INVALID_PARAMETER
+ * INVALID_REQUEST
+ * ORGANIZE_DIRECTIVES_ERROR
+ * REFACTORING_REQUEST_CANCELLED
+ * SERVER_ALREADY_STARTED
+ * SERVER_ERROR
+ * SORT_MEMBERS_INVALID_FILE
+ * SORT_MEMBERS_PARSE_ERRORS
+ * UNKNOWN_REQUEST
+ * UNSUPPORTED_FEATURE
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RequestErrorCode implements Enum {
+ /**
+ * An "analysis.getErrors" or "analysis.getNavigation" request could not be
+ * satisfied because the content of the file changed before the requested
+ * results could be computed.
+ */
+ static const RequestErrorCode CONTENT_MODIFIED =
+ const RequestErrorCode._("CONTENT_MODIFIED");
+
+ /**
+ * The server was unable to open a port for the diagnostic server.
+ */
+ static const RequestErrorCode DEBUG_PORT_COULD_NOT_BE_OPENED =
+ const RequestErrorCode._("DEBUG_PORT_COULD_NOT_BE_OPENED");
+
+ /**
+ * A request specified a FilePath which does not match a file in an analysis
+ * root, or the requested operation is not available for the file.
+ */
+ static const RequestErrorCode FILE_NOT_ANALYZED =
+ const RequestErrorCode._("FILE_NOT_ANALYZED");
+
+ /**
+ * An "edit.format" request specified a FilePath which does not match a Dart
+ * file in an analysis root.
+ */
+ static const RequestErrorCode FORMAT_INVALID_FILE =
+ const RequestErrorCode._("FORMAT_INVALID_FILE");
+
+ /**
+ * An "edit.format" request specified a file that contains syntax errors.
+ */
+ static const RequestErrorCode FORMAT_WITH_ERRORS =
+ const RequestErrorCode._("FORMAT_WITH_ERRORS");
+
+ /**
+ * An "analysis.getErrors" request specified a FilePath which does not match
+ * a file currently subject to analysis.
+ */
+ static const RequestErrorCode GET_ERRORS_INVALID_FILE =
+ const RequestErrorCode._("GET_ERRORS_INVALID_FILE");
+
+ /**
+ * An "analysis.getImportedElements" request specified a FilePath that does
+ * not match a file currently subject to analysis.
+ */
+ static const RequestErrorCode GET_IMPORTED_ELEMENTS_INVALID_FILE =
+ const RequestErrorCode._("GET_IMPORTED_ELEMENTS_INVALID_FILE");
+
+ /**
+ * An "analysis.getKytheEntries" request specified a FilePath that does not
+ * match a file that is currently subject to analysis.
+ */
+ static const RequestErrorCode GET_KYTHE_ENTRIES_INVALID_FILE =
+ const RequestErrorCode._("GET_KYTHE_ENTRIES_INVALID_FILE");
+
+ /**
+ * An "analysis.getNavigation" request specified a FilePath which does not
+ * match a file currently subject to analysis.
+ */
+ static const RequestErrorCode GET_NAVIGATION_INVALID_FILE =
+ const RequestErrorCode._("GET_NAVIGATION_INVALID_FILE");
+
+ /**
+ * An "analysis.getReachableSources" request specified a FilePath which does
+ * not match a file currently subject to analysis.
+ */
+ static const RequestErrorCode GET_REACHABLE_SOURCES_INVALID_FILE =
+ const RequestErrorCode._("GET_REACHABLE_SOURCES_INVALID_FILE");
+
+ /**
+ * An "analysis.getSignature" request specified a FilePath which does not
+ * match a file currently subject to analysis.
+ */
+ static const RequestErrorCode GET_SIGNATURE_INVALID_FILE =
+ const RequestErrorCode._("GET_SIGNATURE_INVALID_FILE");
+
+ /**
+ * An "analysis.getSignature" request specified an offset which is not a
+ * valid location within for the contents of the file specified FilePath.
+ */
+ static const RequestErrorCode GET_SIGNATURE_INVALID_OFFSET =
+ const RequestErrorCode._("GET_SIGNATURE_INVALID_OFFSET");
+
+ /**
+ * An "analysis.getSignature" request specified an offset that could not be
+ * matched to a function call.
+ */
+ static const RequestErrorCode GET_SIGNATURE_UNKNOWN_FUNCTION =
+ const RequestErrorCode._("GET_SIGNATURE_UNKNOWN_FUNCTION");
+
+ /**
+ * An "edit.importElements" request specified a FilePath that does not match
+ * a file currently subject to analysis.
+ */
+ static const RequestErrorCode IMPORT_ELEMENTS_INVALID_FILE =
+ const RequestErrorCode._("IMPORT_ELEMENTS_INVALID_FILE");
+
+ /**
+ * A path passed as an argument to a request (such as analysis.reanalyze) is
+ * required to be an analysis root, but isn't.
+ */
+ static const RequestErrorCode INVALID_ANALYSIS_ROOT =
+ const RequestErrorCode._("INVALID_ANALYSIS_ROOT");
+
+ /**
+ * The context root used to create an execution context does not exist.
+ */
+ static const RequestErrorCode INVALID_EXECUTION_CONTEXT =
+ const RequestErrorCode._("INVALID_EXECUTION_CONTEXT");
+
+ /**
+ * The format of the given file path is invalid, e.g. is not absolute and
+ * normalized.
+ */
+ static const RequestErrorCode INVALID_FILE_PATH_FORMAT =
+ const RequestErrorCode._("INVALID_FILE_PATH_FORMAT");
+
+ /**
+ * An "analysis.updateContent" request contained a ChangeContentOverlay
+ * object which can't be applied, due to an edit having an offset or length
+ * that is out of range.
+ */
+ static const RequestErrorCode INVALID_OVERLAY_CHANGE =
+ const RequestErrorCode._("INVALID_OVERLAY_CHANGE");
+
+ /**
+ * One of the method parameters was invalid.
+ */
+ static const RequestErrorCode INVALID_PARAMETER =
+ const RequestErrorCode._("INVALID_PARAMETER");
+
+ /**
+ * A malformed request was received.
+ */
+ static const RequestErrorCode INVALID_REQUEST =
+ const RequestErrorCode._("INVALID_REQUEST");
+
+ /**
+ * An "edit.organizeDirectives" request specified a Dart file that cannot be
+ * analyzed. The reason is described in the message.
+ */
+ static const RequestErrorCode ORGANIZE_DIRECTIVES_ERROR =
+ const RequestErrorCode._("ORGANIZE_DIRECTIVES_ERROR");
+
+ /**
+ * Another refactoring request was received during processing of this one.
+ */
+ static const RequestErrorCode REFACTORING_REQUEST_CANCELLED =
+ const RequestErrorCode._("REFACTORING_REQUEST_CANCELLED");
+
+ /**
+ * The analysis server has already been started (and hence won't accept new
+ * connections).
+ *
+ * This error is included for future expansion; at present the analysis
+ * server can only speak to one client at a time so this error will never
+ * occur.
+ */
+ static const RequestErrorCode SERVER_ALREADY_STARTED =
+ const RequestErrorCode._("SERVER_ALREADY_STARTED");
+
+ /**
+ * An internal error occurred in the analysis server. Also see the
+ * server.error notification.
+ */
+ static const RequestErrorCode SERVER_ERROR =
+ const RequestErrorCode._("SERVER_ERROR");
+
+ /**
+ * An "edit.sortMembers" request specified a FilePath which does not match a
+ * Dart file in an analysis root.
+ */
+ static const RequestErrorCode SORT_MEMBERS_INVALID_FILE =
+ const RequestErrorCode._("SORT_MEMBERS_INVALID_FILE");
+
+ /**
+ * An "edit.sortMembers" request specified a Dart file that has scan or parse
+ * errors.
+ */
+ static const RequestErrorCode SORT_MEMBERS_PARSE_ERRORS =
+ const RequestErrorCode._("SORT_MEMBERS_PARSE_ERRORS");
+
+ /**
+ * A request was received which the analysis server does not recognize, or
+ * cannot handle in its current configuration.
+ */
+ static const RequestErrorCode UNKNOWN_REQUEST =
+ const RequestErrorCode._("UNKNOWN_REQUEST");
+
+ /**
+ * The analysis server was requested to perform an action which is not
+ * supported.
+ *
+ * This is a legacy error; it will be removed before the API reaches version
+ * 1.0.
+ */
+ static const RequestErrorCode UNSUPPORTED_FEATURE =
+ const RequestErrorCode._("UNSUPPORTED_FEATURE");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<RequestErrorCode> VALUES = const <RequestErrorCode>[
+ CONTENT_MODIFIED,
+ DEBUG_PORT_COULD_NOT_BE_OPENED,
+ FILE_NOT_ANALYZED,
+ FORMAT_INVALID_FILE,
+ FORMAT_WITH_ERRORS,
+ GET_ERRORS_INVALID_FILE,
+ GET_IMPORTED_ELEMENTS_INVALID_FILE,
+ GET_KYTHE_ENTRIES_INVALID_FILE,
+ GET_NAVIGATION_INVALID_FILE,
+ GET_REACHABLE_SOURCES_INVALID_FILE,
+ GET_SIGNATURE_INVALID_FILE,
+ GET_SIGNATURE_INVALID_OFFSET,
+ GET_SIGNATURE_UNKNOWN_FUNCTION,
+ IMPORT_ELEMENTS_INVALID_FILE,
+ INVALID_ANALYSIS_ROOT,
+ INVALID_EXECUTION_CONTEXT,
+ INVALID_FILE_PATH_FORMAT,
+ INVALID_OVERLAY_CHANGE,
+ INVALID_PARAMETER,
+ INVALID_REQUEST,
+ ORGANIZE_DIRECTIVES_ERROR,
+ REFACTORING_REQUEST_CANCELLED,
+ SERVER_ALREADY_STARTED,
+ SERVER_ERROR,
+ SORT_MEMBERS_INVALID_FILE,
+ SORT_MEMBERS_PARSE_ERRORS,
+ UNKNOWN_REQUEST,
+ UNSUPPORTED_FEATURE
+ ];
+
+ @override
+ final String name;
+
+ const RequestErrorCode._(this.name);
+
+ factory RequestErrorCode(String name) {
+ switch (name) {
+ case "CONTENT_MODIFIED":
+ return CONTENT_MODIFIED;
+ case "DEBUG_PORT_COULD_NOT_BE_OPENED":
+ return DEBUG_PORT_COULD_NOT_BE_OPENED;
+ case "FILE_NOT_ANALYZED":
+ return FILE_NOT_ANALYZED;
+ case "FORMAT_INVALID_FILE":
+ return FORMAT_INVALID_FILE;
+ case "FORMAT_WITH_ERRORS":
+ return FORMAT_WITH_ERRORS;
+ case "GET_ERRORS_INVALID_FILE":
+ return GET_ERRORS_INVALID_FILE;
+ case "GET_IMPORTED_ELEMENTS_INVALID_FILE":
+ return GET_IMPORTED_ELEMENTS_INVALID_FILE;
+ case "GET_KYTHE_ENTRIES_INVALID_FILE":
+ return GET_KYTHE_ENTRIES_INVALID_FILE;
+ case "GET_NAVIGATION_INVALID_FILE":
+ return GET_NAVIGATION_INVALID_FILE;
+ case "GET_REACHABLE_SOURCES_INVALID_FILE":
+ return GET_REACHABLE_SOURCES_INVALID_FILE;
+ case "GET_SIGNATURE_INVALID_FILE":
+ return GET_SIGNATURE_INVALID_FILE;
+ case "GET_SIGNATURE_INVALID_OFFSET":
+ return GET_SIGNATURE_INVALID_OFFSET;
+ case "GET_SIGNATURE_UNKNOWN_FUNCTION":
+ return GET_SIGNATURE_UNKNOWN_FUNCTION;
+ case "IMPORT_ELEMENTS_INVALID_FILE":
+ return IMPORT_ELEMENTS_INVALID_FILE;
+ case "INVALID_ANALYSIS_ROOT":
+ return INVALID_ANALYSIS_ROOT;
+ case "INVALID_EXECUTION_CONTEXT":
+ return INVALID_EXECUTION_CONTEXT;
+ case "INVALID_FILE_PATH_FORMAT":
+ return INVALID_FILE_PATH_FORMAT;
+ case "INVALID_OVERLAY_CHANGE":
+ return INVALID_OVERLAY_CHANGE;
+ case "INVALID_PARAMETER":
+ return INVALID_PARAMETER;
+ case "INVALID_REQUEST":
+ return INVALID_REQUEST;
+ case "ORGANIZE_DIRECTIVES_ERROR":
+ return ORGANIZE_DIRECTIVES_ERROR;
+ case "REFACTORING_REQUEST_CANCELLED":
+ return REFACTORING_REQUEST_CANCELLED;
+ case "SERVER_ALREADY_STARTED":
+ return SERVER_ALREADY_STARTED;
+ case "SERVER_ERROR":
+ return SERVER_ERROR;
+ case "SORT_MEMBERS_INVALID_FILE":
+ return SORT_MEMBERS_INVALID_FILE;
+ case "SORT_MEMBERS_PARSE_ERRORS":
+ return SORT_MEMBERS_PARSE_ERRORS;
+ case "UNKNOWN_REQUEST":
+ return UNKNOWN_REQUEST;
+ case "UNSUPPORTED_FEATURE":
+ return UNSUPPORTED_FEATURE;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory RequestErrorCode.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new RequestErrorCode(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "RequestErrorCode", json);
+ }
+
+ @override
+ String toString() => "RequestErrorCode.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * RuntimeCompletionExpression
+ *
+ * {
+ * "offset": int
+ * "length": int
+ * "type": optional RuntimeCompletionExpressionType
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RuntimeCompletionExpression implements HasToJson {
+ int _offset;
+
+ int _length;
+
+ RuntimeCompletionExpressionType _type;
+
+ /**
+ * The offset of the expression in the code for completion.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the expression in the code for completion.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * The length of the expression in the code for completion.
+ */
+ int get length => _length;
+
+ /**
+ * The length of the expression in the code for completion.
+ */
+ void set length(int value) {
+ assert(value != null);
+ this._length = value;
+ }
+
+ /**
+ * When the expression is sent from the server to the client, the type is
+ * omitted. The client should fill the type when it sends the request to the
+ * server again.
+ */
+ RuntimeCompletionExpressionType get type => _type;
+
+ /**
+ * When the expression is sent from the server to the client, the type is
+ * omitted. The client should fill the type when it sends the request to the
+ * server again.
+ */
+ void set type(RuntimeCompletionExpressionType value) {
+ this._type = value;
+ }
+
+ RuntimeCompletionExpression(int offset, int length,
+ {RuntimeCompletionExpressionType type}) {
+ this.offset = offset;
+ this.length = length;
+ this.type = type;
+ }
+
+ factory RuntimeCompletionExpression.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");
+ }
+ RuntimeCompletionExpressionType type;
+ if (json.containsKey("type")) {
+ type = new RuntimeCompletionExpressionType.fromJson(
+ jsonDecoder, jsonPath + ".type", json["type"]);
+ }
+ return new RuntimeCompletionExpression(offset, length, type: type);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "RuntimeCompletionExpression", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["offset"] = offset;
+ result["length"] = length;
+ if (type != null) {
+ result["type"] = type.toJson();
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RuntimeCompletionExpression) {
+ return offset == other.offset &&
+ length == other.length &&
+ type == other.type;
+ }
+ 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, type.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * RuntimeCompletionExpressionType
+ *
+ * {
+ * "libraryPath": optional FilePath
+ * "kind": RuntimeCompletionExpressionTypeKind
+ * "name": optional String
+ * "typeArguments": optional List<RuntimeCompletionExpressionType>
+ * "returnType": optional RuntimeCompletionExpressionType
+ * "parameterTypes": optional List<RuntimeCompletionExpressionType>
+ * "parameterNames": optional List<String>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RuntimeCompletionExpressionType implements HasToJson {
+ String _libraryPath;
+
+ RuntimeCompletionExpressionTypeKind _kind;
+
+ String _name;
+
+ List<RuntimeCompletionExpressionType> _typeArguments;
+
+ RuntimeCompletionExpressionType _returnType;
+
+ List<RuntimeCompletionExpressionType> _parameterTypes;
+
+ List<String> _parameterNames;
+
+ /**
+ * The path of the library that has this type. Omitted if the type is not
+ * declared in any library, e.g. "dynamic", or "void".
+ */
+ String get libraryPath => _libraryPath;
+
+ /**
+ * The path of the library that has this type. Omitted if the type is not
+ * declared in any library, e.g. "dynamic", or "void".
+ */
+ void set libraryPath(String value) {
+ this._libraryPath = value;
+ }
+
+ /**
+ * The kind of the type.
+ */
+ RuntimeCompletionExpressionTypeKind get kind => _kind;
+
+ /**
+ * The kind of the type.
+ */
+ void set kind(RuntimeCompletionExpressionTypeKind value) {
+ assert(value != null);
+ this._kind = value;
+ }
+
+ /**
+ * The name of the type. Omitted if the type does not have a name, e.g. an
+ * inline function type.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the type. Omitted if the type does not have a name, e.g. an
+ * inline function type.
+ */
+ void set name(String value) {
+ this._name = value;
+ }
+
+ /**
+ * The type arguments of the type. Omitted if the type does not have type
+ * parameters.
+ */
+ List<RuntimeCompletionExpressionType> get typeArguments => _typeArguments;
+
+ /**
+ * The type arguments of the type. Omitted if the type does not have type
+ * parameters.
+ */
+ void set typeArguments(List<RuntimeCompletionExpressionType> value) {
+ this._typeArguments = value;
+ }
+
+ /**
+ * If the type is a function type, the return type of the function. Omitted
+ * if the type is not a function type.
+ */
+ RuntimeCompletionExpressionType get returnType => _returnType;
+
+ /**
+ * If the type is a function type, the return type of the function. Omitted
+ * if the type is not a function type.
+ */
+ void set returnType(RuntimeCompletionExpressionType value) {
+ this._returnType = value;
+ }
+
+ /**
+ * If the type is a function type, the types of the function parameters of
+ * all kinds - required, optional positional, and optional named. Omitted if
+ * the type is not a function type.
+ */
+ List<RuntimeCompletionExpressionType> get parameterTypes => _parameterTypes;
+
+ /**
+ * If the type is a function type, the types of the function parameters of
+ * all kinds - required, optional positional, and optional named. Omitted if
+ * the type is not a function type.
+ */
+ void set parameterTypes(List<RuntimeCompletionExpressionType> value) {
+ this._parameterTypes = value;
+ }
+
+ /**
+ * If the type is a function type, the names of the function parameters of
+ * all kinds - required, optional positional, and optional named. The names
+ * of positional parameters are empty strings. Omitted if the type is not a
+ * function type.
+ */
+ List<String> get parameterNames => _parameterNames;
+
+ /**
+ * If the type is a function type, the names of the function parameters of
+ * all kinds - required, optional positional, and optional named. The names
+ * of positional parameters are empty strings. Omitted if the type is not a
+ * function type.
+ */
+ void set parameterNames(List<String> value) {
+ this._parameterNames = value;
+ }
+
+ RuntimeCompletionExpressionType(RuntimeCompletionExpressionTypeKind kind,
+ {String libraryPath,
+ String name,
+ List<RuntimeCompletionExpressionType> typeArguments,
+ RuntimeCompletionExpressionType returnType,
+ List<RuntimeCompletionExpressionType> parameterTypes,
+ List<String> parameterNames}) {
+ this.libraryPath = libraryPath;
+ this.kind = kind;
+ this.name = name;
+ this.typeArguments = typeArguments;
+ this.returnType = returnType;
+ this.parameterTypes = parameterTypes;
+ this.parameterNames = parameterNames;
+ }
+
+ factory RuntimeCompletionExpressionType.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String libraryPath;
+ if (json.containsKey("libraryPath")) {
+ libraryPath = jsonDecoder.decodeString(
+ jsonPath + ".libraryPath", json["libraryPath"]);
+ }
+ RuntimeCompletionExpressionTypeKind kind;
+ if (json.containsKey("kind")) {
+ kind = new RuntimeCompletionExpressionTypeKind.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"]);
+ }
+ List<RuntimeCompletionExpressionType> typeArguments;
+ if (json.containsKey("typeArguments")) {
+ typeArguments = jsonDecoder.decodeList(
+ jsonPath + ".typeArguments",
+ json["typeArguments"],
+ (String jsonPath, Object json) =>
+ new RuntimeCompletionExpressionType.fromJson(
+ jsonDecoder, jsonPath, json));
+ }
+ RuntimeCompletionExpressionType returnType;
+ if (json.containsKey("returnType")) {
+ returnType = new RuntimeCompletionExpressionType.fromJson(
+ jsonDecoder, jsonPath + ".returnType", json["returnType"]);
+ }
+ List<RuntimeCompletionExpressionType> parameterTypes;
+ if (json.containsKey("parameterTypes")) {
+ parameterTypes = jsonDecoder.decodeList(
+ jsonPath + ".parameterTypes",
+ json["parameterTypes"],
+ (String jsonPath, Object json) =>
+ new RuntimeCompletionExpressionType.fromJson(
+ jsonDecoder, jsonPath, json));
+ }
+ List<String> parameterNames;
+ if (json.containsKey("parameterNames")) {
+ parameterNames = jsonDecoder.decodeList(jsonPath + ".parameterNames",
+ json["parameterNames"], jsonDecoder.decodeString);
+ }
+ return new RuntimeCompletionExpressionType(kind,
+ libraryPath: libraryPath,
+ name: name,
+ typeArguments: typeArguments,
+ returnType: returnType,
+ parameterTypes: parameterTypes,
+ parameterNames: parameterNames);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "RuntimeCompletionExpressionType", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (libraryPath != null) {
+ result["libraryPath"] = libraryPath;
+ }
+ result["kind"] = kind.toJson();
+ if (name != null) {
+ result["name"] = name;
+ }
+ if (typeArguments != null) {
+ result["typeArguments"] = typeArguments
+ .map((RuntimeCompletionExpressionType value) => value.toJson())
+ .toList();
+ }
+ if (returnType != null) {
+ result["returnType"] = returnType.toJson();
+ }
+ if (parameterTypes != null) {
+ result["parameterTypes"] = parameterTypes
+ .map((RuntimeCompletionExpressionType value) => value.toJson())
+ .toList();
+ }
+ if (parameterNames != null) {
+ result["parameterNames"] = parameterNames;
+ }
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RuntimeCompletionExpressionType) {
+ return libraryPath == other.libraryPath &&
+ kind == other.kind &&
+ name == other.name &&
+ listEqual(
+ typeArguments,
+ other.typeArguments,
+ (RuntimeCompletionExpressionType a,
+ RuntimeCompletionExpressionType b) =>
+ a == b) &&
+ returnType == other.returnType &&
+ listEqual(
+ parameterTypes,
+ other.parameterTypes,
+ (RuntimeCompletionExpressionType a,
+ RuntimeCompletionExpressionType b) =>
+ a == b) &&
+ listEqual(parameterNames, other.parameterNames,
+ (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, libraryPath.hashCode);
+ hash = JenkinsSmiHash.combine(hash, kind.hashCode);
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, typeArguments.hashCode);
+ hash = JenkinsSmiHash.combine(hash, returnType.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parameterTypes.hashCode);
+ hash = JenkinsSmiHash.combine(hash, parameterNames.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * RuntimeCompletionExpressionTypeKind
+ *
+ * enum {
+ * DYNAMIC
+ * FUNCTION
+ * INTERFACE
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RuntimeCompletionExpressionTypeKind implements Enum {
+ static const RuntimeCompletionExpressionTypeKind DYNAMIC =
+ const RuntimeCompletionExpressionTypeKind._("DYNAMIC");
+
+ static const RuntimeCompletionExpressionTypeKind FUNCTION =
+ const RuntimeCompletionExpressionTypeKind._("FUNCTION");
+
+ static const RuntimeCompletionExpressionTypeKind INTERFACE =
+ const RuntimeCompletionExpressionTypeKind._("INTERFACE");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<RuntimeCompletionExpressionTypeKind> VALUES =
+ const <RuntimeCompletionExpressionTypeKind>[DYNAMIC, FUNCTION, INTERFACE];
+
+ @override
+ final String name;
+
+ const RuntimeCompletionExpressionTypeKind._(this.name);
+
+ factory RuntimeCompletionExpressionTypeKind(String name) {
+ switch (name) {
+ case "DYNAMIC":
+ return DYNAMIC;
+ case "FUNCTION":
+ return FUNCTION;
+ case "INTERFACE":
+ return INTERFACE;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory RuntimeCompletionExpressionTypeKind.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new RuntimeCompletionExpressionTypeKind(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(
+ jsonPath, "RuntimeCompletionExpressionTypeKind", json);
+ }
+
+ @override
+ String toString() => "RuntimeCompletionExpressionTypeKind.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * RuntimeCompletionVariable
+ *
+ * {
+ * "name": String
+ * "type": RuntimeCompletionExpressionType
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class RuntimeCompletionVariable implements HasToJson {
+ String _name;
+
+ RuntimeCompletionExpressionType _type;
+
+ /**
+ * The name of the variable. The name "this" has a special meaning and is
+ * used as an implicit target for runtime completion, and in explicit "this"
+ * references.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the variable. The name "this" has a special meaning and is
+ * used as an implicit target for runtime completion, and in explicit "this"
+ * references.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ /**
+ * The type of the variable.
+ */
+ RuntimeCompletionExpressionType get type => _type;
+
+ /**
+ * The type of the variable.
+ */
+ void set type(RuntimeCompletionExpressionType value) {
+ assert(value != null);
+ this._type = value;
+ }
+
+ RuntimeCompletionVariable(String name, RuntimeCompletionExpressionType type) {
+ this.name = name;
+ this.type = type;
+ }
+
+ factory RuntimeCompletionVariable.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ RuntimeCompletionExpressionType type;
+ if (json.containsKey("type")) {
+ type = new RuntimeCompletionExpressionType.fromJson(
+ jsonDecoder, jsonPath + ".type", json["type"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "type");
+ }
+ return new RuntimeCompletionVariable(name, type);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "RuntimeCompletionVariable", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ result["type"] = type.toJson();
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is RuntimeCompletionVariable) {
+ return name == other.name && type == other.type;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ hash = JenkinsSmiHash.combine(hash, type.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findElementReferences params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * "includePotential": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindElementReferencesParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ bool _includePotential;
+
+ /**
+ * The file containing the declaration of or reference to the element used to
+ * define the search.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the declaration of or reference to the element used to
+ * define the search.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset within the file of the declaration of or reference to the
+ * element.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset within the file of the declaration of or reference to the
+ * element.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * True if potential matches are to be included in the results.
+ */
+ bool get includePotential => _includePotential;
+
+ /**
+ * True if potential matches are to be included in the results.
+ */
+ void set includePotential(bool value) {
+ assert(value != null);
+ this._includePotential = value;
+ }
+
+ SearchFindElementReferencesParams(
+ String file, int offset, bool includePotential) {
+ this.file = file;
+ this.offset = offset;
+ this.includePotential = includePotential;
+ }
+
+ factory SearchFindElementReferencesParams.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");
+ }
+ bool includePotential;
+ if (json.containsKey("includePotential")) {
+ includePotential = jsonDecoder.decodeBool(
+ jsonPath + ".includePotential", json["includePotential"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "includePotential");
+ }
+ return new SearchFindElementReferencesParams(
+ file, offset, includePotential);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findElementReferences params", json);
+ }
+ }
+
+ factory SearchFindElementReferencesParams.fromRequest(Request request) {
+ return new SearchFindElementReferencesParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ result["includePotential"] = includePotential;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "search.findElementReferences", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindElementReferencesParams) {
+ return file == other.file &&
+ offset == other.offset &&
+ includePotential == other.includePotential;
+ }
+ 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, includePotential.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findElementReferences result
+ *
+ * {
+ * "id": optional SearchId
+ * "element": optional Element
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindElementReferencesResult implements ResponseResult {
+ String _id;
+
+ Element _element;
+
+ /**
+ * The identifier used to associate results with this search request.
+ *
+ * If no element was found at the given location, this field will be absent,
+ * and no results will be reported via the search.results notification.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier used to associate results with this search request.
+ *
+ * If no element was found at the given location, this field will be absent,
+ * and no results will be reported via the search.results notification.
+ */
+ void set id(String value) {
+ this._id = value;
+ }
+
+ /**
+ * The element referenced or defined at the given offset and whose references
+ * will be returned in the search results.
+ *
+ * If no element was found at the given location, this field will be absent.
+ */
+ Element get element => _element;
+
+ /**
+ * The element referenced or defined at the given offset and whose references
+ * will be returned in the search results.
+ *
+ * If no element was found at the given location, this field will be absent.
+ */
+ void set element(Element value) {
+ this._element = value;
+ }
+
+ SearchFindElementReferencesResult({String id, Element element}) {
+ this.id = id;
+ this.element = element;
+ }
+
+ factory SearchFindElementReferencesResult.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"]);
+ }
+ Element element;
+ if (json.containsKey("element")) {
+ element = new Element.fromJson(
+ jsonDecoder, jsonPath + ".element", json["element"]);
+ }
+ return new SearchFindElementReferencesResult(id: id, element: element);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findElementReferences result", json);
+ }
+ }
+
+ factory SearchFindElementReferencesResult.fromResponse(Response response) {
+ return new SearchFindElementReferencesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (id != null) {
+ result["id"] = id;
+ }
+ if (element != null) {
+ result["element"] = element.toJson();
+ }
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindElementReferencesResult) {
+ return id == other.id && element == other.element;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ hash = JenkinsSmiHash.combine(hash, element.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findMemberDeclarations params
+ *
+ * {
+ * "name": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindMemberDeclarationsParams implements RequestParams {
+ String _name;
+
+ /**
+ * The name of the declarations to be found.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the declarations to be found.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ SearchFindMemberDeclarationsParams(String name) {
+ this.name = name;
+ }
+
+ factory SearchFindMemberDeclarationsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ return new SearchFindMemberDeclarationsParams(name);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findMemberDeclarations params", json);
+ }
+ }
+
+ factory SearchFindMemberDeclarationsParams.fromRequest(Request request) {
+ return new SearchFindMemberDeclarationsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "search.findMemberDeclarations", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindMemberDeclarationsParams) {
+ return name == other.name;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findMemberDeclarations result
+ *
+ * {
+ * "id": SearchId
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindMemberDeclarationsResult implements ResponseResult {
+ String _id;
+
+ /**
+ * The identifier used to associate results with this search request.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier used to associate results with this search request.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ SearchFindMemberDeclarationsResult(String id) {
+ this.id = id;
+ }
+
+ factory SearchFindMemberDeclarationsResult.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ return new SearchFindMemberDeclarationsResult(id);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findMemberDeclarations result", json);
+ }
+ }
+
+ factory SearchFindMemberDeclarationsResult.fromResponse(Response response) {
+ return new SearchFindMemberDeclarationsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindMemberDeclarationsResult) {
+ return id == other.id;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findMemberReferences params
+ *
+ * {
+ * "name": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindMemberReferencesParams implements RequestParams {
+ String _name;
+
+ /**
+ * The name of the references to be found.
+ */
+ String get name => _name;
+
+ /**
+ * The name of the references to be found.
+ */
+ void set name(String value) {
+ assert(value != null);
+ this._name = value;
+ }
+
+ SearchFindMemberReferencesParams(String name) {
+ this.name = name;
+ }
+
+ factory SearchFindMemberReferencesParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String name;
+ if (json.containsKey("name")) {
+ name = jsonDecoder.decodeString(jsonPath + ".name", json["name"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "name");
+ }
+ return new SearchFindMemberReferencesParams(name);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findMemberReferences params", json);
+ }
+ }
+
+ factory SearchFindMemberReferencesParams.fromRequest(Request request) {
+ return new SearchFindMemberReferencesParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["name"] = name;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "search.findMemberReferences", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindMemberReferencesParams) {
+ return name == other.name;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, name.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findMemberReferences result
+ *
+ * {
+ * "id": SearchId
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindMemberReferencesResult implements ResponseResult {
+ String _id;
+
+ /**
+ * The identifier used to associate results with this search request.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier used to associate results with this search request.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ SearchFindMemberReferencesResult(String id) {
+ this.id = id;
+ }
+
+ factory SearchFindMemberReferencesResult.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ return new SearchFindMemberReferencesResult(id);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findMemberReferences result", json);
+ }
+ }
+
+ factory SearchFindMemberReferencesResult.fromResponse(Response response) {
+ return new SearchFindMemberReferencesResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindMemberReferencesResult) {
+ return id == other.id;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findTopLevelDeclarations params
+ *
+ * {
+ * "pattern": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindTopLevelDeclarationsParams implements RequestParams {
+ String _pattern;
+
+ /**
+ * The regular expression used to match the names of the declarations to be
+ * found.
+ */
+ String get pattern => _pattern;
+
+ /**
+ * The regular expression used to match the names of the declarations to be
+ * found.
+ */
+ void set pattern(String value) {
+ assert(value != null);
+ this._pattern = value;
+ }
+
+ SearchFindTopLevelDeclarationsParams(String pattern) {
+ this.pattern = pattern;
+ }
+
+ factory SearchFindTopLevelDeclarationsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String pattern;
+ if (json.containsKey("pattern")) {
+ pattern =
+ jsonDecoder.decodeString(jsonPath + ".pattern", json["pattern"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "pattern");
+ }
+ return new SearchFindTopLevelDeclarationsParams(pattern);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findTopLevelDeclarations params", json);
+ }
+ }
+
+ factory SearchFindTopLevelDeclarationsParams.fromRequest(Request request) {
+ return new SearchFindTopLevelDeclarationsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["pattern"] = pattern;
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "search.findTopLevelDeclarations", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindTopLevelDeclarationsParams) {
+ return pattern == other.pattern;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, pattern.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.findTopLevelDeclarations result
+ *
+ * {
+ * "id": SearchId
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchFindTopLevelDeclarationsResult implements ResponseResult {
+ String _id;
+
+ /**
+ * The identifier used to associate results with this search request.
+ */
+ String get id => _id;
+
+ /**
+ * The identifier used to associate results with this search request.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ SearchFindTopLevelDeclarationsResult(String id) {
+ this.id = id;
+ }
+
+ factory SearchFindTopLevelDeclarationsResult.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ return new SearchFindTopLevelDeclarationsResult(id);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.findTopLevelDeclarations result", json);
+ }
+ }
+
+ factory SearchFindTopLevelDeclarationsResult.fromResponse(Response response) {
+ return new SearchFindTopLevelDeclarationsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchFindTopLevelDeclarationsResult) {
+ return id == other.id;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.getElementDeclarations params
+ *
+ * {
+ * "file": optional FilePath
+ * "pattern": optional String
+ * "maxResults": optional int
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchGetElementDeclarationsParams implements RequestParams {
+ String _file;
+
+ String _pattern;
+
+ int _maxResults;
+
+ /**
+ * If this field is provided, return only declarations in this file. If this
+ * field is missing, return declarations in all files.
+ */
+ String get file => _file;
+
+ /**
+ * If this field is provided, return only declarations in this file. If this
+ * field is missing, return declarations in all files.
+ */
+ void set file(String value) {
+ this._file = value;
+ }
+
+ /**
+ * The regular expression used to match the names of declarations. If this
+ * field is missing, return all declarations.
+ */
+ String get pattern => _pattern;
+
+ /**
+ * The regular expression used to match the names of declarations. If this
+ * field is missing, return all declarations.
+ */
+ void set pattern(String value) {
+ this._pattern = value;
+ }
+
+ /**
+ * The maximum number of declarations to return. If this field is missing,
+ * return all matching declarations.
+ */
+ int get maxResults => _maxResults;
+
+ /**
+ * The maximum number of declarations to return. If this field is missing,
+ * return all matching declarations.
+ */
+ void set maxResults(int value) {
+ this._maxResults = value;
+ }
+
+ SearchGetElementDeclarationsParams(
+ {String file, String pattern, int maxResults}) {
+ this.file = file;
+ this.pattern = pattern;
+ this.maxResults = maxResults;
+ }
+
+ factory SearchGetElementDeclarationsParams.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"]);
+ }
+ String pattern;
+ if (json.containsKey("pattern")) {
+ pattern =
+ jsonDecoder.decodeString(jsonPath + ".pattern", json["pattern"]);
+ }
+ int maxResults;
+ if (json.containsKey("maxResults")) {
+ maxResults =
+ jsonDecoder.decodeInt(jsonPath + ".maxResults", json["maxResults"]);
+ }
+ return new SearchGetElementDeclarationsParams(
+ file: file, pattern: pattern, maxResults: maxResults);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.getElementDeclarations params", json);
+ }
+ }
+
+ factory SearchGetElementDeclarationsParams.fromRequest(Request request) {
+ return new SearchGetElementDeclarationsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (file != null) {
+ result["file"] = file;
+ }
+ if (pattern != null) {
+ result["pattern"] = pattern;
+ }
+ if (maxResults != null) {
+ result["maxResults"] = maxResults;
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "search.getElementDeclarations", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchGetElementDeclarationsParams) {
+ return file == other.file &&
+ pattern == other.pattern &&
+ maxResults == other.maxResults;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, file.hashCode);
+ hash = JenkinsSmiHash.combine(hash, pattern.hashCode);
+ hash = JenkinsSmiHash.combine(hash, maxResults.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.getElementDeclarations result
+ *
+ * {
+ * "declarations": List<ElementDeclaration>
+ * "files": List<FilePath>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchGetElementDeclarationsResult implements ResponseResult {
+ List<ElementDeclaration> _declarations;
+
+ List<String> _files;
+
+ /**
+ * The list of declarations.
+ */
+ List<ElementDeclaration> get declarations => _declarations;
+
+ /**
+ * The list of declarations.
+ */
+ void set declarations(List<ElementDeclaration> value) {
+ assert(value != null);
+ this._declarations = value;
+ }
+
+ /**
+ * The list of the paths of files with declarations.
+ */
+ List<String> get files => _files;
+
+ /**
+ * The list of the paths of files with declarations.
+ */
+ void set files(List<String> value) {
+ assert(value != null);
+ this._files = value;
+ }
+
+ SearchGetElementDeclarationsResult(
+ List<ElementDeclaration> declarations, List<String> files) {
+ this.declarations = declarations;
+ this.files = files;
+ }
+
+ factory SearchGetElementDeclarationsResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<ElementDeclaration> declarations;
+ if (json.containsKey("declarations")) {
+ declarations = jsonDecoder.decodeList(
+ jsonPath + ".declarations",
+ json["declarations"],
+ (String jsonPath, Object json) =>
+ new ElementDeclaration.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "declarations");
+ }
+ List<String> files;
+ if (json.containsKey("files")) {
+ files = jsonDecoder.decodeList(
+ jsonPath + ".files", json["files"], jsonDecoder.decodeString);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "files");
+ }
+ return new SearchGetElementDeclarationsResult(declarations, files);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.getElementDeclarations result", json);
+ }
+ }
+
+ factory SearchGetElementDeclarationsResult.fromResponse(Response response) {
+ return new SearchGetElementDeclarationsResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["declarations"] =
+ declarations.map((ElementDeclaration value) => value.toJson()).toList();
+ result["files"] = files;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchGetElementDeclarationsResult) {
+ return listEqual(declarations, other.declarations,
+ (ElementDeclaration a, ElementDeclaration b) => a == b) &&
+ listEqual(files, other.files, (String a, String b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, declarations.hashCode);
+ hash = JenkinsSmiHash.combine(hash, files.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.getTypeHierarchy params
+ *
+ * {
+ * "file": FilePath
+ * "offset": int
+ * "superOnly": optional bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchGetTypeHierarchyParams implements RequestParams {
+ String _file;
+
+ int _offset;
+
+ bool _superOnly;
+
+ /**
+ * The file containing the declaration or reference to the type for which a
+ * hierarchy is being requested.
+ */
+ String get file => _file;
+
+ /**
+ * The file containing the declaration or reference to the type for which a
+ * hierarchy is being requested.
+ */
+ void set file(String value) {
+ assert(value != null);
+ this._file = value;
+ }
+
+ /**
+ * The offset of the name of the type within the file.
+ */
+ int get offset => _offset;
+
+ /**
+ * The offset of the name of the type within the file.
+ */
+ void set offset(int value) {
+ assert(value != null);
+ this._offset = value;
+ }
+
+ /**
+ * True if the client is only requesting superclasses and interfaces
+ * hierarchy.
+ */
+ bool get superOnly => _superOnly;
+
+ /**
+ * True if the client is only requesting superclasses and interfaces
+ * hierarchy.
+ */
+ void set superOnly(bool value) {
+ this._superOnly = value;
+ }
+
+ SearchGetTypeHierarchyParams(String file, int offset, {bool superOnly}) {
+ this.file = file;
+ this.offset = offset;
+ this.superOnly = superOnly;
+ }
+
+ factory SearchGetTypeHierarchyParams.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");
+ }
+ bool superOnly;
+ if (json.containsKey("superOnly")) {
+ superOnly =
+ jsonDecoder.decodeBool(jsonPath + ".superOnly", json["superOnly"]);
+ }
+ return new SearchGetTypeHierarchyParams(file, offset,
+ superOnly: superOnly);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.getTypeHierarchy params", json);
+ }
+ }
+
+ factory SearchGetTypeHierarchyParams.fromRequest(Request request) {
+ return new SearchGetTypeHierarchyParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["file"] = file;
+ result["offset"] = offset;
+ if (superOnly != null) {
+ result["superOnly"] = superOnly;
+ }
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "search.getTypeHierarchy", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchGetTypeHierarchyParams) {
+ return file == other.file &&
+ offset == other.offset &&
+ superOnly == other.superOnly;
+ }
+ 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, superOnly.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * search.getTypeHierarchy result
+ *
+ * {
+ * "hierarchyItems": optional List<TypeHierarchyItem>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchGetTypeHierarchyResult implements ResponseResult {
+ List<TypeHierarchyItem> _hierarchyItems;
+
+ /**
+ * A list of the types in the requested hierarchy. The first element of the
+ * list is the item representing the type for which the hierarchy was
+ * requested. The index of other elements of the list is unspecified, but
+ * correspond to the integers used to reference supertype and subtype items
+ * within the items.
+ *
+ * This field will be absent if the code at the given file and offset does
+ * not represent a type, or if the file has not been sufficiently analyzed to
+ * allow a type hierarchy to be produced.
+ */
+ List<TypeHierarchyItem> get hierarchyItems => _hierarchyItems;
+
+ /**
+ * A list of the types in the requested hierarchy. The first element of the
+ * list is the item representing the type for which the hierarchy was
+ * requested. The index of other elements of the list is unspecified, but
+ * correspond to the integers used to reference supertype and subtype items
+ * within the items.
+ *
+ * This field will be absent if the code at the given file and offset does
+ * not represent a type, or if the file has not been sufficiently analyzed to
+ * allow a type hierarchy to be produced.
+ */
+ void set hierarchyItems(List<TypeHierarchyItem> value) {
+ this._hierarchyItems = value;
+ }
+
+ SearchGetTypeHierarchyResult({List<TypeHierarchyItem> hierarchyItems}) {
+ this.hierarchyItems = hierarchyItems;
+ }
+
+ factory SearchGetTypeHierarchyResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<TypeHierarchyItem> hierarchyItems;
+ if (json.containsKey("hierarchyItems")) {
+ hierarchyItems = jsonDecoder.decodeList(
+ jsonPath + ".hierarchyItems",
+ json["hierarchyItems"],
+ (String jsonPath, Object json) =>
+ new TypeHierarchyItem.fromJson(jsonDecoder, jsonPath, json));
+ }
+ return new SearchGetTypeHierarchyResult(hierarchyItems: hierarchyItems);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "search.getTypeHierarchy result", json);
+ }
+ }
+
+ factory SearchGetTypeHierarchyResult.fromResponse(Response response) {
+ return new SearchGetTypeHierarchyResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (hierarchyItems != null) {
+ result["hierarchyItems"] = hierarchyItems
+ .map((TypeHierarchyItem value) => value.toJson())
+ .toList();
+ }
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchGetTypeHierarchyResult) {
+ return listEqual(hierarchyItems, other.hierarchyItems,
+ (TypeHierarchyItem a, TypeHierarchyItem b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, hierarchyItems.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * SearchResult
+ *
+ * {
+ * "location": Location
+ * "kind": SearchResultKind
+ * "isPotential": bool
+ * "path": List<Element>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchResult implements HasToJson {
+ Location _location;
+
+ SearchResultKind _kind;
+
+ bool _isPotential;
+
+ List<Element> _path;
+
+ /**
+ * The location of the code that matched the search criteria.
+ */
+ Location get location => _location;
+
+ /**
+ * The location of the code that matched the search criteria.
+ */
+ void set location(Location value) {
+ assert(value != null);
+ this._location = value;
+ }
+
+ /**
+ * The kind of element that was found or the kind of reference that was
+ * found.
+ */
+ SearchResultKind get kind => _kind;
+
+ /**
+ * The kind of element that was found or the kind of reference that was
+ * found.
+ */
+ void set kind(SearchResultKind value) {
+ assert(value != null);
+ this._kind = value;
+ }
+
+ /**
+ * True if the result is a potential match but cannot be confirmed to be a
+ * match. For example, if all references to a method m defined in some class
+ * were requested, and a reference to a method m from an unknown class were
+ * found, it would be marked as being a potential match.
+ */
+ bool get isPotential => _isPotential;
+
+ /**
+ * True if the result is a potential match but cannot be confirmed to be a
+ * match. For example, if all references to a method m defined in some class
+ * were requested, and a reference to a method m from an unknown class were
+ * found, it would be marked as being a potential match.
+ */
+ void set isPotential(bool value) {
+ assert(value != null);
+ this._isPotential = value;
+ }
+
+ /**
+ * The elements that contain the result, starting with the most immediately
+ * enclosing ancestor and ending with the library.
+ */
+ List<Element> get path => _path;
+
+ /**
+ * The elements that contain the result, starting with the most immediately
+ * enclosing ancestor and ending with the library.
+ */
+ void set path(List<Element> value) {
+ assert(value != null);
+ this._path = value;
+ }
+
+ SearchResult(Location location, SearchResultKind kind, bool isPotential,
+ List<Element> path) {
+ this.location = location;
+ this.kind = kind;
+ this.isPotential = isPotential;
+ this.path = path;
+ }
+
+ factory SearchResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ Location location;
+ if (json.containsKey("location")) {
+ location = new Location.fromJson(
+ jsonDecoder, jsonPath + ".location", json["location"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "location");
+ }
+ SearchResultKind kind;
+ if (json.containsKey("kind")) {
+ kind = new SearchResultKind.fromJson(
+ jsonDecoder, jsonPath + ".kind", json["kind"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "kind");
+ }
+ bool isPotential;
+ if (json.containsKey("isPotential")) {
+ isPotential = jsonDecoder.decodeBool(
+ jsonPath + ".isPotential", json["isPotential"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "isPotential");
+ }
+ List<Element> path;
+ if (json.containsKey("path")) {
+ path = jsonDecoder.decodeList(
+ jsonPath + ".path",
+ json["path"],
+ (String jsonPath, Object json) =>
+ new Element.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "path");
+ }
+ return new SearchResult(location, kind, isPotential, path);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "SearchResult", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["location"] = location.toJson();
+ result["kind"] = kind.toJson();
+ result["isPotential"] = isPotential;
+ result["path"] = path.map((Element value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchResult) {
+ return location == other.location &&
+ kind == other.kind &&
+ isPotential == other.isPotential &&
+ listEqual(path, other.path, (Element a, Element b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, location.hashCode);
+ hash = JenkinsSmiHash.combine(hash, kind.hashCode);
+ hash = JenkinsSmiHash.combine(hash, isPotential.hashCode);
+ hash = JenkinsSmiHash.combine(hash, path.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * SearchResultKind
+ *
+ * enum {
+ * DECLARATION
+ * INVOCATION
+ * READ
+ * READ_WRITE
+ * REFERENCE
+ * UNKNOWN
+ * WRITE
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchResultKind implements Enum {
+ /**
+ * The declaration of an element.
+ */
+ static const SearchResultKind DECLARATION =
+ const SearchResultKind._("DECLARATION");
+
+ /**
+ * The invocation of a function or method.
+ */
+ static const SearchResultKind INVOCATION =
+ const SearchResultKind._("INVOCATION");
+
+ /**
+ * A reference to a field, parameter or variable where it is being read.
+ */
+ static const SearchResultKind READ = const SearchResultKind._("READ");
+
+ /**
+ * A reference to a field, parameter or variable where it is being read and
+ * written.
+ */
+ static const SearchResultKind READ_WRITE =
+ const SearchResultKind._("READ_WRITE");
+
+ /**
+ * A reference to an element.
+ */
+ static const SearchResultKind REFERENCE =
+ const SearchResultKind._("REFERENCE");
+
+ /**
+ * Some other kind of search result.
+ */
+ static const SearchResultKind UNKNOWN = const SearchResultKind._("UNKNOWN");
+
+ /**
+ * A reference to a field, parameter or variable where it is being written.
+ */
+ static const SearchResultKind WRITE = const SearchResultKind._("WRITE");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<SearchResultKind> VALUES = const <SearchResultKind>[
+ DECLARATION,
+ INVOCATION,
+ READ,
+ READ_WRITE,
+ REFERENCE,
+ UNKNOWN,
+ WRITE
+ ];
+
+ @override
+ final String name;
+
+ const SearchResultKind._(this.name);
+
+ factory SearchResultKind(String name) {
+ switch (name) {
+ case "DECLARATION":
+ return DECLARATION;
+ case "INVOCATION":
+ return INVOCATION;
+ case "READ":
+ return READ;
+ case "READ_WRITE":
+ return READ_WRITE;
+ case "REFERENCE":
+ return REFERENCE;
+ case "UNKNOWN":
+ return UNKNOWN;
+ case "WRITE":
+ return WRITE;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory SearchResultKind.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new SearchResultKind(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "SearchResultKind", json);
+ }
+
+ @override
+ String toString() => "SearchResultKind.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * search.results params
+ *
+ * {
+ * "id": SearchId
+ * "results": List<SearchResult>
+ * "isLast": bool
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class SearchResultsParams implements HasToJson {
+ String _id;
+
+ List<SearchResult> _results;
+
+ bool _isLast;
+
+ /**
+ * The id associated with the search.
+ */
+ String get id => _id;
+
+ /**
+ * The id associated with the search.
+ */
+ void set id(String value) {
+ assert(value != null);
+ this._id = value;
+ }
+
+ /**
+ * The search results being reported.
+ */
+ List<SearchResult> get results => _results;
+
+ /**
+ * The search results being reported.
+ */
+ void set results(List<SearchResult> value) {
+ assert(value != null);
+ this._results = value;
+ }
+
+ /**
+ * True if this is that last set of results that will be returned for the
+ * indicated search.
+ */
+ bool get isLast => _isLast;
+
+ /**
+ * True if this is that last set of results that will be returned for the
+ * indicated search.
+ */
+ void set isLast(bool value) {
+ assert(value != null);
+ this._isLast = value;
+ }
+
+ SearchResultsParams(String id, List<SearchResult> results, bool isLast) {
+ this.id = id;
+ this.results = results;
+ this.isLast = isLast;
+ }
+
+ factory SearchResultsParams.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"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "id");
+ }
+ List<SearchResult> results;
+ if (json.containsKey("results")) {
+ results = jsonDecoder.decodeList(
+ jsonPath + ".results",
+ json["results"],
+ (String jsonPath, Object json) =>
+ new SearchResult.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "results");
+ }
+ bool isLast;
+ if (json.containsKey("isLast")) {
+ isLast = jsonDecoder.decodeBool(jsonPath + ".isLast", json["isLast"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "isLast");
+ }
+ return new SearchResultsParams(id, results, isLast);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "search.results params", json);
+ }
+ }
+
+ factory SearchResultsParams.fromNotification(Notification notification) {
+ return new SearchResultsParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["id"] = id;
+ result["results"] =
+ results.map((SearchResult value) => value.toJson()).toList();
+ result["isLast"] = isLast;
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("search.results", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is SearchResultsParams) {
+ return id == other.id &&
+ listEqual(results, other.results,
+ (SearchResult a, SearchResult b) => a == b) &&
+ isLast == other.isLast;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, id.hashCode);
+ hash = JenkinsSmiHash.combine(hash, results.hashCode);
+ hash = JenkinsSmiHash.combine(hash, isLast.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * server.connected params
+ *
+ * {
+ * "version": String
+ * "pid": int
+ * "sessionId": optional String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerConnectedParams implements HasToJson {
+ String _version;
+
+ int _pid;
+
+ String _sessionId;
+
+ /**
+ * The version number of the analysis server.
+ */
+ String get version => _version;
+
+ /**
+ * The version number of the analysis server.
+ */
+ void set version(String value) {
+ assert(value != null);
+ this._version = value;
+ }
+
+ /**
+ * The process id of the analysis server process.
+ */
+ int get pid => _pid;
+
+ /**
+ * The process id of the analysis server process.
+ */
+ void set pid(int value) {
+ assert(value != null);
+ this._pid = value;
+ }
+
+ /**
+ * The session id for this session.
+ */
+ String get sessionId => _sessionId;
+
+ /**
+ * The session id for this session.
+ */
+ void set sessionId(String value) {
+ this._sessionId = value;
+ }
+
+ ServerConnectedParams(String version, int pid, {String sessionId}) {
+ this.version = version;
+ this.pid = pid;
+ this.sessionId = sessionId;
+ }
+
+ factory ServerConnectedParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String version;
+ if (json.containsKey("version")) {
+ version =
+ jsonDecoder.decodeString(jsonPath + ".version", json["version"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "version");
+ }
+ int pid;
+ if (json.containsKey("pid")) {
+ pid = jsonDecoder.decodeInt(jsonPath + ".pid", json["pid"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "pid");
+ }
+ String sessionId;
+ if (json.containsKey("sessionId")) {
+ sessionId = jsonDecoder.decodeString(
+ jsonPath + ".sessionId", json["sessionId"]);
+ }
+ return new ServerConnectedParams(version, pid, sessionId: sessionId);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "server.connected params", json);
+ }
+ }
+
+ factory ServerConnectedParams.fromNotification(Notification notification) {
+ return new ServerConnectedParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["version"] = version;
+ result["pid"] = pid;
+ if (sessionId != null) {
+ result["sessionId"] = sessionId;
+ }
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("server.connected", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerConnectedParams) {
+ return version == other.version &&
+ pid == other.pid &&
+ sessionId == other.sessionId;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, version.hashCode);
+ hash = JenkinsSmiHash.combine(hash, pid.hashCode);
+ hash = JenkinsSmiHash.combine(hash, sessionId.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * server.error params
+ *
+ * {
+ * "isFatal": bool
+ * "message": String
+ * "stackTrace": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerErrorParams implements HasToJson {
+ bool _isFatal;
+
+ String _message;
+
+ String _stackTrace;
+
+ /**
+ * True if the error is a fatal error, meaning that the server will shutdown
+ * automatically after sending this notification.
+ */
+ bool get isFatal => _isFatal;
+
+ /**
+ * True if the error is a fatal error, meaning that the server will shutdown
+ * automatically after sending this notification.
+ */
+ void set isFatal(bool value) {
+ assert(value != null);
+ this._isFatal = value;
+ }
+
+ /**
+ * The error message indicating what kind of error was encountered.
+ */
+ String get message => _message;
+
+ /**
+ * The error message indicating what kind of error was encountered.
+ */
+ void set message(String value) {
+ assert(value != null);
+ this._message = value;
+ }
+
+ /**
+ * The stack trace associated with the generation of the error, used for
+ * debugging the server.
+ */
+ String get stackTrace => _stackTrace;
+
+ /**
+ * The stack trace associated with the generation of the error, used for
+ * debugging the server.
+ */
+ void set stackTrace(String value) {
+ assert(value != null);
+ this._stackTrace = value;
+ }
+
+ ServerErrorParams(bool isFatal, String message, String stackTrace) {
+ this.isFatal = isFatal;
+ this.message = message;
+ this.stackTrace = stackTrace;
+ }
+
+ factory ServerErrorParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ bool isFatal;
+ if (json.containsKey("isFatal")) {
+ isFatal =
+ jsonDecoder.decodeBool(jsonPath + ".isFatal", json["isFatal"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "isFatal");
+ }
+ String message;
+ if (json.containsKey("message")) {
+ message =
+ jsonDecoder.decodeString(jsonPath + ".message", json["message"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "message");
+ }
+ String stackTrace;
+ if (json.containsKey("stackTrace")) {
+ stackTrace = jsonDecoder.decodeString(
+ jsonPath + ".stackTrace", json["stackTrace"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "stackTrace");
+ }
+ return new ServerErrorParams(isFatal, message, stackTrace);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "server.error params", json);
+ }
+ }
+
+ factory ServerErrorParams.fromNotification(Notification notification) {
+ return new ServerErrorParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["isFatal"] = isFatal;
+ result["message"] = message;
+ result["stackTrace"] = stackTrace;
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("server.error", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerErrorParams) {
+ return isFatal == other.isFatal &&
+ message == other.message &&
+ stackTrace == other.stackTrace;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, isFatal.hashCode);
+ hash = JenkinsSmiHash.combine(hash, message.hashCode);
+ hash = JenkinsSmiHash.combine(hash, stackTrace.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * server.getVersion params
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerGetVersionParams implements RequestParams {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "server.getVersion", null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerGetVersionParams) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 55877452;
+ }
+}
+
+/**
+ * server.getVersion result
+ *
+ * {
+ * "version": String
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerGetVersionResult implements ResponseResult {
+ String _version;
+
+ /**
+ * The version number of the analysis server.
+ */
+ String get version => _version;
+
+ /**
+ * The version number of the analysis server.
+ */
+ void set version(String value) {
+ assert(value != null);
+ this._version = value;
+ }
+
+ ServerGetVersionResult(String version) {
+ this.version = version;
+ }
+
+ factory ServerGetVersionResult.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ String version;
+ if (json.containsKey("version")) {
+ version =
+ jsonDecoder.decodeString(jsonPath + ".version", json["version"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "version");
+ }
+ return new ServerGetVersionResult(version);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "server.getVersion result", json);
+ }
+ }
+
+ factory ServerGetVersionResult.fromResponse(Response response) {
+ return new ServerGetVersionResult.fromJson(
+ new ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)),
+ "result",
+ response.result);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["version"] = version;
+ return result;
+ }
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerGetVersionResult) {
+ return version == other.version;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, version.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * ServerService
+ *
+ * enum {
+ * STATUS
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerService implements Enum {
+ static const ServerService STATUS = const ServerService._("STATUS");
+
+ /**
+ * A list containing all of the enum values that are defined.
+ */
+ static const List<ServerService> VALUES = const <ServerService>[STATUS];
+
+ @override
+ final String name;
+
+ const ServerService._(this.name);
+
+ factory ServerService(String name) {
+ switch (name) {
+ case "STATUS":
+ return STATUS;
+ }
+ throw new Exception('Illegal enum value: $name');
+ }
+
+ factory ServerService.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json is String) {
+ try {
+ return new ServerService(json);
+ } catch (_) {
+ // Fall through
+ }
+ }
+ throw jsonDecoder.mismatch(jsonPath, "ServerService", json);
+ }
+
+ @override
+ String toString() => "ServerService.$name";
+
+ String toJson() => name;
+}
+
+/**
+ * server.setSubscriptions params
+ *
+ * {
+ * "subscriptions": List<ServerService>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerSetSubscriptionsParams implements RequestParams {
+ List<ServerService> _subscriptions;
+
+ /**
+ * A list of the services being subscribed to.
+ */
+ List<ServerService> get subscriptions => _subscriptions;
+
+ /**
+ * A list of the services being subscribed to.
+ */
+ void set subscriptions(List<ServerService> value) {
+ assert(value != null);
+ this._subscriptions = value;
+ }
+
+ ServerSetSubscriptionsParams(List<ServerService> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+ factory ServerSetSubscriptionsParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ List<ServerService> subscriptions;
+ if (json.containsKey("subscriptions")) {
+ subscriptions = jsonDecoder.decodeList(
+ jsonPath + ".subscriptions",
+ json["subscriptions"],
+ (String jsonPath, Object json) =>
+ new ServerService.fromJson(jsonDecoder, jsonPath, json));
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "subscriptions");
+ }
+ return new ServerSetSubscriptionsParams(subscriptions);
+ } else {
+ throw jsonDecoder.mismatch(
+ jsonPath, "server.setSubscriptions params", json);
+ }
+ }
+
+ factory ServerSetSubscriptionsParams.fromRequest(Request request) {
+ return new ServerSetSubscriptionsParams.fromJson(
+ new RequestDecoder(request), "params", request.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["subscriptions"] =
+ subscriptions.map((ServerService value) => value.toJson()).toList();
+ return result;
+ }
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "server.setSubscriptions", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerSetSubscriptionsParams) {
+ return listEqual(subscriptions, other.subscriptions,
+ (ServerService a, ServerService b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, subscriptions.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * server.setSubscriptions result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerSetSubscriptionsResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerSetSubscriptionsResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 748820900;
+ }
+}
+
+/**
+ * server.shutdown params
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerShutdownParams implements RequestParams {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Request toRequest(String id) {
+ return new Request(id, "server.shutdown", null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerShutdownParams) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 366630911;
+ }
+}
+
+/**
+ * server.shutdown result
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerShutdownResult implements ResponseResult {
+ @override
+ Map<String, dynamic> toJson() => <String, dynamic>{};
+
+ @override
+ Response toResponse(String id) {
+ return new Response(id, result: null);
+ }
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerShutdownResult) {
+ return true;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ return 193626532;
+ }
+}
+
+/**
+ * server.status params
+ *
+ * {
+ * "analysis": optional AnalysisStatus
+ * "pub": optional PubStatus
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class ServerStatusParams implements HasToJson {
+ AnalysisStatus _analysis;
+
+ PubStatus _pub;
+
+ /**
+ * The current status of analysis, including whether analysis is being
+ * performed and if so what is being analyzed.
+ */
+ AnalysisStatus get analysis => _analysis;
+
+ /**
+ * The current status of analysis, including whether analysis is being
+ * performed and if so what is being analyzed.
+ */
+ void set analysis(AnalysisStatus value) {
+ this._analysis = value;
+ }
+
+ /**
+ * The current status of pub execution, indicating whether we are currently
+ * running pub.
+ *
+ * Note: this status type is deprecated, and is no longer sent by the server.
+ */
+ PubStatus get pub => _pub;
+
+ /**
+ * The current status of pub execution, indicating whether we are currently
+ * running pub.
+ *
+ * Note: this status type is deprecated, and is no longer sent by the server.
+ */
+ void set pub(PubStatus value) {
+ this._pub = value;
+ }
+
+ ServerStatusParams({AnalysisStatus analysis, PubStatus pub}) {
+ this.analysis = analysis;
+ this.pub = pub;
+ }
+
+ factory ServerStatusParams.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ AnalysisStatus analysis;
+ if (json.containsKey("analysis")) {
+ analysis = new AnalysisStatus.fromJson(
+ jsonDecoder, jsonPath + ".analysis", json["analysis"]);
+ }
+ PubStatus pub;
+ if (json.containsKey("pub")) {
+ pub =
+ new PubStatus.fromJson(jsonDecoder, jsonPath + ".pub", json["pub"]);
+ }
+ return new ServerStatusParams(analysis: analysis, pub: pub);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "server.status params", json);
+ }
+ }
+
+ factory ServerStatusParams.fromNotification(Notification notification) {
+ return new ServerStatusParams.fromJson(
+ new ResponseDecoder(null), "params", notification.params);
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ if (analysis != null) {
+ result["analysis"] = analysis.toJson();
+ }
+ if (pub != null) {
+ result["pub"] = pub.toJson();
+ }
+ return result;
+ }
+
+ Notification toNotification() {
+ return new Notification("server.status", toJson());
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is ServerStatusParams) {
+ return analysis == other.analysis && pub == other.pub;
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, analysis.hashCode);
+ hash = JenkinsSmiHash.combine(hash, pub.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
+
+/**
+ * TypeHierarchyItem
+ *
+ * {
+ * "classElement": Element
+ * "displayName": optional String
+ * "memberElement": optional Element
+ * "superclass": optional int
+ * "interfaces": List<int>
+ * "mixins": List<int>
+ * "subclasses": List<int>
+ * }
+ *
+ * Clients may not extend, implement or mix-in this class.
+ */
+class TypeHierarchyItem implements HasToJson {
+ Element _classElement;
+
+ String _displayName;
+
+ Element _memberElement;
+
+ int _superclass;
+
+ List<int> _interfaces;
+
+ List<int> _mixins;
+
+ List<int> _subclasses;
+
+ /**
+ * The class element represented by this item.
+ */
+ Element get classElement => _classElement;
+
+ /**
+ * The class element represented by this item.
+ */
+ void set classElement(Element value) {
+ assert(value != null);
+ this._classElement = value;
+ }
+
+ /**
+ * The name to be displayed for the class. This field will be omitted if the
+ * display name is the same as the name of the element. The display name is
+ * different if there is additional type information to be displayed, such as
+ * type arguments.
+ */
+ String get displayName => _displayName;
+
+ /**
+ * The name to be displayed for the class. This field will be omitted if the
+ * display name is the same as the name of the element. The display name is
+ * different if there is additional type information to be displayed, such as
+ * type arguments.
+ */
+ void set displayName(String value) {
+ this._displayName = value;
+ }
+
+ /**
+ * The member in the class corresponding to the member on which the hierarchy
+ * was requested. This field will be omitted if the hierarchy was not
+ * requested for a member or if the class does not have a corresponding
+ * member.
+ */
+ Element get memberElement => _memberElement;
+
+ /**
+ * The member in the class corresponding to the member on which the hierarchy
+ * was requested. This field will be omitted if the hierarchy was not
+ * requested for a member or if the class does not have a corresponding
+ * member.
+ */
+ void set memberElement(Element value) {
+ this._memberElement = value;
+ }
+
+ /**
+ * The index of the item representing the superclass of this class. This
+ * field will be omitted if this item represents the class Object.
+ */
+ int get superclass => _superclass;
+
+ /**
+ * The index of the item representing the superclass of this class. This
+ * field will be omitted if this item represents the class Object.
+ */
+ void set superclass(int value) {
+ this._superclass = value;
+ }
+
+ /**
+ * The indexes of the items representing the interfaces implemented by this
+ * class. The list will be empty if there are no implemented interfaces.
+ */
+ List<int> get interfaces => _interfaces;
+
+ /**
+ * The indexes of the items representing the interfaces implemented by this
+ * class. The list will be empty if there are no implemented interfaces.
+ */
+ void set interfaces(List<int> value) {
+ assert(value != null);
+ this._interfaces = value;
+ }
+
+ /**
+ * The indexes of the items representing the mixins referenced by this class.
+ * The list will be empty if there are no classes mixed in to this class.
+ */
+ List<int> get mixins => _mixins;
+
+ /**
+ * The indexes of the items representing the mixins referenced by this class.
+ * The list will be empty if there are no classes mixed in to this class.
+ */
+ void set mixins(List<int> value) {
+ assert(value != null);
+ this._mixins = value;
+ }
+
+ /**
+ * The indexes of the items representing the subtypes of this class. The list
+ * will be empty if there are no subtypes or if this item represents a
+ * supertype of the pivot type.
+ */
+ List<int> get subclasses => _subclasses;
+
+ /**
+ * The indexes of the items representing the subtypes of this class. The list
+ * will be empty if there are no subtypes or if this item represents a
+ * supertype of the pivot type.
+ */
+ void set subclasses(List<int> value) {
+ assert(value != null);
+ this._subclasses = value;
+ }
+
+ TypeHierarchyItem(Element classElement,
+ {String displayName,
+ Element memberElement,
+ int superclass,
+ List<int> interfaces,
+ List<int> mixins,
+ List<int> subclasses}) {
+ this.classElement = classElement;
+ this.displayName = displayName;
+ this.memberElement = memberElement;
+ this.superclass = superclass;
+ if (interfaces == null) {
+ this.interfaces = <int>[];
+ } else {
+ this.interfaces = interfaces;
+ }
+ if (mixins == null) {
+ this.mixins = <int>[];
+ } else {
+ this.mixins = mixins;
+ }
+ if (subclasses == null) {
+ this.subclasses = <int>[];
+ } else {
+ this.subclasses = subclasses;
+ }
+ }
+
+ factory TypeHierarchyItem.fromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json) {
+ if (json == null) {
+ json = {};
+ }
+ if (json is Map) {
+ Element classElement;
+ if (json.containsKey("classElement")) {
+ classElement = new Element.fromJson(
+ jsonDecoder, jsonPath + ".classElement", json["classElement"]);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "classElement");
+ }
+ String displayName;
+ if (json.containsKey("displayName")) {
+ displayName = jsonDecoder.decodeString(
+ jsonPath + ".displayName", json["displayName"]);
+ }
+ Element memberElement;
+ if (json.containsKey("memberElement")) {
+ memberElement = new Element.fromJson(
+ jsonDecoder, jsonPath + ".memberElement", json["memberElement"]);
+ }
+ int superclass;
+ if (json.containsKey("superclass")) {
+ superclass =
+ jsonDecoder.decodeInt(jsonPath + ".superclass", json["superclass"]);
+ }
+ List<int> interfaces;
+ if (json.containsKey("interfaces")) {
+ interfaces = jsonDecoder.decodeList(jsonPath + ".interfaces",
+ json["interfaces"], jsonDecoder.decodeInt);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "interfaces");
+ }
+ List<int> mixins;
+ if (json.containsKey("mixins")) {
+ mixins = jsonDecoder.decodeList(
+ jsonPath + ".mixins", json["mixins"], jsonDecoder.decodeInt);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "mixins");
+ }
+ List<int> subclasses;
+ if (json.containsKey("subclasses")) {
+ subclasses = jsonDecoder.decodeList(jsonPath + ".subclasses",
+ json["subclasses"], jsonDecoder.decodeInt);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "subclasses");
+ }
+ return new TypeHierarchyItem(classElement,
+ displayName: displayName,
+ memberElement: memberElement,
+ superclass: superclass,
+ interfaces: interfaces,
+ mixins: mixins,
+ subclasses: subclasses);
+ } else {
+ throw jsonDecoder.mismatch(jsonPath, "TypeHierarchyItem", json);
+ }
+ }
+
+ @override
+ Map<String, dynamic> toJson() {
+ Map<String, dynamic> result = {};
+ result["classElement"] = classElement.toJson();
+ if (displayName != null) {
+ result["displayName"] = displayName;
+ }
+ if (memberElement != null) {
+ result["memberElement"] = memberElement.toJson();
+ }
+ if (superclass != null) {
+ result["superclass"] = superclass;
+ }
+ result["interfaces"] = interfaces;
+ result["mixins"] = mixins;
+ result["subclasses"] = subclasses;
+ return result;
+ }
+
+ @override
+ String toString() => json.encode(toJson());
+
+ @override
+ bool operator ==(other) {
+ if (other is TypeHierarchyItem) {
+ return classElement == other.classElement &&
+ displayName == other.displayName &&
+ memberElement == other.memberElement &&
+ superclass == other.superclass &&
+ listEqual(interfaces, other.interfaces, (int a, int b) => a == b) &&
+ listEqual(mixins, other.mixins, (int a, int b) => a == b) &&
+ listEqual(subclasses, other.subclasses, (int a, int b) => a == b);
+ }
+ return false;
+ }
+
+ @override
+ int get hashCode {
+ int hash = 0;
+ hash = JenkinsSmiHash.combine(hash, classElement.hashCode);
+ hash = JenkinsSmiHash.combine(hash, displayName.hashCode);
+ hash = JenkinsSmiHash.combine(hash, memberElement.hashCode);
+ hash = JenkinsSmiHash.combine(hash, superclass.hashCode);
+ hash = JenkinsSmiHash.combine(hash, interfaces.hashCode);
+ hash = JenkinsSmiHash.combine(hash, mixins.hashCode);
+ hash = JenkinsSmiHash.combine(hash, subclasses.hashCode);
+ return JenkinsSmiHash.finish(hash);
+ }
+}
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart
new file mode 100644
index 0000000..95d5663
--- /dev/null
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart
@@ -0,0 +1,479 @@
+// Copyright (c) 2018, 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.
+
+import 'dart:collection';
+import 'dart:convert' hide JsonDecoder;
+
+import 'package:analysis_server_client/src/protocol/protocol_base.dart';
+import 'package:analysis_server_client/src/protocol/protocol_generated.dart';
+import 'package:analysis_server_client/src/protocol/protocol_common.dart';
+
+final Map<String, RefactoringKind> REQUEST_ID_REFACTORING_KINDS =
+ new HashMap<String, RefactoringKind>();
+
+/**
+ * Adds the given [sourceEdits] to the list in [sourceFileEdit].
+ */
+void addAllEditsForSource(
+ SourceFileEdit sourceFileEdit, Iterable<SourceEdit> edits) {
+ edits.forEach(sourceFileEdit.add);
+}
+
+/**
+ * Adds the given [sourceEdit] to the list in [sourceFileEdit].
+ */
+void addEditForSource(SourceFileEdit sourceFileEdit, SourceEdit sourceEdit) {
+ List<SourceEdit> edits = sourceFileEdit.edits;
+ int index = 0;
+ while (index < edits.length && edits[index].offset > sourceEdit.offset) {
+ index++;
+ }
+ edits.insert(index, sourceEdit);
+}
+
+/**
+ * Adds [edit] to the [FileEdit] for the given [file].
+ */
+void addEditToSourceChange(
+ SourceChange change, String file, int fileStamp, SourceEdit edit) {
+ SourceFileEdit fileEdit = change.getFileEdit(file);
+ if (fileEdit == null) {
+ fileEdit = new SourceFileEdit(file, fileStamp);
+ change.addFileEdit(fileEdit);
+ }
+ fileEdit.add(edit);
+}
+
+/**
+ * Get the result of applying the edit to the given [code]. Access via
+ * SourceEdit.apply().
+ */
+String applyEdit(String code, SourceEdit edit) {
+ if (edit.length < 0) {
+ throw new RangeError('length is negative');
+ }
+ return code.replaceRange(edit.offset, edit.end, edit.replacement);
+}
+
+/**
+ * Get the result of applying a set of [edits] to the given [code]. Edits
+ * are applied in the order they appear in [edits]. Access via
+ * SourceEdit.applySequence().
+ */
+String applySequenceOfEdits(String code, Iterable<SourceEdit> edits) {
+ edits.forEach((SourceEdit edit) {
+ code = edit.apply(code);
+ });
+ return code;
+}
+
+/**
+ * Returns the [FileEdit] for the given [file], maybe `null`.
+ */
+SourceFileEdit getChangeFileEdit(SourceChange change, String file) {
+ for (SourceFileEdit fileEdit in change.edits) {
+ if (fileEdit.file == file) {
+ return fileEdit;
+ }
+ }
+ return null;
+}
+
+/**
+ * Compare the lists [listA] and [listB], using [itemEqual] to compare
+ * list elements.
+ */
+bool listEqual<T1, T2>(
+ List<T1> listA, List<T2> listB, bool itemEqual(T1 a, T2 b)) {
+ if (listA == null) {
+ return listB == null;
+ }
+ if (listB == null) {
+ return false;
+ }
+ if (listA.length != listB.length) {
+ return false;
+ }
+ for (int i = 0; i < listA.length; i++) {
+ if (!itemEqual(listA[i], listB[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * Compare the maps [mapA] and [mapB], using [valueEqual] to compare map
+ * values.
+ */
+bool mapEqual<K, V>(Map<K, V> mapA, Map<K, V> mapB, bool valueEqual(V a, V b)) {
+ if (mapA == null) {
+ return mapB == null;
+ }
+ if (mapB == null) {
+ return false;
+ }
+ if (mapA.length != mapB.length) {
+ return false;
+ }
+ for (var key in mapA.keys) {
+ if (!mapB.containsKey(key)) {
+ return false;
+ }
+ if (!valueEqual(mapA[key], mapB[key])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * Translate the input [map], applying [keyCallback] to all its keys, and
+ * [valueCallback] to all its values.
+ */
+Map<KR, VR> mapMap<KP, VP, KR, VR>(Map<KP, VP> map,
+ {KR keyCallback(KP key), VR valueCallback(VP value)}) {
+ Map<KR, VR> result = new HashMap<KR, VR>();
+ map.forEach((key, value) {
+ KR resultKey;
+ VR resultValue;
+ if (keyCallback != null) {
+ resultKey = keyCallback(key);
+ } else {
+ resultKey = key as KR;
+ }
+ if (valueCallback != null) {
+ resultValue = valueCallback(value);
+ } else {
+ resultValue = value as VR;
+ }
+ result[resultKey] = resultValue;
+ });
+ return result;
+}
+
+RefactoringProblemSeverity maxRefactoringProblemSeverity(
+ RefactoringProblemSeverity a, RefactoringProblemSeverity b) {
+ if (b == null) {
+ return a;
+ }
+ if (a == null) {
+ return b;
+ } else if (a == RefactoringProblemSeverity.INFO) {
+ return b;
+ } else if (a == RefactoringProblemSeverity.WARNING) {
+ if (b == RefactoringProblemSeverity.ERROR ||
+ b == RefactoringProblemSeverity.FATAL) {
+ return b;
+ }
+ } else if (a == RefactoringProblemSeverity.ERROR) {
+ if (b == RefactoringProblemSeverity.FATAL) {
+ return b;
+ }
+ }
+ return a;
+}
+
+/**
+ * Create a [RefactoringFeedback] corresponding the given [kind].
+ */
+RefactoringFeedback refactoringFeedbackFromJson(
+ JsonDecoder jsonDecoder, String jsonPath, Object json, Map feedbackJson) {
+ RefactoringKind kind = jsonDecoder.refactoringKind;
+ if (kind == RefactoringKind.EXTRACT_LOCAL_VARIABLE) {
+ return new ExtractLocalVariableFeedback.fromJson(
+ jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.EXTRACT_METHOD) {
+ return new ExtractMethodFeedback.fromJson(jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.EXTRACT_WIDGET) {
+ return new ExtractWidgetFeedback.fromJson(jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.INLINE_LOCAL_VARIABLE) {
+ return new InlineLocalVariableFeedback.fromJson(
+ jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.INLINE_METHOD) {
+ return new InlineMethodFeedback.fromJson(jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.RENAME) {
+ return new RenameFeedback.fromJson(jsonDecoder, jsonPath, json);
+ }
+ return null;
+}
+
+/**
+ * Create a [RefactoringOptions] corresponding the given [kind].
+ */
+RefactoringOptions refactoringOptionsFromJson(JsonDecoder jsonDecoder,
+ String jsonPath, Object json, RefactoringKind kind) {
+ if (kind == RefactoringKind.EXTRACT_LOCAL_VARIABLE) {
+ return new ExtractLocalVariableOptions.fromJson(
+ jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.EXTRACT_METHOD) {
+ return new ExtractMethodOptions.fromJson(jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.EXTRACT_WIDGET) {
+ return new ExtractWidgetOptions.fromJson(jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.INLINE_METHOD) {
+ return new InlineMethodOptions.fromJson(jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.MOVE_FILE) {
+ return new MoveFileOptions.fromJson(jsonDecoder, jsonPath, json);
+ }
+ if (kind == RefactoringKind.RENAME) {
+ return new RenameOptions.fromJson(jsonDecoder, jsonPath, json);
+ }
+ return null;
+}
+
+/**
+ * Type of callbacks used to decode parts of JSON objects. [jsonPath] is a
+ * string describing the part of the JSON object being decoded, and [value] is
+ * the part to decode.
+ */
+typedef E JsonDecoderCallback<E>(String jsonPath, Object value);
+
+/**
+ * Instances of the class [HasToJson] implement [toJson] method that returns
+ * a JSON presentation.
+ */
+abstract class HasToJson {
+ /**
+ * Returns a JSON presentation of the object.
+ */
+ Map<String, Object> toJson();
+}
+
+/**
+ * Base class for decoding JSON objects. The derived class must implement
+ * error reporting logic.
+ */
+abstract class JsonDecoder {
+ /**
+ * Retrieve the RefactoringKind that should be assumed when decoding
+ * refactoring feedback objects, or null if no refactoring feedback object is
+ * expected to be encountered.
+ */
+ RefactoringKind get refactoringKind;
+
+ /**
+ * Decode a JSON object that is expected to be a boolean. The strings "true"
+ * and "false" are also accepted.
+ */
+ bool decodeBool(String jsonPath, Object json) {
+ if (json is bool) {
+ return json;
+ } else if (json == 'true') {
+ return true;
+ } else if (json == 'false') {
+ return false;
+ }
+ throw mismatch(jsonPath, 'bool', json);
+ }
+
+ /**
+ * Decode a JSON object that is expected to be an integer. A string
+ * representation of an integer is also accepted.
+ */
+ int decodeInt(String jsonPath, Object json) {
+ if (json is int) {
+ return json;
+ } else if (json is String) {
+ int value = int.tryParse(json);
+ if (value == null) {
+ throw mismatch(jsonPath, 'int', json);
+ }
+ return value;
+ }
+ throw mismatch(jsonPath, 'int', json);
+ }
+
+ /**
+ * Decode a JSON object that is expected to be a List. The [decoder] is used
+ * to decode the items in the list.
+ *
+ * The type parameter [E] is the expected type of the elements in the list.
+ */
+ List<E> decodeList<E>(String jsonPath, Object json,
+ [JsonDecoderCallback<E> decoder]) {
+ if (json == null) {
+ return <E>[];
+ } else if (json is List) {
+ List<E> result = <E>[];
+ for (int i = 0; i < json.length; i++) {
+ result.add(decoder('$jsonPath[$i]', json[i]));
+ }
+ return result;
+ } else {
+ throw mismatch(jsonPath, 'List', json);
+ }
+ }
+
+ /**
+ * Decode a JSON object that is expected to be a Map. [keyDecoder] is used
+ * to decode the keys, and [valueDecoder] is used to decode the values.
+ */
+ Map<K, V> decodeMap<K, V>(String jsonPath, Object jsonData,
+ {JsonDecoderCallback<K> keyDecoder,
+ JsonDecoderCallback<V> valueDecoder}) {
+ if (jsonData == null) {
+ return {};
+ } else if (jsonData is Map) {
+ Map<K, V> result = <K, V>{};
+ jsonData.forEach((key, value) {
+ K decodedKey;
+ if (keyDecoder != null) {
+ decodedKey = keyDecoder('$jsonPath.key', key);
+ } else {
+ decodedKey = key as K;
+ }
+ if (valueDecoder != null) {
+ value = valueDecoder('$jsonPath[${json.encode(key)}]', value);
+ }
+ result[decodedKey] = value as V;
+ });
+ return result;
+ } else {
+ throw mismatch(jsonPath, 'Map', jsonData);
+ }
+ }
+
+ /**
+ * Decode a JSON object that is expected to be a string.
+ */
+ String decodeString(String jsonPath, Object json) {
+ if (json is String) {
+ return json;
+ } else {
+ throw mismatch(jsonPath, 'String', json);
+ }
+ }
+
+ /**
+ * Decode a JSON object that is expected to be one of several choices,
+ * where the choices are disambiguated by the contents of the field [field].
+ * [decoders] is a map from each possible string in the field to the decoder
+ * that should be used to decode the JSON object.
+ */
+ Object decodeUnion(String jsonPath, Map jsonData, String field,
+ Map<String, JsonDecoderCallback> decoders) {
+ if (jsonData is Map) {
+ if (!jsonData.containsKey(field)) {
+ throw missingKey(jsonPath, field);
+ }
+ var disambiguatorPath = '$jsonPath[${json.encode(field)}]';
+ String disambiguator = decodeString(disambiguatorPath, jsonData[field]);
+ if (!decoders.containsKey(disambiguator)) {
+ throw mismatch(
+ disambiguatorPath, 'One of: ${decoders.keys.toList()}', jsonData);
+ }
+ return decoders[disambiguator](jsonPath, jsonData);
+ } else {
+ throw mismatch(jsonPath, 'Map', jsonData);
+ }
+ }
+
+ /**
+ * Create an exception to throw if the JSON object at [jsonPath] fails to
+ * match the API definition of [expected].
+ */
+ dynamic mismatch(String jsonPath, String expected, [Object actual]);
+
+ /**
+ * Create an exception to throw if the JSON object at [jsonPath] is missing
+ * the key [key].
+ */
+ dynamic missingKey(String jsonPath, String key);
+}
+
+/**
+ * JsonDecoder for decoding requests. Errors are reporting by throwing a
+ * [RequestFailure].
+ */
+class RequestDecoder extends JsonDecoder {
+ /**
+ * The request being deserialized.
+ */
+ final Request _request;
+
+ RequestDecoder(this._request);
+
+ RefactoringKind get refactoringKind {
+ // Refactoring feedback objects should never appear in requests.
+ return null;
+ }
+
+ @override
+ dynamic mismatch(String jsonPath, String expected, [Object actual]) {
+ StringBuffer buffer = new StringBuffer();
+ buffer.write('Expected to be ');
+ buffer.write(expected);
+ if (actual != null) {
+ buffer.write('; found "');
+ buffer.write(json.encode(actual));
+ buffer.write('"');
+ }
+ return new RequestFailure(
+ new Response.invalidParameter(_request, jsonPath, buffer.toString()));
+ }
+
+ @override
+ dynamic missingKey(String jsonPath, String key) {
+ return new RequestFailure(new Response.invalidParameter(
+ _request, jsonPath, 'Expected to contain key ${json.encode(key)}'));
+ }
+}
+
+abstract class RequestParams implements HasToJson {
+ /**
+ * Return a request whose parameters are taken from this object and that has
+ * the given [id].
+ */
+ Request toRequest(String id);
+}
+
+/**
+ * JsonDecoder for decoding responses from the server. This is intended to be
+ * used only for testing. Errors are reported using bare [Exception] objects.
+ */
+class ResponseDecoder extends JsonDecoder {
+ final RefactoringKind refactoringKind;
+
+ ResponseDecoder(this.refactoringKind);
+
+ @override
+ dynamic mismatch(String jsonPath, String expected, [Object actual]) {
+ StringBuffer buffer = new StringBuffer();
+ buffer.write('Expected ');
+ buffer.write(expected);
+ if (actual != null) {
+ buffer.write(' found "');
+ buffer.write(json.encode(actual));
+ buffer.write('"');
+ }
+ buffer.write(' at ');
+ buffer.write(jsonPath);
+ return new Exception(buffer.toString());
+ }
+
+ @override
+ dynamic missingKey(String jsonPath, String key) {
+ return new Exception('Missing key $key at $jsonPath');
+ }
+}
+
+/**
+ * The result data associated with a response.
+ */
+abstract class ResponseResult implements HasToJson {
+ /**
+ * Return a response whose result data is this object for the request with the
+ * given [id].
+ */
+ Response toResponse(String id);
+}
diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_util.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_util.dart
new file mode 100644
index 0000000..dab28db
--- /dev/null
+++ b/pkg/analysis_server_client/lib/src/protocol/protocol_util.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2018, 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.
+
+/// Jenkins hash function, optimized for small integers.
+///
+/// Static methods borrowed from sdk/lib/math/jenkins_smi_hash.dart. Non-static
+/// methods are an enhancement for the "front_end" package.
+///
+/// Where performance is critical, use [hash2], [hash3], or [hash4], or the
+/// pattern `finish(combine(combine(...combine(0, a), b)..., z))`, where a..z
+/// are hash codes to be combined.
+///
+/// For ease of use, you may also use this pattern:
+/// `(new JenkinsSmiHash()..add(a)..add(b)....add(z)).hashCode`, where a..z are
+/// the sub-objects whose hashes should be combined. This pattern performs the
+/// same operations as the performance critical variant, but allocates an extra
+/// object.
+class JenkinsSmiHash {
+ /// Accumulates the hash code [value] into the running hash [hash].
+ static int combine(int hash, int value) {
+ hash = 0x1fffffff & (hash + value);
+ hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
+ return hash ^ (hash >> 6);
+ }
+
+ /// Finalizes a running hash produced by [combine].
+ static int finish(int hash) {
+ hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
+ hash = hash ^ (hash >> 11);
+ return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
+ }
+
+ /// Combines together two hash codes.
+ static int hash2(a, b) => finish(combine(combine(0, a), b));
+
+ /// Combines together three hash codes.
+ static int hash3(a, b, c) => finish(combine(combine(combine(0, a), b), c));
+
+ /// Combines together four hash codes.
+ static int hash4(a, b, c, d) =>
+ finish(combine(combine(combine(combine(0, a), b), c), d));
+
+ int _hash = 0;
+
+ /// Accumulates the object [o] into the hash.
+ void add(Object o) {
+ _hash = combine(_hash, o.hashCode);
+ }
+
+ /// Finalizes the hash and return the resulting hashcode.
+ int get hashCode => finish(_hash);
+}
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index be2fa81..a40a5eb 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -3655,29 +3655,6 @@
verify([source]);
}
- test_methodCallTypeInference_mixinType() async {
- Source source = addSource('''
-main() {
- C<int> c = f();
-}
-
-class C<T> {}
-
-mixin M<T> on C<T> {}
-
-M<T> f<T>() => null;
-''');
- var result = await computeAnalysisResult(source);
- assertNoErrors(source);
- verify([source]);
- var main = result.unit.declarations[0] as FunctionDeclaration;
- var body = main.functionExpression.body as BlockFunctionBody;
- var cDeclaration = body.block.statements[0] as VariableDeclarationStatement;
- var fInvocation =
- cDeclaration.variables.variables[0].initializer as MethodInvocation;
- expect(fInvocation.staticInvokeType.toString(), '() → M<int>');
- }
-
test_methodDeclaration_scope_signature() async {
Source source = addSource(r'''
const app = 0;
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index ca8630a..e086247 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -2,6 +2,7 @@
// 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.
+import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/error/syntactic_errors.dart';
import 'package:analyzer/src/error/codes.dart';
@@ -1693,6 +1694,24 @@
expect(annotation.elementAnnotation, same(metadata[0]));
}
+ test_methodCallTypeInference_mixinType() async {
+ addTestFile('''
+main() {
+ C<int> c = f();
+}
+
+class C<T> {}
+
+mixin M<T> on C<T> {}
+
+M<T> f<T>() => null;
+''');
+ await resolveTestFile();
+ assertNoTestErrors();
+ var fInvocation = findNode.methodInvocation('f()');
+ expect(fInvocation.staticInvokeType.toString(), '() → M<int>');
+ }
+
test_onClause() async {
addTestFile(r'''
class A {}
diff --git a/pkg/dartfix/lib/src/driver.dart b/pkg/dartfix/lib/src/driver.dart
index 8e0706e..80b6c11 100644
--- a/pkg/dartfix/lib/src/driver.dart
+++ b/pkg/dartfix/lib/src/driver.dart
@@ -5,10 +5,7 @@
import 'dart:async';
import 'dart:io' show File, Directory;
-import 'package:analysis_server/protocol/protocol_constants.dart';
-import 'package:analysis_server/protocol/protocol_generated.dart';
-import 'package:analysis_server/src/protocol/protocol_internal.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart';
+import 'package:analysis_server_client/protocol.dart';
import 'package:cli_util/cli_logging.dart';
import 'package:dartfix/src/context.dart';
import 'package:dartfix/src/options.dart';
diff --git a/pkg/dartfix/lib/src/options.dart b/pkg/dartfix/lib/src/options.dart
index 70af515..bd51025 100644
--- a/pkg/dartfix/lib/src/options.dart
+++ b/pkg/dartfix/lib/src/options.dart
@@ -2,7 +2,8 @@
// 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.
-import 'package:analyzer/src/util/sdk.dart';
+import 'dart:io';
+
import 'package:dartfix/src/context.dart';
import 'package:args/args.dart';
import 'package:cli_util/cli_logging.dart';
@@ -14,7 +15,7 @@
Logger logger;
List<String> targets;
- String sdkPath;
+ final String sdkPath;
final bool force;
final bool overwrite;
final bool verbose;
@@ -79,15 +80,16 @@
context.exit(1);
}
- // Infer the Dart SDK location
- options.sdkPath = getSdkPath(args);
+ // Validate the Dart SDK location
String sdkPath = options.sdkPath;
if (sdkPath == null) {
logger.stderr('No Dart SDK found.');
_showUsage(parser, logger);
+ context.exit(15);
}
if (!context.exists(sdkPath)) {
logger.stderr('Invalid Dart SDK path: $sdkPath');
+ _showUsage(parser, logger);
context.exit(15);
}
@@ -128,7 +130,8 @@
force = results[forceOption] as bool,
overwrite = results[overwriteOption] as bool,
verbose = results[_verboseOption] as bool,
- useColor = results.wasParsed('color') ? results['color'] as bool : null;
+ useColor = results.wasParsed('color') ? results['color'] as bool : null,
+ sdkPath = _getSdkPath();
String makeAbsoluteAndNormalize(String target) {
if (!path.isAbsolute(target)) {
@@ -137,6 +140,12 @@
return path.normalize(target);
}
+ static String _getSdkPath() {
+ return Platform.environment['DART_SDK'] != null
+ ? Platform.environment['DART_SDK']
+ : path.dirname(path.dirname(Platform.resolvedExecutable));
+ }
+
static _showUsage(ArgParser parser, Logger logger) {
logger.stderr('Usage: $_binaryName [options...] <directory paths>');
logger.stderr('');
diff --git a/pkg/dartfix/pubspec.yaml b/pkg/dartfix/pubspec.yaml
index e14ae2f..2349956 100644
--- a/pkg/dartfix/pubspec.yaml
+++ b/pkg/dartfix/pubspec.yaml
@@ -7,13 +7,10 @@
environment:
sdk: '>=2.0.0 <3.0.0'
dependencies:
- #TODO(danrubel) depend upon analysis_server_client rather than analysis_server
- # once analysis_server_client has been updated.
- analysis_server: any
- analyzer: ^0.33.0
- analyzer_plugin: any
+ analysis_server_client: ^2.0.0
args: any
cli_util: any
path: any
dev_dependencies:
+ analyzer: ^0.33.0
test: ^1.3.0
diff --git a/pkg/front_end/testcases/inference/future_then.dart.direct.expect b/pkg/front_end/testcases/inference/future_then.dart.direct.expect
index cfd8dd1..42e0878 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.direct.transformed.expect
index 03c48f1..0011b02 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.outline.expect b/pkg/front_end/testcases/inference/future_then.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
index 9dafc68..267d4ac 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
index 825398c..804cb3b 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_2.dart.direct.expect
index 0562f3d..ca0ee79 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.direct.transformed.expect
index 1cc8a8e..b7670ca 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
index 953c503..119e050 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
index cb1a4a6..0af6f19 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_3.dart.direct.expect
index 0c40e13..d621b5a 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.direct.transformed.expect
index 8cd5c68..27b7116 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
index a1acdca..feb8958 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
index b4751a9..4893183 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_4.dart.direct.expect
index 548c657..8d980f1 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.direct.transformed.expect
index d40ae51..6429f8a 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
index 662a7ba..c46d088 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
index 3f092a7..b063fca 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_5.dart.direct.expect
index 7a57c7c..f3a0609 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.direct.transformed.expect
index 23e837c..3d8e9145 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
index 39c10f6..df5f492 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
index 47d5575..84c5216 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_6.dart.direct.expect
index 8154732..0b55043 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.direct.transformed.expect
index dae1e9c..62b8c37 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
index 1618804..d1adeb0 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
index 8472b47..22c3d9c 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.expect
index 855c641..d6c5b10 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.transformed.expect
index ba20264..1886dfc 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
index fdccecc..56e16e5 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
index cfd6b66..ba028aa 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.expect
index fa75da0..6e9bb31 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.transformed.expect
index 657b8b4..85a1122 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
index 1931fb0..a058e1d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
index 7eb72e5..a7e329f 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.expect
index 39a96fa..8d97d69 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.transformed.expect
index 54f4fa3..75321b8 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
index 35cb9ed..0b6b963 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
index 3331857..7471d69 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.expect
index c9c25f1..492312e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.transformed.expect
index 8fb6e84..9b1a087 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
index 6b63e40..6dc7c84 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
index 139c97a..6c13a80 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.expect
index 58758f0..2ae1c89 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.transformed.expect
index 2f89209..2c23aa4 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
index 4133c8f..177f02c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
index bd14f16..a937bf0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.expect
index dc495b1..d91dff0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.transformed.expect
index 64afa1c..7e89366 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
index 5845323..d9b1879 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
index 1000fe0..1f05b11 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.expect
index 3974383..a252de0 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.transformed.expect
index 7058eae..204e5f2 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
index 9215c9e..c21b27b 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
index 1afa5aa..0496959 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
index a3ab9d0..d5c32ce 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.expect
index e299b22..00a6e6a 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.transformed.expect
index e299b22..00a6e6a 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
index 39c6654..803eefd 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
index 251a36e..af837d0 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
@@ -20,13 +20,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
index 0bbdac3..7cb039a 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.expect
index 3ae9246..794ef2c 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.transformed.expect
index 3ae9246..794ef2c 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
index 39c6654..803eefd 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
index 1693468..6496957 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
@@ -20,13 +20,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
index eb14026..e6b2e4b 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method main() → void {
self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.expect
index f16597f..4ba6477 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.transformed.expect
index f16597f..4ba6477 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
index d220b5d..4c720d7 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void
;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
index dfe6a69..ca7dcab 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
@@ -20,13 +20,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::double> f = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
index d430699..c5e9458 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method test() → void {
asy::Future<core::double> f = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.expect
index c3b32e1..b05e030 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> async {
return x ? 42 : asy::Future::value<dynamic>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.transformed.expect
index 189e6d1..52f6962 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
index 94398e9..ec0d528 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int>
;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
index 52ada11..52d35d7 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> async {
return (x ?{core::Object} 42 : asy::Future::value<core::int>(42)) as{TypeError} asy::FutureOr<core::int>;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
index f45920f..d27c725 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.expect
index 9d69fdf..9d62fa5 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> async {
return x ? 42 : new self::MyFuture::value<dynamic>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.transformed.expect
index b6ba5d5..f82b48c 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
index 94398e9..ec0d528 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int>
;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
index 7f53671..d47b27d 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> async {
return (x ?{core::Object} 42 : new self::MyFuture::value<core::int>(42)) as{TypeError} asy::FutureOr<core::int>;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
index b2fa7ea..0d01746 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.expect
index 10ef430..02761c2 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.transformed.expect
index b44f1b5..c60fde1 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
index e3920ef..81c3bd1 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
index da08993..706228d 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
@@ -20,13 +20,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
index f2b9012..2ab8ba5 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.expect
index 5e8dad7e..5eb63ec 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.transformed.expect
index 761ce57..b4d3d28 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
index e3920ef..81c3bd1 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
index 9c03551..ccc03d0 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
index 87ce379..e2b3327 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field self::MyFuture<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.expect
index cd608cc..9fba481 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.transformed.expect
index 2a4b758..125fd56 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
index f0aa066..cea415b 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
index deb23d4..c769a2a 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
@@ -20,13 +20,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
index 801bbda..c187964 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.expect
index d34e608..b8bf3a1 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.transformed.expect
index a207d39..50b3bb1 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.direct.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
index f0aa066..cea415b 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {() → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
index db12040..63ab7cf 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
index 0100e34..918aaab 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
@@ -13,13 +13,13 @@
method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
return null;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("catchError", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("whenComplete", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("timeout", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}), false)) as{TypeError} asy::Future<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
}
static field asy::Future<dynamic> f;
static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.expect
index 5227ee2..11c8d48 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.expect
@@ -15,9 +15,9 @@
method noSuchMethod(dynamic i) → dynamic
return "bar";
no-such-method-forwarder get foo() → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class B extends self::A {
synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.transformed.expect
index 5227ee2..11c8d48 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.direct.transformed.expect
@@ -15,9 +15,9 @@
method noSuchMethod(dynamic i) → dynamic
return "bar";
no-such-method-forwarder get foo() → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class B extends self::A {
synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect
index 26417ba..1756340 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect
@@ -13,9 +13,9 @@
method noSuchMethod(dynamic i) → dynamic
;
no-such-method-forwarder get foo() → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class B extends self::A {
synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
index 67f6aca..2e65c41 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
@@ -15,9 +15,9 @@
method noSuchMethod(core::Invocation i) → dynamic
return "bar";
no-such-method-forwarder get foo() → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class B extends self::A {
synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
index 67f6aca..2e65c41 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
method noSuchMethod(core::Invocation i) → dynamic
return "bar";
no-such-method-forwarder get foo() → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class B extends self::A {
synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect
index 0a61fdf..ef2820d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect
@@ -17,9 +17,9 @@
return null;
}
no-such-method-forwarder get foo() → core::int
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _C&Object&B = core::Object with self::B {
synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect
index ccc4dd7..6a81396 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect
@@ -17,9 +17,9 @@
return null;
}
no-such-method-forwarder get foo() → core::int
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _C&Object&B extends core::Object implements self::B {
synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
index c4b9c38..563fd5e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
@@ -13,9 +13,9 @@
method noSuchMethod(dynamic i) → dynamic
;
no-such-method-forwarder get foo() → core::int
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _C&Object&B = core::Object with self::B {
synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
index a816021..b00b8c0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
@@ -17,9 +17,9 @@
return null;
}
no-such-method-forwarder get foo() → core::int
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _C&Object&B = core::Object with self::B {
synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
index 2368a1a..72a6cef 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
@@ -17,9 +17,9 @@
return null;
}
no-such-method-forwarder get foo() → core::int
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _C&Object&B extends core::Object implements self::B {
synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.expect
index 5db27cd..c7fedd2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.expect
@@ -22,7 +22,7 @@
: super self::B::•()
;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class D extends core::Object implements self::A {
synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
: super self::D::•()
;
no-such-method-forwarder get foo() → core::int
- return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.transformed.expect
index 5db27cd..c7fedd2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.direct.transformed.expect
@@ -22,7 +22,7 @@
: super self::B::•()
;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class D extends core::Object implements self::A {
synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
: super self::D::•()
;
no-such-method-forwarder get foo() → core::int
- return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect
index 75eb679..523367d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect
@@ -19,7 +19,7 @@
synthetic constructor •() → self::C
;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class D extends core::Object implements self::A {
synthetic constructor •() → self::D
@@ -33,7 +33,7 @@
synthetic constructor •() → self::E
;
no-such-method-forwarder get foo() → core::int
- return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method expectTypeError(() → dynamic callback) → void
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
index d157898..cb4a71e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
@@ -22,7 +22,7 @@
: super self::B::•()
;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class D extends core::Object implements self::A {
synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
: super self::D::•()
;
no-such-method-forwarder get foo() → core::int
- return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
index d157898..cb4a71e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
@@ -22,7 +22,7 @@
: super self::B::•()
;
no-such-method-forwarder set foo(core::int value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class D extends core::Object implements self::A {
synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
: super self::D::•()
;
no-such-method-forwarder get foo() → core::int
- return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.expect
index 8fcff73..828a1c2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.expect
@@ -15,9 +15,9 @@
method noSuchMethod(dynamic i) → dynamic
return <dynamic>[];
no-such-method-forwarder get foo() → core::List<core::int>
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::List<core::int>;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
no-such-method-forwarder set foo(core::List<core::int> value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.transformed.expect
index 8fcff73..828a1c2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.direct.transformed.expect
@@ -15,9 +15,9 @@
method noSuchMethod(dynamic i) → dynamic
return <dynamic>[];
no-such-method-forwarder get foo() → core::List<core::int>
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::List<core::int>;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
no-such-method-forwarder set foo(core::List<core::int> value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect
index edae600..c6492de 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect
@@ -13,9 +13,9 @@
method noSuchMethod(dynamic i) → dynamic
;
no-such-method-forwarder get foo() → core::List<core::int>
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::List<core::int>;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
no-such-method-forwarder set foo(core::List<core::int> value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method expectTypeError(() → dynamic callback) → void
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
index d90d08e..0b0b415 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
@@ -15,9 +15,9 @@
method noSuchMethod(core::Invocation i) → dynamic
return <dynamic>[];
no-such-method-forwarder get foo() → core::List<core::int>
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::List<core::int>;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
no-such-method-forwarder set foo(core::List<core::int> value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
index d90d08e..0b0b415 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
method noSuchMethod(core::Invocation i) → dynamic
return <dynamic>[];
no-such-method-forwarder get foo() → core::List<core::int>
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::List<core::int>;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
no-such-method-forwarder set foo(core::List<core::int> value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method expectTypeError(() → dynamic callback) → void {
try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.expect
index 15071a4..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.transformed.expect
index 15071a4..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.direct.transformed.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect
index c2010a6..aee0639 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect
@@ -17,7 +17,7 @@
synthetic constructor •() → self::B
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
index 15071a4..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
index 15071a4..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect
index 81c1320..5881215 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect
@@ -21,7 +21,7 @@
method noSuchMethod(dynamic _) → dynamic
return null;
no-such-method-forwarder method foo() → dynamic
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
abstract class _C&A&B = self::A with self::B {
synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect
index b6f3359..32a808d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect
@@ -21,7 +21,7 @@
method noSuchMethod(dynamic _) → dynamic
return null;
no-such-method-forwarder method foo() → dynamic
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
abstract class _C&A&B extends self::A implements self::B {
synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
index 00ec655..8007c45 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
@@ -19,7 +19,7 @@
method noSuchMethod(dynamic _) → dynamic
;
no-such-method-forwarder method foo() → dynamic
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
abstract class _C&A&B = self::A with self::B {
synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
index dad1342..1418146 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
@@ -21,7 +21,7 @@
method noSuchMethod(core::Invocation _) → dynamic
return null;
no-such-method-forwarder method foo() → dynamic
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
abstract class _C&A&B = self::A with self::B {
synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
index d42a760..193af7a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
@@ -21,7 +21,7 @@
method noSuchMethod(core::Invocation _) → dynamic
return null;
no-such-method-forwarder method foo() → dynamic
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
abstract class _C&A&B extends self::A implements self::B {
synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.expect
index 95c74d3..3add7c4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.expect
@@ -24,9 +24,9 @@
: super self::A::•()
;
no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}), false)) as{TypeError} core::String;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("hest", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {
self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.transformed.expect
index 95c74d3..3add7c4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.direct.transformed.expect
@@ -24,9 +24,9 @@
: super self::A::•()
;
no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}), false)) as{TypeError} core::String;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("hest", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {
self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect
index 2e7a56d..34ec53c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect
@@ -14,9 +14,9 @@
synthetic constructor •() → self::B
;
no-such-method-forwarder method foo({core::String bar}) → core::String
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}), false)) as{TypeError} core::String;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
no-such-method-forwarder method hest([core::int fisk]) → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("hest", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
index c987a83..5f6f35b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
@@ -24,9 +24,9 @@
: super self::A::•()
;
no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}), false)) as{TypeError} core::String;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("hest", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {
self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
index c987a83..5f6f35b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
@@ -24,9 +24,9 @@
: super self::A::•()
;
no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}), false)) as{TypeError} core::String;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("hest", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {
self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.expect
index dd93aa3..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.expect
@@ -21,6 +21,6 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.transformed.expect
index dd93aa3..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.direct.transformed.expect
@@ -21,6 +21,6 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect
index 8eb5f2d..7b55b76 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect
@@ -18,7 +18,7 @@
method noSuchMethod(core::Invocation i) → dynamic
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
index dd93aa3..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
@@ -21,6 +21,6 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
index dd93aa3..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
@@ -21,6 +21,6 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect
index 80ac8d4..a385598 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect
@@ -15,7 +15,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&A = core::Object with self::A {
synthetic constructor •() → self::_B&Object&A
@@ -27,6 +27,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect
index c32ccc2..eda31a1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect
@@ -15,7 +15,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&A extends core::Object implements self::A {
synthetic constructor •() → self::_B&Object&A
@@ -29,6 +29,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
index d41e782..a8727f8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
@@ -13,7 +13,7 @@
method noSuchMethod(core::Invocation i) → dynamic
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&A = core::Object with self::A {
synthetic constructor •() → self::_B&Object&A
@@ -24,7 +24,7 @@
synthetic constructor •() → self::B
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
index 80ac8d4..a385598 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
@@ -15,7 +15,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&A = core::Object with self::A {
synthetic constructor •() → self::_B&Object&A
@@ -27,6 +27,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
index c32ccc2..eda31a1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&A extends core::Object implements self::A {
synthetic constructor •() → self::_B&Object&A
@@ -29,6 +29,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.expect
index 21135dc..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.transformed.expect
index 21135dc..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.direct.transformed.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect
index 3f0df65..ff470649 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect
@@ -18,7 +18,7 @@
synthetic constructor •() → self::B
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
index 21135dc..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
index 21135dc..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
@@ -21,6 +21,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect
index 776da8f..a86290b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect
@@ -9,7 +9,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class M extends core::Object {
synthetic constructor •() → self::M
@@ -28,7 +28,7 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&M = core::Object with self::M {
synthetic constructor •() → self::_B&Object&M
@@ -40,6 +40,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect
index f0ebba4..6d9efb3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect
@@ -9,7 +9,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class M extends core::Object {
synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&M extends core::Object implements self::M {
synthetic constructor •() → self::_B&Object&M
@@ -44,6 +44,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
index 39010a5..bcda192 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
@@ -8,7 +8,7 @@
method noSuchMethod(core::Invocation i) → dynamic
;
no-such-method-forwarder method foo() → void
- return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class M extends core::Object {
synthetic constructor •() → self::M
@@ -25,7 +25,7 @@
synthetic constructor •() → self::A
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&M = core::Object with self::M {
synthetic constructor •() → self::_B&Object&M
@@ -36,7 +36,7 @@
synthetic constructor •() → self::B
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
index 776da8f..a86290b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
@@ -9,7 +9,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class M extends core::Object {
synthetic constructor •() → self::M
@@ -28,7 +28,7 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&M = core::Object with self::M {
synthetic constructor •() → self::_B&Object&M
@@ -40,6 +40,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
index f0ebba4..6d9efb3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
method noSuchMethod(core::Invocation i) → dynamic
return null;
no-such-method-forwarder method foo() → void
- return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class M extends core::Object {
synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
abstract class _B&Object&M extends core::Object implements self::M {
synthetic constructor •() → self::_B&Object&M
@@ -44,6 +44,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.expect
index 705c920..f0470a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.expect
@@ -15,6 +15,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.transformed.expect
index 705c920..f0470a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.direct.transformed.expect
@@ -15,6 +15,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect
index 0bb3fab..32e8f80 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect
@@ -13,7 +13,7 @@
synthetic constructor •() → self::B
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
index fd592d7..f405f12 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
@@ -15,6 +15,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
index fd592d7..f405f12 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
@@ -15,6 +15,6 @@
: super self::A::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.expect
index 4dc27df..bf620af 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.expect
@@ -20,7 +20,7 @@
: super self::B::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.transformed.expect
index 4dc27df..bf620af 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.direct.transformed.expect
@@ -20,7 +20,7 @@
: super self::B::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect
index a68fbe3..e72d0cf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect
@@ -17,7 +17,7 @@
synthetic constructor •() → self::C
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
index ea635a0..05f2839 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
@@ -20,7 +20,7 @@
: super self::B::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
index ea635a0..05f2839 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
: super self::B::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.expect
index b877712..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.expect
@@ -14,6 +14,6 @@
: super self::M::•()
;
no-such-method-forwarder method call(core::String s) → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("call", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.transformed.expect
index b877712..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.direct.transformed.expect
@@ -14,6 +14,6 @@
: super self::M::•()
;
no-such-method-forwarder method call(core::String s) → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("call", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect
index 9ffed72..6f23c7e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect
@@ -12,7 +12,7 @@
synthetic constructor •() → self::A
;
no-such-method-forwarder method call(core::String s) → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("call", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
index b877712..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
@@ -14,6 +14,6 @@
: super self::M::•()
;
no-such-method-forwarder method call(core::String s) → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("call", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
index b877712..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
@@ -14,6 +14,6 @@
: super self::M::•()
;
no-such-method-forwarder method call(core::String s) → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("call", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect
index 0ad4ed0..3155d8f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect
@@ -20,6 +20,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect
index a3f458f..d91cc25 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect
@@ -23,6 +23,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
index bf9d64c..3ea742b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
@@ -17,7 +17,7 @@
synthetic constructor •() → self::B
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
index 0ad4ed0..3155d8f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
@@ -20,6 +20,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
index a3f458f..d91cc25 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
@@ -23,6 +23,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.expect
index 14f0a36..4c251bf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.expect
@@ -15,7 +15,7 @@
: super self::Foo::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo implements pri::Fisk {
synthetic constructor •() → self::Baz
@@ -24,6 +24,6 @@
method _hest() → dynamic
return null;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.transformed.expect
index 14f0a36..4c251bf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.direct.transformed.expect
@@ -15,7 +15,7 @@
: super self::Foo::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo implements pri::Fisk {
synthetic constructor •() → self::Baz
@@ -24,6 +24,6 @@
method _hest() → dynamic
return null;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect
index 596c676..86c64e1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect
@@ -13,7 +13,7 @@
synthetic constructor •() → self::Bar
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo implements pri::Fisk {
synthetic constructor •() → self::Baz
@@ -21,7 +21,7 @@
method _hest() → dynamic
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
index 14f0a36..4c251bf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
@@ -15,7 +15,7 @@
: super self::Foo::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo implements pri::Fisk {
synthetic constructor •() → self::Baz
@@ -24,6 +24,6 @@
method _hest() → dynamic
return null;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
index 14f0a36..4c251bf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
: super self::Foo::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo implements pri::Fisk {
synthetic constructor •() → self::Baz
@@ -24,6 +24,6 @@
method _hest() → dynamic
return null;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
- return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withoutType("_hest", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.expect
index 05969c5..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.expect
@@ -15,6 +15,6 @@
method noSuchMethod(core::Invocation invocation) → dynamic
return null;
no-such-method-forwarder method _foo() → void
- return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withoutType("_foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.transformed.expect
index 05969c5..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.direct.transformed.expect
@@ -15,6 +15,6 @@
method noSuchMethod(core::Invocation invocation) → dynamic
return null;
no-such-method-forwarder method _foo() → void
- return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withoutType("_foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect
index c223ebc..5e5185d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect
@@ -13,7 +13,7 @@
method noSuchMethod(core::Invocation invocation) → dynamic
;
no-such-method-forwarder method _foo() → void
- return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withoutType("_foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
index 05969c5..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
@@ -15,6 +15,6 @@
method noSuchMethod(core::Invocation invocation) → dynamic
return null;
no-such-method-forwarder method _foo() → void
- return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withoutType("_foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
index 05969c5..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
@@ -15,6 +15,6 @@
method noSuchMethod(core::Invocation invocation) → dynamic
return null;
no-such-method-forwarder method _foo() → void
- return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withoutType("_foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.expect
index 731d843..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.expect
@@ -10,6 +10,6 @@
return null;
}
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.transformed.expect
index 731d843..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.direct.transformed.expect
@@ -10,6 +10,6 @@
return null;
}
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect
index a45f5ba..9681848 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect
@@ -8,7 +8,7 @@
method noSuchMethod(core::Invocation i) → dynamic
;
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
index 731d843..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
@@ -10,6 +10,6 @@
return null;
}
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
index 731d843..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
@@ -10,6 +10,6 @@
return null;
}
no-such-method-forwarder method foo() → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect
index 975dbf1..e055260 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect
@@ -23,7 +23,7 @@
;
method foo(core::int x) → void {}
no-such-method-forwarder set foo(core::int x) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
method noSuchMethod(core::Invocation i) → dynamic
return null;
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect
index cecb135..f8ff1c7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect
@@ -14,7 +14,7 @@
;
method foo(core::int x) → void {}
no-such-method-forwarder set foo(core::int x) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
method noSuchMethod(core::Invocation i) → dynamic
return null;
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
index f1a4f6e..d3c1457 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
@@ -17,7 +17,7 @@
method foo(core::int x) → void
;
no-such-method-forwarder set foo(core::int x) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
method noSuchMethod(core::Invocation i) → dynamic
;
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
index 975dbf1..e055260 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
@@ -23,7 +23,7 @@
;
method foo(core::int x) → void {}
no-such-method-forwarder set foo(core::int x) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
method noSuchMethod(core::Invocation i) → dynamic
return null;
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
index cecb135..f8ff1c7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
;
method foo(core::int x) → void {}
no-such-method-forwarder set foo(core::int x) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
method noSuchMethod(core::Invocation i) → dynamic
return null;
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect
index 42faafa..0e43ba4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect
@@ -26,6 +26,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → core::int
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect
index 6ec16b2c1..047bcf3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect
@@ -29,6 +29,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → core::int
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
index f52edec..199bd26 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
@@ -22,7 +22,7 @@
synthetic constructor •() → self::A
;
no-such-method-forwarder method foo() → core::int
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
index 42faafa..0e43ba4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
@@ -26,6 +26,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → core::int
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
index 6ec16b2c1..047bcf3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
@@ -29,6 +29,6 @@
: super core::Object::•()
;
no-such-method-forwarder method foo() → core::int
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.expect
index 15500e2..11bb91d 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.expect
@@ -8,9 +8,9 @@
: super core::Object::•()
;
no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {
no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.transformed.expect
index 15500e2..11bb91d 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.transformed.expect
@@ -8,9 +8,9 @@
: super core::Object::•()
;
no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {
no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.outline.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.outline.expect
index 5c1159f..52f1cb7 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.outline.expect
@@ -7,9 +7,9 @@
synthetic constructor •() → self::Foo
;
no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic
;
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
index 15500e2..11bb91d 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
@@ -8,9 +8,9 @@
: super core::Object::•()
;
no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {
no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
index 15500e2..11bb91d 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
@@ -8,9 +8,9 @@
: super core::Object::•()
;
no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
static method main() → dynamic {
no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.direct.expect b/pkg/front_end/testcases/private_method_tearoff.dart.direct.expect
index cc82f9e..511c1e6 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.direct.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.direct.expect
@@ -8,7 +8,7 @@
: super core::Object::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo {
synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.direct.transformed.expect b/pkg/front_end/testcases/private_method_tearoff.dart.direct.transformed.expect
index cc82f9e..511c1e6 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.direct.transformed.expect
@@ -8,7 +8,7 @@
: super core::Object::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo {
synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.outline.expect b/pkg/front_end/testcases/private_method_tearoff.dart.outline.expect
index ad25a0f..4e06821 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.outline.expect
@@ -7,7 +7,7 @@
synthetic constructor •() → self::Foo
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo {
synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
index cc82f9e..511c1e6 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
@@ -8,7 +8,7 @@
: super core::Object::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo {
synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
index cc82f9e..511c1e6 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
: super core::Object::•()
;
no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
- return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+ return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
class Baz extends self::Foo {
synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/super_nsm.dart.direct.expect b/pkg/front_end/testcases/super_nsm.dart.direct.expect
index 5381e9e..a0c7a8c 100644
--- a/pkg/front_end/testcases/super_nsm.dart.direct.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.direct.expect
@@ -15,7 +15,7 @@
method noSuchMethod(dynamic _) → dynamic
return "C";
no-such-method-forwarder method interfaceMethod() → dynamic
- return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("interfaceMethod", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/super_nsm.dart.direct.transformed.expect b/pkg/front_end/testcases/super_nsm.dart.direct.transformed.expect
index 5381e9e..a0c7a8c 100644
--- a/pkg/front_end/testcases/super_nsm.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.direct.transformed.expect
@@ -15,7 +15,7 @@
method noSuchMethod(dynamic _) → dynamic
return "C";
no-such-method-forwarder method interfaceMethod() → dynamic
- return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("interfaceMethod", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/super_nsm.dart.outline.expect b/pkg/front_end/testcases/super_nsm.dart.outline.expect
index c9ea1e3..de7c531 100644
--- a/pkg/front_end/testcases/super_nsm.dart.outline.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.outline.expect
@@ -13,7 +13,7 @@
method noSuchMethod(dynamic _) → dynamic
;
no-such-method-forwarder method interfaceMethod() → dynamic
- return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("interfaceMethod", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/super_nsm.dart.strong.expect b/pkg/front_end/testcases/super_nsm.dart.strong.expect
index 476071f..679fbdd 100644
--- a/pkg/front_end/testcases/super_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.strong.expect
@@ -15,7 +15,7 @@
method noSuchMethod(core::Invocation _) → dynamic
return "C";
no-such-method-forwarder method interfaceMethod() → dynamic
- return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("interfaceMethod", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect
index 476071f..679fbdd 100644
--- a/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
method noSuchMethod(core::Invocation _) → dynamic
return "C";
no-such-method-forwarder method interfaceMethod() → dynamic
- return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("interfaceMethod", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
class D extends self::C {
synthetic constructor •() → self::D
diff --git a/pkg/kernel/lib/clone.dart b/pkg/kernel/lib/clone.dart
index 137b71a3..c5ea6e3 100644
--- a/pkg/kernel/lib/clone.dart
+++ b/pkg/kernel/lib/clone.dart
@@ -323,7 +323,8 @@
visitForInStatement(ForInStatement node) {
var newVariable = clone(node.variable);
return new ForInStatement(
- newVariable, clone(node.iterable), clone(node.body));
+ newVariable, clone(node.iterable), clone(node.body),
+ isAsync: node.isAsync);
}
visitSwitchStatement(SwitchStatement node) {
diff --git a/pkg/telemetry/pubspec.yaml b/pkg/telemetry/pubspec.yaml
index dddad2f..ecbef8a 100644
--- a/pkg/telemetry/pubspec.yaml
+++ b/pkg/telemetry/pubspec.yaml
@@ -7,7 +7,7 @@
sdk: '>=1.0.0 <3.0.0'
dependencies:
- http: ^0.11.3+12
+ http: ^0.12.0
path: ^1.4.0
stack_trace: ^1.7.0
usage: ^3.2.0+1
diff --git a/pkg/vm/lib/bytecode/constant_pool.dart b/pkg/vm/lib/bytecode/constant_pool.dart
index 7560885..a9233b7 100644
--- a/pkg/vm/lib/bytecode/constant_pool.dart
+++ b/pkg/vm/lib/bytecode/constant_pool.dart
@@ -9,6 +9,8 @@
import 'package:kernel/ast.dart' hide MapEntry;
import 'package:kernel/text/ast_to_text.dart' show Printer;
+import 'dbc.dart' show constantPoolIndexLimit, BytecodeLimitExceededException;
+
/*
In kernel binary, constant pool is encoded in the following way
@@ -1166,6 +1168,9 @@
int add(ConstantPoolEntry entry) {
return _canonicalizationCache.putIfAbsent(entry, () {
int index = entries.length;
+ if (index >= constantPoolIndexLimit) {
+ throw new ConstantPoolIndexOverflowException();
+ }
_addEntry(entry);
return index;
});
@@ -1252,3 +1257,6 @@
int _combineHashes(int hash1, int hash2) =>
(((hash1 * 31) & 0x3fffffff) + hash2) & 0x3fffffff;
+
+class ConstantPoolIndexOverflowException
+ extends BytecodeLimitExceededException {}
diff --git a/pkg/vm/lib/bytecode/dbc.dart b/pkg/vm/lib/bytecode/dbc.dart
index 754bdcd..2a8bbef 100644
--- a/pkg/vm/lib/bytecode/dbc.dart
+++ b/pkg/vm/lib/bytecode/dbc.dart
@@ -303,3 +303,17 @@
}
bool isJump(Opcode opcode) => BytecodeFormats[opcode].encoding == Encoding.kT;
+
+// Bytecode instructions reference constant pool indices using
+// unsigned 16-bit operands.
+const int constantPoolIndexLimit = 1 << 16;
+
+// Local variables are referenced using 16-bit signed operands.
+const int localVariableIndexLimit = 1 << 15;
+
+// Captured variables are referenced using 16-bit unsigned operands.
+const int capturedVariableIndexLimit = 1 << 16;
+
+// Base class for exceptions thrown when certain limit of bytecode
+// format is exceeded.
+abstract class BytecodeLimitExceededException {}
diff --git a/pkg/vm/lib/bytecode/gen_bytecode.dart b/pkg/vm/lib/bytecode/gen_bytecode.dart
index 1a95682..06c8592 100644
--- a/pkg/vm/lib/bytecode/gen_bytecode.dart
+++ b/pkg/vm/lib/bytecode/gen_bytecode.dart
@@ -141,35 +141,41 @@
if (node.isAbstract) {
return;
}
- if (node is Field) {
- if (node.isStatic && !_hasTrivialInitializer(node)) {
+ try {
+ if (node is Field) {
+ if (node.isStatic && !_hasTrivialInitializer(node)) {
+ start(node);
+ if (node.isConst) {
+ _genPushConstExpr(node.initializer);
+ } else {
+ node.initializer.accept(this);
+ }
+ _genReturnTOS();
+ end(node);
+ }
+ } else if ((node is Procedure && !node.isRedirectingFactoryConstructor) ||
+ (node is Constructor)) {
start(node);
- if (node.isConst) {
- _genPushConstExpr(node.initializer);
+ if (node is Constructor) {
+ _genConstructorInitializers(node);
+ }
+ if (node.isExternal) {
+ final String nativeName = getExternalName(node);
+ if (nativeName == null) {
+ return;
+ }
+ _genNativeCall(nativeName);
} else {
- node.initializer.accept(this);
+ node.function?.body?.accept(this);
+ // BytecodeAssembler eliminates this bytecode if it is unreachable.
+ asm.emitPushNull();
}
_genReturnTOS();
end(node);
}
- } else if ((node is Procedure && !node.isRedirectingFactoryConstructor) ||
- (node is Constructor)) {
- start(node);
- if (node is Constructor) {
- _genConstructorInitializers(node);
- }
- if (node.isExternal) {
- final String nativeName = getExternalName(node);
- if (nativeName == null) {
- return;
- }
- _genNativeCall(nativeName);
- } else {
- node.function?.body?.accept(this);
- // BytecodeAssembler eliminates this bytecode if it is unreachable.
- asm.emitPushNull();
- }
- _genReturnTOS();
+ } on BytecodeLimitExceededException {
+ // Do not generate bytecode and fall back to using kernel AST.
+ hasErrors = true;
end(node);
}
}
@@ -1594,7 +1600,8 @@
// Remove type arguments as they are only passed to instance allocation,
// and not passed to a constructor.
final args =
- new Arguments(node.arguments.positional, named: node.arguments.named);
+ new Arguments(node.arguments.positional, named: node.arguments.named)
+ ..parent = node;
_genArguments(null, args);
_genStaticCallWithArgs(node.target, args, hasReceiver: true);
asm.emitDrop1();
diff --git a/pkg/vm/lib/bytecode/local_vars.dart b/pkg/vm/lib/bytecode/local_vars.dart
index a92c969..94c3880 100644
--- a/pkg/vm/lib/bytecode/local_vars.dart
+++ b/pkg/vm/lib/bytecode/local_vars.dart
@@ -832,6 +832,9 @@
if (v.isCaptured) {
v.index = _currentScope.contextOwner.contextUsed++;
+ if (v.index >= capturedVariableIndexLimit) {
+ throw new LocalVariableIndexOverflowException();
+ }
v.originalParamSlotIndex = paramSlotIndex;
return;
}
@@ -843,6 +846,9 @@
v.index = paramSlotIndex;
} else {
v.index = _currentScope.localsUsed++;
+ if (v.index >= localVariableIndexLimit) {
+ throw new LocalVariableIndexOverflowException();
+ }
}
_updateFrameSize();
}
@@ -1139,3 +1145,6 @@
_visit(node, temps: 3);
}
}
+
+class LocalVariableIndexOverflowException
+ extends BytecodeLimitExceededException {}
diff --git a/pkg/vm/lib/target/vm.dart b/pkg/vm/lib/target/vm.dart
index 322ca46..817672e 100644
--- a/pkg/vm/lib/target/vm.dart
+++ b/pkg/vm/lib/target/vm.dart
@@ -94,21 +94,18 @@
logger?.call("Transformed async functions");
}
- @override
- Expression instantiateInvocation(CoreTypes coreTypes, Expression receiver,
- String name, Arguments arguments, int offset, bool isSuper) {
- // See [_InvocationMirror]
- // (../../../../runtime/lib/invocation_mirror_patch.dart).
- // The _InvocationMirror._withoutType constructor takes the following arguments:
- // * Method name (a string).
- // * List of type arguments.
- // * List of positional arguments.
- // * List of named arguments.
- // * Whether it's a super invocation or not.
+ Expression _instantiateInvocationMirrorWithType(
+ CoreTypes coreTypes,
+ Expression receiver,
+ String name,
+ Arguments arguments,
+ int offset,
+ int type) {
return new ConstructorInvocation(
- coreTypes.invocationMirrorWithoutTypeConstructor,
+ coreTypes.invocationMirrorWithTypeConstructor,
new Arguments(<Expression>[
- new StringLiteral(name)..fileOffset = offset,
+ new SymbolLiteral(name)..fileOffset = offset,
+ new IntLiteral(type)..fileOffset = offset,
_fixedLengthList(
coreTypes,
coreTypes.typeClass.rawType,
@@ -132,10 +129,32 @@
coreTypes.symbolClass.rawType,
new DynamicType()
]))
- ..fileOffset = arguments.fileOffset,
- new BoolLiteral(isSuper)..fileOffset = arguments.fileOffset
- ]))
- ..fileOffset = offset;
+ ..fileOffset = offset
+ ]));
+ }
+
+ @override
+ Expression instantiateInvocation(CoreTypes coreTypes, Expression receiver,
+ String name, Arguments arguments, int offset, bool isSuper) {
+ bool isGetter = false, isSetter = false, isMethod = false;
+ if (name.startsWith("set:")) {
+ isSetter = true;
+ name = name.substring(4) + "=";
+ } else if (name.startsWith("get:")) {
+ isGetter = true;
+ name = name.substring(4);
+ } else {
+ isMethod = true;
+ }
+
+ int type = _invocationType(
+ isGetter: isGetter,
+ isSetter: isSetter,
+ isMethod: isMethod,
+ isSuper: isSuper);
+
+ return _instantiateInvocationMirrorWithType(
+ coreTypes, receiver, name, arguments, offset, type);
}
@override
@@ -166,37 +185,8 @@
coreTypes.noSuchMethodErrorDefaultConstructor,
new Arguments(<Expression>[
receiver,
- new ConstructorInvocation(
- coreTypes.invocationMirrorWithTypeConstructor,
- new Arguments(<Expression>[
- new SymbolLiteral(name)..fileOffset = offset,
- new IntLiteral(type)..fileOffset = offset,
- _fixedLengthList(
- coreTypes,
- coreTypes.typeClass.rawType,
- arguments.types.map((t) => new TypeLiteral(t)).toList(),
- arguments.fileOffset),
- _fixedLengthList(coreTypes, const DynamicType(),
- arguments.positional, arguments.fileOffset),
- new StaticInvocation(
- coreTypes.mapUnmodifiable,
- new Arguments([
- new MapLiteral(new List<MapEntry>.from(
- arguments.named.map((NamedExpression arg) {
- return new MapEntry(
- new SymbolLiteral(arg.name)
- ..fileOffset = arg.fileOffset,
- arg.value)
- ..fileOffset = arg.fileOffset;
- })), keyType: coreTypes.symbolClass.rawType)
- ..isConst = (arguments.named.length == 0)
- ..fileOffset = arguments.fileOffset
- ], types: [
- coreTypes.symbolClass.rawType,
- new DynamicType()
- ]))
- ..fileOffset = offset
- ]))
+ _instantiateInvocationMirrorWithType(
+ coreTypes, receiver, name, arguments, offset, type)
]));
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
index 372e102..a29bcf3 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
@@ -48,11 +48,11 @@
return new self::T1::•();
}
no-such-method-forwarder get bar() → dynamic
- return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:bar", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] no-such-method-forwarder method foo() → dynamic
- return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a3, [[@vm.inferred-type.metadata=dart.core::_Smi] dynamic a4 = null, [@vm.inferred-type.metadata=dart.core::Null?] dynamic a5 = null]) → dynamic
- return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("bazz", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[a1, a2, a3, a4, a5]), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#bazz, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[a1, a2, a3, a4, a5]), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
abstract class C extends core::Object {
synthetic constructor •() → self::C
@@ -67,11 +67,11 @@
: super self::C::•()
;
no-such-method-forwarder get bar() → dynamic
- return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:bar", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] no-such-method-forwarder method foo() → dynamic
- return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a3, [[@vm.inferred-type.metadata=dart.core::_Smi] dynamic a4 = null, [@vm.inferred-type.metadata=dart.core::Null?] dynamic a5 = null]) → dynamic
- return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("bazz", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[a1, a2, a3, a4, a5]), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#bazz, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[a1, a2, a3, a4, a5]), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
class E extends core::Object implements self::A {
synthetic constructor •() → self::E
@@ -81,7 +81,7 @@
return new self::T4::•();
}
no-such-method-forwarder get bar() → dynamic
- return [@vm.direct-call.metadata=#lib::E::noSuchMethod] [@vm.inferred-type.metadata=#lib::T4] this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:bar", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
+ return [@vm.direct-call.metadata=#lib::E::noSuchMethod] [@vm.inferred-type.metadata=#lib::T4] this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
}
class F extends core::Object {
synthetic constructor •() → self::F
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 6a819cc..8689f2c 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -234,7 +234,7 @@
configs -= [ "//build/config:symbol_visibility_hidden" ]
}
- deps += [ "$dart_zlib_path" ]
+ deps += [ "//third_party/zlib" ]
custom_sources_filter = [
"*_test.cc",
@@ -330,7 +330,7 @@
defines = []
deps = [
- "$dart_zlib_path",
+ "//third_party/zlib",
]
if (is_mac || is_ios) {
libs = [
@@ -663,7 +663,7 @@
":standalone_dart_io",
":libdart_builtin",
"//third_party/boringssl",
- "$dart_zlib_path",
+ "//third_party/zlib",
] + extra_deps
defines = extra_defines
@@ -675,6 +675,24 @@
deps += [ "//third_party/tcmalloc" ]
}
+ include_dirs = [
+ "..",
+ "//third_party",
+ ]
+
+ if (dart_use_crashpad) {
+ assert(is_win, "dart_use_crashpad is only supported on Windows")
+ deps += [
+ "//third_party/crashpad/crashpad/client",
+ "//third_party/mini_chromium/mini_chromium/base",
+
+ # This binary is used to handle crashes of the dart binary.
+ "//third_party/crashpad/crashpad/handler:crashpad_handler",
+ ]
+ include_dirs += [ "//third_party/crashpad" ]
+ defines += [ "DART_USE_CRASHPAD" ]
+ }
+
sources = [
"dart_embedder_api_impl.cc",
"error_exit.cc",
@@ -690,11 +708,6 @@
"vmservice_impl.h",
] + extra_sources
- include_dirs = [
- "..",
- "//third_party",
- ]
-
if (is_win) {
ldflags = [ "/EXPORT:Dart_True" ]
} else {
@@ -875,8 +888,8 @@
":generate_snapshot_test_dat_file",
":libdart_builtin",
":standalone_dart_io",
- "$dart_zlib_path",
"..:libdart_jit",
+ "//third_party/zlib",
]
include_dirs = [
"..",
diff --git a/runtime/bin/filter.cc b/runtime/bin/filter.cc
index 5059d7f..292b978 100644
--- a/runtime/bin/filter.cc
+++ b/runtime/bin/filter.cc
@@ -293,6 +293,16 @@
bool ZLibDeflateFilter::Init() {
int window_bits = window_bits_;
+ if ((raw_ || gzip_) && (window_bits == 8)) {
+ // zlib deflater does not work with windows size of 8 bits. Old versions
+ // of zlib would silently upgrade window size to 9 bits, newer versions
+ // return Z_STREAM_ERROR if window size is 8 bits but the stream header
+ // is suppressed. To maintain the old behavior upgrade window size here.
+ // This is safe because you can inflate a stream deflated with zlib
+ // using 9-bits with 8-bits window.
+ // For more details see https://crbug.com/691074.
+ window_bits = 9;
+ }
if (raw_) {
window_bits = -window_bits;
} else if (gzip_) {
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 052fa2f..5473185 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -11,6 +11,11 @@
#include "include/dart_embedder_api.h"
#include "include/dart_tools_api.h"
+#if defined(DART_USE_CRASHPAD)
+#include "crashpad/client/crashpad_client.h"
+#include "crashpad/client/crashpad_info.h"
+#endif
+
#include "bin/builtin.h"
#include "bin/console.h"
#include "bin/dartutils.h"
@@ -947,6 +952,45 @@
static Dart_GetVMServiceAssetsArchive GetVMServiceAssetsArchiveCallback = NULL;
#endif // !defined(NO_OBSERVATORY)
+#if defined(DART_USE_CRASHPAD)
+#if !defined(HOST_OS_WINDOWS)
+#error "Currently we only support Crashpad on Windows"
+#endif
+
+static void ConfigureCrashpadClient(crashpad::CrashpadClient* client) {
+ // DART_CRASHPAD_HANDLER and DART_CRASHPAD_CRASHES_DIR are set by the
+ // testing framework.
+ wchar_t* handler = _wgetenv(L"DART_CRASHPAD_HANDLER");
+ wchar_t* crashes_dir = _wgetenv(L"DART_CRASHPAD_CRASHES_DIR");
+ if (handler == nullptr || crashes_dir == nullptr) {
+ return;
+ }
+
+ // Crashpad uses STL so we use it here too even though in general we
+ // avoid it.
+ const base::FilePath handler_path{std::wstring(handler)};
+ const base::FilePath crashes_dir_path{std::wstring(crashes_dir)};
+ const std::string url("");
+ std::map<std::string, std::string> annotations;
+ char* test_name = getenv("DART_TEST_NAME");
+ if (test_name != nullptr) {
+ annotations["dart_test_name"] = test_name;
+ }
+
+ std::vector<std::string> arguments;
+ if (!client->StartHandler(handler_path, crashes_dir_path, crashes_dir_path,
+ url, annotations, arguments,
+ /*restartable=*/true,
+ /*asynchronous_start=*/false)) {
+ Log::PrintErr("Failed to start the crash handler!\n");
+ Platform::Exit(kErrorExitCode);
+ }
+ crashpad::CrashpadInfo::GetCrashpadInfo()
+ ->set_gather_indirectly_referenced_memory(crashpad::TriState::kEnabled,
+ /*limit=*/500 * MB);
+}
+#endif // DART_USE_CRASHPAD
+
void main(int argc, char** argv) {
char* script_name;
const int EXTRA_VM_ARGUMENTS = 10;
@@ -1010,6 +1054,11 @@
}
DartUtils::SetEnvironment(Options::environment());
+#if defined(DART_USE_CRASHPAD)
+ crashpad::CrashpadClient crashpad_client;
+ ConfigureCrashpadClient(&crashpad_client);
+#endif
+
Loader::InitOnce();
#if defined(DART_LINK_APP_SNAPSHOT)
diff --git a/runtime/bin/zlib/BUILD.gn b/runtime/bin/zlib/BUILD.gn
deleted file mode 100644
index 8950ae1..0000000
--- a/runtime/bin/zlib/BUILD.gn
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (c) 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-config("zlib_config") {
- include_dirs = [ "//third_party/zlib" ]
-}
-
-static_library("zlib") {
- if (!is_win) {
- # Don't stomp on "libzlib" on other platforms.
- output_name = "chrome_zlib"
- }
-
- zlib_path = "//third_party/zlib"
- sources = [
- "$zlib_path/adler32.c",
- "$zlib_path/compress.c",
- "$zlib_path/crc32.c",
- "$zlib_path/crc32.h",
- "$zlib_path/deflate.c",
- "$zlib_path/deflate.h",
- "$zlib_path/gzclose.c",
- "$zlib_path/gzguts.h",
- "$zlib_path/gzlib.c",
- "$zlib_path/gzread.c",
- "$zlib_path/gzwrite.c",
- "$zlib_path/infback.c",
- "$zlib_path/inffast.c",
- "$zlib_path/inffast.h",
- "$zlib_path/inffixed.h",
- "$zlib_path/inflate.c",
- "$zlib_path/inflate.h",
- "$zlib_path/inftrees.c",
- "$zlib_path/inftrees.h",
- "$zlib_path/mozzconf.h",
- "$zlib_path/trees.c",
- "$zlib_path/trees.h",
- "$zlib_path/uncompr.c",
- "$zlib_path/zconf.h",
- "$zlib_path/zlib.h",
- "$zlib_path/zutil.c",
- "$zlib_path/zutil.h",
- ]
-
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [ "//build/config/compiler:no_chromium_code" ]
-
- all_dependent_configs = [ ":zlib_config" ]
-
- if (is_clang) {
- cflags = [ "-Wno-shift-negative-value" ]
- }
-}
diff --git a/runtime/runtime_args.gni b/runtime/runtime_args.gni
index 16fff64..d830208 100644
--- a/runtime/runtime_args.gni
+++ b/runtime/runtime_args.gni
@@ -42,16 +42,14 @@
# verified at the operating system level.
dart_use_fallback_root_certificates = false
- # The BUILD.gn file that we pull from chromium as part of zlib has a
- # dependence on //base, which we don't pull in. In a standalone build of the
- # VM, we set this to //runtime/bin/zlib where we have a BUILD.gn file without
- # a dependence on //base.
- dart_zlib_path = "//third_party/zlib"
-
# Whether to link the standalone VM against tcmalloc. The standalone build of
# the VM enables this only for Linux builds.
dart_use_tcmalloc = false
+ # Whether to link Crashpad library for crash handling. Only supported on
+ # Windows for now.
+ dart_use_crashpad = false
+
# Controls the kind of core snapshot linked into the standalone VM. Using a
# core-jit snapshot breaks the ability to change various flags that affect
# code generation.
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index 6655422..ea575f2 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -705,7 +705,7 @@
return;
}
- // Can't ask immediate objects if they're canoncial.
+ // Can't ask immediate objects if they're canonical.
if (instance.IsSmi()) return;
// Some Instances in the ObjectPool aren't const objects, such as
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index 1f56574..e35c3c1 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -1825,12 +1825,6 @@
ldr(result, Address(result, class_id, LSL, kSizeOfClassPairLog2));
}
-void Assembler::LoadClass(Register result, Register object, Register scratch) {
- ASSERT(scratch != result);
- LoadClassId(scratch, object);
- LoadClassById(result, scratch);
-}
-
void Assembler::CompareClassId(Register object,
intptr_t class_id,
Register scratch) {
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index e78943db..93da8c4 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -860,7 +860,6 @@
void LoadClassId(Register result, Register object, Condition cond = AL);
void LoadClassById(Register result, Register class_id);
- void LoadClass(Register result, Register object, Register scratch);
void CompareClassId(Register object, intptr_t class_id, Register scratch);
void LoadClassIdMayBeSmi(Register result, Register object);
void LoadTaggedClassIdMayBeSmi(Register result, Register object);
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc
index cdd45c8..c258d9a 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64.cc
@@ -1115,12 +1115,6 @@
ldr(result, Address(result, class_id, UXTX, Address::Scaled));
}
-void Assembler::LoadClass(Register result, Register object) {
- ASSERT(object != TMP);
- LoadClassId(TMP, object);
- LoadClassById(result, TMP);
-}
-
void Assembler::CompareClassId(Register object,
intptr_t class_id,
Register scratch) {
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 785b0ac..7807f87 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -1531,7 +1531,6 @@
void LoadClassId(Register result, Register object);
// Overwrites class_id register (it will be tagged afterwards).
void LoadClassById(Register result, Register class_id);
- void LoadClass(Register result, Register object);
void CompareClassId(Register object,
intptr_t class_id,
Register scratch = kNoRegister);
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc
index 1f528e18..e2074e5 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.cc
+++ b/runtime/vm/compiler/assembler/assembler_ia32.cc
@@ -2434,12 +2434,6 @@
movl(result, Address(result, class_id, TIMES_8, 0));
}
-void Assembler::LoadClass(Register result, Register object, Register scratch) {
- ASSERT(scratch != result);
- LoadClassId(scratch, object);
- LoadClassById(result, scratch);
-}
-
void Assembler::CompareClassId(Register object,
intptr_t class_id,
Register scratch) {
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index c3b8492..cb75d28 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -666,8 +666,6 @@
void LoadClassById(Register result, Register class_id);
- void LoadClass(Register result, Register object, Register scratch);
-
void CompareClassId(Register object, intptr_t class_id, Register scratch);
void LoadClassIdMayBeSmi(Register result, Register object);
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index d3df2c3..c91098b 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -1952,11 +1952,6 @@
movq(result, Address(result, class_id, TIMES_8, 0));
}
-void Assembler::LoadClass(Register result, Register object) {
- LoadClassId(TMP, object);
- LoadClassById(result, TMP);
-}
-
void Assembler::CompareClassId(Register object,
intptr_t class_id,
Register scratch) {
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index 70f7d9e..6090c76 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -782,8 +782,6 @@
// Overwrites class_id register (it will be tagged afterwards).
void LoadClassById(Register result, Register class_id);
- void LoadClass(Register result, Register object);
-
void CompareClassId(Register object,
intptr_t class_id,
Register scratch = kNoRegister);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index b6a070f..729d9ff 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -248,13 +248,14 @@
ASSERT(type_class.NumTypeArguments() > 0);
const Register kInstanceReg = R0;
Error& bound_error = Error::Handle(zone());
- const Type& int_type = Type::Handle(zone(), Type::IntType());
+ const Type& smi_type = Type::Handle(zone(), Type::SmiType());
const bool smi_is_ok =
- int_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
+ smi_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
// Malformed type should have been handled at graph construction time.
ASSERT(smi_is_ok || bound_error.IsNull());
__ tst(kInstanceReg, Operand(kSmiTagMask));
if (smi_is_ok) {
+ // Fast case for type = FutureOr<int/num/top-type>.
__ b(is_instance_lbl, EQ);
} else {
__ b(is_not_instance_lbl, EQ);
@@ -286,7 +287,7 @@
ASSERT(!tp_argument.IsMalformed());
if (tp_argument.IsType()) {
ASSERT(tp_argument.HasResolvedTypeClass());
- // Check if type argument is dynamic or Object.
+ // Check if type argument is dynamic, Object, or void.
const Type& object_type = Type::Handle(zone(), Type::ObjectType());
if (object_type.IsSubtypeOf(tp_argument, NULL, NULL, Heap::kOld)) {
// Instance class test only necessary.
@@ -341,6 +342,7 @@
if (smi_class.IsSubtypeOf(Object::null_type_arguments(), type_class,
Object::null_type_arguments(), NULL, NULL,
Heap::kOld)) {
+ // Fast case for type = int/num/top-type.
__ b(is_instance_lbl, EQ);
} else {
__ b(is_not_instance_lbl, EQ);
@@ -398,7 +400,14 @@
Label* is_not_instance_lbl) {
__ Comment("Subtype1TestCacheLookup");
const Register kInstanceReg = R0;
- __ LoadClass(R1, kInstanceReg, R2);
+#if defined(DEBUG)
+ Label ok;
+ __ BranchIfNotSmi(kInstanceReg, &ok);
+ __ Breakpoint();
+ __ Bind(&ok);
+#endif
+ __ LoadClassId(R2, kInstanceReg);
+ __ LoadClassById(R1, R2);
// R1: instance class.
// Check immediate superclass equality.
__ ldr(R2, FieldAddress(R1, Class::super_type_offset()));
@@ -447,12 +456,13 @@
__ ldr(R3, FieldAddress(kTypeArgumentsReg,
TypeArguments::type_at_offset(type_param.index())));
// R3: concrete type of type.
- // Check if type argument is dynamic.
+ // Check if type argument is dynamic, Object, or void.
__ CompareObject(R3, Object::dynamic_type());
__ b(is_instance_lbl, EQ);
__ CompareObject(R3, Type::ZoneHandle(zone(), Type::ObjectType()));
__ b(is_instance_lbl, EQ);
- // TODO(regis): Optimize void type as well once allowed as type argument.
+ __ CompareObject(R3, Object::void_type());
+ __ b(is_instance_lbl, EQ);
// For Smi check quickly against int and num interfaces.
Label not_smi;
@@ -462,9 +472,8 @@
__ b(is_instance_lbl, EQ);
__ CompareObject(R3, Type::ZoneHandle(zone(), Type::Number()));
__ b(is_instance_lbl, EQ);
- // Smi must be handled in runtime.
- Label fall_through;
- __ b(&fall_through);
+ // Smi can be handled by type test cache.
+ __ Bind(¬_smi);
// If it's guaranteed, by type-parameter bound, that the type parameter will
// never have a value of a function type, then we can safely do a 4-type
@@ -474,17 +483,18 @@
? kTestTypeSixArgs
: kTestTypeFourArgs;
- __ Bind(¬_smi);
const SubtypeTestCache& type_test_cache = SubtypeTestCache::ZoneHandle(
zone(), GenerateCallSubtypeTestStub(
test_kind, kInstanceReg, kInstantiatorTypeArgumentsReg,
kFunctionTypeArgumentsReg, kTempReg, is_instance_lbl,
is_not_instance_lbl));
- __ Bind(&fall_through);
return type_test_cache.raw();
}
if (type.IsType()) {
- __ BranchIfSmi(kInstanceReg, is_not_instance_lbl);
+ // Smi is FutureOr<T>, when T is a top type or int or num.
+ if (!FLAG_strong || !Class::Handle(type.type_class()).IsFutureOrClass()) {
+ __ BranchIfSmi(kInstanceReg, is_not_instance_lbl);
+ }
__ ldm(IA, SP,
(1 << kFunctionTypeArgumentsReg) |
(1 << kInstantiatorTypeArgumentsReg));
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index eb23398..4812ac4 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -243,11 +243,12 @@
ASSERT(type_class.NumTypeArguments() > 0);
const Register kInstanceReg = R0;
Error& bound_error = Error::Handle(zone());
- const Type& int_type = Type::Handle(zone(), Type::IntType());
+ const Type& smi_type = Type::Handle(zone(), Type::SmiType());
const bool smi_is_ok =
- int_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
+ smi_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
// Malformed type should have been handled at graph construction time.
ASSERT(smi_is_ok || bound_error.IsNull());
+ // Fast case for type = FutureOr<int/num/top-type>.
__ BranchIfSmi(kInstanceReg,
smi_is_ok ? is_instance_lbl : is_not_instance_lbl);
@@ -278,7 +279,7 @@
ASSERT(!tp_argument.IsMalformed());
if (tp_argument.IsType()) {
ASSERT(tp_argument.HasResolvedTypeClass());
- // Check if type argument is dynamic or Object.
+ // Check if type argument is dynamic, Object, or void.
const Type& object_type = Type::Handle(zone(), Type::ObjectType());
if (object_type.IsSubtypeOf(tp_argument, NULL, NULL, Heap::kOld)) {
// Instance class test only necessary.
@@ -331,6 +332,7 @@
if (smi_class.IsSubtypeOf(Object::null_type_arguments(), type_class,
Object::null_type_arguments(), NULL, NULL,
Heap::kOld)) {
+ // Fast case for type = int/num/top-type.
__ BranchIfSmi(kInstanceReg, is_instance_lbl);
} else {
__ BranchIfSmi(kInstanceReg, is_not_instance_lbl);
@@ -388,7 +390,14 @@
Label* is_not_instance_lbl) {
__ Comment("Subtype1TestCacheLookup");
const Register kInstanceReg = R0;
- __ LoadClass(R1, kInstanceReg);
+#if defined(DEBUG)
+ Label ok;
+ __ BranchIfNotSmi(kInstanceReg, &ok);
+ __ Breakpoint();
+ __ Bind(&ok);
+#endif
+ __ LoadClassId(TMP, kInstanceReg);
+ __ LoadClassById(R1, TMP);
// R1: instance class.
// Check immediate superclass equality.
__ LoadFieldFromOffset(R2, R1, Class::super_type_offset());
@@ -435,12 +444,13 @@
__ LoadFieldFromOffset(R3, kTypeArgumentsReg,
TypeArguments::type_at_offset(type_param.index()));
// R3: concrete type of type.
- // Check if type argument is dynamic.
+ // Check if type argument is dynamic, Object, or void.
__ CompareObject(R3, Object::dynamic_type());
__ b(is_instance_lbl, EQ);
__ CompareObject(R3, Type::ZoneHandle(zone(), Type::ObjectType()));
__ b(is_instance_lbl, EQ);
- // TODO(regis): Optimize void type as well once allowed as type argument.
+ __ CompareObject(R3, Object::void_type());
+ __ b(is_instance_lbl, EQ);
// For Smi check quickly against int and num interfaces.
Label not_smi;
@@ -449,9 +459,8 @@
__ b(is_instance_lbl, EQ);
__ CompareObject(R3, Type::ZoneHandle(zone(), Type::Number()));
__ b(is_instance_lbl, EQ);
- // Smi must be handled in runtime.
- Label fall_through;
- __ b(&fall_through);
+ // Smi can be handled by type test cache.
+ __ Bind(¬_smi);
// If it's guaranteed, by type-parameter bound, that the type parameter will
// never have a value of a function type, then we can safely do a 4-type
@@ -461,17 +470,18 @@
? kTestTypeSixArgs
: kTestTypeFourArgs;
- __ Bind(¬_smi);
const SubtypeTestCache& type_test_cache = SubtypeTestCache::ZoneHandle(
zone(), GenerateCallSubtypeTestStub(
test_kind, kInstanceReg, kInstantiatorTypeArgumentsReg,
kFunctionTypeArgumentsReg, kTempReg, is_instance_lbl,
is_not_instance_lbl));
- __ Bind(&fall_through);
return type_test_cache.raw();
}
if (type.IsType()) {
- __ BranchIfSmi(kInstanceReg, is_not_instance_lbl);
+ // Smi is FutureOr<T>, when T is a top type or int or num.
+ if (!FLAG_strong || !Class::Handle(type.type_class()).IsFutureOrClass()) {
+ __ BranchIfSmi(kInstanceReg, is_not_instance_lbl);
+ }
__ ldp(kFunctionTypeArgumentsReg, kInstantiatorTypeArgumentsReg,
Address(SP, 0 * kWordSize, Address::PairOffset));
// Uninstantiated type class is known at compile time, but the type
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index d8de557..f6dc95a 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -256,13 +256,14 @@
ASSERT(type_class.NumTypeArguments() > 0);
const Register kInstanceReg = EAX;
Error& bound_error = Error::Handle(zone());
- const Type& int_type = Type::Handle(zone(), Type::IntType());
+ const Type& smi_type = Type::Handle(zone(), Type::SmiType());
const bool smi_is_ok =
- int_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
+ smi_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
// Malformed type should have been handled at graph construction time.
ASSERT(smi_is_ok || bound_error.IsNull());
__ testl(kInstanceReg, Immediate(kSmiTagMask));
if (smi_is_ok) {
+ // Fast case for type = FutureOr<int/num/top-type>.
__ j(ZERO, is_instance_lbl);
} else {
__ j(ZERO, is_not_instance_lbl);
@@ -294,7 +295,7 @@
ASSERT(!tp_argument.IsMalformed());
if (tp_argument.IsType()) {
ASSERT(tp_argument.HasResolvedTypeClass());
- // Check if type argument is dynamic or Object.
+ // Check if type argument is dynamic, Object, or void.
const Type& object_type = Type::Handle(zone(), Type::ObjectType());
if (object_type.IsSubtypeOf(tp_argument, NULL, NULL, Heap::kOld)) {
// Instance class test only necessary.
@@ -347,6 +348,7 @@
if (smi_class.IsSubtypeOf(Object::null_type_arguments(), type_class,
Object::null_type_arguments(), NULL, NULL,
Heap::kOld)) {
+ // Fast case for type = int/num/top-type.
__ j(ZERO, is_instance_lbl);
} else {
__ j(ZERO, is_not_instance_lbl);
@@ -404,7 +406,14 @@
Label* is_not_instance_lbl) {
__ Comment("Subtype1TestCacheLookup");
const Register kInstanceReg = EAX;
- __ LoadClass(ECX, kInstanceReg, EDI);
+#if defined(DEBUG)
+ Label ok;
+ __ BranchIfNotSmi(kInstanceReg, &ok);
+ __ Breakpoint();
+ __ Bind(&ok);
+#endif
+ __ LoadClassId(EDI, kInstanceReg);
+ __ LoadClassById(ECX, EDI);
// ECX: instance class.
// Check immediate superclass equality.
__ movl(EDI, FieldAddress(ECX, Class::super_type_offset()));
@@ -455,12 +464,13 @@
__ movl(EDI, FieldAddress(kTypeArgumentsReg, TypeArguments::type_at_offset(
type_param.index())));
// EDI: concrete type of type.
- // Check if type argument is dynamic.
+ // Check if type argument is dynamic, Object, or void.
__ CompareObject(EDI, Object::dynamic_type());
__ j(EQUAL, is_instance_lbl);
__ CompareObject(EDI, Type::ZoneHandle(zone(), Type::ObjectType()));
__ j(EQUAL, is_instance_lbl);
- // TODO(regis): Optimize void type as well once allowed as type argument.
+ __ CompareObject(EDI, Object::void_type());
+ __ j(EQUAL, is_instance_lbl);
// For Smi check quickly against int and num interfaces.
Label not_smi;
@@ -470,9 +480,8 @@
__ j(EQUAL, is_instance_lbl);
__ CompareObject(EDI, Type::ZoneHandle(zone(), Type::Number()));
__ j(EQUAL, is_instance_lbl);
- // Smi must be handled in runtime.
- Label fall_through;
- __ jmp(&fall_through);
+ // Smi can be handled by type test cache.
+ __ Bind(¬_smi);
// If it's guaranteed, by type-parameter bound, that the type parameter will
// never have a value of a function type.
@@ -481,18 +490,19 @@
? kTestTypeSixArgs
: kTestTypeFourArgs;
- __ Bind(¬_smi);
const SubtypeTestCache& type_test_cache = SubtypeTestCache::ZoneHandle(
zone(), GenerateCallSubtypeTestStub(
test_kind, kInstanceReg, kInstantiatorTypeArgumentsReg,
kFunctionTypeArgumentsReg, kTempReg, is_instance_lbl,
is_not_instance_lbl));
- __ Bind(&fall_through);
return type_test_cache.raw();
}
if (type.IsType()) {
- __ testl(kInstanceReg, Immediate(kSmiTagMask)); // Is instance Smi?
- __ j(ZERO, is_not_instance_lbl);
+ // Smi is FutureOr<T>, when T is a top type or int or num.
+ if (!FLAG_strong || !Class::Handle(type.type_class()).IsFutureOrClass()) {
+ __ testl(kInstanceReg, Immediate(kSmiTagMask)); // Is instance Smi?
+ __ j(ZERO, is_not_instance_lbl);
+ }
__ movl(kInstantiatorTypeArgumentsReg, Address(ESP, 1 * kWordSize));
__ movl(kFunctionTypeArgumentsReg, Address(ESP, 0 * kWordSize));
// Uninstantiated type class is known at compile time, but the type
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index d3e58d8..2471b4e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -248,13 +248,14 @@
ASSERT(type_class.NumTypeArguments() > 0);
const Register kInstanceReg = RAX;
Error& bound_error = Error::Handle(zone());
- const Type& int_type = Type::Handle(zone(), Type::IntType());
+ const Type& smi_type = Type::Handle(zone(), Type::SmiType());
const bool smi_is_ok =
- int_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
+ smi_type.IsSubtypeOf(type, &bound_error, NULL, Heap::kOld);
// Malformed type should have been handled at graph construction time.
ASSERT(smi_is_ok || bound_error.IsNull());
__ testq(kInstanceReg, Immediate(kSmiTagMask));
if (smi_is_ok) {
+ // Fast case for type = FutureOr<int/num/top-type>.
__ j(ZERO, is_instance_lbl);
} else {
__ j(ZERO, is_not_instance_lbl);
@@ -287,7 +288,7 @@
ASSERT(!tp_argument.IsMalformed());
if (tp_argument.IsType()) {
ASSERT(tp_argument.HasResolvedTypeClass());
- // Check if type argument is dynamic or Object.
+ // Check if type argument is dynamic, Object, or void.
const Type& object_type = Type::Handle(zone(), Type::ObjectType());
if (object_type.IsSubtypeOf(tp_argument, NULL, NULL, Heap::kOld)) {
// Instance class test only necessary.
@@ -345,6 +346,7 @@
if (smi_class.IsSubtypeOf(Object::null_type_arguments(), type_class,
Object::null_type_arguments(), NULL, NULL,
Heap::kOld)) {
+ // Fast case for type = int/num/top-type.
__ j(ZERO, is_instance_lbl);
} else {
__ j(ZERO, is_not_instance_lbl);
@@ -406,7 +408,14 @@
Label* is_not_instance_lbl) {
__ Comment("Subtype1TestCacheLookup");
const Register kInstanceReg = RAX;
- __ LoadClass(R10, kInstanceReg);
+#if defined(DEBUG)
+ Label ok;
+ __ BranchIfNotSmi(kInstanceReg, &ok);
+ __ Breakpoint();
+ __ Bind(&ok);
+#endif
+ __ LoadClassId(TMP, kInstanceReg);
+ __ LoadClassById(R10, TMP);
// R10: instance class.
// Check immediate superclass equality.
__ movq(R13, FieldAddress(R10, Class::super_type_offset()));
@@ -458,13 +467,14 @@
__ movq(RDI, FieldAddress(kTypeArgumentsReg, TypeArguments::type_at_offset(
type_param.index())));
// RDI: Concrete type of type.
- // Check if type argument is dynamic.
+ // Check if type argument is dynamic, Object, or void.
__ CompareObject(RDI, Object::dynamic_type());
__ j(EQUAL, is_instance_lbl);
const Type& object_type = Type::ZoneHandle(zone(), Type::ObjectType());
__ CompareObject(RDI, object_type);
__ j(EQUAL, is_instance_lbl);
- // TODO(regis): Optimize void type as well once allowed as type argument.
+ __ CompareObject(RDI, Object::void_type());
+ __ j(EQUAL, is_instance_lbl);
// For Smi check quickly against int and num interfaces.
Label not_smi;
@@ -474,9 +484,8 @@
__ j(EQUAL, is_instance_lbl);
__ CompareObject(RDI, Type::ZoneHandle(zone(), Type::Number()));
__ j(EQUAL, is_instance_lbl);
- // Smi must be handled in runtime.
- Label fall_through;
- __ jmp(&fall_through);
+ // Smi can be handled by type test cache.
+ __ Bind(¬_smi);
// If it's guaranteed, by type-parameter bound, that the type parameter will
// never have a value of a function type, then we can safely do a 4-type
@@ -486,18 +495,19 @@
? kTestTypeSixArgs
: kTestTypeFourArgs;
- __ Bind(¬_smi);
const SubtypeTestCache& type_test_cache = SubtypeTestCache::ZoneHandle(
zone(), GenerateCallSubtypeTestStub(
test_kind, kInstanceReg, kInstantiatorTypeArgumentsReg,
kFunctionTypeArgumentsReg, kTempReg, is_instance_lbl,
is_not_instance_lbl));
- __ Bind(&fall_through);
return type_test_cache.raw();
}
if (type.IsType()) {
- __ testq(kInstanceReg, Immediate(kSmiTagMask)); // Is instance Smi?
- __ j(ZERO, is_not_instance_lbl);
+ // Smi is FutureOr<T>, when T is a top type or int or num.
+ if (!FLAG_strong || !Class::Handle(type.type_class()).IsFutureOrClass()) {
+ __ testq(kInstanceReg, Immediate(kSmiTagMask)); // Is instance Smi?
+ __ j(ZERO, is_not_instance_lbl);
+ }
// Uninstantiated type class is known at compile time, but the type
// arguments are determined at runtime by the instantiator(s).
return GenerateCallSubtypeTestStub(kTestTypeFourArgs, kInstanceReg,
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index fe0999e..4bec000 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -76,6 +76,7 @@
false,
"Remove script timestamps to allow for deterministic testing.");
+DECLARE_FLAG(bool, intrinsify);
DECLARE_FLAG(bool, show_invisible_frames);
DECLARE_FLAG(bool, trace_deoptimization);
DECLARE_FLAG(bool, trace_deoptimization_verbose);
@@ -5971,6 +5972,25 @@
#if !defined(DART_PRECOMPILED_RUNTIME)
bool Function::IsBytecodeAllowed(Zone* zone) const {
+ if (FLAG_intrinsify) {
+ // Bigint intrinsics should not be interpreted, because their Dart version
+ // is only to be used when intrinsics are disabled. Mixing an interpreted
+ // Dart version with a compiled intrinsified version results in a mismatch
+ // in the number of digits processed by each call.
+ switch (recognized_kind()) {
+ case MethodRecognizer::kBigint_lsh:
+ case MethodRecognizer::kBigint_rsh:
+ case MethodRecognizer::kBigint_absAdd:
+ case MethodRecognizer::kBigint_absSub:
+ case MethodRecognizer::kBigint_mulAdd:
+ case MethodRecognizer::kBigint_sqrAdd:
+ case MethodRecognizer::kBigint_estimateQuotientDigit:
+ case MethodRecognizer::kMontgomery_mulMod:
+ return false;
+ default:
+ break;
+ }
+ }
switch (kind()) {
case RawFunction::kImplicitGetter:
case RawFunction::kImplicitSetter:
@@ -19404,23 +19424,12 @@
return "NULL Integer";
}
-// String representation of kMaxInt64 + 1.
-static const char* kMaxInt64Plus1 = "9223372036854775808";
-
RawInteger* Integer::New(const String& str, Heap::Space space) {
// We are not supposed to have integers represented as two byte strings.
ASSERT(str.IsOneByteString());
int64_t value = 0;
const char* cstr = str.ToCString();
if (!OS::StringToInt64(cstr, &value)) {
- // TODO(T31600): Remove overflow checking code when 64-bit ints semantics
- // are only supported through the Kernel FE.
- if (strcmp(cstr, kMaxInt64Plus1) == 0) {
- // Allow MAX_INT64 + 1 integer literal as it can be used as an argument
- // of unary minus to produce MIN_INT64 value. The value is automatically
- // wrapped to MIN_INT64.
- return Integer::New(kMinInt64, space);
- }
// Out of range.
return Integer::null();
}
@@ -19433,14 +19442,6 @@
int64_t value = 0;
const char* cstr = str.ToCString();
if (!OS::StringToInt64(cstr, &value)) {
- // TODO(T31600): Remove overflow checking code when 64-bit ints semantics
- // are only supported through the Kernel FE.
- if (strcmp(cstr, kMaxInt64Plus1) == 0) {
- // Allow MAX_INT64 + 1 integer literal as it can be used as an argument
- // of unary minus to produce MIN_INT64 value. The value is automatically
- // wrapped to MIN_INT64.
- return Mint::NewCanonical(kMinInt64);
- }
// Out of range.
return Integer::null();
}
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index ad00ea5..5994aed 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -651,18 +651,17 @@
}
return;
}
+ Class& instance_class = Class::Handle(zone);
if (instance.IsSmi()) {
- if (FLAG_trace_type_checks) {
- OS::PrintErr("UpdateTypeTestCache: instance is Smi\n");
- }
- return;
+ instance_class = Smi::Class();
+ } else {
+ instance_class = instance.clazz();
}
// If the type is uninstantiated and refers to parent function type
// parameters, the function_type_arguments have been canonicalized
// when concatenated.
ASSERT(function_type_arguments.IsNull() ||
function_type_arguments.IsCanonical());
- const Class& instance_class = Class::Handle(zone, instance.clazz());
auto& instance_class_id_or_function = Object::Handle(zone);
auto& instance_type_arguments = TypeArguments::Handle(zone);
auto& instance_parent_function_type_arguments = TypeArguments::Handle(zone);
@@ -748,14 +747,16 @@
" Updated test cache %p ix: %" Pd
" with "
"(cid-or-fun: %p, type-args: %p, i-type-args: %p, f-type-args: %p, "
- "result: %s)\n"
+ "p-type-args: %p, d-type-args: %p, result: %s)\n"
" instance [class: (%p '%s' cid: %" Pd
"), type-args: %p %s]\n"
" test-type [class: (%p '%s' cid: %" Pd
"), i-type-args: %p %s, f-type-args: %p %s]\n",
new_cache.raw(), len, instance_class_id_or_function.raw(),
instance_type_arguments.raw(), instantiator_type_arguments.raw(),
- instantiator_type_arguments.raw(), result.ToCString(),
+ function_type_arguments.raw(),
+ instance_parent_function_type_arguments.raw(),
+ instance_delayed_type_arguments.raw(), result.ToCString(),
instance_class.raw(), instance_class_name.ToCString(),
instance_class.id(), instance_type_arguments.raw(),
instance_type_arguments.ToCString(), type_class.raw(),
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index b65f60f..d563a2c 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -1,4 +1,4 @@
-# Dart VM Service Protocol 3.9
+# Dart VM Service Protocol 3.11
> Please post feedback to the [observatory-discuss group][discuss-list]
diff --git a/runtime/vm/service/service_dev.md b/runtime/vm/service/service_dev.md
index 39d695a..3d26758 100644
--- a/runtime/vm/service/service_dev.md
+++ b/runtime/vm/service/service_dev.md
@@ -1,4 +1,4 @@
-# Dart VM Service Protocol 3.10-dev
+# Dart VM Service Protocol 3.12-dev
> Please post feedback to the [observatory-discuss group][discuss-list]
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 8791013..7b08bf6 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -2007,7 +2007,11 @@
__ AddImmediate(kCacheReg, Array::data_offset() - kHeapObjectTag);
Label loop, not_closure;
- __ LoadClassId(kInstanceCidOrFunction, kInstanceReg);
+ if (n >= 4) {
+ __ LoadClassIdMayBeSmi(kInstanceCidOrFunction, kInstanceReg);
+ } else {
+ __ LoadClassId(kInstanceCidOrFunction, kInstanceReg);
+ }
__ CompareImmediate(kInstanceCidOrFunction, kClosureCid);
__ b(¬_closure, NE);
@@ -2311,11 +2315,6 @@
__ Bind(&no_error);
#endif
- // Need to handle slow cases of [Smi]s here because the
- // [SubtypeTestCache]-based stubs do not handle [Smi]s.
- Label non_smi_value;
- __ BranchIfSmi(kInstanceReg, &call_runtime);
-
// If the subtype-cache is null, it needs to be lazily-created by the runtime.
__ CompareObject(kSubtypeTestCacheReg, Object::null_object());
__ BranchIf(EQUAL, &call_runtime);
@@ -2338,6 +2337,9 @@
__ CompareObject(kTmp, Object::null_object());
__ BranchIf(NOT_EQUAL, &is_complex_case);
+ // This [Type] could be a FutureOr. Subtype2TestCache does not support Smi.
+ __ BranchIfSmi(kInstanceReg, &is_complex_case);
+
// Fall through to &is_simple_case
const intptr_t kRegsToSave = (1 << kSubtypeTestCacheReg) |
@@ -2366,15 +2368,17 @@
__ Bind(&call_runtime);
- // We cannot really ensure here that dynamic/Object never occur here (though
- // it is guaranteed at dart_precompiled_runtime time). This is because we do
- // constant evaluation with default stubs and only install optimized versions
- // before writing out the AOT snapshot. So dynamic/Object will run with
- // default stub in constant evaluation.
+ // We cannot really ensure here that dynamic/Object/void never occur here
+ // (though it is guaranteed at dart_precompiled_runtime time). This is
+ // because we do constant evaluation with default stubs and only install
+ // optimized versions before writing out the AOT snapshot.
+ // So dynamic/Object/void will run with default stub in constant evaluation.
__ CompareObject(kDstTypeReg, Type::dynamic_type());
__ BranchIf(EQUAL, &done);
__ CompareObject(kDstTypeReg, Type::Handle(Type::ObjectType()));
__ BranchIf(EQUAL, &done);
+ __ CompareObject(kDstTypeReg, Type::void_type());
+ __ BranchIf(EQUAL, &done);
InvokeTypeCheckFromTypeTestStub(assembler, kTypeCheckFromSlowStub);
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index 8aa8213..2bf5573 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -2271,7 +2271,11 @@
__ AddImmediate(kCacheReg, Array::data_offset() - kHeapObjectTag);
Label loop, not_closure;
- __ LoadClassId(kInstanceCidOrFunction, kInstanceReg);
+ if (n >= 4) {
+ __ LoadClassIdMayBeSmi(kInstanceCidOrFunction, kInstanceReg);
+ } else {
+ __ LoadClassId(kInstanceCidOrFunction, kInstanceReg);
+ }
__ CompareImmediate(kInstanceCidOrFunction, kClosureCid);
__ b(¬_closure, NE);
@@ -2569,7 +2573,6 @@
const Register kInstanceReg = R0;
const Register kInstantiatorTypeArgumentsReg = R1;
-
const Register kSubtypeTestCacheReg = R3;
const Register kDstTypeReg = R8;
@@ -2584,11 +2587,6 @@
__ Bind(&no_error);
#endif
- // Need to handle slow cases of [Smi]s here because the
- // [SubtypeTestCache]-based stubs do not handle [Smi]s.
- Label non_smi_value;
- __ BranchIfSmi(kInstanceReg, &call_runtime);
-
// If the subtype-cache is null, it needs to be lazily-created by the runtime.
__ CompareObject(kSubtypeTestCacheReg, Object::null_object());
__ BranchIf(EQUAL, &call_runtime);
@@ -2611,6 +2609,9 @@
__ CompareObject(kTmp, Object::null_object());
__ BranchIf(NOT_EQUAL, &is_complex_case);
+ // This [Type] could be a FutureOr. Subtype2TestCache does not support Smi.
+ __ BranchIfSmi(kInstanceReg, &is_complex_case);
+
// Fall through to &is_simple_case
__ Bind(&is_simple_case);
@@ -2635,15 +2636,17 @@
__ Bind(&call_runtime);
- // We cannot really ensure here that dynamic/Object never occur here (though
- // it is guaranteed at dart_precompiled_runtime time). This is because we do
- // constant evaluation with default stubs and only install optimized versions
- // before writing out the AOT snapshot. So dynamic/Object will run with
- // default stub in constant evaluation.
+ // We cannot really ensure here that dynamic/Object/void never occur here
+ // (though it is guaranteed at dart_precompiled_runtime time). This is
+ // because we do constant evaluation with default stubs and only install
+ // optimized versions before writing out the AOT snapshot.
+ // So dynamic/Object/void will run with default stub in constant evaluation.
__ CompareObject(kDstTypeReg, Type::dynamic_type());
__ BranchIf(EQUAL, &done);
__ CompareObject(kDstTypeReg, Type::Handle(Type::ObjectType()));
__ BranchIf(EQUAL, &done);
+ __ CompareObject(kDstTypeReg, Type::void_type());
+ __ BranchIf(EQUAL, &done);
InvokeTypeCheckFromTypeTestStub(assembler, kTypeCheckFromSlowStub);
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 4535bad..d609e2a 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -1752,8 +1752,11 @@
__ addl(EDX, Immediate(Array::data_offset() - kHeapObjectTag));
Label loop, not_closure;
-
- __ LoadClassId(kInstanceCidOrFunction, kInstanceReg);
+ if (n >= 4) {
+ __ LoadClassIdMayBeSmi(kInstanceCidOrFunction, kInstanceReg);
+ } else {
+ __ LoadClassId(kInstanceCidOrFunction, kInstanceReg);
+ }
__ cmpl(kInstanceCidOrFunction, Immediate(kClosureCid));
__ j(NOT_EQUAL, ¬_closure, Assembler::kNearJump);
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index c8f4218..0839632 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -2291,8 +2291,12 @@
__ addq(RSI, Immediate(Array::data_offset() - kHeapObjectTag));
Label loop, not_closure;
- __ LoadClassId(R10, kInstanceReg);
- __ cmpq(R10, Immediate(kClosureCid));
+ if (n >= 4) {
+ __ LoadClassIdMayBeSmi(kInstanceCidOrFunction, kInstanceReg);
+ } else {
+ __ LoadClassId(kInstanceCidOrFunction, kInstanceReg);
+ }
+ __ cmpq(kInstanceCidOrFunction, Immediate(kClosureCid));
__ j(NOT_EQUAL, ¬_closure, Assembler::kNearJump);
// Closure handling.
@@ -2596,10 +2600,6 @@
__ Bind(&no_error);
#endif
- // Need to handle slow cases of [Smi]s here because the
- // [SubtypeTestCache]-based stubs do not handle [Smi]s.
- __ BranchIfSmi(kInstanceReg, &call_runtime);
-
// If the subtype-cache is null, it needs to be lazily-created by the runtime.
__ CompareObject(kSubtypeTestCacheReg, Object::null_object());
__ BranchIf(EQUAL, &call_runtime);
@@ -2622,6 +2622,9 @@
__ CompareObject(kTmp, Object::null_object());
__ BranchIf(NOT_EQUAL, &is_complex_case);
+ // This [Type] could be a FutureOr. Subtype2TestCache does not support Smi.
+ __ BranchIfSmi(kInstanceReg, &is_complex_case);
+
// Fall through to &is_simple_case
__ Bind(&is_simple_case);
@@ -2642,15 +2645,17 @@
__ Bind(&call_runtime);
- // We cannot really ensure here that dynamic/Object never occur here (though
- // it is guaranteed at dart_precompiled_runtime time). This is because we do
- // constant evaluation with default stubs and only install optimized versions
- // before writing out the AOT snapshot. So dynamic/Object will run with
- // default stub in constant evaluation.
+ // We cannot really ensure here that dynamic/Object/void never occur here
+ // (though it is guaranteed at dart_precompiled_runtime time). This is
+ // because we do constant evaluation with default stubs and only install
+ // optimized versions before writing out the AOT snapshot.
+ // So dynamic/Object/void will run with default stub in constant evaluation.
__ CompareObject(kDstTypeReg, Type::dynamic_type());
__ BranchIf(EQUAL, &done);
__ CompareObject(kDstTypeReg, Type::Handle(Type::ObjectType()));
__ BranchIf(EQUAL, &done);
+ __ CompareObject(kDstTypeReg, Type::void_type());
+ __ BranchIf(EQUAL, &done);
InvokeTypeCheckFromTypeTestStub(assembler, kTypeCheckFromSlowStub);
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index 5f60976..015c414 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -173,6 +173,13 @@
message = "Must not be null",
invalidValue = null;
+ /**
+ * Throws if [argument] is `null`.
+ */
+ static void checkNotNull(Object argument, [String name]) {
+ if (argument == null) throw ArgumentError.notNull(name);
+ }
+
// Helper functions for toString overridden in subclasses.
String get _errorName => "Invalid argument${!_hasValue ? "(s)" : ""}";
String get _errorExplanation => "";
diff --git a/tests/co19_2/co19_2-kernel.status b/tests/co19_2/co19_2-kernel.status
index df6c4d0..8c374fc 100644
--- a/tests/co19_2/co19_2-kernel.status
+++ b/tests/co19_2/co19_2-kernel.status
@@ -1,11 +1,15 @@
# Copyright (c) 2018, 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.
+LibTest/io/Link/rename_A02_t01: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/174
LibTest/io/RawDatagramSocket/any_A01_t02: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
+LibTest/io/RawDatagramSocket/any_A01_t03: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
LibTest/io/RawDatagramSocket/asBroadcastStream_A01_t02: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
LibTest/io/RawDatagramSocket/distinct_A01_t05: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
+LibTest/io/RawDatagramSocket/lastWhere_A01_t02: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
LibTest/io/RawDatagramSocket/timeout_A02_t01: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
LibTest/io/RawDatagramSocket/timeout_A06_t01: Pass, Fail # Next roll might fix it (see https://github.com/dart-lang/co19/commit/8b2e2be5bc3bb9fec41efec8ac6fc777e231d915)
+LibTest/io/Stdin/readByteSync_A02_t01: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/175
[ $compiler == dartkp ]
Language/Expressions/Instance_Creation/New/evaluation_t20: RuntimeError
diff --git a/tests/corelib_2/corelib_2.status b/tests/corelib_2/corelib_2.status
index 4af23ff..8291f39 100644
--- a/tests/corelib_2/corelib_2.status
+++ b/tests/corelib_2/corelib_2.status
@@ -59,10 +59,6 @@
int_modulo_arith_test/none: RuntimeError
string_from_environment3_test/03: Crash
-[ $compiler == dartkb ]
-bigint_from_test: RuntimeError, Pass # Issue 34901
-bigint_test: Skip # Issue 34901
-
[ $compiler == fasta ]
bool_from_environment2_test/03: MissingCompileTimeError
string_from_environment3_test/03: MissingCompileTimeError
@@ -281,7 +277,6 @@
apply_test/01: RuntimeError
[ $compiler == dartkp && $runtime == dart_precompiled && $strong ]
-bigint_test: Pass, Timeout # --no_intrinsify
iterable_fold_test/02: RuntimeError
iterable_reduce_test/01: CompileTimeError # Issue 31533
iterable_reduce_test/none: RuntimeError
@@ -421,7 +416,7 @@
[ !$strong && ($runtime == dart_precompiled || $runtime == vm) ]
list_test/*: RuntimeError # VM doesn't implement strong mode covariance checks
-[ $arch == simarm || $arch == simarm64 || $arch == simdbc64 || $compiler == dartkb ]
+[ $arch == simarm || $arch == simarm64 || $arch == simdbc64 ]
bigint_parse_radix_test: Skip # Issue 31659
bigint_test: Skip # Issue 31659
@@ -568,6 +563,9 @@
uri_parse_test: Pass, Slow
uri_test: Pass, Slow
+[ $compiler == dartkb || $compiler == dartkp ]
+bigint_test: Pass, Timeout # --no_intrinsify
+
[ $compiler == precompiler || $runtime == vm && !$checked && !$strong ]
int_parse_radix_test/badTypes: RuntimeError # wrong exception returned
diff --git a/tests/language_2/issue34877_test.dart b/tests/language_2/issue34877_test.dart
new file mode 100644
index 0000000..08ce3d4
--- /dev/null
+++ b/tests/language_2/issue34877_test.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2018, 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.
+
+// Regression test: ensure that async for loops remain async for loops when
+// mixed in.
+
+import 'dart:async';
+
+abstract class _Mixin {
+ Future<int> stuff(Stream<int> values) async {
+ var total = 0;
+ await for (var value in values) {
+ total += value;
+ }
+ return total;
+ }
+}
+
+class Implementation extends Object with _Mixin {}
+
+void main() async {
+ print(await Implementation().stuff(Stream.fromIterable([1, 2, 3])));
+}
diff --git a/tests/language_2/mock_writable_final_private_field_test.dart b/tests/language_2/mock_writable_final_private_field_test.dart
index ed08bc9..afb337c 100644
--- a/tests/language_2/mock_writable_final_private_field_test.dart
+++ b/tests/language_2/mock_writable_final_private_field_test.dart
@@ -8,8 +8,9 @@
class Mock {
noSuchMethod(Invocation i) {
- var expected = i.isGetter ? #_x : const Symbol("_x=");
- Expect.equals(expected, i.memberName);
+ // See dartbug.com/34904 for why we have to do this dance with symbols.
+ var expected = i.isGetter ? const Symbol("_x") : const Symbol("_x=");
+ Expect.equals(expected.toString(), i.memberName.toString());
values.add(i.positionalArguments[0]);
}
}
diff --git a/tests/language_2/vm/unreachable_code_test.dart b/tests/language_2/vm/unreachable_code_test.dart
new file mode 100644
index 0000000..b1a14ee
--- /dev/null
+++ b/tests/language_2/vm/unreachable_code_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2018, 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.
+
+// Verifies that VM is able to handle certain cases of unreachable code.
+
+// VMOptions=--no_background_compilation --optimization_counter_threshold=10
+
+import "package:expect/expect.dart";
+
+class A {
+ dynamic next;
+}
+
+test1(A arg1, bool arg2, bool arg3) {
+ assert(arg1.next == (arg2 ?? arg3));
+}
+
+test2(A arg1, bool arg2, bool arg3) {
+ print(((throw 'Error') as dynamic).next == (arg2 ?? arg3));
+}
+
+void doTests() {
+ test1(new A(), null, null);
+ Expect.throws(() {
+ test2(new A(), null, null);
+ });
+}
+
+void main() {
+ for (int i = 0; i < 20; i++) {
+ doTests();
+ }
+}
diff --git a/third_party/.gitignore b/third_party/.gitignore
index 569ad8d..9faa3c6 100644
--- a/third_party/.gitignore
+++ b/third_party/.gitignore
@@ -13,3 +13,4 @@
!clang.tar.gz.sha1
!unittest.tar.gz.sha1
!update.sh
+!/googletest
diff --git a/tools/VERSION b/tools/VERSION
index e678d7a..804d4a7 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 1
PATCH 0
-PRERELEASE 8
+PRERELEASE 9
PRERELEASE_PATCH 0
diff --git a/tools/bots/flutter/analyze_flutter.sh b/tools/bots/flutter/analyze_flutter.sh
index 02932c7..4f752e5 100755
--- a/tools/bots/flutter/analyze_flutter.sh
+++ b/tools/bots/flutter/analyze_flutter.sh
@@ -15,7 +15,7 @@
trap cleanup EXIT HUP INT QUIT TERM PIPE
cd "$tmpdir"
-git clone https://chromium.googlesource.com/external/github.com/flutter/flutter
+git clone --depth 1 -vv https://chromium.googlesource.com/external/github.com/flutter/flutter
cd flutter
bin/flutter config --no-analytics
bin/flutter update-packages
diff --git a/tools/gn.py b/tools/gn.py
index c2546a1..50740ef 100755
--- a/tools/gn.py
+++ b/tools/gn.py
@@ -24,6 +24,7 @@
DART_USE_TSAN = "DART_USE_TSAN" # Use instead of --tsan
DART_USE_TOOLCHAIN = "DART_USE_TOOLCHAIN" # Use instread of --toolchain-prefix
DART_USE_SYSROOT = "DART_USE_SYSROOT" # Use instead of --target-sysroot
+DART_USE_CRASHPAD = "DART_USE_CRASHPAD" # Use instead of --use-crashpad
# use instead of --platform-sdk
DART_MAKE_PLATFORM_SDK = "DART_MAKE_PLATFORM_SDK"
@@ -160,7 +161,6 @@
# Otherwise use the sysroot.
return True
-
def ToGnArgs(args, mode, arch, target_os):
gn_args = {}
@@ -174,6 +174,13 @@
gn_args['target_cpu'] = TargetCpuForArch(arch, target_os)
gn_args['dart_target_arch'] = DartTargetCpuForArch(arch)
+ # Configure Crashpad library if it is used.
+ gn_args['dart_use_crashpad'] = (args.use_crashpad or
+ DART_USE_CRASHPAD in os.environ)
+ if gn_args['dart_use_crashpad']:
+ # Tell Crashpad's BUILD files which checkout layout to use.
+ gn_args['crashpad_dependencies'] = 'dart'
+
if arch != HostCpuForArch(arch):
# Training an app-jit snapshot under a simulator is slow. Use script
# snapshots instead.
@@ -188,8 +195,6 @@
gn_args['dart_platform_bytecode'] = args.bytecode
- gn_args['dart_zlib_path'] = "//runtime/bin/zlib"
-
# Use tcmalloc only when targeting Linux and when not using ASAN.
gn_args['dart_use_tcmalloc'] = ((gn_args['target_os'] == 'linux')
and not UseSanitizer(args))
@@ -321,6 +326,9 @@
print ("Cross-compilation to %s is not supported for architecture %s."
% (os_name, arch))
return False
+ if HOST_OS != 'win' and args.use_crashpad:
+ print "Crashpad is only supported on Windows"
+ return False
return True
@@ -460,6 +468,10 @@
help='Number of simultaneous GN invocations',
dest='workers',
default=multiprocessing.cpu_count())
+ other_group.add_argument('--use-crashpad',
+ default=False,
+ dest='use_crashpad',
+ action='store_true')
options = parser.parse_args(args)
if not ProcessOptions(options):
diff --git a/tools/minidump.py b/tools/minidump.py
new file mode 100644
index 0000000..2f382e4
--- /dev/null
+++ b/tools/minidump.py
@@ -0,0 +1,190 @@
+# Copyright (c) 2018, 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 contains a set of utilities for parsing minidumps.
+
+import ctypes
+import mmap
+import os
+import sys
+
+
+class Enum(object):
+ def __init__(self, type, name2value):
+ self.name2value = name2value
+ self.value2name = {v: k for k, v in name2value.iteritems()}
+ self.type = type
+
+ def from_raw(self, v):
+ if v not in self.value2name:
+ return 'Unknown(' + str(v) + ')'
+ return self.value2name[v]
+
+ def to_raw(self, v):
+ return self.name2value[v]
+
+
+class Descriptor(object):
+ """A handy wrapper over ctypes.Structure"""
+
+ def __init__(self, fields):
+ self.fields = fields
+ self.ctype = Descriptor._GetCtype(fields)
+ self.size = ctypes.sizeof(self.ctype)
+
+ def Read(self, address):
+ return self.ctype.from_address(address)
+
+ @staticmethod
+ def _GetCtype(fields):
+ raw_fields = []
+ wrappers = {}
+ for field in fields:
+ (name, type) = field
+ if isinstance(type, Enum):
+ raw_fields.append(('_raw_' + name, type.type))
+ wrappers[name] = type
+ else:
+ raw_fields.append(field)
+
+ class Raw(ctypes.Structure):
+ _fields_ = raw_fields
+ _pack_ = 1
+
+ def __getattribute__(self, name):
+ if name in wrappers:
+ return wrappers[name].from_raw(getattr(self, '_raw_' + name))
+ else:
+ return ctypes.Structure.__getattribute__(self, name)
+
+ def __repr__(self):
+ return '{' + ', '.join('%s: %s' % (field, self.__getattribute__(field))
+ for field, _ in fields) + '}'
+
+ return Raw
+
+
+# Structures below are based on the information in the MSDN pages and
+# Breakpad/Crashpad sources.
+
+
+MINIDUMP_HEADER = Descriptor([
+ ('signature', ctypes.c_uint32),
+ ('version', ctypes.c_uint32),
+ ('stream_count', ctypes.c_uint32),
+ ('stream_directories_rva', ctypes.c_uint32),
+ ('checksum', ctypes.c_uint32),
+ ('time_date_stampt', ctypes.c_uint32),
+ ('flags', ctypes.c_uint64)
+])
+
+
+MINIDUMP_LOCATION_DESCRIPTOR = Descriptor([
+ ('data_size', ctypes.c_uint32),
+ ('rva', ctypes.c_uint32)
+])
+
+
+MINIDUMP_STREAM_TYPE = {
+ 'MD_UNUSED_STREAM': 0,
+ 'MD_RESERVED_STREAM_0': 1,
+ 'MD_RESERVED_STREAM_1': 2,
+ 'MD_THREAD_LIST_STREAM': 3,
+ 'MD_MODULE_LIST_STREAM': 4,
+ 'MD_MEMORY_LIST_STREAM': 5,
+ 'MD_EXCEPTION_STREAM': 6,
+ 'MD_SYSTEM_INFO_STREAM': 7,
+ 'MD_THREAD_EX_LIST_STREAM': 8,
+ 'MD_MEMORY_64_LIST_STREAM': 9,
+ 'MD_COMMENT_STREAM_A': 10,
+ 'MD_COMMENT_STREAM_W': 11,
+ 'MD_HANDLE_DATA_STREAM': 12,
+ 'MD_FUNCTION_TABLE_STREAM': 13,
+ 'MD_UNLOADED_MODULE_LIST_STREAM': 14,
+ 'MD_MISC_INFO_STREAM': 15,
+ 'MD_MEMORY_INFO_LIST_STREAM': 16,
+ 'MD_THREAD_INFO_LIST_STREAM': 17,
+ 'MD_HANDLE_OPERATION_LIST_STREAM': 18,
+}
+
+
+MINIDUMP_DIRECTORY = Descriptor([
+ ('stream_type', Enum(ctypes.c_uint32, MINIDUMP_STREAM_TYPE)),
+ ('location', MINIDUMP_LOCATION_DESCRIPTOR.ctype)
+])
+
+
+MINIDUMP_MISC_INFO_2 = Descriptor([
+ ('SizeOfInfo', ctypes.c_uint32),
+ ('Flags1', ctypes.c_uint32),
+ ('ProcessId', ctypes.c_uint32),
+ ('ProcessCreateTime', ctypes.c_uint32),
+ ('ProcessUserTime', ctypes.c_uint32),
+ ('ProcessKernelTime', ctypes.c_uint32),
+ ('ProcessorMaxMhz', ctypes.c_uint32),
+ ('ProcessorCurrentMhz', ctypes.c_uint32),
+ ('ProcessorMhzLimit', ctypes.c_uint32),
+ ('ProcessorMaxIdleState', ctypes.c_uint32),
+ ('ProcessorCurrentIdleState', ctypes.c_uint32),
+]);
+
+
+MINIDUMP_MISC1_PROCESS_ID = 0x00000001
+
+
+# A helper to get a raw address of the memory mapped buffer returned by
+# mmap.
+def BufferToAddress(buf):
+ obj = ctypes.py_object(buf)
+ address = ctypes.c_void_p()
+ length = ctypes.c_ssize_t()
+ ctypes.pythonapi.PyObject_AsReadBuffer(
+ obj, ctypes.byref(address), ctypes.byref(length))
+ return address.value
+
+
+class MinidumpFile(object):
+ """Class for reading minidump files."""
+ _HEADER_MAGIC = 0x504d444d
+
+ def __init__(self, minidump_name):
+ self.minidump_name = minidump_name
+ self.minidump_file = open(minidump_name, 'r')
+ self.minidump = mmap.mmap(self.minidump_file.fileno(), 0, access=mmap.ACCESS_READ)
+ self.minidump_address = BufferToAddress(self.minidump)
+ self.header = self.Read(MINIDUMP_HEADER, 0)
+ if self.header.signature != MinidumpFile._HEADER_MAGIC:
+ raise Exception('Unsupported minidump header magic')
+ self.directories = []
+ offset = self.header.stream_directories_rva
+ for _ in xrange(self.header.stream_count):
+ self.directories.append(self.Read(MINIDUMP_DIRECTORY, offset))
+ offset += MINIDUMP_DIRECTORY.size
+
+ def GetProcessId(self):
+ for dir in self.directories:
+ if dir.stream_type == 'MD_MISC_INFO_STREAM':
+ info = self.Read(MINIDUMP_MISC_INFO_2, dir.location.rva)
+ if info.Flags1 & MINIDUMP_MISC1_PROCESS_ID != 0:
+ return info.ProcessId
+ return -1
+
+ def Read(self, what, offset):
+ return what.Read(self.minidump_address + offset)
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, type, value, traceback):
+ self.minidump.close()
+ self.minidump_file.close()
+
+
+# Returns process id of the crashed process recorded in the given minidump.
+def GetProcessIdFromDump(path):
+ try:
+ with MinidumpFile(path) as f:
+ return int(f.GetProcessId())
+ except:
+ return -1
diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart
index b1a99bb..96533ad 100644
--- a/tools/testing/dart/test_suite.dart
+++ b/tools/testing/dart/test_suite.dart
@@ -128,6 +128,10 @@
_environmentOverrides = {
'DART_CONFIGURATION': configuration.configurationDirectory,
};
+ if (configuration.copyCoreDumps && Platform.isWindows) {
+ _environmentOverrides['DART_CRASHPAD_HANDLER'] =
+ new Path(buildDir + '/crashpad_handler.exe').toNativePath();
+ }
}
Map<String, String> get environmentOverrides => _environmentOverrides;
diff --git a/tools/utils.py b/tools/utils.py
index 648dbd4..c550045 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -36,6 +36,11 @@
return imp.load_source('bot_utils', os.path.join(DART_DIR, 'tools', 'bots', 'bot_utils.py'))
+def GetMinidumpUtils():
+ '''Dynamically load the tools/minidump.py python module.'''
+ return imp.load_source('minidump', os.path.join(DART_DIR, 'tools', 'minidump.py'))
+
+
class Version(object):
def __init__(self, channel, major, minor, patch, prerelease,
prerelease_patch):
@@ -762,90 +767,22 @@
class WindowsCoreDumpEnabler(object):
- """Configure Windows Error Reporting to store crash dumps.
-
- The documentation can be found here:
- https://msdn.microsoft.com/en-us/library/windows/desktop/bb787181.aspx
+ """This enabler assumes that Dart binary was built with Crashpad support.
+ In this case DART_CRASHPAD_CRASHES_DIR environment variable allows to
+ specify the location of Crashpad crashes database. Actual minidumps will
+ be written into reports subfolder of the database.
"""
-
- WINDOWS_COREDUMP_FOLDER = r'crashes'
-
- WER_NAME = r'SOFTWARE\Microsoft\Windows\Windows Error Reporting'
- WER_LOCALDUMPS_NAME = r'%s\LocalDumps' % WER_NAME
- IMGEXEC_NAME = (r'SOFTWARE\Microsoft\Windows NT\CurrentVersion'
- r'\Image File Execution Options\WerFault.exe')
+ CRASHPAD_DB_FOLDER = os.path.join(DART_DIR, r'crashes')
+ DUMPS_FOLDER = os.path.join(CRASHPAD_DB_FOLDER, r'reports')
def __init__(self):
- # Depending on whether we're in cygwin or not we use a different import.
- try:
- import winreg
- except ImportError:
- import _winreg as winreg
- self.winreg = winreg
+ pass
def __enter__(self):
- # We want 32 and 64 bit coredumps to land in the same coredump directory.
- for sam in [self.winreg.KEY_WOW64_64KEY, self.winreg.KEY_WOW64_32KEY]:
- # In case WerFault.exe was prevented from executing, we fix it here.
- # TODO(kustermann): Remove this once https://crbug.com/691971 is fixed.
- self._prune_existing_key(
- self.winreg.HKEY_LOCAL_MACHINE, self.IMGEXEC_NAME, sam)
-
- # Create (or open) the WER keys.
- with self.winreg.CreateKeyEx(
- self.winreg.HKEY_LOCAL_MACHINE, self.WER_NAME, 0,
- self.winreg.KEY_ALL_ACCESS | sam) as wer:
- with self.winreg.CreateKeyEx(
- self.winreg.HKEY_LOCAL_MACHINE, self.WER_LOCALDUMPS_NAME, 0,
- self.winreg.KEY_ALL_ACCESS | sam) as wer_localdumps:
- # Prevent any modal UI dialog & disable normal windows error reporting
- # TODO(kustermann): Remove this once https://crbug.com/691971 is fixed
- self.winreg.SetValueEx(wer, "DontShowUI", 0, self.winreg.REG_DWORD, 1)
- self.winreg.SetValueEx(wer, "Disabled", 0, self.winreg.REG_DWORD, 1)
-
- coredump_folder = os.path.join(
- os.getcwd(), WindowsCoreDumpEnabler.WINDOWS_COREDUMP_FOLDER)
-
- # Create the directory which will contain the dumps
- if not os.path.exists(coredump_folder):
- os.mkdir(coredump_folder)
-
- # Do full dumps (not just mini dumps), keep max 100 dumps and specify
- # folder.
- self.winreg.SetValueEx(
- wer_localdumps, "DumpType", 0, self.winreg.REG_DWORD, 2)
- self.winreg.SetValueEx(
- wer_localdumps, "DumpCount", 0, self.winreg.REG_DWORD, 200)
- self.winreg.SetValueEx(
- wer_localdumps, "DumpFolder", 0, self.winreg.REG_EXPAND_SZ,
- coredump_folder)
+ os.environ['DART_CRASHPAD_CRASHES_DIR'] = WindowsCoreDumpEnabler.CRASHPAD_DB_FOLDER
def __exit__(self, *_):
- # We remove the local dumps settings after running the tests.
- for sam in [self.winreg.KEY_WOW64_64KEY, self.winreg.KEY_WOW64_32KEY]:
- with self.winreg.CreateKeyEx(
- self.winreg.HKEY_LOCAL_MACHINE, self.WER_LOCALDUMPS_NAME, 0,
- self.winreg.KEY_ALL_ACCESS | sam) as wer_localdumps:
- self.winreg.DeleteValue(wer_localdumps, 'DumpType')
- self.winreg.DeleteValue(wer_localdumps, 'DumpCount')
- self.winreg.DeleteValue(wer_localdumps, 'DumpFolder')
-
- def _prune_existing_key(self, key, subkey, wowbit):
- handle = None
-
- # If the open fails, the key doesn't exist and it's fine.
- try:
- handle = self.winreg.OpenKey(
- key, subkey, 0, self.winreg.KEY_READ | wowbit)
- except OSError:
- pass
-
- # If the key exists then we delete it. If the deletion does not work, we
- # let the exception through.
- if handle:
- handle.Close()
- self.winreg.DeleteKeyEx(key, subkey, wowbit, 0)
-
+ del os.environ['DART_CRASHPAD_CRASHES_DIR']
class BaseCoreDumpArchiver(object):
"""This class reads coredumps file written by UnexpectedCrashDumpArchiver
@@ -893,10 +830,11 @@
files.add(core)
else:
missing.append(crash)
- if self._output_directory is None:
+ if (self._output_directory is None
+ or os.environ.containsKey('BUILDBOT_BUILDERNAME')):
self._upload(files)
else:
- # --output_directory is specified, copy the dump to the output_directory instead
+ # This is a sharded test run: copy the dump to the output_directory
self._copy(files)
if missing:
@@ -1012,8 +950,9 @@
class WindowsCoreDumpArchiver(BaseCoreDumpArchiver):
def __init__(self, output_directory):
- super(WindowsCoreDumpArchiver, self).__init__(os.path.join(
- os.getcwd(), WindowsCoreDumpEnabler.WINDOWS_COREDUMP_FOLDER), output_directory)
+ super(WindowsCoreDumpArchiver, self).__init__(
+ WindowsCoreDumpEnabler.DUMPS_FOLDER, output_directory)
+ self._dumps_by_pid = None
def _cleanup(self):
found = super(WindowsCoreDumpArchiver, self)._cleanup()
@@ -1023,35 +962,25 @@
return found
def _find_coredump_file(self, crash):
- pattern = os.path.join(self._search_dir, '*.%s.*' % crash.pid)
- for core_filename in glob.glob(pattern):
- return core_filename
+ if self._dumps_by_pid is None:
+ # If this function is invoked the first time then look through the directory
+ # that contains crashes for all dump files and collect pid -> filename
+ # mapping.
+ self._dumps_by_pid = {}
+ minidump = GetMinidumpUtils()
+ pattern = os.path.join(self._search_dir, '*.dmp')
+ for core_filename in glob.glob(pattern):
+ pid = minidump.GetProcessIdFromDump(core_filename)
+ if pid != -1:
+ self._dumps_by_pid[str(pid)] = core_filename
+ if crash.pid in self._dumps_by_pid:
+ return self._dumps_by_pid[crash.pid]
def _report_missing_crashes(self, missing, throw=True):
# Let's only print the debugging information and not throw. We'll do more
# validation for werfault.exe and throw afterwards.
super(WindowsCoreDumpArchiver, self)._report_missing_crashes(missing, throw=False)
- # Let's check again for the image execution options for werfault. Maybe
- # puppet came a long during testing and reverted our change.
- try:
- import winreg
- except ImportError:
- import _winreg as winreg
- for wowbit in [winreg.KEY_WOW64_64KEY, winreg.KEY_WOW64_32KEY]:
- try:
- with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
- WindowsCoreDumpEnabler.IMGEXEC_NAME,
- 0,
- winreg.KEY_READ | wowbit) as handle:
- raise Exception(
- "Found werfault.exe was disabled. Probably by puppet. Too bad! "
- "(For more information see https://crbug.com/691971)")
- except OSError:
- # If the open did not work the werfault.exe execution setting is as it
- # should be.
- pass
-
if throw:
missing_as_string = ', '.join([str(c) for c in missing])
raise Exception('Missing crash dumps for: %s' % missing_as_string)