| Index: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/completion/CompletionEngine.java
|
| diff --git a/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/completion/CompletionEngine.java b/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/completion/CompletionEngine.java
|
| index a15d5e0c3fd99888f4a68206f6eae1646889ba03..98cbc671c372bd32deee53112d92495c8da051c2 100644
|
| --- a/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/completion/CompletionEngine.java
|
| +++ b/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/completion/CompletionEngine.java
|
| @@ -687,7 +687,16 @@ public class CompletionEngine {
|
| }
|
| // { foo.! doFoo(); }
|
| Type type = analyzeType(completionNode.getTarget());
|
| - createCompletionsForQualifiedMemberAccess(functionName, type, false);
|
| + if (type != null) {
|
| + createCompletionsForQualifiedMemberAccess(functionName, type, false);
|
| + } else {
|
| + DartNode target = completionNode.getTarget();
|
| + if (target instanceof DartPropertyAccess) {
|
| + // TODO(zundel): HACK! This might be a 'this' or 'static' access: I didn't check
|
| + createCompletionsForPropertyAccess(((DartPropertyAccess) target).getName(),
|
| + analyzeType(target), false, false);
|
| + }
|
| + }
|
| }
|
| }
|
| return null;
|
| @@ -776,7 +785,13 @@ public class CompletionEngine {
|
| if (TypeKind.of(type) == TypeKind.DYNAMIC) {
|
| // if dynamic use ScopedNameFinder to look for a declaration
|
| // { List list; list.! Map map; }
|
| - DartIdentifier name = (DartIdentifier) completionNode.getQualifier();
|
| + DartNode qualifier = completionNode.getQualifier();
|
| + DartIdentifier name;
|
| + if (qualifier instanceof DartIdentifier) {
|
| + name = (DartIdentifier)qualifier;
|
| + } else {
|
| + name = ((DartPropertyAccess)qualifier).getName();
|
| + }
|
| Element element = name.getElement();
|
| ScopedNameFinder vars = new ScopedNameFinder(actualCompletionPosition);
|
| completionNode.accept(vars);
|
|
|