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

Side by Side Diff: pkg/front_end/lib/src/scanner/errors.dart

Issue 2772513006: fix missing digit error translation (Closed)
Patch Set: rebase Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | pkg/front_end/test/scanner_replacement_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:front_end/src/base/errors.dart'; 5 import 'package:front_end/src/base/errors.dart';
6 import 'package:front_end/src/fasta/scanner/error_token.dart'; 6 import 'package:front_end/src/fasta/scanner/error_token.dart';
7 import 'package:front_end/src/fasta/scanner/token.dart'; 7 import 'package:front_end/src/fasta/scanner/token.dart';
8 import 'package:front_end/src/fasta/scanner/token_constants.dart'; 8 import 'package:front_end/src/fasta/scanner/token_constants.dart';
9 9
10 /** 10 /**
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 case ErrorKind.UnmatchedToken: 98 case ErrorKind.UnmatchedToken:
99 return null; 99 return null;
100 case ErrorKind.UnterminatedComment: 100 case ErrorKind.UnterminatedComment:
101 // TODO(paulberry,ahe): Fasta reports the error location as the entire 101 // TODO(paulberry,ahe): Fasta reports the error location as the entire
102 // comment; analyzer expects the end of the comment. 102 // comment; analyzer expects the end of the comment.
103 charOffset = endOffset; 103 charOffset = endOffset;
104 return _makeError(ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT, null); 104 return _makeError(ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT, null);
105 case ErrorKind.MissingExponent: 105 case ErrorKind.MissingExponent:
106 // TODO(paulberry,ahe): Fasta reports the error location as the entire 106 // TODO(paulberry,ahe): Fasta reports the error location as the entire
107 // number; analyzer expects the end of the number. 107 // number; analyzer expects the end of the number.
108 charOffset = endOffset; 108 charOffset = endOffset - 1;
109 return _makeError(ScannerErrorCode.MISSING_DIGIT, null); 109 return _makeError(ScannerErrorCode.MISSING_DIGIT, null);
110 case ErrorKind.ExpectedHexDigit: 110 case ErrorKind.ExpectedHexDigit:
111 // TODO(paulberry,ahe): Fasta reports the error location as the entire 111 // TODO(paulberry,ahe): Fasta reports the error location as the entire
112 // number; analyzer expects the end of the number. 112 // number; analyzer expects the end of the number.
113 charOffset = endOffset; 113 charOffset = endOffset - 1;
114 return _makeError(ScannerErrorCode.MISSING_HEX_DIGIT, null); 114 return _makeError(ScannerErrorCode.MISSING_HEX_DIGIT, null);
115 case ErrorKind.NonAsciiIdentifier: 115 case ErrorKind.NonAsciiIdentifier:
116 case ErrorKind.NonAsciiWhitespace: 116 case ErrorKind.NonAsciiWhitespace:
117 return _makeError(ScannerErrorCode.ILLEGAL_CHARACTER, [token.character]); 117 return _makeError(ScannerErrorCode.ILLEGAL_CHARACTER, [token.character]);
118 case ErrorKind.UnexpectedDollarInString: 118 case ErrorKind.UnexpectedDollarInString:
119 return null; 119 return null;
120 default: 120 default:
121 throw new UnimplementedError('$errorCode'); 121 throw new UnimplementedError('$errorCode');
122 } 122 }
123 } 123 }
124 124
125 /** 125 /**
126 * Determines whether the given [charOffset], which came from the non-EOF token 126 * Determines whether the given [charOffset], which came from the non-EOF token
127 * [token], represents the end of the input. 127 * [token], represents the end of the input.
128 */ 128 */
129 bool _isAtEnd(Token token, int charOffset) { 129 bool _isAtEnd(Token token, int charOffset) {
130 while (true) { 130 while (true) {
131 // Skip to the next token. 131 // Skip to the next token.
132 token = token.next; 132 token = token.next;
133 // If we've found an EOF token, its charOffset indicates where the end of 133 // If we've found an EOF token, its charOffset indicates where the end of
134 // the input is. 134 // the input is.
135 if (token.isEof) return token.charOffset == charOffset; 135 if (token.isEof) return token.charOffset == charOffset;
136 // If we've found a non-error token, then we know there is additional input 136 // If we've found a non-error token, then we know there is additional input
137 // text after [charOffset]. 137 // text after [charOffset].
138 if (token.info.kind != BAD_INPUT_TOKEN) return false; 138 if (token.info.kind != BAD_INPUT_TOKEN) return false;
139 // Otherwise keep looking. 139 // Otherwise keep looking.
140 } 140 }
141 } 141 }
OLDNEW
« no previous file with comments | « no previous file | pkg/front_end/test/scanner_replacement_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698