Include more information when deserializing ProgramInfo
Also:
* use durations instead of int in ProgramInfo
* fix some strong mode errors
* add a test for parsing from a real program
R=sigmund@google.com
Review URL: https://codereview.chromium.org//2380273003 .
diff --git a/bin/deferred_library_size.dart b/bin/deferred_library_size.dart
index 349459c..129e95f 100644
--- a/bin/deferred_library_size.dart
+++ b/bin/deferred_library_size.dart
@@ -35,7 +35,7 @@
});
// Sort by size, largest first.
importSizes.sort((a, b) => b.size - a.size);
- var longest = importSizes.fold('Percent of code deferred'.length,
+ int longest = importSizes.fold('Percent of code deferred'.length,
(longest, importSize) => max(longest, importSize.import.length));
_printRow(label, data, {int width: 15}) {
diff --git a/bin/function_size_analysis.dart b/bin/function_size_analysis.dart
index e97166d..ac68130 100644
--- a/bin/function_size_analysis.dart
+++ b/bin/function_size_analysis.dart
@@ -21,7 +21,7 @@
{bool filter(Info info), bool showLibrarySizes: false}) {
var realTotal = info.program.size;
if (filter == null) filter = (i) => true;
- var reported = []
+ var reported = <BasicInfo>[]
..addAll(info.functions.where(filter))
..addAll(info.fields.where(filter));
@@ -69,9 +69,11 @@
dominatedSize[n] = size;
return size;
}
+
helper(mainMethod);
reported.forEach((n) => dominatedSize.putIfAbsent(n, () => n.size));
- reported.sort((a, b) => (dominatedSize[b] + nodeData[b].maxSize) -
+ reported.sort((a, b) =>
+ (dominatedSize[b] + nodeData[b].maxSize) -
(dominatedSize[a] + nodeData[a].maxSize));
if (showLibrarySizes) {
@@ -129,6 +131,7 @@
max += n.size;
n.deps.forEach(helper);
}
+
helper(this);
_maxSize = max;
}
diff --git a/lib/info.dart b/lib/info.dart
index f258275..9661dcc 100644
--- a/lib/info.dart
+++ b/lib/info.dart
@@ -123,14 +123,14 @@
/// Major version indicating breaking changes in the format. A new version
/// means that an old deserialization algorithm will not work with the new
/// format.
- final int version = 3;
+ final int version = 4;
/// Minor version indicating non-breaking changes in the format. A change in
/// this version number means that the json parsing in this library from a
/// previous will continue to work after the change. This is typically
/// increased when adding new entries to the file format.
// Note: the dump-info.viewer app was written using a json parser version 3.2.
- final int minorVersion = 6;
+ final int minorVersion = 0;
AllInfo();
@@ -143,9 +143,8 @@
String dart2jsVersion;
DateTime compilationMoment;
Duration compilationDuration;
- // TODO(sigmund): use Duration.
- int toJsonDuration;
- int dumpInfoDuration;
+ Duration toJsonDuration;
+ Duration dumpInfoDuration;
bool noSuchMethodEnabled;
bool minified;
diff --git a/lib/json_info_codec.dart b/lib/json_info_codec.dart
index 8b59aa2..5176ce3 100644
--- a/lib/json_info_codec.dart
+++ b/lib/json_info_codec.dart
@@ -145,8 +145,16 @@
}
ProgramInfo parseProgram(Map json) => new ProgramInfo()
+ ..entrypoint = parseId(json['entrypoint'])
..size = json['size']
- ..entrypoint = parseId(json['entrypoint']);
+ ..dart2jsVersion = json['dart2jsVersion']
+ ..compilationMoment = DateTime.parse(json['compilationMoment'])
+ ..compilationDuration =
+ new Duration(microseconds: json['compilationDuration'])
+ ..toJsonDuration = new Duration(microseconds: json['toJsonDuration'])
+ ..dumpInfoDuration = new Duration(microseconds: json['dumpInfoDuration'])
+ ..noSuchMethodEnabled = json['noSuchMethodEnabled']
+ ..minified = json['minified'];
FunctionInfo parseFunction(Map json) {
FunctionInfo result = parseId(json['id']);
@@ -297,9 +305,9 @@
'size': info.size,
'dart2jsVersion': info.dart2jsVersion,
'compilationMoment': '${info.compilationMoment}',
- 'compilationDuration': '${info.compilationDuration}',
- 'toJsonDuration': info.toJsonDuration,
- 'dumpInfoDuration': '${info.dumpInfoDuration}',
+ 'compilationDuration': info.compilationDuration.inMicroseconds,
+ 'toJsonDuration': info.toJsonDuration.inMicroseconds,
+ 'dumpInfoDuration': info.dumpInfoDuration.inMicroseconds,
'noSuchMethodEnabled': info.noSuchMethodEnabled,
'minified': info.minified,
};
diff --git a/pubspec.yaml b/pubspec.yaml
index 98ef967..a5f9d21 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: dart2js_info
-version: 0.2.7+2
+version: 0.3.0
description: >
Libraries and tools to process data produced when running dart2js with
--dump-info.
diff --git a/test/hello_world/hello_world.dart b/test/hello_world/hello_world.dart
new file mode 100644
index 0000000..b79ce55
--- /dev/null
+++ b/test/hello_world/hello_world.dart
@@ -0,0 +1,3 @@
+main() {
+ print("Hello, World!");
+}
\ No newline at end of file
diff --git a/test/hello_world/hello_world.js.info.json b/test/hello_world/hello_world.js.info.json
new file mode 100644
index 0000000..dafb598
--- /dev/null
+++ b/test/hello_world/hello_world.js.info.json
@@ -0,0 +1,1869 @@
+{
+ "elements": {
+ "library": {
+ "0": {
+ "id": "library/0",
+ "kind": "library",
+ "name": "<unnamed>",
+ "size": 85,
+ "children": [
+ "function/0"
+ ],
+ "canonicalUri": "file:///usr/local/google/home/het/Code/dart2js_info/test/hello_world/hello_world.dart"
+ },
+ "1": {
+ "id": "library/1",
+ "kind": "library",
+ "name": "dart.core",
+ "size": 0,
+ "children": [
+ "function/1",
+ "class/36",
+ "class/39",
+ "class/40",
+ "class/42",
+ "class/46",
+ "class/47",
+ "class/48"
+ ],
+ "canonicalUri": "dart:core"
+ },
+ "2": {
+ "id": "library/2",
+ "kind": "library",
+ "name": "dart._internal",
+ "size": 0,
+ "children": [
+ "field/12"
+ ],
+ "canonicalUri": "dart:_internal"
+ },
+ "3": {
+ "id": "library/3",
+ "kind": "library",
+ "name": "dart2js._js_primitives",
+ "size": 483,
+ "children": [
+ "function/2"
+ ],
+ "canonicalUri": "dart:_js_primitives"
+ },
+ "4": {
+ "id": "library/4",
+ "kind": "library",
+ "name": "_foreign_helper",
+ "size": 0,
+ "children": [
+ "class/100"
+ ],
+ "canonicalUri": "dart:_foreign_helper"
+ },
+ "5": {
+ "id": "library/5",
+ "kind": "library",
+ "name": "dart2js._embedded_names",
+ "size": 0,
+ "children": [
+ "field/37",
+ "field/38",
+ "class/102",
+ "class/103"
+ ],
+ "canonicalUri": "dart:_js_embedded_names"
+ },
+ "6": {
+ "id": "library/6",
+ "kind": "library",
+ "name": "_js_helper",
+ "size": 0,
+ "children": [
+ "field/50",
+ "field/56",
+ "class/106",
+ "class/108",
+ "class/109",
+ "class/110",
+ "class/118",
+ "class/120",
+ "class/121",
+ "class/143",
+ "class/145",
+ "class/146",
+ "class/151",
+ "class/154",
+ "class/162",
+ "class/163"
+ ],
+ "canonicalUri": "dart:_js_helper"
+ },
+ "7": {
+ "id": "library/7",
+ "kind": "library",
+ "name": "dart.collection",
+ "size": 0,
+ "children": [
+ "field/84"
+ ],
+ "canonicalUri": "dart:collection"
+ },
+ "11": {
+ "id": "library/11",
+ "kind": "library",
+ "name": "_interceptors",
+ "size": 0,
+ "children": [
+ "class/293"
+ ],
+ "canonicalUri": "dart:_interceptors"
+ }
+ },
+ "class": {
+ "36": {
+ "id": "class/36",
+ "kind": "class",
+ "name": "CyclicInitializationError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/1",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/0"
+ ]
+ },
+ "39": {
+ "id": "class/39",
+ "kind": "class",
+ "name": "ConcurrentModificationError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/1",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/1"
+ ]
+ },
+ "40": {
+ "id": "class/40",
+ "kind": "class",
+ "name": "StateError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/1",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/2"
+ ]
+ },
+ "42": {
+ "id": "class/42",
+ "kind": "class",
+ "name": "UnsupportedError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/1",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/3"
+ ]
+ },
+ "46": {
+ "id": "class/46",
+ "kind": "class",
+ "name": "IndexError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/1",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/4",
+ "field/5"
+ ]
+ },
+ "47": {
+ "id": "class/47",
+ "kind": "class",
+ "name": "RangeError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/1",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/6",
+ "field/7"
+ ]
+ },
+ "48": {
+ "id": "class/48",
+ "kind": "class",
+ "name": "ArgumentError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/1",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/8",
+ "field/9",
+ "field/10",
+ "field/11"
+ ]
+ },
+ "100": {
+ "id": "class/100",
+ "kind": "class",
+ "name": "JS_CONST",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/4",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/13"
+ ]
+ },
+ "102": {
+ "id": "class/102",
+ "kind": "class",
+ "name": "JsBuiltin",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/5",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/14",
+ "field/15",
+ "field/16",
+ "field/17",
+ "field/18",
+ "field/19",
+ "field/20",
+ "field/21"
+ ]
+ },
+ "103": {
+ "id": "class/103",
+ "kind": "class",
+ "name": "JsGetName",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/5",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/22",
+ "field/23",
+ "field/24",
+ "field/25",
+ "field/26",
+ "field/27",
+ "field/28",
+ "field/29",
+ "field/30",
+ "field/31",
+ "field/32",
+ "field/33",
+ "field/34",
+ "field/35",
+ "field/36"
+ ]
+ },
+ "106": {
+ "id": "class/106",
+ "kind": "class",
+ "name": "LinkedHashMapCell",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/39",
+ "field/40",
+ "field/41",
+ "field/42"
+ ]
+ },
+ "108": {
+ "id": "class/108",
+ "kind": "class",
+ "name": "JsLinkedHashMap",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/43",
+ "field/44",
+ "field/45",
+ "field/46",
+ "field/47",
+ "field/48",
+ "field/49"
+ ]
+ },
+ "109": {
+ "id": "class/109",
+ "kind": "class",
+ "name": "TypeVariable",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/51",
+ "field/52",
+ "field/53"
+ ]
+ },
+ "110": {
+ "id": "class/110",
+ "kind": "class",
+ "name": "TypeImpl",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/54",
+ "field/55"
+ ]
+ },
+ "118": {
+ "id": "class/118",
+ "kind": "class",
+ "name": "GeneralConstantMap",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/57"
+ ]
+ },
+ "120": {
+ "id": "class/120",
+ "kind": "class",
+ "name": "ConstantProtoMap",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/58"
+ ]
+ },
+ "121": {
+ "id": "class/121",
+ "kind": "class",
+ "name": "ConstantStringMap",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/59",
+ "field/60",
+ "field/61"
+ ]
+ },
+ "143": {
+ "id": "class/143",
+ "kind": "class",
+ "name": "RuntimeError",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/62"
+ ]
+ },
+ "145": {
+ "id": "class/145",
+ "kind": "class",
+ "name": "CastErrorImplementation",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/63"
+ ]
+ },
+ "146": {
+ "id": "class/146",
+ "kind": "class",
+ "name": "TypeErrorImplementation",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/64"
+ ]
+ },
+ "151": {
+ "id": "class/151",
+ "kind": "class",
+ "name": "BoundClosure",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/65",
+ "field/66",
+ "field/67",
+ "field/68",
+ "field/69",
+ "field/70"
+ ]
+ },
+ "154": {
+ "id": "class/154",
+ "kind": "class",
+ "name": "Closure",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": true
+ },
+ "children": [
+ "field/71"
+ ]
+ },
+ "162": {
+ "id": "class/162",
+ "kind": "class",
+ "name": "Primitives",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/72"
+ ]
+ },
+ "163": {
+ "id": "class/163",
+ "kind": "class",
+ "name": "ReflectionInfo",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/6",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/73",
+ "field/74",
+ "field/75",
+ "field/76",
+ "field/77",
+ "field/78",
+ "field/79",
+ "field/80",
+ "field/81",
+ "field/82",
+ "field/83"
+ ]
+ },
+ "293": {
+ "id": "class/293",
+ "kind": "class",
+ "name": "ArrayIterator",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "parent": "library/11",
+ "modifiers": {
+ "abstract": false
+ },
+ "children": [
+ "field/85",
+ "field/86",
+ "field/87",
+ "field/88"
+ ]
+ }
+ },
+ "function": {
+ "0": {
+ "id": "function/0",
+ "kind": "function",
+ "name": "main",
+ "size": 62,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3",
+ "parent": "library/0",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": null,
+ "inferredReturnType": "[null]",
+ "parameters": [],
+ "sideEffects": "Depends on [] field store static store, Changes [] field static.",
+ "inlinedCount": 0,
+ "code": "main: function() {\n H.printString(\"Hello, World!\");\n}\n",
+ "type": "() -> dynamic",
+ "measurements": null
+ },
+ "1": {
+ "id": "function/1",
+ "kind": "function",
+ "name": "print",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "86",
+ "parent": "library/1",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": null,
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "object",
+ "type": "Value mask: [\"Hello, World!\"] type: [exact=JSString]",
+ "declaredType": "Object"
+ }
+ ],
+ "sideEffects": "Depends on [] field store static store, Changes [] field static.",
+ "inlinedCount": 1,
+ "code": null,
+ "type": "(Object) -> void",
+ "measurements": null
+ },
+ "2": {
+ "id": "function/2",
+ "kind": "function",
+ "name": "printString",
+ "size": 460,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "275",
+ "parent": "library/3",
+ "children": [],
+ "modifiers": {
+ "static": false,
+ "const": false,
+ "factory": false,
+ "external": false
+ },
+ "returnType": null,
+ "inferredReturnType": "[null]",
+ "parameters": [
+ {
+ "name": "string",
+ "type": "[exact=JSString]",
+ "declaredType": "String"
+ }
+ ],
+ "sideEffects": "Depends on [] field store static store, Changes [] field static.",
+ "inlinedCount": 0,
+ "code": "printString: function(string) {\n if (typeof dartPrint == \"function\") {\n dartPrint(string);\n return;\n }\n if (typeof console == \"object\" && typeof console.log != \"undefined\") {\n console.log(string);\n return;\n }\n if (typeof window == \"object\")\n return;\n if (typeof print == \"function\") {\n print(string);\n return;\n }\n throw \"Unable to print message: \" + String(string);\n}\n",
+ "type": "(String) -> void",
+ "measurements": null
+ }
+ },
+ "typedef": {},
+ "field": {
+ "0": {
+ "id": "field/0",
+ "kind": "field",
+ "name": "variableName",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3644",
+ "parent": "class/36",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "1": {
+ "id": "field/1",
+ "kind": "field",
+ "name": "modifiedObject",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3629",
+ "parent": "class/39",
+ "children": [],
+ "inferredType": "Union of [[subclass=JSArray], [subclass=JsLinkedHashMap]]",
+ "code": null,
+ "type": "Object"
+ },
+ "2": {
+ "id": "field/2",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3622",
+ "parent": "class/40",
+ "children": [],
+ "inferredType": "Value mask: [\"No element\"] type: [exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "3": {
+ "id": "field/3",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3549",
+ "parent": "class/42",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "4": {
+ "id": "field/4",
+ "kind": "field",
+ "name": "indexable",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3602",
+ "parent": "class/46",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "5": {
+ "id": "field/5",
+ "kind": "field",
+ "name": "length",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3603",
+ "parent": "class/46",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "6": {
+ "id": "field/6",
+ "kind": "field",
+ "name": "start",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3554",
+ "parent": "class/47",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "num"
+ },
+ "7": {
+ "id": "field/7",
+ "kind": "field",
+ "name": "end",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3555",
+ "parent": "class/47",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "num"
+ },
+ "8": {
+ "id": "field/8",
+ "kind": "field",
+ "name": "_hasValue",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2579",
+ "parent": "class/48",
+ "children": [],
+ "inferredType": "Value mask: [true] type: [exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "9": {
+ "id": "field/9",
+ "kind": "field",
+ "name": "invalidValue",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2580",
+ "parent": "class/48",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "10": {
+ "id": "field/10",
+ "kind": "field",
+ "name": "name",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2581",
+ "parent": "class/48",
+ "children": [],
+ "inferredType": "Value mask: [\"index\"] type: [null|exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "11": {
+ "id": "field/11",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2582",
+ "parent": "class/48",
+ "children": [],
+ "inferredType": "[null|exact=JSString]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "12": {
+ "id": "field/12",
+ "kind": "field",
+ "name": "printToZone",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "252",
+ "parent": "library/2",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "Function"
+ },
+ "13": {
+ "id": "field/13",
+ "kind": "field",
+ "name": "code",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3926",
+ "parent": "class/100",
+ "children": [],
+ "inferredType": "Value mask: [\"function getTagFallback(o) {\n var constructor = o.constructor;\n if (typeof constructor == \"function\") {\n var name = constructor.name;\n // If the name is a non-empty string, we use that as the type name of this\n // object. There are various cases where that does not work, so we have to\n // detect them and fall through to the toString() based implementation.\n\n if (typeof name == \"string\" &&\n\n // Sometimes the string is empty. This test also catches minified\n // shadow dom polyfil wrapper for Window on Firefox where the faked\n // constructor name does not 'stick'. The shortest real DOM object\n // names have three characters (e.g. URL, CSS).\n name.length > 2 &&\n\n // On Firefox we often get \"Object\" as the constructor name, even for\n // more specialized DOM objects.\n name !== \"Object\" &&\n\n // This can happen in Opera.\n name !== \"Function.prototype\") {\n return name;\n }\n }\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n}\"] type: [exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "14": {
+ "id": "field/14",
+ "kind": "field",
+ "name": "index",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3019",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "15": {
+ "id": "field/15",
+ "kind": "field",
+ "name": "isCheckPropertyToJsConstructorName",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3023",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "16": {
+ "id": "field/16",
+ "kind": "field",
+ "name": "isFunctionType",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3024",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "17": {
+ "id": "field/17",
+ "kind": "field",
+ "name": "rawRtiToJsConstructorName",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3026",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "18": {
+ "id": "field/18",
+ "kind": "field",
+ "name": "rawRuntimeType",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3027",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "19": {
+ "id": "field/19",
+ "kind": "field",
+ "name": "isSubtype",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3028",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "20": {
+ "id": "field/20",
+ "kind": "field",
+ "name": "isGivenTypeRti",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3029",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "21": {
+ "id": "field/21",
+ "kind": "field",
+ "name": "getType",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3031",
+ "parent": "class/102",
+ "children": [],
+ "inferredType": "[exact=JsBuiltin]",
+ "code": null,
+ "type": "JsBuiltin",
+ "const": true
+ },
+ "22": {
+ "id": "field/22",
+ "kind": "field",
+ "name": "index",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3698",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "23": {
+ "id": "field/23",
+ "kind": "field",
+ "name": "CALL_CATCH_ALL",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3710",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "24": {
+ "id": "field/24",
+ "kind": "field",
+ "name": "REQUIRED_PARAMETER_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3713",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "25": {
+ "id": "field/25",
+ "kind": "field",
+ "name": "DEFAULT_VALUES_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3714",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "26": {
+ "id": "field/26",
+ "kind": "field",
+ "name": "CALL_NAME_PROPERTY",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3715",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "27": {
+ "id": "field/27",
+ "kind": "field",
+ "name": "OPERATOR_AS_PREFIX",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3717",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "28": {
+ "id": "field/28",
+ "kind": "field",
+ "name": "SIGNATURE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3718",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "29": {
+ "id": "field/29",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_VOID_RETURN_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3720",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "30": {
+ "id": "field/30",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_RETURN_TYPE_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3721",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "31": {
+ "id": "field/31",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3722",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "32": {
+ "id": "field/32",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3723",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "33": {
+ "id": "field/33",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_NAMED_PARAMETERS_TAG",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3724",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "34": {
+ "id": "field/34",
+ "kind": "field",
+ "name": "NULL_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3726",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "35": {
+ "id": "field/35",
+ "kind": "field",
+ "name": "OBJECT_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3727",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "36": {
+ "id": "field/36",
+ "kind": "field",
+ "name": "FUNCTION_CLASS_TYPE_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3728",
+ "parent": "class/103",
+ "children": [],
+ "inferredType": "[exact=JsGetName]",
+ "code": null,
+ "type": "JsGetName",
+ "const": true
+ },
+ "37": {
+ "id": "field/37",
+ "kind": "field",
+ "name": "MANGLED_GLOBAL_NAMES",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "308",
+ "parent": "library/5",
+ "children": [],
+ "inferredType": "Value mask: [\"mangledGlobalNames\"] type: [exact=JSString]",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "38": {
+ "id": "field/38",
+ "kind": "field",
+ "name": "STATIC_FUNCTION_NAME_PROPERTY_NAME",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "303",
+ "parent": "library/5",
+ "children": [],
+ "inferredType": "Value mask: [\"$static_name\"] type: [exact=JSString]",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "39": {
+ "id": "field/39",
+ "kind": "field",
+ "name": "hashMapCellKey",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3499",
+ "parent": "class/106",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "40": {
+ "id": "field/40",
+ "kind": "field",
+ "name": "hashMapCellValue",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3500",
+ "parent": "class/106",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "41": {
+ "id": "field/41",
+ "kind": "field",
+ "name": "_next",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3501",
+ "parent": "class/106",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": null,
+ "type": "LinkedHashMapCell"
+ },
+ "42": {
+ "id": "field/42",
+ "kind": "field",
+ "name": "_previous",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3502",
+ "parent": "class/106",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": null,
+ "type": "LinkedHashMapCell"
+ },
+ "43": {
+ "id": "field/43",
+ "kind": "field",
+ "name": "_length",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3418",
+ "parent": "class/108",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": null,
+ "type": "int"
+ },
+ "44": {
+ "id": "field/44",
+ "kind": "field",
+ "name": "_strings",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3419",
+ "parent": "class/108",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "45": {
+ "id": "field/45",
+ "kind": "field",
+ "name": "_nums",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3420",
+ "parent": "class/108",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "46": {
+ "id": "field/46",
+ "kind": "field",
+ "name": "_rest",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3421",
+ "parent": "class/108",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "47": {
+ "id": "field/47",
+ "kind": "field",
+ "name": "_first",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3422",
+ "parent": "class/108",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": null,
+ "type": "LinkedHashMapCell"
+ },
+ "48": {
+ "id": "field/48",
+ "kind": "field",
+ "name": "_last",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3423",
+ "parent": "class/108",
+ "children": [],
+ "inferredType": "[null|exact=LinkedHashMapCell]",
+ "code": null,
+ "type": "LinkedHashMapCell"
+ },
+ "49": {
+ "id": "field/49",
+ "kind": "field",
+ "name": "_modifications",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3424",
+ "parent": "class/108",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int"
+ },
+ "50": {
+ "id": "field/50",
+ "kind": "field",
+ "name": "_USE_ES6_MAPS",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "688",
+ "parent": "library/6",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "51": {
+ "id": "field/51",
+ "kind": "field",
+ "name": "owner",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2570",
+ "parent": "class/109",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "Type"
+ },
+ "52": {
+ "id": "field/52",
+ "kind": "field",
+ "name": "name",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2571",
+ "parent": "class/109",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "53": {
+ "id": "field/53",
+ "kind": "field",
+ "name": "bound",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2572",
+ "parent": "class/109",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int"
+ },
+ "54": {
+ "id": "field/54",
+ "kind": "field",
+ "name": "_typeName",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3914",
+ "parent": "class/110",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "55": {
+ "id": "field/55",
+ "kind": "field",
+ "name": "_unmangledName",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3915",
+ "parent": "class/110",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "56": {
+ "id": "field/56",
+ "kind": "field",
+ "name": "_constructorNameFallback",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "591",
+ "parent": "library/6",
+ "children": [],
+ "inferredType": "[exact=JS_CONST]",
+ "code": null,
+ "type": "dynamic",
+ "const": true
+ },
+ "57": {
+ "id": "field/57",
+ "kind": "field",
+ "name": "_jsData",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3121",
+ "parent": "class/118",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "58": {
+ "id": "field/58",
+ "kind": "field",
+ "name": "_protoValue",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3096",
+ "parent": "class/120",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "V"
+ },
+ "59": {
+ "id": "field/59",
+ "kind": "field",
+ "name": "_length",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3100",
+ "parent": "class/121",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int"
+ },
+ "60": {
+ "id": "field/60",
+ "kind": "field",
+ "name": "_jsObject",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3101",
+ "parent": "class/121",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "61": {
+ "id": "field/61",
+ "kind": "field",
+ "name": "_keys",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3102",
+ "parent": "class/121",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "List<K>"
+ },
+ "62": {
+ "id": "field/62",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "4090",
+ "parent": "class/143",
+ "children": [],
+ "inferredType": "Value mask: [\"Intercepted function with no arguments.\"] type: [exact=JSString]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "63": {
+ "id": "field/63",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "4118",
+ "parent": "class/145",
+ "children": [],
+ "inferredType": "[exact=JSString]",
+ "code": null,
+ "type": "String"
+ },
+ "64": {
+ "id": "field/64",
+ "kind": "field",
+ "name": "message",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3004",
+ "parent": "class/146",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "65": {
+ "id": "field/65",
+ "kind": "field",
+ "name": "_self",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3943",
+ "parent": "class/151",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "66": {
+ "id": "field/66",
+ "kind": "field",
+ "name": "_target",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3944",
+ "parent": "class/151",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "67": {
+ "id": "field/67",
+ "kind": "field",
+ "name": "_receiver",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3945",
+ "parent": "class/151",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "68": {
+ "id": "field/68",
+ "kind": "field",
+ "name": "_name",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3946",
+ "parent": "class/151",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "69": {
+ "id": "field/69",
+ "kind": "field",
+ "name": "selfFieldNameCache",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3958",
+ "parent": "class/151",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "70": {
+ "id": "field/70",
+ "kind": "field",
+ "name": "receiverFieldNameCache",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3960",
+ "parent": "class/151",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "String"
+ },
+ "71": {
+ "id": "field/71",
+ "kind": "field",
+ "name": "functionCounter",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2633",
+ "parent": "class/154",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "int"
+ },
+ "72": {
+ "id": "field/72",
+ "kind": "field",
+ "name": "DOLLAR_CHAR_VALUE",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "2669",
+ "parent": "class/162",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "73": {
+ "id": "field/73",
+ "kind": "field",
+ "name": "REQUIRED_PARAMETERS_INFO",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3973",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "74": {
+ "id": "field/74",
+ "kind": "field",
+ "name": "OPTIONAL_PARAMETERS_INFO",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3974",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "75": {
+ "id": "field/75",
+ "kind": "field",
+ "name": "FUNCTION_TYPE_INDEX",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3975",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[exact=JSUInt31]",
+ "code": null,
+ "type": "int",
+ "const": true
+ },
+ "76": {
+ "id": "field/76",
+ "kind": "field",
+ "name": "jsFunction",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3977",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "77": {
+ "id": "field/77",
+ "kind": "field",
+ "name": "data",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3978",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[exact=JSFixedArray]",
+ "code": null,
+ "type": "List"
+ },
+ "78": {
+ "id": "field/78",
+ "kind": "field",
+ "name": "isAccessor",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3979",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "79": {
+ "id": "field/79",
+ "kind": "field",
+ "name": "requiredParameterCount",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3980",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "80": {
+ "id": "field/80",
+ "kind": "field",
+ "name": "optionalParameterCount",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3981",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[subclass=JSInt]",
+ "code": null,
+ "type": "int"
+ },
+ "81": {
+ "id": "field/81",
+ "kind": "field",
+ "name": "areOptionalParametersNamed",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3982",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[exact=JSBool]",
+ "code": null,
+ "type": "bool"
+ },
+ "82": {
+ "id": "field/82",
+ "kind": "field",
+ "name": "functionType",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3983",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "dynamic"
+ },
+ "83": {
+ "id": "field/83",
+ "kind": "field",
+ "name": "cachedSortedIndices",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3984",
+ "parent": "class/163",
+ "children": [],
+ "inferredType": "[null]",
+ "code": null,
+ "type": "List"
+ },
+ "84": {
+ "id": "field/84",
+ "kind": "field",
+ "name": "_toStringVisiting",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "713",
+ "parent": "library/7",
+ "children": [],
+ "inferredType": "Container mask: Union of [[subclass=ConstantMap], [subclass=JSArray], [subclass=JsLinkedHashMap]] length: null type: [exact=JSExtendableArray]",
+ "code": null,
+ "type": "List"
+ },
+ "85": {
+ "id": "field/85",
+ "kind": "field",
+ "name": "_iterable",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3880",
+ "parent": "class/293",
+ "children": [],
+ "inferredType": "[subclass=JSArray]",
+ "code": null,
+ "type": "JSArray<E>"
+ },
+ "86": {
+ "id": "field/86",
+ "kind": "field",
+ "name": "_length",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3881",
+ "parent": "class/293",
+ "children": [],
+ "inferredType": "[subclass=JSUInt32]",
+ "code": null,
+ "type": "int"
+ },
+ "87": {
+ "id": "field/87",
+ "kind": "field",
+ "name": "_index",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3882",
+ "parent": "class/293",
+ "children": [],
+ "inferredType": "[subclass=JSPositiveInt]",
+ "code": null,
+ "type": "int"
+ },
+ "88": {
+ "id": "field/88",
+ "kind": "field",
+ "name": "_current",
+ "size": 0,
+ "outputUnit": "outputUnit/0",
+ "coverageId": "3883",
+ "parent": "class/293",
+ "children": [],
+ "inferredType": "[null|subclass=Object]",
+ "code": null,
+ "type": "E"
+ }
+ },
+ "constant": {}
+ },
+ "holding": {
+ "function/0": [
+ {
+ "id": "function/2",
+ "mask": "null"
+ },
+ {
+ "id": "function/1",
+ "mask": "inlined"
+ }
+ ]
+ },
+ "dependencies": {
+ "function/0": [
+ "function/1",
+ "field/51",
+ "field/52",
+ "field/53",
+ "function/2"
+ ],
+ "field/11": [],
+ "field/17": [
+ "field/14"
+ ],
+ "field/84": [],
+ "field/27": [
+ "field/22"
+ ],
+ "field/19": [],
+ "field/50": [],
+ "field/56": [
+ "field/13"
+ ],
+ "function/1": [
+ "field/12"
+ ]
+ },
+ "outputUnits": [
+ {
+ "id": "outputUnit/0",
+ "kind": "outputUnit",
+ "name": null,
+ "size": 10124,
+ "imports": [
+ null
+ ]
+ }
+ ],
+ "dump_version": 3,
+ "deferredFiles": {},
+ "dump_minor_version": "6",
+ "program": {
+ "entrypoint": "function/0",
+ "size": 10124,
+ "dart2jsVersion": null,
+ "compilationMoment": "2016-09-30 13:44:11.847439",
+ "compilationDuration": "0:00:03.717112",
+ "toJsonDuration": 4,
+ "dumpInfoDuration": "0",
+ "noSuchMethodEnabled": false,
+ "minified": false
+ }
+}
\ No newline at end of file
diff --git a/test/parse_test.dart b/test/parse_test.dart
index e3c6570..d51f113 100644
--- a/test/parse_test.dart
+++ b/test/parse_test.dart
@@ -2,26 +2,30 @@
// 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:convert';
+import 'dart:io';
+
import 'package:dart2js_info/info.dart';
import 'package:test/test.dart';
main() {
group('parse', () {
- test('empty', () {
- var json = {
- 'elements': {
- 'library': {},
- 'class': {},
- 'function': {},
- 'field': {},
- 'typedef': {},
- },
- 'holding': {},
- 'program': {'size': 10},
- 'outputUnits': [],
- };
+ test('hello_world', () {
+ var helloWorld = new File('test/hello_world/hello_world.js.info.json');
+ var json = JSON.decode(helloWorld.readAsStringSync());
+ var decoded = new AllInfoJsonCodec().decode(json);
- expect(new AllInfoJsonCodec().decode(json).program.size, 10);
- });
+ var program = decoded.program;
+ expect(program, isNotNull);
+
+ expect(program.entrypoint, isNotNull);
+ expect(program.size, 10124);
+ expect(program.compilationMoment,
+ DateTime.parse("2016-09-30 13:44:11.847439"));
+ expect(program.compilationDuration,
+ new Duration(seconds: 3, microseconds: 717112));
+ expect(program.noSuchMethodEnabled, false);
+ expect(program.minified, false);
+ }, skip: "need to update dart2js first");
});
}