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 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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 // parameters + body | 350 // parameters + body |
351 if (isGetter) { | 351 if (isGetter) { |
352 writeln(' => null;'); | 352 writeln(' => null;'); |
353 } else { | 353 } else { |
354 List<ParameterElement> parameters = member.parameters; | 354 List<ParameterElement> parameters = member.parameters; |
355 writeParameters(parameters, methodBeingCopied: member); | 355 writeParameters(parameters, methodBeingCopied: member); |
356 writeln(' {'); | 356 writeln(' {'); |
357 // TO-DO | 357 // TO-DO |
358 write(prefix2); | 358 write(prefix2); |
359 writeln('// TODO: implement ${member.displayName}'); | 359 writeln('// TODO: implement ${member.displayName}'); |
360 // REVIEW: Added return statement. | |
361 if (shouldReturn) { | 360 if (shouldReturn) { |
362 write(prefix2); | 361 write(prefix2); |
363 writeln('return null;'); | 362 writeln('return null;'); |
364 } | 363 } |
365 // close method | 364 // close method |
366 write(prefix); | 365 write(prefix); |
367 writeln('}'); | 366 writeln('}'); |
368 } | 367 } |
369 } | 368 } |
370 | 369 |
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
971 * The compilation unit to which the code will be added. | 970 * The compilation unit to which the code will be added. |
972 */ | 971 */ |
973 CompilationUnit unit; | 972 CompilationUnit unit; |
974 | 973 |
975 /** | 974 /** |
976 * A set containing the sources of the libraries that need to be imported in | 975 * A set containing the sources of the libraries that need to be imported in |
977 * order to make visible the names used in generated code. | 976 * order to make visible the names used in generated code. |
978 */ | 977 */ |
979 Set<Source> librariesToImport = new Set<Source>(); | 978 Set<Source> librariesToImport = new Set<Source>(); |
980 | 979 |
981 // /** | |
982 // * The content of the file being edited. | |
983 // */ | |
984 // String _content; | |
985 | |
986 /** | 980 /** |
987 * Initialize a newly created builder to build a source file edit within the | 981 * Initialize a newly created builder to build a source file edit within the |
988 * change being built by the given [changeBuilder]. The file being edited has | 982 * change being built by the given [changeBuilder]. The file being edited has |
989 * the given [source] and [timeStamp], and the given fully resolved [unit]. | 983 * the given [source] and [timeStamp], and the given fully resolved [unit]. |
990 */ | 984 */ |
991 DartFileEditBuilderImpl(DartChangeBuilderImpl changeBuilder, String path, | 985 DartFileEditBuilderImpl(DartChangeBuilderImpl changeBuilder, String path, |
992 int timeStamp, this.unit) | 986 int timeStamp, this.unit) |
993 : super(changeBuilder, path, timeStamp); | 987 : super(changeBuilder, path, timeStamp); |
994 | 988 |
995 @override | 989 @override |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1266 int nextLineOffset = lineInfo.getOffsetOfLine(currentLine + 1); | 1260 int nextLineOffset = lineInfo.getOffsetOfLine(currentLine + 1); |
1267 String insertLine = source.substring(offset, nextLineOffset); | 1261 String insertLine = source.substring(offset, nextLineOffset); |
1268 if (!insertLine.trim().isEmpty) { | 1262 if (!insertLine.trim().isEmpty) { |
1269 insertEmptyLineAfter = true; | 1263 insertEmptyLineAfter = true; |
1270 } | 1264 } |
1271 } | 1265 } |
1272 return new _InsertionDescription( | 1266 return new _InsertionDescription( |
1273 offset, insertEmptyLineBefore, insertEmptyLineAfter); | 1267 offset, insertEmptyLineBefore, insertEmptyLineAfter); |
1274 } | 1268 } |
1275 | 1269 |
1276 // /** | |
1277 // * Return the content of the file being edited. | |
1278 // */ | |
1279 // String getContent() { | |
1280 // if (_content == null) { | |
1281 // CompilationUnitElement unitElement = unit.element; | |
1282 // AnalysisContext context = unitElement.context; | |
1283 // if (context == null) { | |
1284 // throw new CancelCorrectionException(); | |
1285 // } | |
1286 // _content = context.getContents(unitElement.source).data; | |
1287 // } | |
1288 // return _content; | |
1289 // } | |
1290 | |
1291 /** | 1270 /** |
1292 * Computes the best URI to import [what] into [from]. | 1271 * Computes the best URI to import [what] into [from]. |
1293 */ | 1272 */ |
1294 String _getLibrarySourceUri(LibraryElement from, Source what) { | 1273 String _getLibrarySourceUri(LibraryElement from, Source what) { |
1295 String whatPath = what.fullName; | 1274 String whatPath = what.fullName; |
1296 // check if an absolute URI (such as 'dart:' or 'package:') | 1275 // check if an absolute URI (such as 'dart:' or 'package:') |
1297 Uri whatUri = what.uri; | 1276 Uri whatUri = what.uri; |
1298 String whatUriScheme = whatUri.scheme; | 1277 String whatUriScheme = whatUri.scheme; |
1299 if (whatUriScheme != '' && whatUriScheme != 'file') { | 1278 if (whatUriScheme != '' && whatUriScheme != 'file') { |
1300 return whatUri.toString(); | 1279 return whatUri.toString(); |
1301 } | 1280 } |
1302 // compute a relative URI | 1281 // compute a relative URI |
1303 String fromFolder = path.dirname(from.source.fullName); | 1282 String fromFolder = path.dirname(from.source.fullName); |
1304 String relativeFile = path.relative(whatPath, from: fromFolder); | 1283 String relativeFile = path.relative(whatPath, from: fromFolder); |
1305 return path.split(relativeFile).join('/'); | 1284 return path.split(relativeFile).join('/'); |
1306 } | 1285 } |
1307 | 1286 |
1308 /** | 1287 /** |
1309 * Returns the text of the given range in the unit. | 1288 * Returns the text of the given range in the unit. |
1310 */ | 1289 */ |
1311 String _getText(String content, int offset, int length) { | 1290 String _getText(String content, int offset, int length) { |
1312 return content.substring(offset, offset + length); | 1291 return content.substring(offset, offset + length); |
1313 } | 1292 } |
1314 | 1293 |
1315 // /** | |
1316 // * Returns the text of the given [AstNode] in the unit. | |
1317 // */ | |
1318 // String _getNodeText(AstNode node) { | |
1319 // return _getText(node.offset, node.length); | |
1320 // } | |
1321 // | |
1322 // /** | |
1323 // * Returns the text of the given range in the unit. | |
1324 // */ | |
1325 // String _getText(int offset, int length) { | |
1326 // return getContent().substring(offset, offset + length); | |
1327 // } | |
1328 | |
1329 /** | 1294 /** |
1330 * Create an edit to replace the return type of the innermost function | 1295 * Create an edit to replace the return type of the innermost function |
1331 * containing the given [node] with the type `Future`. The [typeProvider] is | 1296 * containing the given [node] with the type `Future`. The [typeProvider] is |
1332 * used to check the current return type, because if it is already `Future` no | 1297 * used to check the current return type, because if it is already `Future` no |
1333 * edit will be added. | 1298 * edit will be added. |
1334 */ | 1299 */ |
1335 void _replaceReturnTypeWithFuture(AstNode node, TypeProvider typeProvider) { | 1300 void _replaceReturnTypeWithFuture(AstNode node, TypeProvider typeProvider) { |
1336 while (node != null) { | 1301 while (node != null) { |
1337 node = node.parent; | 1302 node = node.parent; |
1338 if (node is FunctionDeclaration) { | 1303 if (node is FunctionDeclaration) { |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1401 } | 1366 } |
1402 } | 1367 } |
1403 | 1368 |
1404 class _InsertionDescription { | 1369 class _InsertionDescription { |
1405 final int offset; | 1370 final int offset; |
1406 final bool insertEmptyLineBefore; | 1371 final bool insertEmptyLineBefore; |
1407 final bool insertEmptyLineAfter; | 1372 final bool insertEmptyLineAfter; |
1408 _InsertionDescription( | 1373 _InsertionDescription( |
1409 this.offset, this.insertEmptyLineBefore, this.insertEmptyLineAfter); | 1374 this.offset, this.insertEmptyLineBefore, this.insertEmptyLineAfter); |
1410 } | 1375 } |
OLD | NEW |