Return null semantic tokens by default rather than empty list

This commit is contained in:
aboyko
2024-05-08 22:56:06 -04:00
parent 5385c5f810
commit 8f691f3575
2 changed files with 7 additions and 6 deletions

View File

@@ -24,15 +24,15 @@ public interface SemanticTokensHandler {
SemanticTokensWithRegistrationOptions getCapability();
default SemanticTokens semanticTokensFull(SemanticTokensParams params, CancelChecker cancelChecker) {
return new SemanticTokens();
return null;
}
default Either<SemanticTokens, SemanticTokensDelta> semanticTokensFullDelta(SemanticTokensDeltaParams params, CancelChecker cancelChecker) {
return Either.forLeft(new SemanticTokens());
return null;
}
default SemanticTokens semanticTokensRange(SemanticTokensRangeParams params, CancelChecker cancelChecker) {
return new SemanticTokens();
return null;
}
}

View File

@@ -69,15 +69,16 @@ public class JdtSemanticTokensHandler implements SemanticTokensHandler {
return cuCache.withCompilationUnit(jp, URI.create(params.getTextDocument().getUri()), cu -> computeTokens(applicableTokenProviders, jp, cu));
}
}
return new SemanticTokens();
return null;
}
private SemanticTokens computeTokens(List<JdtSemanticTokensProvider> applicableTokenProviders, IJavaProject jp, CompilationUnit cu) {
if (cu == null) {
return new SemanticTokens();
return null;
}
List<SemanticTokenData> tokensData = applicableTokenProviders.stream().map(tp -> tp.computeTokens(jp, cu)).flatMap(t -> t.stream()).collect(Collectors.toList());
return new SemanticTokens(SemanticTokensUtils.mapTokensDataToLsp(tokensData, legend, offset -> cu.getLineNumber(offset) - 1, cu::getColumnNumber));
List<Integer> toLsp = SemanticTokensUtils.mapTokensDataToLsp(tokensData, legend, offset -> cu.getLineNumber(offset) - 1, cu::getColumnNumber);
return toLsp.isEmpty() ? null : new SemanticTokens(toLsp);
}
}