Skip to content

Commit 852a83d

Browse files
committed
language-server: similar to function, the keywords for class, interface, var, and const are included in hover
Also, get and set for accessors. Other keywords, like dynamic, final, extends, and implements are excluded. TypeScript does function and class for sure, but not the others. It seems safe to include interface, var, and const in AS3, though.
1 parent 46bec01 commit 852a83d

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,11 @@
4040
import org.apache.royale.compiler.internal.mxml.MXMLData;
4141
import org.apache.royale.compiler.internal.mxml.MXMLDialect;
4242
import org.apache.royale.compiler.mxml.IMXMLTagData;
43-
import org.apache.royale.compiler.tree.ASTNodeID;
4443
import org.apache.royale.compiler.tree.as.IASNode;
4544
import org.apache.royale.compiler.tree.as.IClassNode;
45+
import org.apache.royale.compiler.tree.as.IDefinitionNode;
4646
import org.apache.royale.compiler.tree.as.IExpressionNode;
4747
import org.apache.royale.compiler.tree.as.IFunctionCallNode;
48-
import org.apache.royale.compiler.tree.as.IFunctionNode;
4948
import org.apache.royale.compiler.tree.as.IIdentifierNode;
5049
import org.apache.royale.compiler.tree.as.IKeywordNode;
5150
import org.apache.royale.compiler.tree.as.ILanguageIdentifierNode;
@@ -324,11 +323,24 @@ private Hover actionScriptHover(IASNode offsetNode, ILspProject project) {
324323
}
325324
}
326325

327-
if (definition == null && parentNode instanceof IFunctionNode && offsetNode instanceof IKeywordNode) {
326+
if (definition == null && parentNode instanceof IDefinitionNode && offsetNode instanceof IKeywordNode) {
328327
IKeywordNode keywordNode = (IKeywordNode) offsetNode;
329-
if (ASTNodeID.KeywordFunctionID.equals(keywordNode.getNodeID())) {
330-
IFunctionNode functionNode = (IFunctionNode) parentNode;
331-
definition = functionNode.getDefinition();
328+
boolean validDefinitionKeyword = false;
329+
switch (keywordNode.getNodeID()) {
330+
case KeywordClassID:
331+
case KeywordInterfaceID:
332+
case KeywordVarID:
333+
case KeywordConstID:
334+
case KeywordFunctionID:
335+
case KeywordGetID:
336+
case KeywordSetID:
337+
validDefinitionKeyword = true;
338+
break;
339+
default:
340+
}
341+
if (validDefinitionKeyword) {
342+
IDefinitionNode definitionNode = (IDefinitionNode) parentNode;
343+
definition = definitionNode.getDefinition();
332344
}
333345
}
334346

0 commit comments

Comments
 (0)