Skip to content

Commit 06bd8a5

Browse files
committed
language-server: definition name completion is not skipped for overridden functions and accessors (references #654)
follow up to commit 9c6a730
1 parent b98be37 commit 06bd8a5

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

language-server/src/main/java/com/as3mxml/vscode/providers/CompletionProvider.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -352,24 +352,33 @@ private CompletionList actionScriptCompletion(IASNode offsetNode, Path path, Pos
352352
}
353353
currentNodeForScope = currentNodeForScope.getParent();
354354
} while (currentNodeForScope != null);
355-
356-
return result;
355+
// don't return because the function might be an override
356+
// and the name can be completed
357357
}
358358
if (ASTNodeID.KeywordVarID.equals(keywordNode.getNodeID())
359359
|| ASTNodeID.KeywordConstID.equals(keywordNode.getNodeID())
360360
|| ASTNodeID.KeywordClassID.equals(keywordNode.getNodeID())
361-
|| ASTNodeID.KeywordInterfaceID.equals(keywordNode.getNodeID())
362-
|| ASTNodeID.KeywordGetID.equals(keywordNode.getNodeID())
363-
|| ASTNodeID.KeywordSetID.equals(keywordNode.getNodeID())) {
361+
|| ASTNodeID.KeywordInterfaceID.equals(keywordNode.getNodeID())) {
364362
return result;
365363
}
366364
}
367-
if (parentNode != null && parentNode instanceof IDefinitionNode && !(parentNode instanceof IPackageNode)) {
365+
if (parentNode != null && parentNode instanceof IDefinitionNode) {
368366
IDefinitionNode defNode = (IDefinitionNode) parentNode;
369367
if (offsetNode == defNode.getNameExpressionNode()) {
370-
// no completion for definition names because names shouldn't
371-
// conflict with each other
372-
return result;
368+
boolean skipCompletion = true;
369+
if (defNode instanceof IPackageNode) {
370+
skipCompletion = false;
371+
} else if (defNode instanceof IFunctionNode) {
372+
IFunctionNode funcNode = (IFunctionNode) defNode;
373+
if (funcNode.hasModifier(ASModifier.OVERRIDE)) {
374+
skipCompletion = false;
375+
}
376+
}
377+
if (skipCompletion) {
378+
// no completion for certain definition names where names
379+
// shouldn't conflict with each other
380+
return result;
381+
}
373382
}
374383
}
375384

0 commit comments

Comments
 (0)