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

Side by Side Diff: pkg/front_end/lib/src/fasta/testing/validating_instrumentation.dart

Issue 2919623002: Implement type inference for PropertySet. (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
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698