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

Side by Side Diff: pkg/analyzer/lib/src/generated/incremental_resolver.dart

Issue 1045553002: Implement the new '??' operator in analyzer. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix if_null_precedence_test for unchecked operation. Created 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library engine.incremental_resolver; 5 library engine.incremental_resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' as math; 8 import 'dart:math' as math;
9 9
10 import 'package:analyzer/src/generated/constant.dart'; 10 import 'package:analyzer/src/generated/constant.dart';
(...skipping 1147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1158 timer.stop('verify'); 1158 timer.stop('verify');
1159 } 1159 }
1160 } 1160 }
1161 } 1161 }
1162 1162
1163 class PoorMansIncrementalResolver { 1163 class PoorMansIncrementalResolver {
1164 final TypeProvider _typeProvider; 1164 final TypeProvider _typeProvider;
1165 final Source _unitSource; 1165 final Source _unitSource;
1166 final DartEntry _entry; 1166 final DartEntry _entry;
1167 final CompilationUnit _oldUnit; 1167 final CompilationUnit _oldUnit;
1168 final AnalysisOptions _options;
1168 CompilationUnitElement _unitElement; 1169 CompilationUnitElement _unitElement;
1169 1170
1170 int _updateOffset; 1171 int _updateOffset;
1171 int _updateDelta; 1172 int _updateDelta;
1172 int _updateEndOld; 1173 int _updateEndOld;
1173 int _updateEndNew; 1174 int _updateEndNew;
1174 1175
1175 List<AnalysisError> _newScanErrors = <AnalysisError>[]; 1176 List<AnalysisError> _newScanErrors = <AnalysisError>[];
1176 List<AnalysisError> _newParseErrors = <AnalysisError>[]; 1177 List<AnalysisError> _newParseErrors = <AnalysisError>[];
1177 1178
1178 PoorMansIncrementalResolver(this._typeProvider, this._unitSource, this._entry, 1179 PoorMansIncrementalResolver(this._typeProvider, this._unitSource, this._entry,
1179 this._oldUnit, bool resolveApiChanges) { 1180 this._oldUnit, bool resolveApiChanges, this._options) {
1180 _resolveApiChanges = resolveApiChanges; 1181 _resolveApiChanges = resolveApiChanges;
1181 } 1182 }
1182 1183
1183 /** 1184 /**
1184 * Attempts to update [_oldUnit] to the state corresponding to [newCode]. 1185 * Attempts to update [_oldUnit] to the state corresponding to [newCode].
1185 * Returns `true` if success, or `false` otherwise. 1186 * Returns `true` if success, or `false` otherwise.
1186 * The [_oldUnit] might be damaged. 1187 * The [_oldUnit] might be damaged.
1187 */ 1188 */
1188 bool resolve(String newCode) { 1189 bool resolve(String newCode) {
1189 logger.enter('diff/resolve $_unitSource'); 1190 logger.enter('diff/resolve $_unitSource');
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 // resolve references in the comment 1383 // resolve references in the comment
1383 incrementalResolver._resolveReferences(newComment); 1384 incrementalResolver._resolveReferences(newComment);
1384 // OK 1385 // OK
1385 return true; 1386 return true;
1386 } 1387 }
1387 1388
1388 Token _scan(String code) { 1389 Token _scan(String code) {
1389 RecordingErrorListener errorListener = new RecordingErrorListener(); 1390 RecordingErrorListener errorListener = new RecordingErrorListener();
1390 CharSequenceReader reader = new CharSequenceReader(code); 1391 CharSequenceReader reader = new CharSequenceReader(code);
1391 Scanner scanner = new Scanner(_unitSource, reader, errorListener); 1392 Scanner scanner = new Scanner(_unitSource, reader, errorListener);
1393 scanner.enableNullAwareOperators = _options.enableNullAwareOperators;
1392 Token token = scanner.tokenize(); 1394 Token token = scanner.tokenize();
1393 _newScanErrors = errorListener.errors; 1395 _newScanErrors = errorListener.errors;
1394 return token; 1396 return token;
1395 } 1397 }
1396 1398
1397 /** 1399 /**
1398 * Set the given [comment] as a "precedingComments" for [token]. 1400 * Set the given [comment] as a "precedingComments" for [token].
1399 */ 1401 */
1400 void _setPrecedingComments(Token token, CommentToken comment) { 1402 void _setPrecedingComments(Token token, CommentToken comment) {
1401 if (token is BeginTokenWithComment) { 1403 if (token is BeginTokenWithComment) {
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
1838 @override 1840 @override
1839 String toString() => name; 1841 String toString() => name;
1840 } 1842 }
1841 1843
1842 class _TokenPair { 1844 class _TokenPair {
1843 final _TokenDifferenceKind kind; 1845 final _TokenDifferenceKind kind;
1844 final Token oldToken; 1846 final Token oldToken;
1845 final Token newToken; 1847 final Token newToken;
1846 _TokenPair(this.kind, this.oldToken, this.newToken); 1848 _TokenPair(this.kind, this.oldToken, this.newToken);
1847 } 1849 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/html.dart ('k') | pkg/analyzer/lib/src/generated/incremental_scanner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698