Skip to content

Commit c7586de

Browse files
committed
fix lsif snapshot diff with extra cheese
1 parent b284432 commit c7586de

2 files changed

Lines changed: 29 additions & 5 deletions

File tree

lsif-java/src/main/scala/com/sourcegraph/lsif_java/SemanticdbPrinters.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,11 @@ object SemanticdbPrinters {
8787
.append(
8888
symbols.get(occ.getSymbol) match {
8989
case Some(info) if occ.getRole == Role.DEFINITION =>
90-
" " + new SignatureFormatter(info, symtab).formatSymbol() + ""
90+
val sig = new SignatureFormatter(info, symtab).formatSymbol()
91+
if (sig == "")
92+
" " + info.getDisplayName
93+
else
94+
" " + sig + ""
9195
case _ =>
9296
""
9397
}

lsif-java/src/main/scala/com/sourcegraph/lsif_java/commands/SnapshotLsifCommand.scala

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import scala.collection.mutable
1313
import scala.collection.mutable.ArrayBuffer
1414
import scala.collection.mutable.ListBuffer
1515
import scala.jdk.CollectionConverters._
16-
1716
import com.google.common.graph.EndpointPair
1817
import com.google.common.graph.Graph
1918
import com.google.common.graph.GraphBuilder
@@ -27,10 +26,8 @@ import com.sourcegraph.lsif_protocol.LsifHover
2726
import com.sourcegraph.lsif_protocol.LsifObject
2827
import com.sourcegraph.lsif_protocol.LsifPosition
2928
import com.sourcegraph.semanticdb_javac.Semanticdb
30-
import com.sourcegraph.semanticdb_javac.Semanticdb.Language
31-
import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence
29+
import com.sourcegraph.semanticdb_javac.Semanticdb.{Language, SymbolInformation, SymbolOccurrence, TextDocument}
3230
import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence.Role
33-
import com.sourcegraph.semanticdb_javac.Semanticdb.TextDocument
3431
import moped.annotations.CommandName
3532
import moped.annotations.Inline
3633
import moped.annotations.PositionalArguments
@@ -119,6 +116,29 @@ object SnapshotLsifCommand {
119116
.setSymbol(symbol)
120117
.build()
121118
doc.addOccurrences(occ)
119+
120+
if (isDefinition) {
121+
val hover =
122+
(
123+
for {
124+
resultSetId <- lsif.next.get(o.getId)
125+
hoverId <- lsif.hoverEdges.get(resultSetId)
126+
hover <- lsif.hoverVertexes.get(hoverId)
127+
} yield hover
128+
).get.getContentsList.asScala.map { h =>
129+
println(h.getLanguage)
130+
h
131+
}.find { h => h.getLanguage != Language.UNKNOWN_LANGUAGE.toString.toLowerCase }.get.getValue
132+
val symInfo = SymbolInformation
133+
.newBuilder()
134+
// we cheese it a bit here, as this is less work than trying to reconstruct
135+
// a Signature from the pretty-printed Signature, with accompanying logic
136+
// to fallback to display_name in SemanticdbPrinters.scala
137+
.setDisplayName(hover)
138+
.setSymbol(symbol)
139+
.build()
140+
doc.addSymbols(symInfo)
141+
}
122142
}
123143
lsif.documents.values.map(_.build()).toList
124144
}

0 commit comments

Comments
 (0)