diff --git a/lsif-java/src/main/scala/com/sourcegraph/lsif_java/commands/SnapshotLsifCommand.scala b/lsif-java/src/main/scala/com/sourcegraph/lsif_java/commands/SnapshotLsifCommand.scala index 449e5d7b..4a9e6924 100644 --- a/lsif-java/src/main/scala/com/sourcegraph/lsif_java/commands/SnapshotLsifCommand.scala +++ b/lsif-java/src/main/scala/com/sourcegraph/lsif_java/commands/SnapshotLsifCommand.scala @@ -49,8 +49,8 @@ case class SnapshotLsifCommand( @PositionalArguments() input: List[Path] = List(Paths.get("dump.lsif")) ) extends Command { - def sourceroot: Path = AbsolutePath.of(app.env.workingDirectory) - private val finalOutput = AbsolutePath.of(output, sourceroot) + def sourceroot: Path = AbsolutePath.of(app.env.workingDirectory).normalize() + private val finalOutput = AbsolutePath.of(output, sourceroot).normalize() def run(): Int = { Files.walkFileTree(finalOutput, new DeleteVisitor()) @@ -61,7 +61,7 @@ case class SnapshotLsifCommand( } { val docPath = AbsolutePath .of(Paths.get(doc.getUri), sourceroot) - .toRealPath() + .normalize() if (docPath.toAbsolutePath.startsWith(sourceroot)) { SnapshotCommand.writeSnapshot(doc, finalOutput) } @@ -252,7 +252,7 @@ object SnapshotLsifCommand { .trim() s"hoverResult(${node.getId}) ${contents}" case ("vertex", "moniker") => - s"moniker ${node.getIdentifier}" + s"${node.getKind} ${node.getIdentifier}" case ("vertex", "range") => val i = input(node) val p = Position.range( diff --git a/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/LsifWriter.java b/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/LsifWriter.java index ef5a5b1a..f0c80f23 100644 --- a/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/LsifWriter.java +++ b/lsif-semanticdb/src/main/java/com/sourcegraph/lsif_semanticdb/LsifWriter.java @@ -5,6 +5,7 @@ import com.sourcegraph.lsif_protocol.LsifObject; import com.sourcegraph.lsif_protocol.LsifPosition; import com.sourcegraph.semanticdb_javac.Semanticdb; +import com.sourcegraph.semanticdb_javac.SemanticdbSymbols; import java.io.BufferedOutputStream; import java.io.IOException; import java.nio.file.Files; @@ -112,7 +113,8 @@ public void emitMonikerEdge(int outV, int inV) { } public int emitMonikerVertex(String symbol, boolean isExportedSymbol) { - String kind = isExportedSymbol ? "export" : "import"; + String kind = + SemanticdbSymbols.isLocal(symbol) ? "local" : isExportedSymbol ? "export" : "import"; return emitObject( lsifVertex("moniker").setKind(kind).setScheme("semanticdb").setIdentifier(symbol)); } diff --git a/tests/snapshots/src/main/generated/index-semanticdb/locals b/tests/snapshots/src/main/generated/index-semanticdb/locals index 6203bb55..26ea6607 100644 --- a/tests/snapshots/src/main/generated/index-semanticdb/locals +++ b/tests/snapshots/src/main/generated/index-semanticdb/locals @@ -17,41 +17,41 @@ public class Example { ────────────────────────────────── │ LSIF Graph for symbol 'local0' │ ────────────────────────────────── - ╭──────────╮ - │project(2)│ - ╰─────┬────╯ - │ - ╭───────────────╯ + ╭──────────╮ + │project(2)│ + ╰─────┬────╯ + │ + ╭──────────────╯ │ v ╭─────────────────────────────╮ ╭───────────────────╮ │document example/Example.java│ │referenceResult(48)│ - ╰──────┬─────────────┬────────╯ ╰────┬───────┬──────╯ - │ │ │^ │ - ╭───────╯ │ ╭───────────────╯│ ╰───╮ - │ │ │ │ │ - │ v v │ │ - │ ╭──────────────────╮ │ │ - │ │range(56) 3:46 'n'│ │ │ - │ ╰────────────┬─────╯ │ │ - │ │ ╭───────────╯ │ - │ v │ │ - │ ╭─────────┴───╮ │ - │ │resultSet(43)│ │ - │ ╰──┬─────┬───┬╯ │ - │ │ │ ^│ │ - │ v │ ││ │ - │ ╭────────────────────╮ │ ││ │ - │ │definitionResult(46)│ │ ││ │ - │ ╰────────────┬───────╯ │ ││ │ - │ │ │ ││ │ - │ │ ╰──┼┼──────────────╮ │ - │ │ ╭──────────╯│ │ │ - ╰───────────────╮ │ │ │ │ │ - ╭────────────┼───┼───┼───────────╯ │ │ - │ │ │ │ ╭──────────────────────┼────╯ - │ │ │ │ │ │ - v v v │ v v - ╭──────────────╮ ╭───────────┴──────╮ ╭───────────────────────────────────╮ - │moniker local0│ │range(50) 3:34 'n'│ │hoverResult(54) ```java\nint n\n```│ - ╰──────────────╯ ╰──────────────────╯ ╰───────────────────────────────────╯ + ╰─────┬────────────┬──────────╯ ╰────┬───────────┬──╯ + │ │ ^ │ │ + ╭──────╯ │ │ │ │ + │ │ ╭───────────────┼─╯ │ + │ │ │ │ │ + │ v v │ │ + │ ╭──────────────────╮ │ │ + │ │range(56) 3:46 'n'│ │ │ + │ ╰────────────┬─────╯ │ │ + │ │ ╭──────────╯ │ + │ v │ │ + │ ╭─────────┴───╮ │ + │ │resultSet(43)│ │ + │ ╰──┬──┬──┬────╯ │ + │ │ │ │ ^ │ + │ ╭─────────────────────┼──╯ │ │ │ + │ │ v │ │ │ + │ │ ╭────────────────────╮ │ │ │ + │ │ │definitionResult(46)│ │ │ │ + │ │ ╰──────────┬─────────╯ │ │ │ + │ │ │ ╭───────┼──╯ │ + │ │ │ │ ╰──────────────────╮ │ + ╰─┼───────────╮ │ │ │ │ + │ │ │ │ ╭──────────────────────┼──────╯ + │ │ │ │ │ │ + v v v │ v v + ╭────────────╮ ╭───────────┴──────╮ ╭───────────────────────────────────╮ + │local local0│ │range(50) 3:34 'n'│ │hoverResult(54) ```java\nint n\n```│ + ╰────────────╯ ╰──────────────────╯ ╰───────────────────────────────────╯ diff --git a/tests/snapshots/src/main/generated/index-semanticdb/multifile b/tests/snapshots/src/main/generated/index-semanticdb/multifile index ed7ae474..7d02bc2e 100644 --- a/tests/snapshots/src/main/generated/index-semanticdb/multifile +++ b/tests/snapshots/src/main/generated/index-semanticdb/multifile @@ -24,11 +24,11 @@ public class Example2 { ───────────────────────────────────────────── │ LSIF Graph for symbol 'example/Example1#' │ ───────────────────────────────────────────── - ╭──────────╮ - │project(2)│ - ╰───┬─────┬╯ - │ │ - ╭─────────────────────────────╯ ╰─────────────────╮ + ╭──────────╮ + │project(2)│ + ╰───┬┬─────╯ + ││ + ╭────────────────────────────╯╰───────────────────────╮ │ │ v │ ╭──────────────────────────────╮ │ ╭──────────────────╮ @@ -42,26 +42,25 @@ public class Example2 { │range(58) 3:9 'Example1'│ │ ││ ╰─────────────┬──────────╯ │ ││ │ ╭───────────────────────────────────────────────────┼───────────┼╯ - │ │ │ ╰───────────────────────────╮ - v │ │ │ - ╭────────┴───╮ │ │ - │resultSet(4)│ │ │ - ╰───┬───┬───┬╯ │ │ - │ │ ^ │ │ │ - ╭────────────╯ │ │ │ │ │ - │ │ │ │ │ │ - v │ │ │ v │ - ╭───────────────────╮ │ │ │ ╭──────────────────────────────╮ │ - │definitionResult(7)│ │ │ │ │document example/Example1.java│ │ - ╰─────────┬─────────╯ │ │ │ ╰───────────────┬──────────────╯ │ - │ │ │ │ │ │ - │ │ │ │ ╰──────────────────────────────────╮ │ - │ │ ╰─┼──────────────────────────────────────────────────────────────────────────────╮ │ │ - ╰────────────────┼───┼─────────────────────────────────────────────────────────────────────────╮ │ │ │ - ╰───┼──────────────────────────╮ │ │ │ │ - ╭──────────────────────────╯ │ │ │ │ │ - │ │ │ │ │ │ - v v v │ v v - ╭─────────────────────────╮ ╭─────────────────────────────────────────────────────────────────────────────╮ ╭──────────┴──────────────╮ - │moniker example/Example1#│ │hoverResult(15) Example1 docstring \n---\n```java\npublic class Example1\n```│ │range(11) 3:13 'Example1'│ - ╰─────────────────────────╯ ╰─────────────────────────────────────────────────────────────────────────────╯ ╰─────────────────────────╯ + │ │ │ ╰──────────────────────────╮ + v │ │ │ + ╭────────┴───╮ │ │ + │resultSet(4)│ │ │ + ╰───┬───┬──┬─╯ │ │ + │ │ ^│ │ │ + ╭────────────╯ │ ││ │ │ + │ │ ││ │ │ + v │ ││ v │ + ╭───────────────────╮ │ ││ ╭──────────────────────────────╮ │ + │definitionResult(7)│ │ ││ │document example/Example1.java│ │ + ╰─────────┬─────────╯ │ ││ ╰───────────────┬──────────────╯ │ + │ │ ││ │ │ + │ │ ││ ╰─────────────────────────────────╮ │ + │ │ ╰┼──────────────────────────────────────────────────────────────────────────────╮ │ │ + ╰────────────────┼──┼─────────────────────────────────────────────────────────────────────────╮ │ │ │ + ╰──┼─────────────────────────────────────────────────────╮ │ │ │ │ + │ │ │ │ │ │ + v v v │ v v + ╭─────────────────────────────────────────────────────────────────────────────╮ ╭────────────────────────╮ ╭──────────┴──────────────╮ + │hoverResult(15) Example1 docstring \n---\n```java\npublic class Example1\n```│ │export example/Example1#│ │range(11) 3:13 'Example1'│ + ╰─────────────────────────────────────────────────────────────────────────────╯ ╰────────────────────────╯ ╰─────────────────────────╯ diff --git a/tests/snapshots/src/main/generated/index-semanticdb/packages b/tests/snapshots/src/main/generated/index-semanticdb/packages index ed813e20..c5e326b0 100644 --- a/tests/snapshots/src/main/generated/index-semanticdb/packages +++ b/tests/snapshots/src/main/generated/index-semanticdb/packages @@ -40,20 +40,20 @@ public class Example { ╰─────────────────────┬─────╯ ╰───────────────┬──────────────╯ ╰──────┬───────────────────────╯ │ ^ │ │ │ ╭──────────────────────╯ │ │ ╰────────────────────╮ │ │ - ╰──┼────────────────────────────────╮ │ │ │ - v │ v v │ - ╭─────────────╮ │ ╭─────────┴───╮ - │resultSet(72)│ │ │resultSet(20)│ - ╰─────────┬┬──╯ │ ╰───────────┬─╯ - ││ │ │ - ╰┼──────────────────────────╮ │ │ - v │ │ v - ╭──────────────────────────────────────────────────╮ │ │ ╭───────────────────────────────────╮ - │moniker org/hamcrest/MatcherAssert#assertThat(+2).│ │ │ │moniker org/hamcrest/MatcherAssert#│ - ╰───────────────────────┬──────────────────────────╯ │ │ ╰─────────────────┬─────────────────╯ - │ │ ╰───────────────────┼─╮ - │ ╰────────────────╮ │ │ - │ ╭───────────────────────────────┼────╯ │ + ╰──┼───────────────────────────────╮ │ │ │ + v │ v v │ + ╭─────────────╮ │ ╭─────────┴───╮ + │resultSet(72)│ │ │resultSet(20)│ + ╰─────────┬┬──╯ │ ╰──────────┬──╯ + ││ │ │ + ╰┼─────────────────────────╮ │ │ + v │ │ v + ╭─────────────────────────────────────────────────╮ │ │ ╭──────────────────────────────────╮ + │import org/hamcrest/MatcherAssert#assertThat(+2).│ │ │ │import org/hamcrest/MatcherAssert#│ + ╰───────────────────────┬─────────────────────────╯ │ │ ╰─────────────────┬────────────────╯ + │ │ ╰───────────────────┼──╮ + │ ╰─────────────────╮ │ │ + │ ╭───────────────────────────────┼───╯ │ │ │ │ │ v v v │ ╭────────────────────────────────────────╮ ╭─────────────┴─────╮ diff --git a/tests/snapshots/src/main/generated/index-semanticdb/packages-jvm b/tests/snapshots/src/main/generated/index-semanticdb/packages-jvm index d7772be3..918e6beb 100644 --- a/tests/snapshots/src/main/generated/index-semanticdb/packages-jvm +++ b/tests/snapshots/src/main/generated/index-semanticdb/packages-jvm @@ -29,19 +29,19 @@ public class Example { │range(37) 2:16 'String'│ ╰───────┬───────────────╯ │ ^ - │ ╰╮ - v │ - ╭─────────────╮ │ - │resultSet(30)│ │ - ╰───────┬─┬───╯ │ - │ │ │ - │ ╰───────────┼╮ + │ ╰─╮ + v │ + ╭─────────────╮ │ + │resultSet(30)│ │ + ╰───────┬─┬───╯ │ + │ │ │ + │ ╰───────────╮│ v ││ - ╭─────────────────────────╮││ - │moniker java/lang/String#│││ - ╰─────┬───────────────────╯││ + ╭────────────────────────╮ ││ + │import java/lang/String#│ ││ + ╰─────┬──────────────────╯ ││ │ ││ - v │v - ╭──────────╮ ╭─────────────┴─────╮ + v v│ + ╭──────────╮ ╭──────────────┴────╮ │jdk/11(33)│ │referenceResult(35)│ ╰──────────╯ ╰───────────────────╯ diff --git a/tests/snapshots/src/main/generated/index-semanticdb/reference b/tests/snapshots/src/main/generated/index-semanticdb/reference index 1f200e8c..d03f61c0 100644 --- a/tests/snapshots/src/main/generated/index-semanticdb/reference +++ b/tests/snapshots/src/main/generated/index-semanticdb/reference @@ -16,44 +16,41 @@ public class Example { ──────────────────────────────────────────── │ LSIF Graph for symbol 'example/Example#' │ ──────────────────────────────────────────── - ╭──────────╮ - │project(2)│ - ╰─────┬────╯ - │ - ╭────────────────────────╯ - │ - v - ╭─────────────────────────────╮ ╭──────────────────╮ - │document example/Example.java│ │referenceResult(9)│ - ╰┬─────────────────────┬──────╯ ╰────┬─────────┬───╯ - │ │ ^ │ │ - ╭─────────────╯ │ ╭────────────────────╯ │ │ - │ │ ╭────────┼───────────────────────╯ │ - │ │ │ │ │ - │ v v │ │ - │ ╭───────────────────────╮│ │ - │ │range(30) 3:2 'Example'││ │ - │ ╰────────────────────┬──╯│ │ - │ │ │ │ - │ v │ │ - │ ╭────────┴───╮ │ - │ │resultSet(4)│ │ - │ ╰───┬───┬┬───╯ │ - │ │ ││^ │ - │ ╭─────────────────────╯ │││ │ - │ │ │││ │ - │ v │││ │ - │ ╭───────────────────╮ │││ │ - │ │definitionResult(7)│ │││ │ - │ ╰──────┬────────────╯ │││ │ - │ │ │││ │ - │ │ ╰┼┼─────────────────────────╮ │ - ╰─────────────────╮ │ ││ │ │ - ╭──────────────────┼────┼─────────────────────────────╯│ │ │ - │ │ │ ╭─────────────────────────╯ │ │ - │ │ │ │ ╭──────────────────────────────────────────────┼──────╯ - │ │ │ │ │ │ - v v v │ v v - ╭────────────────────────╮ ╭──────────────┴─────────╮ ╭───────────────────────────────────────────────────────────────────────────────╮ - │moniker example/Example#│ │range(11) 2:13 'Example'│ │hoverResult(15) Docstring for Example \n---\n```java\npublic class Example\n```│ - ╰────────────────────────╯ ╰────────────────────────╯ ╰───────────────────────────────────────────────────────────────────────────────╯ + ╭──────────╮ + │project(2)│ + ╰─────┬────╯ + │ + ╭────────────────────────╯ + │ + v + ╭─────────────────────────────╮ ╭──────────────────╮ + │document example/Example.java│ │referenceResult(9)│ + ╰─┬───────────────────┬───────╯ ╰────┬───────────┬─╯ + │ │ ^ │ │ + │ │ ╭─────────────────╯ │ ╰╮ + │ │ ╭──────────┼─────────────────────╯ │ + │ │ │ │ │ + │ v v │ │ + │ ╭───────────────────────╮ │ │ + │ │range(30) 3:2 'Example'│ │ │ + │ ╰──────────────────────┬╯ │ │ + │ │ │ │ + │ v │ │ + │ ╭────────┴───╮ │ + │ │resultSet(4)│ │ + │ ╰───┬┬──┬────╯ │ + │ ││ │ ^ │ + │ ╭───────────────────────╯│ │ ╰────────────────────────────╮ │ + ╰─────────┼────────────────────────┼──┼────────────────────╮ │ │ + v │ │ │ │ │ + ╭───────────────────╮ │ │ │ │ │ + │definitionResult(7)│ │ │ │ │ │ + ╰─────────┬─────────╯ │ │ │ │ │ + │ ╭──────────────────────╯ │ │ │ │ + │ │ ╰────────────────────┼─────────┼────┼──────────────────╮ + ╰─┼──────────────────────────────────────────────┼────╮ │ │ │ + │ │ │ │ │ │ + v v v │ v v + ╭───────────────────────────────────────────────────────────────────────────────╮ ╭──────────────┴─────────╮ ╭───────────────────────╮ + │hoverResult(15) Docstring for Example \n---\n```java\npublic class Example\n```│ │range(11) 2:13 'Example'│ │export example/Example#│ + ╰───────────────────────────────────────────────────────────────────────────────╯ ╰────────────────────────╯ ╰───────────────────────╯ diff --git a/tests/snapshots/src/main/scala/tests/LsifGraphSnapshotGenerator.scala b/tests/snapshots/src/main/scala/tests/LsifGraphSnapshotGenerator.scala index d71ac4fd..12f7fa16 100644 --- a/tests/snapshots/src/main/scala/tests/LsifGraphSnapshotGenerator.scala +++ b/tests/snapshots/src/main/scala/tests/LsifGraphSnapshotGenerator.scala @@ -150,6 +150,10 @@ class LsifGraphSnapshotGenerator extends SnapshotGenerator { ), sourceroot ) + assert( + Files.isDirectory(outputSnapshot), + s"snapshot-lsif command did not create directory $outputSnapshot" + ) val snapshotLsif = FileLayout.asString(outputSnapshot) val obtained = new StringBuilder() .header("Source code")