Chromium Code Reviews| Index: runtime/observatory/lib/src/service/object.dart |
| diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart |
| index 32df1b24a256163f6541d7c1700249b64fb432b9..007a825d302ce2029d1134f8133565f9f84e13f3 100644 |
| --- a/runtime/observatory/lib/src/service/object.dart |
| +++ b/runtime/observatory/lib/src/service/object.dart |
| @@ -3327,7 +3327,7 @@ class Script extends HeapObject implements M.Script { |
| static bool _isIdentifierChar(int c) { |
| if (_isInitialIdentifierChar(c)) return true; |
| - return c >= 48 && c <= 75; // Digit |
| + return c >= 48 && c <= 57; // Digit |
| } |
| void _update(Map map, bool mapIsRef) { |
| @@ -3408,6 +3408,28 @@ class Script extends HeapObject implements M.Script { |
| } |
| } |
| + // Note, this may return source beyond the token length if [guessTokenLength] |
| + // fails. |
| + String getToken(int tokenPos) { |
| + final int line = tokenToLine(tokenPos); |
| + int column = tokenToCol(tokenPos); |
| + if ((line == null) || (column == null)) { |
| + return null; |
| + } |
| + // Line and column numbers are |
|
rmacnak
2016/10/14 23:10:38
...are 1-origin in the VM.
Cutch
2016/10/17 18:17:27
Done.
|
| + column -= 1; |
| + String sourceLine = getLine(line).text; |
| + if (sourceLine == null) { |
| + return null; |
| + } |
| + final int length = guessTokenLength(line, column); |
| + if (length == null) { |
| + return sourceLine.substring(column); |
| + } else { |
| + return sourceLine.substring(column, column + length); |
| + } |
| + } |
| + |
| void _addBreakpoint(Breakpoint bpt) { |
| var line; |
| if (bpt.location.tokenPos != null) { |
| @@ -3610,13 +3632,20 @@ class LocalVarDescriptor implements M.LocalVarDescriptorsRef { |
| final String id; |
| final String name; |
| final int index; |
| + final int declarationPos; |
| final int beginPos; |
| final int endPos; |
| final int scopeId; |
| final String kind; |
| - LocalVarDescriptor(this.id, this.name, this.index, this.beginPos, this.endPos, |
| - this.scopeId, this.kind); |
| + LocalVarDescriptor(this.id, |
| + this.name, |
| + this.index, |
| + this.declarationPos, |
| + this.beginPos, |
| + this.endPos, |
| + this.scopeId, |
| + this.kind); |
| } |
| class LocalVarDescriptors extends ServiceObject { |
| @@ -3638,12 +3667,13 @@ class LocalVarDescriptors extends ServiceObject { |
| var id = descriptor['name']; |
| var name = descriptor['name']; |
| var index = descriptor['index']; |
| - var beginPos = descriptor['beginPos']; |
| - var endPos = descriptor['endPos']; |
| + var declarationPos = descriptor['declarationTokenPos']; |
| + var beginPos = descriptor['visibleStartTokenPos']; |
|
rmacnak
2016/10/14 23:10:38
Consider scopeStart/EndTokenPos
Cutch
2016/10/17 18:17:27
Done.
|
| + var endPos = descriptor['visibleEndTokenPos']; |
| var scopeId = descriptor['scopeId']; |
| var kind = descriptor['kind'].trim(); |
| descriptors.add(new LocalVarDescriptor( |
| - id, name, index, beginPos, endPos, scopeId, kind)); |
| + id, name, index, declarationPos, beginPos, endPos, scopeId, kind)); |
| } |
| } |
| } |