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

Side by Side Diff: pkg/compiler/lib/src/string_validator.dart

Issue 2907093002: Revert "improve fasta unterminated string recovery" (Closed)
Patch Set: Created 3 years, 6 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/lib/src/fasta/quote.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 // Check the validity of string literals. 5 // Check the validity of string literals.
6 6
7 library stringvalidator; 7 library stringvalidator;
8 8
9 import 'dart:collection'; 9 import 'dart:collection';
10 10
11 import 'common.dart'; 11 import 'common.dart';
12 import 'package:front_end/src/fasta/scanner.dart' show Token; 12 import 'package:front_end/src/fasta/scanner.dart' show Token;
13 import 'tree/dartstring.dart' show DartString; 13 import 'tree/dartstring.dart' show DartString;
14 import 'tree/nodes.dart' show StringQuoting; 14 import 'tree/nodes.dart' show StringQuoting;
15 import 'package:front_end/src/fasta/scanner/characters.dart'; 15 import 'package:front_end/src/fasta/scanner/characters.dart';
16 16
17 class StringValidator { 17 class StringValidator {
18 final DiagnosticReporter reporter; 18 final DiagnosticReporter reporter;
19 19
20 StringValidator(this.reporter); 20 StringValidator(this.reporter);
21 21
22 DartString validateInterpolationPart(Token token, StringQuoting quoting, 22 DartString validateInterpolationPart(Token token, StringQuoting quoting,
23 {bool isFirst: false, bool isLast: false}) { 23 {bool isFirst: false, bool isLast: false}) {
24 String source = token.lexeme; 24 String source = token.lexeme;
25 int leftQuote = 0; 25 int leftQuote = 0;
26 int rightQuote = 0; 26 int rightQuote = 0;
27 if (isFirst) leftQuote = quoting.leftQuoteLength; 27 if (isFirst) leftQuote = quoting.leftQuoteLength;
28 if (isLast) { 28 if (isLast) rightQuote = quoting.rightQuoteLength;
29 // Check for unterminated string
30 if (leftQuote < source.length &&
31 source[source.length - 1] == quoting.quoteChar) {
32 rightQuote = quoting.rightQuoteLength;
33 }
34 }
35 String content = copyWithoutQuotes(source, leftQuote, rightQuote); 29 String content = copyWithoutQuotes(source, leftQuote, rightQuote);
36 return validateString( 30 return validateString(
37 token, token.charOffset + leftQuote, content, quoting); 31 token, token.charOffset + leftQuote, content, quoting);
38 } 32 }
39 33
40 static StringQuoting quotingFromString(String sourceString) { 34 static StringQuoting quotingFromString(String sourceString) {
41 Iterator<int> source = sourceString.codeUnits.iterator; 35 Iterator<int> source = sourceString.codeUnits.iterator;
42 bool raw = false; 36 bool raw = false;
43 int leftQuoteLength = 1; 37 int leftQuoteLength = 1;
44 source.moveNext(); 38 source.moveNext();
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 } 205 }
212 } 206 }
213 // String literal successfully validated. 207 // String literal successfully validated.
214 if (quoting.raw || !containsEscape) { 208 if (quoting.raw || !containsEscape) {
215 // A string without escapes could just as well have been raw. 209 // A string without escapes could just as well have been raw.
216 return new DartString.rawString(string, length); 210 return new DartString.rawString(string, length);
217 } 211 }
218 return new DartString.escapedString(string, length); 212 return new DartString.escapedString(string, length);
219 } 213 }
220 } 214 }
OLDNEW
« no previous file with comments | « no previous file | pkg/front_end/lib/src/fasta/quote.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698