| Index: src/mirror-delay.js
|
| diff --git a/src/mirror-delay.js b/src/mirror-delay.js
|
| index cde553432149a14b4293eede4d4dc19b5dfef224..82fb9c2283109e36587a00a578db60e75bd68cc9 100644
|
| --- a/src/mirror-delay.js
|
| +++ b/src/mirror-delay.js
|
| @@ -849,6 +849,33 @@ FunctionMirror.prototype.script = function() {
|
|
|
|
|
| /**
|
| + * Returns the script source position for the function. Only makes sense
|
| + * for functions which has a script defined.
|
| + * @return {Number or undefined} in-script position for the function
|
| + */
|
| +FunctionMirror.prototype.sourcePosition_ = function() {
|
| + // Return script if function is resolved. Otherwise just fall through
|
| + // to return undefined.
|
| + if (this.resolved()) {
|
| + return %FunctionGetScriptSourcePosition(this.value_);
|
| + }
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Returns the script source location object for the function. Only makes sense
|
| + * for functions which has a script defined.
|
| + * @return {Location or undefined} in-script location for the function begin
|
| + */
|
| +FunctionMirror.prototype.sourceLocation = function() {
|
| + if (this.resolved() && this.script()) {
|
| + return this.script().locationFromPosition(this.sourcePosition_(),
|
| + true);
|
| + }
|
| +};
|
| +
|
| +
|
| +/**
|
| * Returns objects constructed by this function.
|
| * @param {number} opt_max_instances Optional parameter specifying the maximum
|
| * number of instances to return.
|
| @@ -2119,6 +2146,9 @@ JSONProtocolSerializer.prototype.serializeObject_ = function(mirror, content,
|
| }
|
| if (mirror.script()) {
|
| content.script = this.serializeReference(mirror.script());
|
| + content.scriptId = mirror.script().id();
|
| +
|
| + serializeLocationFields(mirror.sourceLocation(), content);
|
| }
|
| }
|
|
|
| @@ -2151,6 +2181,31 @@ JSONProtocolSerializer.prototype.serializeObject_ = function(mirror, content,
|
|
|
|
|
| /**
|
| + * Serialize location information to the following JSON format:
|
| + *
|
| + * "position":"<position>",
|
| + * "line":"<line>",
|
| + * "column":"<column>",
|
| + *
|
| + * @param {SourceLocation} location The location to serialize, may be undefined.
|
| + */
|
| +function serializeLocationFields (location, content) {
|
| + if (!location) {
|
| + return;
|
| + }
|
| + content.position = location.position;
|
| + var line = location.line;
|
| + if (!IS_UNDEFINED(line)) {
|
| + content.line = line;
|
| + }
|
| + var column = location.column;
|
| + if (!IS_UNDEFINED(column)) {
|
| + content.column = column;
|
| + }
|
| +}
|
| +
|
| +
|
| +/**
|
| * Serialize property information to the following JSON format for building the
|
| * array of properties.
|
| *
|
| @@ -2218,15 +2273,7 @@ JSONProtocolSerializer.prototype.serializeFrame_ = function(mirror, content) {
|
| x[i] = local;
|
| }
|
| content.locals = x;
|
| - content.position = mirror.sourcePosition();
|
| - var line = mirror.sourceLine();
|
| - if (!IS_UNDEFINED(line)) {
|
| - content.line = line;
|
| - }
|
| - var column = mirror.sourceColumn();
|
| - if (!IS_UNDEFINED(column)) {
|
| - content.column = column;
|
| - }
|
| + serializeLocationFields(mirror.sourceLocation(), content);
|
| var source_line_text = mirror.sourceLineText();
|
| if (!IS_UNDEFINED(source_line_text)) {
|
| content.sourceLineText = source_line_text;
|
|
|