Skip to content

Commit 7fe3e83

Browse files
committed
Show deprecated info in Documentation view
1 parent 849ee7c commit 7fe3e83

File tree

4 files changed

+55
-41
lines changed

4 files changed

+55
-41
lines changed

src/main/java/com/intellij/plugins/haxe/ide/documentation/providers/HaxeDocumentationProvider.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
import com.intellij.plugins.haxe.lang.parser.HaxePsiDocCommentImpl;
2929
import com.intellij.plugins.haxe.lang.psi.*;
3030
import com.intellij.plugins.haxe.lang.psi.fakes.HaxeFakePsiElement;
31+
import com.intellij.plugins.haxe.metadata.HaxeMetadataList;
32+
import com.intellij.plugins.haxe.metadata.psi.HaxeMeta;
33+
import com.intellij.plugins.haxe.metadata.psi.HaxeMetadataContent;
3134
import com.intellij.plugins.haxe.model.*;
3235
import com.intellij.plugins.haxe.model.evaluator.HaxeExpressionEvaluator;
3336
import com.intellij.plugins.haxe.model.evaluator.HaxeExpressionEvaluatorContext;
@@ -69,6 +72,7 @@ public String getQuickNavigateInfo(PsiElement element, PsiElement originalElemen
6972
resolveTypeAndMakeHeader(mainBuilder, namedComponent);
7073
return mainBuilder.toString();
7174
}
75+
appendDeprecatedInfo(namedComponent, mainBuilder);
7276
switch (type) {
7377
case CLASS, ABSTRACT, INTERFACE, TYPEDEF, ENUM -> processType(mainBuilder, namedComponent, renderer);
7478
case METHOD, FUNCTION -> processMethod(mainBuilder, namedComponent, renderer);
@@ -132,6 +136,7 @@ public String generateDoc(PsiElement element, PsiElement originalElement) {
132136
resolveTypeAndMakeHeader(mainBuilder, namedComponent);
133137
return mainBuilder.toString();
134138
}
139+
appendDeprecatedInfo(namedComponent, mainBuilder);
135140
switch (type) {
136141
case CLASS, ABSTRACT, INTERFACE, TYPEDEF, ENUM -> processType(definitionBuilder, namedComponent, renderer);
137142
case METHOD, FUNCTION -> processMethod(definitionBuilder, namedComponent, renderer);
@@ -148,6 +153,40 @@ public String generateDoc(PsiElement element, PsiElement originalElement) {
148153
return mainBuilder.toString();
149154
}
150155

156+
private void appendDeprecatedInfo(HaxeNamedComponent namedComponent, HtmlBuilder mainBuilder) {
157+
HaxeMetadataList compileTimeMeta = namedComponent.getCompileTimeMeta(HaxeMeta.DEPRECATED);
158+
if(compileTimeMeta!= null) {
159+
HaxeMeta first = compileTimeMeta.getFirst();
160+
Color color = DefaultLanguageHighlighterColors.METADATA.getDefaultAttributes().getForegroundColor();
161+
HtmlChunk.Element chunk = HtmlChunk.div().italic().bold()
162+
.attr("color", "#" + colorToHex(color))
163+
.addText("Deprecated");
164+
165+
mainBuilder.append(chunk);
166+
167+
HaxeMetadataContent content = first.getContent();
168+
if (content != null && content.getText() != null) {
169+
String contentText = content.getText();
170+
if ((contentText.startsWith("\"") || contentText.startsWith("'"))
171+
&& (contentText.endsWith("\"") || contentText.endsWith("'"))) {
172+
String message = contentText.substring(1, contentText.length() - 1); // drop string quotes
173+
174+
mainBuilder.br();
175+
HtmlChunk.Element messageChunk = HtmlChunk.div()
176+
.attr("color", "#" + colorToHex(color))
177+
.addText(message)
178+
.bold()
179+
.italic();
180+
mainBuilder.append(messageChunk);
181+
}
182+
}
183+
184+
185+
186+
mainBuilder.append(HtmlChunk.hr());
187+
}
188+
}
189+
151190
private void createModuleDocs(HtmlBuilder mainBuilder, HaxeModule module) {
152191
if( module.getModel() instanceof HaxeModuleModel model) {
153192
String qname = model.getPackageName();

src/main/java/com/intellij/plugins/haxe/ide/inspections/HaxeDeprecatedInspection.java

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,6 @@ public ProblemDescriptor[] checkFile(@NotNull PsiFile file, @NotNull final Inspe
7272
if (!(file instanceof HaxeFile)) return null;
7373
final List<ProblemDescriptor> result = new ArrayList<ProblemDescriptor>();
7474
new HaxeAnnotatingVisitor() {
75-
@Override
76-
protected void handleDeprecatedFunctionDeclaration(@NotNull HaxeMethodDeclaration function) {
77-
PsiIdentifier nameIdentifier = function.getNameIdentifier();
78-
79-
if (nameIdentifier != null) {
80-
result.add(manager.createProblemDescriptor(
81-
nameIdentifier,
82-
TextRange.from(0, nameIdentifier.getTextLength()),
83-
getDisplayName(),
84-
ProblemHighlightType.LIKE_DEPRECATED,
85-
isOnTheFly
86-
));
87-
}
88-
}
89-
9075
@Override
9176
protected void handleDeprecatedCallExpression(HaxeReferenceExpression referenceExpression) {
9277
PsiIdentifier identifier = referenceExpression.getIdentifier();
@@ -98,19 +83,6 @@ protected void handleDeprecatedCallExpression(HaxeReferenceExpression referenceE
9883
isOnTheFly
9984
));
10085
}
101-
102-
@Override
103-
protected void handleDeprecatedFieldDeclaration(HaxeFieldDeclaration varDeclaration) {
104-
PsiIdentifier nameIdentifier = varDeclaration.getNameIdentifier();
105-
106-
result.add(manager.createProblemDescriptor(
107-
nameIdentifier,
108-
TextRange.from(0, nameIdentifier.getTextLength()),
109-
getDisplayName(),
110-
ProblemHighlightType.LIKE_DEPRECATED,
111-
isOnTheFly
112-
));
113-
}
11486
}.visitFile(file);
11587
return ArrayUtil.toObjectArray(result, ProblemDescriptor.class);
11688
}

src/main/java/com/intellij/plugins/haxe/lang/psi/HaxeClass.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -164,18 +164,6 @@ static HaxeClass createUnknownClass(ASTNode node) {
164164
HaxeNamedComponent findArrayAccessGetter(@Nullable HaxeGenericResolver resolver);
165165
HaxeNamedComponent findArrayAccessSetter(@Nullable HaxeGenericResolver resolver);
166166

167-
default boolean hasMeta(HaxeMetadataTypeName meta) {
168-
return HaxeMetadataUtils.hasMeta(this, meta);
169-
}
170-
171-
default boolean hasCompileTimeMeta(HaxeMetadataTypeName meta) {
172-
return HaxeMetadataUtils.hasMeta(this, HaxeMetadataCompileTimeMeta.class, meta);
173-
}
174-
175-
default HaxeMetadataList getCompileTimeMeta(HaxeMetadataTypeName meta) {
176-
return HaxeMetadataUtils.getMetadataList(this, HaxeMetadataCompileTimeMeta.class, meta);
177-
}
178-
179167
PsiPackage getPackage();
180168

181169
HaxeModule getModule();

src/main/java/com/intellij/plugins/haxe/lang/psi/HaxeNamedComponent.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
package com.intellij.plugins.haxe.lang.psi;
1919

2020
import com.intellij.plugins.haxe.HaxeComponentType;
21-
import com.intellij.plugins.haxe.lang.lexer.HaxeTokenTypes;
21+
import com.intellij.plugins.haxe.metadata.HaxeMetadataList;
22+
import com.intellij.plugins.haxe.metadata.psi.HaxeMetadataCompileTimeMeta;
23+
import com.intellij.plugins.haxe.metadata.psi.impl.HaxeMetadataTypeName;
24+
import com.intellij.plugins.haxe.metadata.util.HaxeMetadataUtils;
2225
import com.intellij.psi.PsiElement;
2326
import com.intellij.psi.tree.IElementType;
2427
import org.jetbrains.annotations.Nullable;
@@ -50,4 +53,16 @@ public interface HaxeNamedComponent extends HaxePsiCompositeElement {
5053
// Added the slowdowns from HaxeComponentType.typeOf()
5154
// se method description for explanation description
5255
HaxeComponentType getComponentType();
56+
57+
default boolean hasMeta(HaxeMetadataTypeName meta) {
58+
return HaxeMetadataUtils.hasMeta(this, meta);
59+
}
60+
61+
default boolean hasCompileTimeMeta(HaxeMetadataTypeName meta) {
62+
return HaxeMetadataUtils.hasMeta(this, HaxeMetadataCompileTimeMeta.class, meta);
63+
}
64+
65+
default HaxeMetadataList getCompileTimeMeta(HaxeMetadataTypeName meta) {
66+
return HaxeMetadataUtils.getMetadataList(this, HaxeMetadataCompileTimeMeta.class, meta);
67+
}
5368
}

0 commit comments

Comments
 (0)