Chromium Code Reviews| Index: pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart |
| diff --git a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart |
| index 0e92c36c30f961861a8980265ccefed327bd7225..872051ee9d40e24343a78803ab5b7acb702f941f 100644 |
| --- a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart |
| +++ b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart |
| @@ -6,12 +6,16 @@ library services.completion.contributor.dart.arglist; |
| import 'dart:async'; |
| +import 'package:analysis_server/src/ide_options.dart'; |
| import 'package:analysis_server/src/protocol_server.dart' |
| hide Element, ElementKind; |
| import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart'; |
| +import 'package:analysis_server/src/services/completion/dart/utilities.dart'; |
| +import 'package:analysis_server/src/services/correction/flutter_util.dart'; |
| import 'package:analysis_server/src/utilities/documentation.dart'; |
| import 'package:analyzer/dart/ast/ast.dart'; |
| import 'package:analyzer/dart/element/element.dart'; |
| +import 'package:analyzer/dart/element/type.dart'; |
| import 'package:analyzer/src/generated/utilities_dart.dart'; |
| /** |
| @@ -265,10 +269,53 @@ class ArgListContributor extends DartCompletionContributor { |
| _setDocumentation(suggestion, parameter.field?.documentationComment); |
| suggestion.element = convertElement(parameter); |
| } |
| + |
| + String defaultValue = _getDefaultValue(parameter, request.ideOptions); |
| + if (defaultValue != null) { |
| + //TODO(pq): unify with `utilities.dart` |
|
Brian Wilkerson
2017/03/23 20:27:53
Do these TODOs still apply?
pquitslund
2017/03/23 22:15:16
They may. There's a bit of duplication I want to
|
| + StringBuffer sb = new StringBuffer(); |
| + sb.write('${parameter.name}: '); |
| + int offset = sb.length; |
| + sb.write(defaultValue); |
| + suggestion.defaultArgumentListString = defaultValue; |
| + suggestion.defaultArgumentListTextRanges = [ |
| + offset, |
| + defaultValue.length |
| + ]; |
| + } |
| + |
| suggestions.add(suggestion); |
| } |
| } |
| + //TODO(pq): move and unify w/ `utilities.dart` |
| + String _getDefaultValue(ParameterElement param, IdeOptions options) { |
| + if (options?.generateFlutterWidgetChildrenBoilerPlate == true) { |
| + Element element = param.enclosingElement; |
| + if (element is ConstructorElement) { |
| + ClassElement classElement = element.enclosingElement; |
| + if (isFlutterWidget(classElement)) { |
| + if (param.name == 'children') { |
| + DartType type = param.type; |
| + if (type is InterfaceType && isDartList(type)) { |
| + List<DartType> typeArguments = type.typeArguments; |
| + StringBuffer sb = new StringBuffer(); |
| + if (typeArguments.length == 1) { |
| + DartType typeArg = typeArguments.first; |
| + if (!typeArg.isDynamic) { |
| + sb.write('<${typeArg.name}>'); |
| + } |
| + sb.write('[]'); |
| + return sb.toString(); |
| + } |
| + } |
| + } |
| + } |
| + } |
| + } |
| + return null; |
| + } |
| + |
| void _addSuggestions(Iterable<ParameterElement> parameters) { |
| if (parameters == null || parameters.length == 0) { |
| return; |