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

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

Issue 2778213002: Use message.yaml in parser. (Closed)
Patch Set: Update subpackage relationships. 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 | « pkg/front_end/lib/src/fasta/source/stack_listener.dart ('k') | pkg/front_end/messages.yaml » ('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/fasta_codes.dart';
6 import 'package:front_end/src/fasta/scanner/error_token.dart'; 7 import 'package:front_end/src/fasta/scanner/error_token.dart';
7 import 'package:front_end/src/fasta/scanner/token.dart'; 8 import 'package:front_end/src/fasta/scanner/token.dart';
8 import 'package:front_end/src/fasta/scanner/token_constants.dart'; 9 import 'package:front_end/src/fasta/scanner/token_constants.dart';
9 10
10 /** 11 /**
11 * The error codes used for errors detected by the scanner. 12 * The error codes used for errors detected by the scanner.
12 */ 13 */
13 class ScannerErrorCode extends ErrorCode { 14 class ScannerErrorCode extends ErrorCode {
14 /** 15 /**
15 * Parameters: 16 * Parameters:
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // Analyzer never generates an error message past the end of the input, 83 // Analyzer never generates an error message past the end of the input,
83 // since such an error would not be visible in an editor. 84 // since such an error would not be visible in an editor.
84 // TODO(paulberry,ahe): would it make sense to replicate this behavior 85 // TODO(paulberry,ahe): would it make sense to replicate this behavior
85 // in fasta, or move it elsewhere in analyzer? 86 // in fasta, or move it elsewhere in analyzer?
86 charOffset--; 87 charOffset--;
87 } 88 }
88 reportError(errorCode, charOffset, arguments); 89 reportError(errorCode, charOffset, arguments);
89 } 90 }
90 91
91 var errorCode = token.errorCode; 92 var errorCode = token.errorCode;
92 switch (errorCode) { 93 switch (errorCode.analyzerCode) {
93 case ErrorKind.UnterminatedString: 94 case "UNTERMINATED_STRING_LITERAL":
94 // TODO(paulberry,ahe): Fasta reports the error location as the entire 95 // TODO(paulberry,ahe): Fasta reports the error location as the entire
95 // string; analyzer expects the end of the string. 96 // string; analyzer expects the end of the string.
96 charOffset = endOffset; 97 charOffset = endOffset;
97 return _makeError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, null); 98 return _makeError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, null);
98 case ErrorKind.UnmatchedToken: 99
99 return null; 100 case "UNTERMINATED_MULTI_LINE_COMMENT":
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
106 case "MISSING_DIGIT":
106 // TODO(paulberry,ahe): Fasta reports the error location as the entire 107 // TODO(paulberry,ahe): Fasta reports the error location as the entire
107 // number; analyzer expects the end of the number. 108 // number; analyzer expects the end of the number.
108 charOffset = endOffset - 1; 109 charOffset = endOffset - 1;
109 return _makeError(ScannerErrorCode.MISSING_DIGIT, null); 110 return _makeError(ScannerErrorCode.MISSING_DIGIT, null);
110 case ErrorKind.ExpectedHexDigit: 111
112 case "MISSING_HEX_DIGIT":
111 // TODO(paulberry,ahe): Fasta reports the error location as the entire 113 // TODO(paulberry,ahe): Fasta reports the error location as the entire
112 // number; analyzer expects the end of the number. 114 // number; analyzer expects the end of the number.
113 charOffset = endOffset - 1; 115 charOffset = endOffset - 1;
114 return _makeError(ScannerErrorCode.MISSING_HEX_DIGIT, null); 116 return _makeError(ScannerErrorCode.MISSING_HEX_DIGIT, null);
115 case ErrorKind.NonAsciiIdentifier: 117
116 case ErrorKind.NonAsciiWhitespace: 118 case "ILLEGAL_CHARACTER":
117 return _makeError(ScannerErrorCode.ILLEGAL_CHARACTER, [token.character]); 119 return _makeError(ScannerErrorCode.ILLEGAL_CHARACTER, [token.character]);
118 case ErrorKind.UnexpectedDollarInString: 120
119 return null;
120 default: 121 default:
122 if (errorCode == codeUnmatchedToken ||
123 errorCode == codeUnexpectedDollarInString) {
124 return null;
125 }
121 throw new UnimplementedError('$errorCode'); 126 throw new UnimplementedError('$errorCode');
122 } 127 }
123 } 128 }
124 129
125 /** 130 /**
126 * Determines whether the given [charOffset], which came from the non-EOF token 131 * Determines whether the given [charOffset], which came from the non-EOF token
127 * [token], represents the end of the input. 132 * [token], represents the end of the input.
128 */ 133 */
129 bool _isAtEnd(Token token, int charOffset) { 134 bool _isAtEnd(Token token, int charOffset) {
130 while (true) { 135 while (true) {
131 // Skip to the next token. 136 // Skip to the next token.
132 token = token.next; 137 token = token.next;
133 // If we've found an EOF token, its charOffset indicates where the end of 138 // If we've found an EOF token, its charOffset indicates where the end of
134 // the input is. 139 // the input is.
135 if (token.isEof) return token.charOffset == charOffset; 140 if (token.isEof) return token.charOffset == charOffset;
136 // If we've found a non-error token, then we know there is additional input 141 // If we've found a non-error token, then we know there is additional input
137 // text after [charOffset]. 142 // text after [charOffset].
138 if (token.info.kind != BAD_INPUT_TOKEN) return false; 143 if (token.info.kind != BAD_INPUT_TOKEN) return false;
139 // Otherwise keep looking. 144 // Otherwise keep looking.
140 } 145 }
141 } 146 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/source/stack_listener.dart ('k') | pkg/front_end/messages.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698