Skip to content

Commit

Permalink
improvement: Add report when tokenization fails
Browse files Browse the repository at this point in the history
  • Loading branch information
tgodzik committed Sep 10, 2024
1 parent 6bb4250 commit 612fade
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 5 deletions.
3 changes: 2 additions & 1 deletion metals-bench/src/main/scala/bench/SemanticTokensBench.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import scala.meta.internal.io.FileIO
import scala.meta.internal.jdk.CollectionConverters._
import scala.meta.internal.metals.CompilerVirtualFileParams
import scala.meta.internal.metals.EmptyCancelToken
import scala.meta.internal.metals.EmptyReportContext
import scala.meta.internal.metals.ScalaVersions
import scala.meta.internal.metals.SemanticTokensProvider
import scala.meta.io.AbsolutePath
Expand Down Expand Up @@ -92,7 +93,7 @@ class SemanticTokensBench extends PcBenchmark {
AbsolutePath(Paths.get(vFile.uri)),
isScala3,
MetalsTestEnrichments.emptyTrees,
)
)(EmptyReportContext)
}

def currentHighlight: String = highlightRequests(currentHighlightRequest)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,24 @@ object SemanticTokensProvider {
path: AbsolutePath,
isScala3: Boolean,
trees: Trees,
): List[Integer] = {
)(implicit rc: ReportContext): List[Integer] = {
// no semantic data was available, we can revert to default highlighting
if (nodes.isEmpty) {
if (params.uri().toString().isScalaFilename)
scribe.warn("Could not find semantic tokens for: " + params.uri())
List.empty[Integer]
} else {
val tokens = Try(getTokens(isScala3, params.text())) match {
case Failure(_) =>
case Failure(t) =>
rc.unsanitized.create(
Report(
"semantic-tokens-provider",
params.text(),
s"Could not find semantic tokens for: ${params.uri()}",
Some(params.uri().toString()),
error = Some(t),
)
)
/* Try to get tokens from trees as a fallback to avoid
* things being unhighlighted too often.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package tests.feature

import scala.meta.internal.metals.CompilerVirtualFileParams
import scala.meta.internal.metals.EmptyCancelToken
import scala.meta.internal.metals.EmptyReportContext
import scala.meta.internal.metals.MetalsEnrichments._
import scala.meta.internal.metals.SemanticTokensProvider
import scala.meta.internal.metals.{BuildInfo => V}
Expand Down Expand Up @@ -40,7 +41,7 @@ class SemanticTokensScala3ExpectSuite(
file.file,
isScala3 = true,
MetalsTestEnrichments.emptyTrees,
)
)(EmptyReportContext)

TestSemanticTokens.semanticString(
file.code,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package tests

import scala.meta.internal.metals.CompilerVirtualFileParams
import scala.meta.internal.metals.EmptyCancelToken
import scala.meta.internal.metals.EmptyReportContext
import scala.meta.internal.metals.MetalsEnrichments._
import scala.meta.internal.metals.SemanticTokensProvider
import scala.meta.internal.pc.ScalaPresentationCompiler
Expand Down Expand Up @@ -30,7 +31,7 @@ class SemanticTokensExpectSuite extends DirectoryExpectSuite("semanticTokens") {
file.file,
isScala3 = false,
MetalsTestEnrichments.emptyTrees,
)
)(EmptyReportContext)

TestSemanticTokens.semanticString(
file.code,
Expand Down

0 comments on commit 612fade

Please sign in to comment.