Skip to content
Snippets Groups Projects

Generate more detailed hover-content for variable definitions

Merged Csilla Farkas requested to merge hoverContent into main
8 files
+ 172
16
Compare changes
  • Side-by-side
  • Inline
Files
8
@@ -31,7 +31,6 @@ import org.eclipse.titan.lsp.AST.IValue;
import org.eclipse.titan.lsp.AST.Identifier;
import org.eclipse.titan.lsp.AST.Location;
import org.eclipse.titan.lsp.AST.NamingConventionHelper;
import org.eclipse.titan.lsp.AST.NamingConventionHelper.NamingConventionElement;
import org.eclipse.titan.lsp.AST.ReferenceFinder;
import org.eclipse.titan.lsp.AST.ReferenceFinder.Hit;
import org.eclipse.titan.lsp.AST.Scope;
@@ -41,6 +40,7 @@ import org.eclipse.titan.lsp.AST.TTCN3.Expected_Value_type;
import org.eclipse.titan.lsp.AST.TTCN3.attributes.MultipleWithAttributes;
import org.eclipse.titan.lsp.AST.TTCN3.attributes.WithAttributesPath;
import org.eclipse.titan.lsp.AST.TTCN3.definitions.FormalParameter.parameterEvaluationType;
import org.eclipse.titan.lsp.AST.TTCN3.types.AbstractOfType;
import org.eclipse.titan.lsp.AST.TTCN3.types.ClassTypeBody;
import org.eclipse.titan.lsp.AST.TTCN3.types.Class_Type;
import org.eclipse.titan.lsp.AST.TTCN3.types.ComponentTypeBody;
@@ -508,14 +508,30 @@ public class Def_Var extends Definition {
hoverContent.addDeprecated();
}
}
IType assType = getType(getLastTimeChecked());
if (assType instanceof Referenced_Type) {
assType = assType.getTypeRefdLast(lastTimeChecked);
if (assType != null) {
String typeName = assType.getTypename();
String typeRestrictions = ((Type)assType).getRestrictionDesc();
if (assType instanceof Referenced_Type) {
typeName = ((Referenced_Type) assType).getReference().getDisplayName();
assType = assType.getTypeRefdLast(lastTimeChecked);
}
final String propDesc = ((Type)assType).getProposalDescription(new StringBuilder()).toString();
hoverContent.addStyledText("var", Ttcn3HoverContent.BOLD).addText(" ");
hoverContent.addStyledText(assType != null ? typeName : "<?>");
hoverContent.addText(" - ").addStyledText(propDesc);
if (typeRestrictions != null) {
hoverContent.addText("\n\n")
.addStyledText("Restrictions:", Ttcn3HoverContent.ITALIC)
.addText("\n\n")
.addText(typeRestrictions);
}
hoverContent.addText("\n\n");
}
hoverContent.addStyledText("var", Ttcn3HoverContent.BOLD).addText(" ");
hoverContent.addStyledText(assType != null ? assType.getTypename() : "<?>")
.addStyledText(" ").addText(getFullNameForDocComment());
if (assType instanceof Class_Type) {
final Class_Type ct = (Class_Type)assType;
@@ -523,12 +539,27 @@ public class Def_Var extends Definition {
ct.addClassMembers(this, hoverContent, dc);
}
}
if (assType instanceof IMemberInfo) {
final IMemberInfo mInfo = (IMemberInfo)assType;
mInfo.addMembersContent(hoverContent);
}
if (assType instanceof AbstractOfType) {
final IType ofType = ((AbstractOfType)assType).getOfType();
final IType elementType = ((Type)ofType).getTypeRefdLast(lastTimeChecked);
hoverContent
.addText("\n\n")
.addStyledText("Element:", Ttcn3HoverContent.BOLD)
.addText("\n\n")
.addText(((Type)elementType).getTypename())
.addText("\n\n");
if (elementType instanceof IMemberInfo) {
(((IMemberInfo)elementType)).addMembersContent(hoverContent);
}
}
if (dc != null) {
dc.addDescsContent(hoverContent);
dc.addStatusContent(hoverContent);
Loading