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

Side by Side Diff: pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart

Issue 2910683002: Update some of the fixes to use ChangeBuilder (Closed)
Patch Set: Created 3 years, 7 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 file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/token.dart'; 8 import 'package:analyzer/dart/ast/token.dart';
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/dart/element/type.dart'; 10 import 'package:analyzer/dart/element/type.dart';
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 InterfaceType futureType = typeProvider.futureType; 1005 InterfaceType futureType = typeProvider.futureType;
1006 // 1006 //
1007 // Check whether the type needs to be replaced. 1007 // Check whether the type needs to be replaced.
1008 // 1008 //
1009 DartType type = typeAnnotation?.type; 1009 DartType type = typeAnnotation?.type;
1010 if (type == null || 1010 if (type == null ||
1011 type.isDynamic || 1011 type.isDynamic ||
1012 type is InterfaceType && type.element == futureType.element) { 1012 type is InterfaceType && type.element == futureType.element) {
1013 return; 1013 return;
1014 } 1014 }
1015 futureType = futureType.instantiate(<DartType>[type]); 1015 // TODO(brianwilkerson) Unconditionally execute the body of the 'if' when
1016 // Future<void> is fully supported.
1017 if (!type.isVoid) {
scheglov 2017/05/26 16:30:04 Use Future<Null> instead of Future<void> for now?
Brian Wilkerson 2017/05/30 13:15:12 If this is important, I can fix it in a follow-up
1018 futureType = futureType.instantiate(<DartType>[type]);
1019 }
1016 // prepare code for the types 1020 // prepare code for the types
1017 addReplacement(range.node(typeAnnotation), (EditBuilder builder) { 1021 addReplacement(range.node(typeAnnotation), (EditBuilder builder) {
1018 if (!(builder as DartEditBuilder).writeType(futureType)) { 1022 if (!(builder as DartEditBuilder).writeType(futureType)) {
1019 builder.write('void'); 1023 builder.write('void');
1020 } 1024 }
1021 }); 1025 });
1022 } 1026 }
1023 1027
1024 /** 1028 /**
1025 * Adds edits to the given [change] that ensure that all the [libraries] are 1029 * Adds edits to the given [change] that ensure that all the [libraries] are
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1116 builder.write(importUri); 1120 builder.write(importUri);
1117 builder.writeln("';"); 1121 builder.writeln("';");
1118 if (i == uriList.length - 1 && desc.insertEmptyLineAfter) { 1122 if (i == uriList.length - 1 && desc.insertEmptyLineAfter) {
1119 builder.writeln(); 1123 builder.writeln();
1120 } 1124 }
1121 }); 1125 });
1122 } 1126 }
1123 } 1127 }
1124 1128
1125 /** 1129 /**
1126 * Returns a [InsertDesc] describing where to insert a new directive or a 1130 * Returns an insertion description describing where to insert a new directive
1127 * top-level declaration at the top of the file. 1131 * or a top-level declaration at the top of the file.
1128 */ 1132 */
1129 _InsertionDescription _getInsertDescTop() { 1133 _InsertionDescription _getInsertDescTop() {
1130 // skip leading line comments 1134 // skip leading line comments
1131 int offset = 0; 1135 int offset = 0;
1132 bool insertEmptyLineBefore = false; 1136 bool insertEmptyLineBefore = false;
1133 bool insertEmptyLineAfter = false; 1137 bool insertEmptyLineAfter = false;
1134 String source = unit.element.context.getContents(unit.element.source).data; 1138 String source = unit.element.context.getContents(unit.element.source).data;
1135 var lineInfo = unit.lineInfo; 1139 var lineInfo = unit.lineInfo;
1136 // skip hash-bang 1140 // skip hash-bang
1137 if (offset < source.length - 2) { 1141 if (offset < source.length - 2) {
(...skipping 23 matching lines...) Expand all
1161 String linePrefix = _getText(source, offset, 2); 1165 String linePrefix = _getText(source, offset, 2);
1162 if (linePrefix == "//") { 1166 if (linePrefix == "//") {
1163 insertEmptyLineBefore = true; 1167 insertEmptyLineBefore = true;
1164 offset = lineInfo.getOffsetOfLineAfter(offset); 1168 offset = lineInfo.getOffsetOfLineAfter(offset);
1165 } else { 1169 } else {
1166 break; 1170 break;
1167 } 1171 }
1168 } 1172 }
1169 // determine if empty line is required after 1173 // determine if empty line is required after
1170 int currentLine = lineInfo.getLocation(offset).lineNumber; 1174 int currentLine = lineInfo.getLocation(offset).lineNumber;
1171 if (currentLine < lineInfo.lineCount) { 1175 if (currentLine + 1 < lineInfo.lineCount) {
1172 int nextLineOffset = lineInfo.getOffsetOfLine(currentLine + 1); 1176 int nextLineOffset = lineInfo.getOffsetOfLine(currentLine + 1);
1173 String insertLine = source.substring(offset, nextLineOffset); 1177 String insertLine = source.substring(offset, nextLineOffset);
1174 if (!insertLine.trim().isEmpty) { 1178 if (!insertLine.trim().isEmpty) {
1175 insertEmptyLineAfter = true; 1179 insertEmptyLineAfter = true;
1176 } 1180 }
1177 } 1181 }
1178 return new _InsertionDescription( 1182 return new _InsertionDescription(
1179 offset, insertEmptyLineBefore, insertEmptyLineAfter); 1183 offset, insertEmptyLineBefore, insertEmptyLineAfter);
1180 } 1184 }
1181 1185
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 } 1311 }
1308 } 1312 }
1309 1313
1310 class _InsertionDescription { 1314 class _InsertionDescription {
1311 final int offset; 1315 final int offset;
1312 final bool insertEmptyLineBefore; 1316 final bool insertEmptyLineBefore;
1313 final bool insertEmptyLineAfter; 1317 final bool insertEmptyLineAfter;
1314 _InsertionDescription( 1318 _InsertionDescription(
1315 this.offset, this.insertEmptyLineBefore, this.insertEmptyLineAfter); 1319 this.offset, this.insertEmptyLineBefore, this.insertEmptyLineAfter);
1316 } 1320 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698