Chromium Code Reviews| Index: lib/src/script.dart |
| diff --git a/lib/src/script.dart b/lib/src/script.dart |
| index f92eb0c28e577afd6269d5f3916f178e58441e43..f21bc5840ccbae67594e3666ffa067a26e0f29dd 100644 |
| --- a/lib/src/script.dart |
| +++ b/lib/src/script.dart |
| @@ -14,6 +14,7 @@ import 'library.dart'; |
| import 'object.dart'; |
| import 'scope.dart'; |
| import 'source_location.dart'; |
| +import 'source_report.dart'; |
| VMScriptRef newVMScriptRef(Scope scope, Map json) { |
| if (json == null) return null; |
| @@ -27,6 +28,11 @@ VMScriptToken newVMScriptToken(String isolateId, String scriptId, |
| return new VMScriptToken._(isolateId, scriptId, position); |
| } |
| +VMScriptToken newVMScriptTokenFromScript(VMScriptRef script, int position) { |
|
nweiz
2016/05/04 23:05:51
I think I'd call this "from position" rather than
kevmoo
2016/05/05 20:46:26
Done.
|
| + if (position == null) return null; |
| + return new VMScriptToken._(script._scope.isolateId, script._id, position); |
| +} |
| + |
| /// A reference to a script in the Dart VM. |
| /// |
| /// A script contains information about the actual text of a library. Usually |
| @@ -70,6 +76,57 @@ class VMScriptRef implements VMObjectRef { |
| } |
| } |
| + /// Generates a set of reports tied to this script. |
| + /// |
| + /// If [includeCoverageReport] is `true`, the report includes code coverage |
| + /// information via [VMSourceReportRange.coverage] in |
| + /// [VMSourceReport.ranges]. |
| + /// Otherwise, [VMSourceReportRange.coverage] is `null`. |
| + /// |
| + /// If [includePossibleBreakpoints] is `true`, the report includes a list of |
| + /// token positions which correspond to possible breakpoints via |
| + /// [VMSourceReportRange.possibleBreakpoints] in [VMSourceReport.ranges]. |
| + /// Otherwise, [VMSourceReportRange.possibleBreakpoints] is `null`. |
| + /// |
| + /// If [forceCompile] is `true`, all functions in the range of the report |
| + /// will be compiled. If `false`, functions that are never used may not appear |
| + /// in [VMSourceReportRange.misses]. |
| + /// Forcing compilation can cause a compilation error, which could terminate |
| + /// the running Dart program. |
| + /// |
| + /// Either or both [start] and [end] may be provided to restrict the analysis |
| + /// to a subrange of a script. |
|
nweiz
2016/05/04 23:05:51
What does it mean to pass only "start" or only "en
kevmoo
2016/05/05 20:46:26
I think I cleared it up
|
| + /// For example, these can be used to restrict the report to the range of a |
| + /// particular class or function. |
| + Future<VMSourceReport> getSourceReport( |
| + {bool includeCoverageReport: false, |
| + bool includePossibleBreakpoints: false, |
| + bool forceCompile: false, |
| + VMScriptToken start, |
| + VMScriptToken end}) async { |
| + var reports = <String>[]; |
| + if (includeCoverageReport) { |
| + reports.add('Coverage'); |
| + } |
| + if (includePossibleBreakpoints) { |
| + reports.add('PossibleBreakpoints'); |
| + } |
| + |
| + var params = <String, dynamic>{'scriptId': _id, 'reports': reports}; |
| + if (forceCompile) { |
| + params['forceCompile'] = true; |
|
nweiz
2016/05/04 23:05:51
Nit: put the results on the same line as the "if"
kevmoo
2016/05/05 20:46:26
Acknowledged.
|
| + } |
| + if (start != null) { |
| + params['tokenPos'] = start._position; |
| + } |
| + if (end != null) { |
| + params['endTokenPos'] = end._position; |
| + } |
| + |
| + var json = await _scope.sendRequest('getSourceReport', params); |
| + return newSourceReport(_scope, json); |
| + } |
| + |
| bool operator ==(other) => other is VMScriptRef && |
| (_fixedId ? _id == other._id : super == other); |