| OLD | NEW | 
|---|
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. | 
| 4 import 'dart:async'; | 4 import 'dart:async'; | 
| 5 import 'dart:convert'; | 5 import 'dart:convert'; | 
| 6 import 'dart:io'; | 6 import 'dart:io'; | 
| 7 | 7 | 
| 8 import 'package:front_end/src/base/instrumentation.dart'; | 8 import 'package:front_end/src/base/instrumentation.dart'; | 
| 9 import 'package:front_end/src/fasta/messages.dart'; | 9 import 'package:front_end/src/fasta/messages.dart'; | 
| 10 import 'package:front_end/src/fasta/scanner.dart'; | 10 import 'package:front_end/src/fasta/scanner.dart'; | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 70               'got nothing', | 70               'got nothing', | 
| 71               new _Fix( | 71               new _Fix( | 
| 72                   expectation.commentOffset, expectation.commentLength, '')); | 72                   expectation.commentOffset, expectation.commentLength, '')); | 
| 73         } | 73         } | 
| 74       }); | 74       }); | 
| 75     }); | 75     }); | 
| 76   } | 76   } | 
| 77 | 77 | 
| 78   /// Updates the source file at [uri] based on the actual property/value | 78   /// Updates the source file at [uri] based on the actual property/value | 
| 79   /// pairs that were observed. | 79   /// pairs that were observed. | 
| 80   Future<Null> fixSource(Uri uri) async { | 80   Future<Null> fixSource(Uri uri, bool offsetsCountCharacters) async { | 
| 81     var fixes = _fixes[uri]; | 81     var fixes = _fixes[uri]; | 
| 82     if (fixes == null) return; | 82     if (fixes == null) return; | 
| 83     File file = new File.fromUri(uri); | 83     File file = new File.fromUri(uri); | 
| 84     var bytes = (await file.readAsBytes()).toList(); | 84     var bytes = (await file.readAsBytes()).toList(); | 
|  | 85     int convertOffset(int offset) { | 
|  | 86       if (offsetsCountCharacters) { | 
|  | 87         return UTF8.encode(UTF8.decode(bytes).substring(0, offset)).length; | 
|  | 88       } else { | 
|  | 89         return offset; | 
|  | 90       } | 
|  | 91     } | 
|  | 92 | 
| 85     // Apply the fixes in reverse order so that offsets don't need to be | 93     // Apply the fixes in reverse order so that offsets don't need to be | 
| 86     // adjusted after each fix. | 94     // adjusted after each fix. | 
| 87     fixes.sort((a, b) => b.offset.compareTo(a.offset)); | 95     fixes.sort((a, b) => b.offset.compareTo(a.offset)); | 
| 88     for (var fix in fixes) { | 96     for (var fix in fixes) { | 
| 89       bytes.replaceRange( | 97       bytes.replaceRange(convertOffset(fix.offset), | 
| 90           fix.offset, fix.offset + fix.length, UTF8.encode(fix.replacement)); | 98           convertOffset(fix.offset + fix.length), UTF8.encode(fix.replacement)); | 
| 91     } | 99     } | 
| 92     await file.writeAsBytes(bytes); | 100     await file.writeAsBytes(bytes); | 
| 93   } | 101   } | 
| 94 | 102 | 
| 95   /// Loads expectations from the source file located at [uri]. | 103   /// Loads expectations from the source file located at [uri]. | 
| 96   /// | 104   /// | 
| 97   /// Should be called before [finish]. | 105   /// Should be called before [finish]. | 
| 98   Future<Null> loadExpectations(Uri uri) async { | 106   Future<Null> loadExpectations(Uri uri) async { | 
| 99     var bytes = await readBytesFromFile(uri); | 107     var bytes = await readBytesFromFile(uri); | 
| 100     var expectations = _unsatisfiedExpectations.putIfAbsent(uri, () => {}); | 108     var expectations = _unsatisfiedExpectations.putIfAbsent(uri, () => {}); | 
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 227       this.property, this.value, this.commentOffset, this.commentLength); | 235       this.property, this.value, this.commentOffset, this.commentLength); | 
| 228 } | 236 } | 
| 229 | 237 | 
| 230 class _Fix { | 238 class _Fix { | 
| 231   final int offset; | 239   final int offset; | 
| 232   final int length; | 240   final int length; | 
| 233   final String replacement; | 241   final String replacement; | 
| 234 | 242 | 
| 235   _Fix(this.offset, this.length, this.replacement); | 243   _Fix(this.offset, this.length, this.replacement); | 
| 236 } | 244 } | 
| OLD | NEW | 
|---|