Index: runtime/vm/service/service.md |
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md |
index be132cb8ac89c61911b2bbff65b11f3648b85347..a3962cc6138ba2711e27dfd39e43db0a42b829c6 100644 |
--- a/runtime/vm/service/service.md |
+++ b/runtime/vm/service/service.md |
@@ -42,7 +42,6 @@ apparently outside the scope of the JSON-RPC specification. |
- [streamCancel](#streamcancel) |
- [streamListen](#streamlisten) |
- [Public Types](#public-types) |
- - [Bool](#bool) |
- [BoundField](#boundfield) |
- [BoundVariable](#boundvariable) |
- [Breakpoint](#breakpoint) |
@@ -50,7 +49,6 @@ apparently outside the scope of the JSON-RPC specification. |
- [ClassList](#classlist) |
- [Code](#code) |
- [CodeKind](#codekind) |
- - [Double](#double) |
- [Error](#error) |
- [Event](#event) |
- [EventKind](#eventkind) |
@@ -60,11 +58,9 @@ apparently outside the scope of the JSON-RPC specification. |
- [Frame](#frame) |
- [Function](#function) |
- [Instance](#instance) |
- - [Int](#int) |
- [Isolate](#isolate) |
- [Library](#library) |
- [LibraryDependency](#librarydependency) |
- - [List](#list) |
- [ListElement](#listelement) |
- [Message](#message) |
- [Null](#null) |
@@ -74,9 +70,7 @@ apparently outside the scope of the JSON-RPC specification. |
- [Script](#script) |
- [Stack](#stack) |
- [StepOption](#stepoption) |
- - [String](#string) |
- [Success](#success) |
- - [Type](#type) |
- [TypeArguments](#typearguments) |
- [Response](#response) |
- [Version](#version) |
@@ -306,6 +300,13 @@ The minor version number is incremented when the protocol is changed |
in a _backwards compatible_ way. An example of a backwards compatible |
change is adding a property to a result. |
+Certain changes that would normally not be backwards compatible are |
+considered backwards compatible for the purposes of versioning. |
+Specifically, additions can be made to the [EventKind](#eventkind) and |
+[InstanceKind](#instancekind) enumerated types and the client must |
+handle this gracefully. See the notes on these enumerated types for more |
+information. |
+ |
## Private RPCs, Types, and Properties |
Any RPC, type, or property which begins with an underscore is said to |
@@ -692,26 +693,6 @@ enum PermittedValues { |
This means that _PermittedValues_ is a _string_ with two potential values, |
_Value1_ and _Value2_. |
-### Bool |
- |
-``` |
-class @Bool extends @Instance { |
- // The value of this bool as a string, either 'true' or 'false'. |
- string valueAsString; |
-} |
-``` |
- |
-_@Bool_ is a reference to a _Bool_. |
- |
-``` |
-class Bool extends Instance { |
- // The value of this bool as a string, either 'true' or 'false'. |
- string valueAsString; |
-} |
-``` |
- |
-An _Bool_ represents an instance of the Dart language class _bool_. |
- |
### BoundField |
``` |
@@ -872,30 +853,25 @@ enum CodeKind { |
} |
``` |
-### Double |
+### Context |
``` |
-class @Double extends @Instance { |
- // The value of this double as a string. |
- // |
- // Suitable for passing to double.parse(). |
- string valueAsString; |
+class @Context { |
+ // The number of variables in this context. |
+ int length; |
} |
``` |
-_@Double_ is a reference to a _Double_. |
- |
``` |
-class Double extends Instance { |
- // The value of this double as a string. |
- // |
- // Suitable for passing to double.parse(). |
- string valueAsString; |
+class Context { |
+ // The number of variables in this context. |
+ int length; |
+ |
+ // The variables in this context object. |
+ ListElement[] variables; |
} |
``` |
-A _Double_ represents an instance of the Dart language class _double_. |
- |
### Error |
``` |
@@ -1187,8 +1163,49 @@ A _Function_ represents a Dart language function. |
``` |
class @Instance extends @Object { |
+ // What kind of instance is this? |
+ InstanceKind kind; |
+ |
// Instance references include their class. |
@Class class; |
+ |
+ // The value of this instance as a string. |
+ // |
+ // Provided for the instance kinds: |
+ // Null (null) |
+ // Bool (true or false) |
+ // Double (suitable for passing to Double.parse()) |
+ // Int (suitable for passing to int.parse()) |
+ // String (value may be truncated) |
+ string valueAsString [optional]; |
+ |
+ // The valueAsString for String references may be truncated. If so, |
+ // this property is added with the value 'true'. |
+ bool valueAsStringIsTruncated [optional]; |
+ |
+ // The length of a List instance. |
+ // |
+ // Provided for instance kinds: |
+ // List |
+ int length [optional]; |
+ |
+ // The name of a Type instance. |
+ // |
+ // Provided for instance kinds: |
+ // Type |
+ string name [optional]; |
+ |
+ // The corresponding Class if this Type is canonical. |
+ // |
+ // Provided for instance kinds: |
+ // Type |
+ @Class typeClass [optional]; |
+ |
+ // The parameterized class of a type parameter: |
+ // |
+ // Provided for instance kinds: |
+ // TypeParameter |
+ @Class parameterizedClass [optional]; |
} |
``` |
@@ -1196,35 +1213,183 @@ _@Instance_ is a reference to an _Instance_. |
``` |
class Instance extends Object { |
+ // What kind of instance is this? |
+ InstanceKind kind; |
+ |
+ // Instance references include their class. |
+ @Class class; |
+ |
+ // The value of this instance as a string. |
+ // |
+ // Provided for the instance kinds: |
+ // Bool (true or false) |
+ // Double (suitable for passing to Double.parse()) |
+ // Int (suitable for passing to int.parse()) |
+ // String (value may be truncated) |
+ string valueAsString [optional]; |
+ |
+ // The valueAsString for String references may be truncated. If so, |
+ // this property is added with the value 'true'. |
+ bool valueAsStringIsTruncated [optional]; |
+ |
+ // The length of a List instance. |
+ // |
+ // Provided for instance kinds: |
+ // List |
+ int length [optional]; |
+ |
+ // The name of a Type instance. |
+ // |
+ // Provided for instance kinds: |
+ // Type |
+ string name [optional]; |
+ |
+ // The corresponding Class if this Type is canonical. |
+ // |
+ // Provided for instance kinds: |
+ // Type |
+ @Class typeClass [optional]; |
+ |
+ // The parameterized class of a type parameter: |
+ // |
+ // Provided for instance kinds: |
+ // TypeParameter |
+ @Class parameterizedClass [optional]; |
+ |
+ // The fields of this Instance. |
BoundField fields [optional]; |
-} |
-``` |
-An _Instance_ represents an instance of the Dart language class _Object_. |
+ // The elements of a List instance. |
+ // |
+ // Provided for instance kinds: |
+ // List |
+ ListElement[] elements [optional]; |
-### Int |
+ // The function associated with a Closure instance. |
+ // |
+ // Provided for instance kinds: |
+ // Closure |
+ @Function closureFunction [optional]; |
-``` |
-class @Int extends @Instance { |
- // The value of this int as a string. |
+ // The context associated with a Closure instance. |
// |
- // Suitable for passing to int.parse(). |
- string valueAsString; |
+ // Provided for instance kinds: |
+ // Closure |
+ @Function closureContext [optional]; |
+ |
+ // The referent of a MirrorReference instance. |
+ // |
+ // Provided for instance kinds: |
+ // MirrorReference |
+ @Instance mirrorReferent [optional]; |
+ |
+ // The key for a WeakProperty instance. |
+ // |
+ // Provided for instance kinds: |
+ // WeakProperty |
+ @Instance propertyKey [optional]; |
+ |
+ // The key for a WeakProperty instance. |
+ // |
+ // Provided for instance kinds: |
+ // WeakProperty |
+ @Instance propertyValue [optional]; |
+ |
+ // The type arguments for this type. |
+ // |
+ // Provided for instance kinds: |
+ // Type |
+ @TypeArguments typeArguments [optional]; |
+ |
+ // The index of a TypeParameter instance. |
+ // |
+ // Provided for instance kinds: |
+ // TypeParameter |
+ int parameterIndex [optional]; |
+ |
+ // The type bounded by a BoundedType instance |
+ // or |
+ // The referent of a TypeRef instance. |
+ // |
+ // The value will always be one of: |
+ // Type, TypeRef, TypeParameter, BoundedType. |
+ // |
+ // Provided for instance kinds: |
+ // BoundedType |
+ // TypeRef |
+ @Instance type [optional]; |
+ |
+ // The bound of a TypeParameter or BoundedType. |
+ // |
+ // The value will always be one of: |
+ // Type, TypeRef, TypeParameter, BoundedType. |
+ // |
+ // Provided for instance kinds: |
+ // BoundedType |
+ // TypeParameter |
+ @Instance bound [optional]; |
} |
``` |
-_@Int_ is a reference to an _Int_. |
+An _Instance_ represents an instance of the Dart language class _Object_. |
+ |
+### InstanceKind |
``` |
-class Int extends Instance { |
- // The value of this int as a string. |
- // |
- // Suitable for passing to int.parse(). |
- string valueAsString; |
+enum { |
+ // A general instance of the Dart class Object. |
+ PlainInstance, |
+ |
+ // null instance. |
+ Null, |
+ |
+ // true or false. |
+ Bool, |
+ |
+ // An instance of the Dart class double. |
+ Double, |
+ |
+ // An instance of the Dart class int. |
+ Int, |
+ |
+ // An instance of the Dart class String. |
+ String, |
+ |
+ // An instance of the built-in VM List implementation. User-defined |
+ // Lists will be PlainInstance. |
+ List, |
+ |
+ // An instance of the built-in VM Map implementation. User-defined |
+ // Lists will be PlainInstance. |
+ Map, |
+ |
+ // An instance of the built-in VM Closure implementation. User-defined |
+ // Closures will be PlainInstance. |
+ Closure, |
+ |
+ // An instance of the Dart class MirrorReference. |
+ MirrorReference, |
+ |
+ // An instance of the Dart class WeakProperty. |
+ WeakProperty, |
+ |
+ // An instance of the Dart class Type |
+ Type, |
+ |
+ // An instance of the Dart class TypeParamer |
+ TypeParameter, |
+ |
+ // An instance of the Dart class TypeRef |
+ TypeRef, |
+ |
+ // An instance of the Dart class BoundedType |
+ BoundedType, |
} |
``` |
-An _Int_ represents an instance of the Dart language class _int_. |
+Adding new values to _InstanceKind_ is considered a backwards |
+compatible change. Clients should treat unrecognized instance kinds |
+as _PlainInstance_. |
### Isolate |
@@ -1355,30 +1520,6 @@ class LibraryDependency { |
A _LibraryDependency_ provides information about an import or export. |
-### List |
- |
-``` |
-class @List extends @Instance { |
- // The length of this list. |
- int length; |
-} |
-``` |
- |
-_@List_ is a reference to a _List_. |
- |
-``` |
-class List extends Instance { |
- // The length of this list. |
- int length; |
- |
- // The elements of this list. |
- ListElement[] elements; |
-} |
-``` |
- |
-A _List_ represents an built-in instance of the Dart class _List_. |
-User-defined lists will be represented as _Instance_. |
- |
### ListElement |
``` |
@@ -1568,43 +1709,6 @@ enum StepOption { |
A _StepOption_ indicates which form of stepping is requested in a [resume](#resume) RPC. |
-### String |
- |
-``` |
-class @String extends @Instance { |
- // The value of this double as a string. |
- // |
- // Note that this may be truncated. |
- // |
- // Suitable for passing to double.parse(). |
- string valueAsString; |
- |
- // The valueAsString for String references may be truncated. If so, |
- // this property is added with the value 'true'. |
- bool valueAsStringIsTruncated [optional]; |
-} |
-``` |
- |
-_@String_ is a reference to a _String_. |
- |
-``` |
-class String extends Instance { |
- // The value of this double as a string. |
- // |
- // Note that this will never be truncated. |
- // |
- // Suitable for passing to double.parse(). |
- string valueAsString; |
-} |
-``` |
- |
-An _String_ represents an instance of the Dart language class _String_. |
- |
-The _valueAsString_ property for an _@String_ may be truncated. To get |
-the untruncated _valueAsString_, call the [getObject](#getobject) RPC |
-on the String's _id_. A _String_ object never truncates the |
-_valueAsString_. |
- |
### Success |
``` |
@@ -1614,35 +1718,6 @@ class Success extends Response { |
The _Success_ type is used to indicate that an operation completed successfully. |
-### Type |
- |
-``` |
-class @Type extends @Instance { |
- // The name of this type. |
- string name; |
- |
- // The corresponding Class if this Type is canonical. |
- @Class typeClass [optional]; |
-} |
-``` |
- |
-_@Type_ is a reference to a _Type_. |
- |
-``` |
-class Type extends Instance { |
- // The name of this type. |
- string name; |
- |
- // The corresponding Class if this Type is canonical. |
- @Class typeClass [optional]; |
- |
- // The type arguments for this type. |
- @TypeArguments typeArgs [optional]; |
-} |
-``` |
- |
-An _Type_ represents an instance of the Dart language class _Type_. |
- |
### TypeArguments |
``` |