Index: pkg/dart_scanner/lib/src/abstract_scanner.dart |
diff --git a/pkg/dart_scanner/lib/src/abstract_scanner.dart b/pkg/dart_scanner/lib/src/abstract_scanner.dart |
index f0698611482b302293d982b6bccd4f5b91af214a..7d5dc1605d79409b3a8edfe6aeb6d9cc100d6486 100644 |
--- a/pkg/dart_scanner/lib/src/abstract_scanner.dart |
+++ b/pkg/dart_scanner/lib/src/abstract_scanner.dart |
@@ -2,29 +2,30 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-library dart2js.scanner; |
- |
-import '../io/source_file.dart' show SourceFile, Utf8BytesSourceFile; |
-import '../tokens/keyword.dart' show Keyword, KeywordState; |
-import '../tokens/precedence.dart'; |
-import '../tokens/precedence_constants.dart'; |
-import '../tokens/token.dart'; |
-import '../tokens/token_constants.dart'; |
-import '../util/characters.dart'; |
-import 'string_scanner.dart' show StringScanner; |
-import 'utf8_bytes_scanner.dart' show Utf8BytesScanner; |
- |
-abstract class Scanner { |
- Token tokenize(); |
- |
- factory Scanner(SourceFile file, {bool includeComments: false}) { |
- if (file is Utf8BytesSourceFile) { |
- return new Utf8BytesScanner(file, includeComments: includeComments); |
- } else { |
- return new StringScanner(file, includeComments: includeComments); |
- } |
- } |
-} |
+library scanner.abstract_scanner; |
+ |
+import '../scanner.dart' show |
+ Scanner; |
+ |
+import 'keyword.dart' show |
+ KeywordState, |
+ Keyword; |
+ |
+import 'precedence.dart'; |
+ |
+import 'token.dart' show |
+ BadInputToken, |
+ BeginGroupToken, |
+ ErrorToken, |
+ KeywordToken, |
+ SymbolToken, |
+ Token, |
+ UnmatchedToken, |
+ UnterminatedToken; |
+ |
+import 'token_constants.dart'; |
+ |
+import 'characters.dart'; |
abstract class AbstractScanner implements Scanner { |
// TODO(ahe): Move this class to implementation. |
@@ -54,16 +55,9 @@ abstract class AbstractScanner implements Scanner { |
*/ |
Token tail; |
- /** |
- * The source file that is being scanned. This field can be [:null:]. |
- * If the source file is available, the scanner assigns its [:lineStarts:] and |
- * [:length:] fields at the end of [tokenize]. |
- */ |
- final SourceFile file; |
- |
final List<int> lineStarts = <int>[0]; |
- AbstractScanner(this.file, this.includeComments) { |
+ AbstractScanner(this.includeComments) { |
this.tail = this.tokens; |
} |
@@ -214,12 +208,8 @@ abstract class AbstractScanner implements Scanner { |
} |
} |
- if (file != null) { |
- file.length = stringOffset; |
- // One additional line start at the end, see [SourceFile.lineStarts]. |
- lineStarts.add(stringOffset + 1); |
- file.lineStarts = lineStarts; |
- } |
+ // Always pretend that there's a line at the end of the file. |
+ lineStarts.add(stringOffset + 1); |
return firstToken(); |
} |
@@ -635,7 +625,6 @@ abstract class AbstractScanner implements Scanner { |
return next; |
} |
} |
- return null; |
} |
int tokenizeHexOrNumber(int next) { |
@@ -665,7 +654,6 @@ abstract class AbstractScanner implements Scanner { |
return next; |
} |
} |
- return null; |
} |
int tokenizeDotsOrNumber(int next) { |
@@ -761,7 +749,6 @@ abstract class AbstractScanner implements Scanner { |
return next; |
} |
} |
- return null; |
} |
int tokenizeMultiLineComment(int next, int start) { |