Skip to content

Commit

Permalink
reference_contributor.md: Use PsiPolyVariantReferenceBase
Browse files Browse the repository at this point in the history
  • Loading branch information
karollewandowski committed Dec 17, 2024
1 parent 14fef32 commit 980a24e
Showing 1 changed file with 9 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,47 +6,43 @@
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementResolveResult;
import com.intellij.psi.PsiPolyVariantReferenceBase;
import com.intellij.psi.ResolveResult;
import org.intellij.sdk.language.psi.SimpleProperty;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;

final class SimpleReference extends PsiReferenceBase<PsiElement> implements PsiPolyVariantReference {
final class SimpleReference extends PsiPolyVariantReferenceBase<PsiElement> {

private final String key;

SimpleReference(@NotNull PsiElement element, TextRange textRange) {
super(element, textRange);
key = element.getText().substring(textRange.getStartOffset(), textRange.getEndOffset());
key = element.getText()
.substring(textRange.getStartOffset(), textRange.getEndOffset());
}

@Override
public ResolveResult @NotNull [] multiResolve(boolean incompleteCode) {
Project project = myElement.getProject();
final List<SimpleProperty> properties = SimpleUtil.findProperties(project, key);
List<SimpleProperty> properties = SimpleUtil.findProperties(project, key);
List<ResolveResult> results = new ArrayList<>();
for (SimpleProperty property : properties) {
results.add(new PsiElementResolveResult(property));
}
return results.toArray(new ResolveResult[0]);
}

@Nullable
@Override
public PsiElement resolve() {
ResolveResult[] resolveResults = multiResolve(false);
return resolveResults.length == 1 ? resolveResults[0].getElement() : null;
}

@Override
public Object @NotNull [] getVariants() {
Project project = myElement.getProject();
List<SimpleProperty> properties = SimpleUtil.findProperties(project);
List<LookupElement> variants = new ArrayList<>();
for (final SimpleProperty property : properties) {
for (SimpleProperty property : properties) {
if (property.getKey() != null && !property.getKey().isEmpty()) {
variants.add(LookupElementBuilder
.create(property).withIcon(SimpleIcons.FILE)
Expand Down

0 comments on commit 980a24e

Please sign in to comment.