Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Unified Diff: dart/frog/leg/scanner/scanner.dart

Issue 9129015: Diagnose unterminated "grouping" characters. (Closed) Base URL: ssh://aaricia.aar/home/ahe/Dart/all/dart.googlecode.com.git@master
Patch Set: Update mini_parser Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dart/frog/leg/scanner/array_based_scanner.dart ('k') | dart/frog/leg/scanner/scanner_task.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/frog/leg/scanner/scanner.dart
diff --git a/dart/frog/leg/scanner/scanner.dart b/dart/frog/leg/scanner/scanner.dart
index d55c53a179c20c487ebdf4d024968509a9d64218..35e0b1e83f4b2a7ff34cf995de4eaaee49f4dca5 100644
--- a/dart/frog/leg/scanner/scanner.dart
+++ b/dart/frog/leg/scanner/scanner.dart
@@ -202,7 +202,7 @@ class AbstractScanner<T> implements Scanner {
return $EOF;
}
if (next < 0x1f) {
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("illegal character $next", charOffset);
}
// Non-ascii identifier.
return tokenizeIdentifier(next, byteOffset, true);
@@ -424,7 +424,7 @@ class AbstractScanner<T> implements Scanner {
hasDigits = true;
} else {
if (!hasDigits) {
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("hex digit expected", charOffset);
}
appendByteStringToken(HEXADECIMAL_INFO, asciiString(start, 0));
return next;
@@ -485,7 +485,7 @@ class AbstractScanner<T> implements Scanner {
hasDigits = true;
} else {
if (!hasDigits) {
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("digit expected", charOffset);
}
return next;
}
@@ -604,7 +604,7 @@ class AbstractScanner<T> implements Scanner {
if (next === $DQ || next === $SQ) {
return tokenizeString(next, start, true);
} else {
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("expected ' or \"", charOffset);
}
}
@@ -643,7 +643,8 @@ class AbstractScanner<T> implements Scanner {
} else if (next === $BACKSLASH) {
next = advance();
if (next === $EOF) {
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("unterminated string literal",
+ charOffset);
}
} else if (next === $$) {
beginToken();
@@ -656,11 +657,13 @@ class AbstractScanner<T> implements Scanner {
start = byteOffset;
continue;
} else if (next === $LF || next === $CR) {
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("unterminated string literal",
+ charOffset);
}
next = advance();
}
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("unterminated string literal",
+ charOffset);
}
int tokenizeInterpolatedExpression(int next, int start) {
@@ -689,11 +692,13 @@ class AbstractScanner<T> implements Scanner {
appendByteStringToken(STRING_INFO, utf8String(start, 0));
return advance();
} else if (next === $LF || next === $CR) {
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("unterminated string literal",
+ charOffset);
}
next = advance();
}
- throw new MalformedInputException(charOffset);
+ throw new MalformedInputException("unterminated string literal",
+ charOffset);
}
int tokenizeMultiLineString(int q, int start, bool raw) {
@@ -718,7 +723,8 @@ class AbstractScanner<T> implements Scanner {
}
class MalformedInputException {
- final message;
- MalformedInputException(this.message);
- toString() => message.toString();
+ final String message;
+ final position;
+ MalformedInputException(this.message, this.position);
+ toString() => message;
}
« no previous file with comments | « dart/frog/leg/scanner/array_based_scanner.dart ('k') | dart/frog/leg/scanner/scanner_task.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698