OLD | NEW |
---|---|
1 import 'package:analyzer/src/generated/ast.dart'; | 1 import 'package:analyzer/src/generated/ast.dart'; |
2 import 'package:analyzer/src/generated/element.dart'; | 2 import 'package:analyzer/src/generated/element.dart'; |
3 import 'package:analyzer/src/generated/scanner.dart'; | 3 import 'package:analyzer/src/generated/scanner.dart'; |
4 import 'package:analyzer/src/generated/utilities_dart.dart'; | 4 import 'package:analyzer/src/generated/utilities_dart.dart'; |
5 | 5 |
6 int _computeArgIndex(AstNode containingNode, Object entity) { | 6 int _computeArgIndex(AstNode containingNode, Object entity) { |
7 var argList = containingNode; | 7 var argList = containingNode; |
8 if (argList is ArgumentList) { | 8 if (argList is ArgumentList) { |
9 NodeList<Expression> args = argList.arguments; | 9 NodeList<Expression> args = argList.arguments; |
10 for (int index = 0; index < args.length; ++index) { | 10 for (int index = 0; index < args.length; ++index) { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
87 * The entity which the completed text will replace (or which will be | 87 * The entity which the completed text will replace (or which will be |
88 * displaced once the completed text is inserted). This may be an AstNode or | 88 * displaced once the completed text is inserted). This may be an AstNode or |
89 * a Token, or it may be null if the cursor is after all tokens in the file. | 89 * a Token, or it may be null if the cursor is after all tokens in the file. |
90 * | 90 * |
91 * Usually, the entity won't be the first child of the [containingNode] (this | 91 * Usually, the entity won't be the first child of the [containingNode] (this |
92 * is a consequence of placing the completion target as high in the tree as | 92 * is a consequence of placing the completion target as high in the tree as |
93 * possible). However, there is one exception: when the cursor is inside of | 93 * possible). However, there is one exception: when the cursor is inside of |
94 * a multi-character token which is not a keyword or identifier (e.g. a | 94 * a multi-character token which is not a keyword or identifier (e.g. a |
95 * comment, or a token like "+=", the entity will be always be the token. | 95 * comment, or a token like "+=", the entity will be always be the token. |
96 */ | 96 */ |
97 final Object entity; | 97 final Object entity; |
Brian Wilkerson
2015/09/18 18:59:29
I'm not thrilled with needing to use Object, but I
danrubel
2015/09/18 20:03:51
A new marker interface implemented by both AstNode
| |
98 | 98 |
99 /** | 99 /** |
100 * If the target is an argument in an [ArgumentList], then this is the index | 100 * If the target is an argument in an [ArgumentList], then this is the index |
101 * of the argument in the list, otherwise this is `null`. | 101 * of the argument in the list, otherwise this is `null`. |
102 */ | 102 */ |
103 final int argIndex; | 103 final int argIndex; |
104 | 104 |
105 /** | 105 /** |
106 * Compute the appropriate [CompletionTarget] for the given [offset] within | 106 * Compute the appropriate [CompletionTarget] for the given [offset] within |
107 * the [compilationUnit]. | 107 * the [compilationUnit]. |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
347 if (param.parameterKind == ParameterKind.NAMED) { | 347 if (param.parameterKind == ParameterKind.NAMED) { |
348 // TODO(danrubel) handle named parameters | 348 // TODO(danrubel) handle named parameters |
349 return false; | 349 return false; |
350 } else { | 350 } else { |
351 return paramType is FunctionType || paramType is FunctionTypeAlias; | 351 return paramType is FunctionType || paramType is FunctionTypeAlias; |
352 } | 352 } |
353 } | 353 } |
354 return false; | 354 return false; |
355 } | 355 } |
356 } | 356 } |
OLD | NEW |