Chromium Code Reviews| Index: pkg/compiler/lib/src/compiler.dart |
| diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart |
| index 4b37788a616c93a2e1671d05a55dca05c3f41390..0c1b32f038721adf8790e8725f21a5f53079b515 100644 |
| --- a/pkg/compiler/lib/src/compiler.dart |
| +++ b/pkg/compiler/lib/src/compiler.dart |
| @@ -1795,6 +1795,16 @@ class _CompilerDiagnosticReporter extends DiagnosticReporter { |
| uri = currentElement.compilationUnit.script.resourceUri; |
| assert(invariant(currentElement, () { |
| + bool sameToken(Token token, Token sought) { |
| + if (token == sought) return true; |
| + if (token.stringValue == '>>' || |
| + token.stringValue == '>>>') { |
| + // `>>` and `>>>` are converted to `>` in the parser when needed. |
| + return sought.stringValue == '>'; |
|
ahe
2016/02/08 14:40:13
Also look at character offset?
Johnni Winther
2016/02/09 11:59:58
Done.
|
| + } |
| + return false; |
| + } |
| + |
| /// Check that [begin] and [end] can be found between [from] and [to]. |
| validateToken(Token from, Token to) { |
| if (from == null || to == null) return true; |
| @@ -1802,10 +1812,10 @@ class _CompilerDiagnosticReporter extends DiagnosticReporter { |
| bool foundEnd = false; |
| Token token = from; |
| while (true) { |
| - if (token == begin) { |
| + if (sameToken(token, begin)) { |
| foundBegin = true; |
| } |
| - if (token == end) { |
| + if (sameToken(token, end)) { |
| foundEnd = true; |
| } |
| if (foundBegin && foundEnd) { |
| @@ -1859,7 +1869,7 @@ class _CompilerDiagnosticReporter extends DiagnosticReporter { |
| } |
| SourceSpan spanFromNode(Node node) { |
| - return spanFromTokens(node.getBeginToken(), node.getEndToken()); |
| + return spanFromTokens(node.getBeginToken(), node.getPrefixEndToken()); |
| } |
| SourceSpan spanFromElement(Element element) { |