From 512470c865b696b93f64c145f11d8bbcc0cf6c6e Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 3 Jun 2026 21:27:37 +0200 Subject: [PATCH] Drop SemanticDB from javac compiler plug-in; emit SCIP shards directly Rebased onto origin/main (post #899 + #900). - semanticdb-javac: replace SemanticDB protobuf emission with SCIP shards (ScipShardWriter/Aggregator/Occurrences/Symbols/Signatures + ScipVisitor). - semanticdb-kotlinc: add the SCIP shard infrastructure alongside the existing SemanticDB code path (dropped fully in stacked PR B). - scip-semanticdb: ScipShardAggregator walks per-source shards, applies SymbolRewriter, and merges into a single Index. --- build.sbt | 22 +- .../commands/IndexSemanticdbCommand.scala | 11 +- .../scip_java/commands/SnapshotCommand.scala | 52 +- .../scip_semanticdb/ScipShardAggregator.java | 302 +++++++++ .../scip_semanticdb/ScipShardWalker.java | 57 ++ .../scip_semanticdb/ScipWriter.java | 4 + .../scip_semanticdb/SymbolRewriter.java | 36 ++ semanticdb-javac/BUILD | 1 + .../com/sourcegraph/semanticdb_javac/MD5.java | 32 + .../semanticdb_javac/ScipOccurrences.java | 69 +++ .../semanticdb_javac/ScipRange.java | 35 ++ .../semanticdb_javac/ScipShards.java | 100 +++ .../ScipSignatureFormatter.java | 284 +++++++++ .../semanticdb_javac/ScipSymbols.java | 25 + ...emanticdbVisitor.java => ScipVisitor.java} | 580 +++++++++--------- .../SemanticdbSignatures.java | 120 ---- .../SemanticdbTaskListener.java | 159 ++--- .../semanticdb_javac/SemanticdbTrees.java | 261 -------- .../SemanticdbTypeVisitor.java | 148 ----- .../main/java/snapshots/ClassConsumer.java | 24 +- .../java/snapshots/CompanionConsumer.java | 22 +- .../src/main/java/snapshots/KotlinClass.java | 36 +- .../main/java/snapshots/KotlinLambdas.java | 42 +- .../main/java/snapshots/ObjectKtConsumer.java | 20 +- .../src/main/kotlin/snapshots/Class.kt | 195 +++--- .../main/kotlin/snapshots/CompanionOwner.kt | 66 +- .../src/main/kotlin/snapshots/Docstrings.kt | 64 +- .../src/main/kotlin/snapshots/Functions.kt | 26 +- .../main/kotlin/snapshots/Implementations.kt | 187 +++--- .../src/main/kotlin/snapshots/Lambdas.kt | 85 +-- .../src/main/kotlin/snapshots/ObjectKt.kt | 52 +- .../semanticdb_kotlinc/SemanticdbBuilders.kt | 2 - .../semanticdb_kotlinc/AnalyzerRegistrar.kt | 2 - .../PostAnalysisExtension.kt | 42 +- .../semanticdb_kotlinc/ScipOccurrences.kt | 34 + .../semanticdb_kotlinc/ScipShardWriter.kt | 22 + .../semanticdb_kotlinc/ScipSymbols.kt | 22 + .../ScipTextDocumentBuilder.kt | 300 +++++++++ .../semanticdb_kotlinc/SemanticdbSymbols.kt | 58 +- .../SemanticdbTextDocumentBuilder.kt | 38 +- .../semanticdb_kotlinc/SemanticdbVisitor.kt | 26 +- .../semanticdb.proto | 192 ++++++ .../semanticdb_kotlinc/test/AnalyzerTest.kt | 8 +- .../test/SemanticdbSymbolsTest.kt | 8 +- .../semanticdb_kotlinc/test/Utils.kt | 2 - .../test/scala/tests/BaseBuildToolSuite.scala | 14 +- .../main/java/minimized/AbstractClasses.java | 26 +- .../java/minimized/AnnotationParameters.java | 154 ++--- .../src/main/java/minimized/Annotations.java | 92 +-- .../AnnotationsOnParameterizedTypes.java | 288 +++++---- .../main/java/minimized/AnonymousClasses.java | 54 +- .../src/main/java/minimized/Arrays.java | 28 +- .../src/main/java/minimized/ClassOf.java | 22 +- .../src/main/java/minimized/Docstrings.java | 47 +- .../src/main/java/minimized/Enums.java | 136 ++-- .../src/main/java/minimized/Fields.java | 130 ++-- .../java/minimized/ForComprehensions.java | 43 +- .../src/main/java/minimized/InnerClasses.java | 419 +++++++------ .../src/main/java/minimized/Interfaces.java | 72 +-- .../main/java/minimized/LombokBuilder.java | 114 ++-- .../src/main/java/minimized/Methods.java | 98 +-- .../java/minimized/MinimizedJavaMain.java | 95 +-- .../java/minimized/ParameterizedTypes.java | 149 ++--- .../src/main/java/minimized/Primitives.java | 66 +- .../src/main/java/minimized/RawTypes.java | 36 +- .../src/main/java/minimized/SubClasses.java | 64 +- .../src/main/java/minimized/TabIndented.java | 41 +- .../main/java/minimized/TypeAnnotations.java | 70 +-- .../main/java/minimized/TypeVariables.java | 105 ++-- .../MinimizedSnapshotScipGenerator.scala | 1 + .../src/main/scala/tests/SemanticdbFile.scala | 49 -- .../src/main/scala/tests/CompileResult.scala | 25 +- .../src/main/scala/tests/TestCompiler.scala | 34 +- .../tests/GeneratedConstructorSuite.scala | 4 +- .../tests/JavacClassesDirectorySuite.scala | 8 +- .../src/test/scala/tests/OverridesSuite.scala | 41 +- .../scala/tests/ScipAggregationSuite.scala | 92 +++ .../scala/tests/ScipShardEmissionSuite.scala | 109 ++++ .../test/scala/tests/ScipSymbolsSuite.scala | 74 +++ .../scala/tests/SnapshotCommandSuite.scala | 19 +- .../src/test/scala/tests/TargetedSuite.scala | 54 +- 81 files changed, 4075 insertions(+), 2671 deletions(-) create mode 100644 scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java create mode 100644 scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardWalker.java create mode 100644 scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/SymbolRewriter.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/MD5.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipOccurrences.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipRange.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShards.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSignatureFormatter.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java rename semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/{SemanticdbVisitor.java => ScipVisitor.java} (55%) delete mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSignatures.java delete mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTrees.java delete mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTypeVisitor.java create mode 100644 semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipOccurrences.kt create mode 100644 semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipShardWriter.kt create mode 100644 semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipSymbols.kt create mode 100644 semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipTextDocumentBuilder.kt create mode 100644 semanticdb-kotlinc/src/main/proto/com.sourcegraph.semanticdb_kotlin/semanticdb.proto delete mode 100644 tests/snapshots/src/main/scala/tests/SemanticdbFile.scala create mode 100644 tests/unit/src/test/scala/tests/ScipAggregationSuite.scala create mode 100644 tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala create mode 100644 tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala diff --git a/build.sbt b/build.sbt index 973e22502..919863e44 100644 --- a/build.sbt +++ b/build.sbt @@ -137,6 +137,8 @@ lazy val javacPlugin = project fatjarPackageSettings, javaOnlySettings, moduleName := "semanticdb-javac", + libraryDependencies += + "org.scip-code" % "scip-java-bindings" % V.scipBindings, // Scoped to compile so doc tasks (which reject -g) are unaffected. Compile / compile / javacOptions += "-g", // JDK 14+ ServiceLoader-scans the classpath for Plugin providers; our @@ -358,8 +360,14 @@ lazy val semanticdbKotlinc = project // classpath via Provided so the assembled fat-jar does not bundle it. libraryDependencies += "org.jetbrains.kotlin" % "kotlin-stdlib" % V.kotlinVersion % Provided, - // The SemanticDB proto schema and the generated Java classes live in - // semanticdbShared; we get them transitively via .dependsOn below. + // protobuf java codegen — proto file lives at src/main/proto/... + Compile / PB.protoSources := + Seq((Compile / sourceDirectory).value / "proto"), + Compile / PB.targets := + Seq(PB.gens.java(V.protobuf) -> (Compile / sourceManaged).value), + libraryDependencies += "com.google.protobuf" % "protobuf-java" % V.protobuf, + libraryDependencies += + "org.scip-code" % "scip-java-bindings" % V.scipBindings, // kotlin-compiler-embeddable is supplied by kotlinc at runtime libraryDependencies += "org.jetbrains.kotlin" % "kotlin-compiler-embeddable" % V.kotlinVersion % @@ -517,15 +525,19 @@ lazy val semanticdbKotlincMinimized = project val snapDir = (baseDirectory.value / "src" / "generatedSnapshots" / "resources") .getAbsolutePath - val scipOut = s"$tgtRoot/index.scip" + // Write `index.scip` outside the shard-scanned targetroot to avoid re-ingestion. + val scipOut = (target.value / "scip-index" / "index.scip") + .getAbsolutePath val mainCls = "com.sourcegraph.scip_java.ScipJava" Def.sequential( Compile / compile, (cli / Compile / runMain).toTask( - s" $mainCls index-semanticdb --no-emit-inverse-relationships --cwd $srcRoot --output $scipOut $tgtRoot" + s" $mainCls index-semanticdb --no-emit-inverse-relationships --use-scip-shards --cwd $srcRoot --output $scipOut $tgtRoot" ), (cli / Compile / runMain).toTask( - s" $mainCls snapshot --cwd $srcRoot --output $snapDir $tgtRoot" + s" $mainCls snapshot --cwd $srcRoot --output $snapDir ${file( + scipOut + ).getParentFile.getAbsolutePath}" ) ) } diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/IndexSemanticdbCommand.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/IndexSemanticdbCommand.scala index a2c06aee3..7a14f8d96 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/IndexSemanticdbCommand.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/IndexSemanticdbCommand.scala @@ -12,6 +12,7 @@ import com.sourcegraph.scip_java.buildtools.ClasspathEntry import com.sourcegraph.scip_semanticdb.ConsoleScipSemanticdbReporter import com.sourcegraph.scip_semanticdb.ScipSemanticdb import com.sourcegraph.scip_semanticdb.ScipSemanticdbOptions +import com.sourcegraph.scip_semanticdb.ScipShardAggregator import moped.annotations._ import moped.cli.Application import moped.cli.Command @@ -59,6 +60,11 @@ final case class IndexSemanticdbCommand( "Maven->Maven or Gradle->Gradle projects because those build tools compile sources to classfiles inside directories." ) allowExportingGlobalSymbolsFromDirectoryEntries: Boolean = true, + @Description( + "If true, aggregate *.scip shards under META-INF/scip/ instead of *.semanticdb files. " + + "Pass --use-scip-shards=false to fall back to the SemanticDB-based aggregator." + ) + useScipShards: Boolean = true, @Inline() app: Application = Application.default ) extends Command { @@ -96,7 +102,10 @@ final case class IndexSemanticdbCommand( allowEmptyIndex, allowExportingGlobalSymbolsFromDirectoryEntries ) - ScipSemanticdb.run(options) + if (useScipShards) + ScipShardAggregator.run(options) + else + ScipSemanticdb.run(options) postPackages(packages) if (!app.reporter.hasErrors()) { app.info(options.output.toString) diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/SnapshotCommand.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/SnapshotCommand.scala index 3c298ff7d..9041c9b17 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/SnapshotCommand.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/commands/SnapshotCommand.scala @@ -51,31 +51,37 @@ case class SnapshotCommand( attrs: BasicFileAttributes ): FileVisitResult = { if (scipPattern.matches(file)) { - foundScipFile = true val index = Index.parseFrom(Files.readAllBytes(file)) - val root = URI.create(index.getMetadata.getProjectRoot) - index - .getDocumentsList - .asScala - .foreach { doc => - val sourcepath = Paths.get(root.resolve(doc.getRelativePath)) - val source = - new String( - Files.readAllBytes(sourcepath), - StandardCharsets.UTF_8 + // Skip per-source shards (no project_root); only the aggregator output carries it. + val rawProjectRoot = index.getMetadata.getProjectRoot + if (rawProjectRoot.nonEmpty) { + foundScipFile = true + val projectRoot = URI.create(rawProjectRoot) + index + .getDocumentsList + .asScala + .foreach { doc => + val sourcepath = Paths.get( + projectRoot.resolve(doc.getRelativePath) ) - val document = ScipPrinters.printTextDocument( - doc, - source, - CommentSyntax.default - ) - val snapshotOutput = output.resolve(doc.getRelativePath) - Files.createDirectories(snapshotOutput.getParent) - Files.write( - snapshotOutput, - document.getBytes(StandardCharsets.UTF_8) - ) - } + val source = + new String( + Files.readAllBytes(sourcepath), + StandardCharsets.UTF_8 + ) + val document = ScipPrinters.printTextDocument( + doc, + source, + CommentSyntax.default + ) + val snapshotOutput = output.resolve(doc.getRelativePath) + Files.createDirectories(snapshotOutput.getParent) + Files.write( + snapshotOutput, + document.getBytes(StandardCharsets.UTF_8) + ) + } + } } super.visitFile(file, attrs) } diff --git a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java new file mode 100644 index 000000000..e407ddde6 --- /dev/null +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java @@ -0,0 +1,302 @@ +package com.sourcegraph.scip_semanticdb; + +import com.google.protobuf.CodedInputStream; +import org.scip_code.scip.Document; +import org.scip_code.scip.Index; +import org.scip_code.scip.Metadata; +import org.scip_code.scip.Occurrence; +import org.scip_code.scip.ProtocolVersion; +import org.scip_code.scip.Relationship; +import org.scip_code.scip.SymbolInformation; +import org.scip_code.scip.TextEncoding; +import org.scip_code.scip.ToolInfo; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.PathMatcher; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; + +/** + * Aggregates per-source {@code *.scip} shards into a single {@link Index}: walks targetroots for + * shards, rewrites placeholder symbols via {@link SymbolRewriter}, deduplicates documents by {@code + * relative_path}, attaches inverse relationships, and emits everything through {@link ScipWriter}. + */ +public final class ScipShardAggregator { + + private final ScipWriter writer; + private final ScipSemanticdbOptions options; + private final SymbolRewriter rewriter; + + public ScipShardAggregator( + ScipWriter writer, ScipSemanticdbOptions options, SymbolRewriter rewriter) { + this.writer = writer; + this.options = options; + this.rewriter = rewriter; + } + + public static void run(ScipSemanticdbOptions options) throws IOException { + try (ScipWriter writer = new ScipWriter(options)) { + PackageTable packages = new PackageTable(options); + SymbolRewriter rewriter = new SymbolRewriter(packages); + new ScipShardAggregator(writer, options, rewriter).run(); + writer.build(); + } + } + + private void run() throws IOException { + List shards = ScipShardWalker.findScipShards(options); + Collections.sort(shards); + if (options.reporter.hasErrors()) return; + if (shards.isEmpty() && !options.allowEmptyIndex) { + options.reporter.error( + "No SCIP shard files found. " + + "This typically means that `scip-java` is unable to automatically " + + "index this codebase. If you are using Gradle or Maven, please report an issue to " + + "https://github.com/sourcegraph/scip-java and include steps to reproduce. " + + "If you are using a different build tool, make sure that you have followed all " + + "of the steps from https://sourcegraph.github.io/scip-java/docs/manual-configuration.html"); + return; + } + options.reporter.startProcessing(shards.size()); + writer.emitTyped(metadata()); + + // Rewrite symbols first so the dedup key is the final form. + LinkedHashMap merged = new LinkedHashMap<>(); + InverseReferenceRelationships inverse = new InverseReferenceRelationships(); + + for (Path shard : shards) { + try { + for (Index shardIndex : parseShard(shard)) { + for (Document doc : shardIndex.getDocumentsList()) { + Document rewritten = rewriteDocument(doc); + inverse.observe(rewritten); + Document.Builder existing = merged.get(rewritten.getRelativePath()); + if (existing == null) { + merged.put(rewritten.getRelativePath(), rewritten.toBuilder()); + } else { + mergeInto(existing, rewritten); + } + } + } + } catch (IOException e) { + options.reporter.error("invalid SCIP shard: " + shard); + options.reporter.error(e); + } + options.reporter.processedOneItem(); + } + + for (Document.Builder doc : merged.values()) { + Document withInverse = inverse.applyTo(doc.build()); + writer.emitTyped(Index.newBuilder().addDocuments(withInverse).build()); + } + + options.reporter.endProcessing(); + } + + private static final PathMatcher JAR_PATTERN = + FileSystems.getDefault().getPathMatcher("glob:**.jar"); + + private List parseShard(Path shardPath) throws IOException { + if (JAR_PATTERN.matches(shardPath)) { + List out = new ArrayList<>(); + try (JarFile jar = new JarFile(shardPath.toFile())) { + Enumeration entries = jar.entries(); + while (entries.hasMoreElements()) { + JarEntry entry = entries.nextElement(); + if (entry.getName().endsWith(".scip")) { + try (InputStream is = jar.getInputStream(entry)) { + byte[] bytes = InputStreamBytes.readAll(is); + out.add(parseBytes(bytes)); + } + } + } + } + return out; + } + return Collections.singletonList(parseBytes(Files.readAllBytes(shardPath))); + } + + private static Index parseBytes(byte[] bytes) throws IOException { + CodedInputStream in = CodedInputStream.newInstance(bytes); + in.setRecursionLimit(1000); + return Index.parseFrom(in); + } + + private Document rewriteDocument(Document doc) { + Document.Builder builder = doc.toBuilder().clearOccurrences().clearSymbols(); + for (Occurrence occ : doc.getOccurrencesList()) { + builder.addOccurrences(occ.toBuilder().setSymbol(rewriter.rewrite(occ.getSymbol())).build()); + } + for (SymbolInformation info : doc.getSymbolsList()) { + builder.addSymbols(rewriteSymbol(info)); + } + return builder.build(); + } + + private SymbolInformation rewriteSymbol(SymbolInformation info) { + SymbolInformation.Builder builder = info.toBuilder(); + builder.setSymbol(rewriter.rewrite(info.getSymbol())); + if (!info.getEnclosingSymbol().isEmpty()) { + builder.setEnclosingSymbol(rewriter.rewrite(info.getEnclosingSymbol())); + } + builder.clearRelationships(); + for (Relationship rel : info.getRelationshipsList()) { + builder.addRelationships( + rel.toBuilder().setSymbol(rewriter.rewrite(rel.getSymbol())).build()); + } + return builder.build(); + } + + private void mergeInto(Document.Builder target, Document fresh) { + // Dedup occurrences by (range, symbol, roles); collapse variants differing only in + // enclosing_range, preferring the one that has it. + LinkedHashMap occurrences = new LinkedHashMap<>(); + for (Occurrence occ : target.getOccurrencesList()) putOccurrence(occurrences, occ); + for (Occurrence occ : fresh.getOccurrencesList()) putOccurrence(occurrences, occ); + target.clearOccurrences().addAllOccurrences(occurrences.values()); + + // Dedup symbols by symbol string; merge relationships of duplicates. + LinkedHashMap bySymbol = new LinkedHashMap<>(); + for (SymbolInformation info : target.getSymbolsList()) { + bySymbol.put(info.getSymbol(), info); + } + for (SymbolInformation info : fresh.getSymbolsList()) { + SymbolInformation existing = bySymbol.get(info.getSymbol()); + bySymbol.put(info.getSymbol(), existing == null ? info : mergeSymbol(existing, info)); + } + target.clearSymbols().addAllSymbols(bySymbol.values()); + } + + private static void putOccurrence(Map out, Occurrence occ) { + OccurrenceKey key = OccurrenceKey.of(occ); + Occurrence existing = out.get(key); + if (existing == null) { + out.put(key, occ); + return; + } + if (existing.getEnclosingRangeCount() == 0 && occ.getEnclosingRangeCount() > 0) { + out.put(key, occ); + } + } + + private static final class OccurrenceKey { + final String symbol; + final List range; + final int roles; + + OccurrenceKey(String symbol, List range, int roles) { + this.symbol = symbol; + this.range = range; + this.roles = roles; + } + + static OccurrenceKey of(Occurrence occ) { + return new OccurrenceKey(occ.getSymbol(), occ.getRangeList(), occ.getSymbolRoles()); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof OccurrenceKey)) return false; + OccurrenceKey other = (OccurrenceKey) o; + return roles == other.roles && symbol.equals(other.symbol) && range.equals(other.range); + } + + @Override + public int hashCode() { + return Objects.hash(symbol, range, roles); + } + } + + private static SymbolInformation mergeSymbol(SymbolInformation a, SymbolInformation b) { + SymbolInformation.Builder builder = b.toBuilder(); + LinkedHashMap rels = new LinkedHashMap<>(); + for (Relationship r : a.getRelationshipsList()) rels.put(r, r); + for (Relationship r : b.getRelationshipsList()) rels.put(r, r); + builder.clearRelationships().addAllRelationships(rels.values()); + return builder.build(); + } + + private Index metadata() { + return Index.newBuilder() + .setMetadata( + Metadata.newBuilder() + .setVersion(ProtocolVersion.UnspecifiedProtocolVersion) + .setProjectRoot(options.sourceroot.toUri().toString()) + .setTextDocumentEncoding(TextEncoding.UTF8) + .setToolInfo( + ToolInfo.newBuilder() + .setName(options.toolInfo.getName()) + .setVersion(options.toolInfo.getVersion()) + .addAllArguments(options.toolInfo.getArgumentsList()))) + .build(); + } + + /** + * Collects overriders keyed by the overridden symbol, then augments each final document with + * {@code is_implementation && is_reference} relationships pointing back at the overriders. + */ + private final class InverseReferenceRelationships { + + private final Map> map = new LinkedHashMap<>(); + private final boolean enabled = options.emitInverseRelationships; + + void observe(Document doc) { + if (!enabled) return; + for (SymbolInformation info : doc.getSymbolsList()) { + if (info.getSymbol().isEmpty() || SymbolRewriter.isLocal(info.getSymbol())) continue; + if (!supportsReferenceRelationship(info)) continue; + for (Relationship rel : info.getRelationshipsList()) { + if (!rel.getIsImplementation()) continue; + if (rel.getSymbol().isEmpty() || SymbolRewriter.isLocal(rel.getSymbol())) continue; + map.computeIfAbsent(rel.getSymbol(), k -> new ArrayList<>()).add(info.getSymbol()); + } + } + } + + Document applyTo(Document doc) { + if (!enabled || map.isEmpty()) return doc; + Document.Builder builder = doc.toBuilder().clearSymbols(); + for (SymbolInformation info : doc.getSymbolsList()) { + List overriders = map.get(info.getSymbol()); + if (overriders == null || overriders.isEmpty()) { + builder.addSymbols(info); + continue; + } + SymbolInformation.Builder s = info.toBuilder(); + for (String overrider : overriders) { + s.addRelationships( + Relationship.newBuilder() + .setSymbol(overrider) + .setIsImplementation(true) + .setIsReference(true)); + } + builder.addSymbols(s.build()); + } + return builder.build(); + } + } + + private static boolean supportsReferenceRelationship(SymbolInformation info) { + switch (info.getKind()) { + case Interface: + case Type: + case Class: + case Object: + case PackageObject: + return false; + default: + return true; + } + } +} diff --git a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardWalker.java b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardWalker.java new file mode 100644 index 000000000..2ce1725ff --- /dev/null +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardWalker.java @@ -0,0 +1,57 @@ +package com.sourcegraph.scip_semanticdb; + +import java.io.IOException; +import java.nio.file.FileSystems; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.PathMatcher; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.ArrayList; +import java.util.List; + +/** + * Collects per-source SCIP shards ({@code *.scip}) emitted by the compiler plug-ins. Restricted to + * {@code META-INF/scip/} so a previously-written aggregate {@code index.scip} in the same target + * tree is not re-ingested. + */ +public class ScipShardWalker extends SimpleFileVisitor { + private final ArrayList result; + private final ScipSemanticdbOptions options; + private final PathMatcher scipPattern = + FileSystems.getDefault().getPathMatcher("glob:**/META-INF/scip/**.scip"); + + public ScipShardWalker(ScipSemanticdbOptions options) { + this.options = options; + result = new ArrayList<>(); + } + + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + if (scipPattern.matches(file)) { + result.add(file); + } + return super.visitFile(file, attrs); + } + + @Override + public FileVisitResult visitFileFailed(Path file, IOException exc) { + options.reporter.error(exc); + return FileVisitResult.CONTINUE; + } + + /** Returns all {@code *.scip} shard files reachable from {@code options.targetroots}. */ + public static List findScipShards(ScipSemanticdbOptions options) throws IOException { + ScipShardWalker walker = new ScipShardWalker(options); + PathMatcher jarPattern = FileSystems.getDefault().getPathMatcher("glob:**.jar"); + for (Path root : options.targetroots) { + if (jarPattern.matches(root)) { + walker.result.add(root); + } else if (Files.exists(root)) { + Files.walkFileTree(root, walker); + } + } + return walker.result; + } +} diff --git a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipWriter.java b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipWriter.java index 325f2e69b..f83e66b86 100644 --- a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipWriter.java +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipWriter.java @@ -36,6 +36,10 @@ public void emitTyped(Index index) { public void build() throws IOException { close(); + Path parent = options.output.getParent(); + if (parent != null) { + Files.createDirectories(parent); + } Files.move(tmp, options.output, StandardCopyOption.REPLACE_EXISTING); } diff --git a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/SymbolRewriter.java b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/SymbolRewriter.java new file mode 100644 index 000000000..321b4ef6d --- /dev/null +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/SymbolRewriter.java @@ -0,0 +1,36 @@ +package com.sourcegraph.scip_semanticdb; + +/** + * Rewrites placeholder SCIP global symbols ({@link #PLACEHOLDER_PREFIX}) emitted by the compiler + * plug-ins into their final {@code "scip-java"} form by resolving Maven coordinates via {@link + * PackageTable}. Local symbols are passed through unchanged. + */ +public final class SymbolRewriter { + + public static final String PLACEHOLDER_PREFIX = ". . . . "; + public static final String SCIP_JAVA_SCHEME = "scip-java"; + + private final PackageTable packages; + + public SymbolRewriter(PackageTable packages) { + this.packages = packages; + } + + public static boolean isPlaceholderGlobal(String symbol) { + return symbol != null && symbol.startsWith(PLACEHOLDER_PREFIX); + } + + public static boolean isLocal(String symbol) { + return symbol != null && symbol.startsWith("local "); + } + + public String rewrite(String symbol) { + if (symbol == null || symbol.isEmpty()) return symbol; + if (isLocal(symbol)) return symbol; + if (!isPlaceholderGlobal(symbol)) return symbol; + + String descriptor = symbol.substring(PLACEHOLDER_PREFIX.length()); + Package pkg = packages.packageForSymbol(descriptor).orElse(Package.EMPTY); + return SCIP_JAVA_SCHEME + " " + pkg.scipTypedEncoding() + " " + descriptor; + } +} diff --git a/semanticdb-javac/BUILD b/semanticdb-javac/BUILD index b243e7e6d..a67ed8a82 100644 --- a/semanticdb-javac/BUILD +++ b/semanticdb-javac/BUILD @@ -32,5 +32,6 @@ java_library( resources = ["src/main/resources/META-INF/services/com.sun.source.util.Plugin"], deps = [ "//semanticdb-shared", + "@maven//:org_scip_code_scip_java_bindings", ], ) diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/MD5.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/MD5.java new file mode 100644 index 000000000..3d5be0659 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/MD5.java @@ -0,0 +1,32 @@ +package com.sourcegraph.semanticdb_javac; + +import java.nio.CharBuffer; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** Utility to compute MD5 checksums of strings. */ +public final class MD5 { + private static final char[] HEX_ARRAY; + + static { + HEX_ARRAY = "0123456789ABCDEF".toCharArray(); + } + + private static String bytesToHex(byte[] bytes) { + char[] hexChars = new char[bytes.length * 2]; + int j = 0; + while (j < bytes.length) { + int v = bytes[j] & 0xFF; + hexChars[j * 2] = HEX_ARRAY[v >>> 4]; + hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F]; + j += 1; + } + return new String(hexChars); + } + + public static String digest(CharSequence chars) throws NoSuchAlgorithmException { + MessageDigest md5 = MessageDigest.getInstance("MD5"); + return bytesToHex(md5.digest(chars.toString().getBytes())); + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipOccurrences.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipOccurrences.java new file mode 100644 index 000000000..893282719 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipOccurrences.java @@ -0,0 +1,69 @@ +package com.sourcegraph.semanticdb_javac; + +import org.scip_code.scip.Occurrence; + +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Objects; + +/** + * Accumulator that deduplicates SCIP {@link Occurrence} entries by their {@code (symbol, range, + * roles)} key. Variants that differ only in whether {@code enclosing_range} is set are collapsed, + * preferring the one that carries the enclosing range. + */ +final class ScipOccurrences { + + private final LinkedHashMap out = new LinkedHashMap<>(); + + /** Adds {@code occ}, collapsing it into any existing entry with the same {@link Key}. */ + void add(Occurrence occ) { + Key key = Key.of(occ); + Occurrence existing = out.get(key); + if (existing == null) { + out.put(key, occ); + return; + } + if (existing.getEnclosingRangeCount() == 0 && occ.getEnclosingRangeCount() > 0) { + out.put(key, occ); + } + } + + /** Adds every occurrence in {@code occs}. */ + void addAll(Iterable occs) { + for (Occurrence occ : occs) add(occ); + } + + /** Returns the deduplicated occurrences in insertion order. */ + Collection values() { + return out.values(); + } + + private static final class Key { + final String symbol; + final List range; + final int roles; + + private Key(String symbol, List range, int roles) { + this.symbol = symbol; + this.range = range; + this.roles = roles; + } + + static Key of(Occurrence occ) { + return new Key(occ.getSymbol(), occ.getRangeList(), occ.getSymbolRoles()); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof Key)) return false; + Key other = (Key) o; + return roles == other.roles && symbol.equals(other.symbol) && range.equals(other.range); + } + + @Override + public int hashCode() { + return Objects.hash(symbol, range, roles); + } + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipRange.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipRange.java new file mode 100644 index 000000000..263316fb2 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipRange.java @@ -0,0 +1,35 @@ +package com.sourcegraph.semanticdb_javac; + +import java.util.Arrays; +import java.util.List; + +/** + * Zero-based source range produced by {@link ScipVisitor}, convertible to SCIP's compact {@code + * repeated int32 range} via {@link #asScipRange()}. + */ +final class ScipRange { + final int startLine; + final int startCharacter; + final int endLine; + final int endCharacter; + + ScipRange(int startLine, int startCharacter, int endLine, int endCharacter) { + this.startLine = startLine; + this.startCharacter = startCharacter; + this.endLine = endLine; + this.endCharacter = endCharacter; + } + + /** Returns a copy with adjusted start/end characters (used to correct tab-expansion). */ + ScipRange withCharacters(int startCharacter, int endCharacter) { + return new ScipRange(startLine, startCharacter, endLine, endCharacter); + } + + /** 3 ints when the range fits on one line, 4 ints otherwise. */ + List asScipRange() { + if (startLine == endLine) { + return Arrays.asList(startLine, startCharacter, endCharacter); + } + return Arrays.asList(startLine, startCharacter, endLine, endCharacter); + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShards.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShards.java new file mode 100644 index 000000000..092996967 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShards.java @@ -0,0 +1,100 @@ +package com.sourcegraph.semanticdb_javac; + +import org.scip_code.scip.Document; +import org.scip_code.scip.Index; +import org.scip_code.scip.Relationship; +import org.scip_code.scip.SymbolInformation; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; + +/** + * Pure merge helpers for SCIP shards produced by the compiler plugin. + * + *

Each source file produces a self-contained {@link Index} shard containing a single {@link + * Document}. When the compiler runs multiple analyze rounds for the same source (e.g. during + * annotation processing), the freshly built shard is merged with the one already on disk by + * combining their document lists and deduplicating occurrences, symbols and relationships. + */ +public final class ScipShards { + + private ScipShards() {} + + /** + * Merges two SCIP shards by combining their document lists. Documents that share a {@code + * relative_path} have their occurrences, symbols and external symbols deduplicated. + */ + static Index merge(Index a, Index b) { + Index.Builder builder = Index.newBuilder(); + if (b.hasMetadata()) { + builder.setMetadata(b.getMetadata()); + } else if (a.hasMetadata()) { + builder.setMetadata(a.getMetadata()); + } + + LinkedHashMap byPath = new LinkedHashMap<>(); + for (Document doc : a.getDocumentsList()) { + byPath.put(doc.getRelativePath(), doc); + } + for (Document doc : b.getDocumentsList()) { + Document existing = byPath.get(doc.getRelativePath()); + if (existing == null) { + byPath.put(doc.getRelativePath(), doc); + } else { + byPath.put(doc.getRelativePath(), mergeDocuments(existing, doc)); + } + } + builder.addAllDocuments(byPath.values()); + + // External symbols: deduplicate by symbol string. Last writer wins to keep latest data. + LinkedHashMap externals = new LinkedHashMap<>(); + for (SymbolInformation s : a.getExternalSymbolsList()) externals.put(s.getSymbol(), s); + for (SymbolInformation s : b.getExternalSymbolsList()) externals.put(s.getSymbol(), s); + builder.addAllExternalSymbols(externals.values()); + + return builder.build(); + } + + private static Document mergeDocuments(Document a, Document b) { + Document.Builder builder = b.toBuilder().clearOccurrences().clearSymbols(); + // Use the most recent metadata for language/relative_path/text/encoding which already + // come from b via toBuilder(). + + // Deduplicate occurrences by (range, symbol, roles). Variants that differ only in + // enclosing_range get collapsed, preferring the one that carries the enclosing range. + ScipOccurrences occurrences = new ScipOccurrences(); + occurrences.addAll(a.getOccurrencesList()); + occurrences.addAll(b.getOccurrencesList()); + builder.addAllOccurrences(occurrences.values()); + + // Deduplicate symbols by symbol string; merge relationships and documentation. + LinkedHashMap bySymbol = new LinkedHashMap<>(); + for (SymbolInformation info : a.getSymbolsList()) bySymbol.put(info.getSymbol(), info); + for (SymbolInformation info : b.getSymbolsList()) { + SymbolInformation existing = bySymbol.get(info.getSymbol()); + bySymbol.put(info.getSymbol(), existing == null ? info : mergeSymbol(existing, info)); + } + builder.addAllSymbols(bySymbol.values()); + + return builder.build(); + } + + private static SymbolInformation mergeSymbol(SymbolInformation a, SymbolInformation b) { + SymbolInformation.Builder builder = b.toBuilder(); + // Merge relationships, deduplicating by structural equality with deterministic ordering. + LinkedHashMap rels = new LinkedHashMap<>(); + for (Relationship r : a.getRelationshipsList()) rels.put(r, r); + for (Relationship r : b.getRelationshipsList()) rels.put(r, r); + builder.clearRelationships().addAllRelationships(rels.values()); + + // Merge documentation, preserving order and avoiding duplicates. + List docs = new ArrayList<>(a.getDocumentationList()); + for (String d : b.getDocumentationList()) { + if (!docs.contains(d)) docs.add(d); + } + builder.clearDocumentation().addAllDocumentation(docs); + + return builder.build(); + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSignatureFormatter.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSignatureFormatter.java new file mode 100644 index 000000000..ba6690e50 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSignatureFormatter.java @@ -0,0 +1,284 @@ +package com.sourcegraph.semanticdb_javac; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import javax.lang.model.element.AnnotationMirror; +import javax.lang.model.element.Element; +import javax.lang.model.element.ElementKind; +import javax.lang.model.element.ExecutableElement; +import javax.lang.model.element.Modifier; +import javax.lang.model.element.TypeElement; +import javax.lang.model.element.TypeParameterElement; +import javax.lang.model.element.VariableElement; +import javax.lang.model.type.ArrayType; +import javax.lang.model.type.DeclaredType; +import javax.lang.model.type.IntersectionType; +import javax.lang.model.type.NoType; +import javax.lang.model.type.PrimitiveType; +import javax.lang.model.type.TypeKind; +import javax.lang.model.type.TypeMirror; +import javax.lang.model.type.TypeVariable; +import javax.lang.model.type.WildcardType; +import javax.lang.model.util.SimpleTypeVisitor8; + +/** + * Formats a Java {@link Element} as a declaration string for SCIP's {@code + * SymbolInformation.signature_documentation.text}, running directly over javac's element and + * type-mirror APIs. + */ +public final class ScipSignatureFormatter { + + private final Element sym; + + public ScipSignatureFormatter(Element sym) { + this.sym = sym; + } + + /** Returns the formatted signature, or {@code ""} if {@link #sym} has no meaningful signature. */ + public String formatSymbol() { + StringBuilder out = new StringBuilder(); + switch (sym.getKind()) { + case CLASS: + case INTERFACE: + case ANNOTATION_TYPE: + case ENUM: + formatType(out, (TypeElement) sym); + break; + case CONSTRUCTOR: + case METHOD: + formatExecutable(out, (ExecutableElement) sym); + break; + case FIELD: + case ENUM_CONSTANT: + case PARAMETER: + case LOCAL_VARIABLE: + case EXCEPTION_PARAMETER: + case RESOURCE_VARIABLE: + formatVariable(out, (VariableElement) sym); + break; + case TYPE_PARAMETER: + formatTypeParameter(out, (TypeParameterElement) sym); + break; + default: + return ""; + } + return out.toString(); + } + + private static void formatAnnotations(StringBuilder out, Element element) { + for (AnnotationMirror mirror : element.getAnnotationMirrors()) { + out.append('@').append(simpleName(mirror.getAnnotationType())).append('\n'); + } + } + + private static String simpleName(TypeMirror t) { + if (t instanceof DeclaredType) { + Element e = ((DeclaredType) t).asElement(); + return e.getSimpleName().toString(); + } + return t.toString(); + } + + private static void formatModifiers(StringBuilder out, Set modifiers) { + for (Modifier m : modifiers) { + out.append(m.toString()).append(' '); + } + } + + private void formatType(StringBuilder out, TypeElement type) { + formatAnnotations(out, type); + formatModifiers(out, type.getModifiers()); + switch (type.getKind()) { + case ENUM: + out.append("enum "); + break; + case INTERFACE: + out.append("interface "); + break; + case ANNOTATION_TYPE: + out.append("@interface "); + break; + case CLASS: + default: + out.append("class "); + break; + } + out.append(type.getSimpleName()); + formatTypeParameters(out, type.getTypeParameters()); + + TypeMirror superclass = type.getSuperclass(); + if (superclass.getKind() != TypeKind.NONE + && !isJavaLangObject(superclass) + && type.getKind() != ElementKind.INTERFACE) { + out.append(" extends "); + formatTypeMirror(out, superclass); + } + + List interfaces = type.getInterfaces(); + if (!interfaces.isEmpty()) { + out.append(type.getKind() == ElementKind.INTERFACE ? " extends " : " implements "); + formatJoin(out, interfaces, ", "); + } + } + + private void formatExecutable(StringBuilder out, ExecutableElement method) { + formatAnnotations(out, method); + formatModifiers(out, method.getModifiers()); + if (!method.getTypeParameters().isEmpty()) { + formatTypeParameters(out, method.getTypeParameters()); + out.append(' '); + } + if (method.getKind() != ElementKind.CONSTRUCTOR) { + formatTypeMirror(out, method.getReturnType()); + out.append(' '); + out.append(method.getSimpleName()); + } else { + out.append(method.getEnclosingElement().getSimpleName()); + } + out.append('('); + Iterator it = method.getParameters().iterator(); + while (it.hasNext()) { + VariableElement p = it.next(); + formatTypeMirror(out, p.asType()); + out.append(' ').append(p.getSimpleName()); + if (it.hasNext()) out.append(", "); + } + out.append(')'); + List thrown = method.getThrownTypes(); + if (!thrown.isEmpty()) { + out.append(" throws "); + formatJoin(out, thrown, ", "); + } + } + + private void formatVariable(StringBuilder out, VariableElement variable) { + formatAnnotations(out, variable); + formatModifiers(out, variable.getModifiers()); + if (variable.getKind() == ElementKind.ENUM_CONSTANT) { + out.append(variable.getSimpleName()); + } else { + formatTypeMirror(out, variable.asType()); + out.append(' ').append(variable.getSimpleName()); + } + } + + private void formatTypeParameter(StringBuilder out, TypeParameterElement tp) { + out.append(tp.getSimpleName()); + List bounds = tp.getBounds(); + if (!bounds.isEmpty()) { + // Skip implicit `extends Object`. + if (bounds.size() != 1 || !isJavaLangObject(bounds.get(0))) { + out.append(" extends "); + formatJoin(out, bounds, " & "); + } + } + } + + private void formatTypeParameters( + StringBuilder out, List typeParameters) { + if (typeParameters.isEmpty()) return; + out.append('<'); + Iterator it = typeParameters.iterator(); + while (it.hasNext()) { + formatTypeParameter(out, it.next()); + if (it.hasNext()) out.append(", "); + } + out.append('>'); + } + + private void formatJoin(StringBuilder out, List types, String separator) { + Iterator it = types.iterator(); + while (it.hasNext()) { + formatTypeMirror(out, it.next()); + if (it.hasNext()) out.append(separator); + } + } + + private void formatTypeMirror(StringBuilder out, TypeMirror type) { + type.accept(new TypePrinter(), out); + } + + private static boolean isJavaLangObject(TypeMirror type) { + if (!(type instanceof DeclaredType)) return false; + Element e = ((DeclaredType) type).asElement(); + return e instanceof TypeElement + && ((TypeElement) e).getQualifiedName().contentEquals("java.lang.Object"); + } + + /** Prints a TypeMirror using simple-names + type arguments + array brackets. */ + private static final class TypePrinter extends SimpleTypeVisitor8 { + + @Override + public Void visitDeclared(DeclaredType t, StringBuilder out) { + out.append(simpleName(t)); + List args = t.getTypeArguments(); + if (!args.isEmpty()) { + out.append('<'); + Iterator it = args.iterator(); + while (it.hasNext()) { + visit(it.next(), out); + if (it.hasNext()) out.append(", "); + } + out.append('>'); + } + return null; + } + + @Override + public Void visitArray(ArrayType t, StringBuilder out) { + visit(t.getComponentType(), out); + out.append("[]"); + return null; + } + + @Override + public Void visitPrimitive(PrimitiveType t, StringBuilder out) { + out.append(t.getKind().name().toLowerCase()); + return null; + } + + @Override + public Void visitTypeVariable(TypeVariable t, StringBuilder out) { + out.append(t.asElement().getSimpleName()); + return null; + } + + @Override + public Void visitWildcard(WildcardType t, StringBuilder out) { + out.append('?'); + if (t.getExtendsBound() != null) { + out.append(" extends "); + visit(t.getExtendsBound(), out); + } else if (t.getSuperBound() != null) { + out.append(" super "); + visit(t.getSuperBound(), out); + } + return null; + } + + @Override + public Void visitIntersection(IntersectionType t, StringBuilder out) { + Iterator it = t.getBounds().iterator(); + while (it.hasNext()) { + visit(it.next(), out); + if (it.hasNext()) out.append(" & "); + } + return null; + } + + @Override + public Void visitNoType(NoType t, StringBuilder out) { + if (t.getKind() == TypeKind.VOID) { + out.append("void"); + } + return null; + } + + @Override + protected Void defaultAction(TypeMirror t, StringBuilder out) { + out.append(t.toString()); + return null; + } + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java new file mode 100644 index 000000000..0b015c48d --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java @@ -0,0 +1,25 @@ +package com.sourcegraph.semanticdb_javac; + +import com.sourcegraph.semanticdb.SemanticdbSymbols; + +/** + * Converts SemanticDB-style symbol strings into the placeholder SCIP form expected by the + * aggregator. The compiler plug-in doesn't know the final Maven coordinates, so globals are + * prefixed with {@link #PLACEHOLDER_PREFIX} and the aggregator rewrites them into {@code "scip-java + * maven "}. Locals use the canonical {@code "local N"} form and pass + * through unchanged. + */ +public final class ScipSymbols { + + public static final String PLACEHOLDER_PREFIX = ". . . . "; + + private ScipSymbols() {} + + public static String fromSemanticdbSymbol(String symbol) { + if (symbol == null || symbol.isEmpty()) return ""; + if (SemanticdbSymbols.isLocal(symbol)) { + return "local " + symbol.substring("local".length()); + } + return PLACEHOLDER_PREFIX + symbol; + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbVisitor.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java similarity index 55% rename from semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbVisitor.java rename to semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java index 093c3a733..145bb10b8 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbVisitor.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java @@ -1,68 +1,69 @@ package com.sourcegraph.semanticdb_javac; import com.sourcegraph.semanticdb.LocalSymbolsCache; -import com.sourcegraph.semanticdb.Semanticdb; - -import com.sourcegraph.semanticdb.SemanticdbDocumentBuilder; -import com.sourcegraph.semanticdb.SemanticdbPaths; import com.sourcegraph.semanticdb.SemanticdbSymbols; -import com.sun.source.util.SourcePositions; -import com.sun.source.util.Trees; -import com.sun.source.util.TreePathScanner; -import com.sun.source.util.TreePath; +import org.scip_code.scip.Document; +import org.scip_code.scip.Index; +import org.scip_code.scip.Occurrence; +import org.scip_code.scip.Relationship; +import org.scip_code.scip.Signature; +import org.scip_code.scip.SymbolInformation; +import org.scip_code.scip.SymbolRole; +import com.sun.source.tree.AnnotatedTypeTree; +import com.sun.source.tree.ClassTree; import com.sun.source.tree.CompilationUnitTree; -import com.sun.source.tree.MemberReferenceTree; +import com.sun.source.tree.ExpressionTree; import com.sun.source.tree.IdentifierTree; -import com.sun.source.tree.VariableTree; -import com.sun.source.tree.ClassTree; -import com.sun.source.tree.Tree; -import com.sun.source.tree.MethodTree; import com.sun.source.tree.LineMap; -import com.sun.source.tree.ExpressionTree; -import com.sun.source.tree.NewClassTree; +import com.sun.source.tree.MemberReferenceTree; import com.sun.source.tree.MemberSelectTree; +import com.sun.source.tree.MethodTree; +import com.sun.source.tree.NewClassTree; import com.sun.source.tree.PackageTree; -import com.sun.source.tree.TypeCastTree; -import com.sun.source.tree.TypeParameterTree; import com.sun.source.tree.ParameterizedTypeTree; -import com.sun.source.tree.AnnotatedTypeTree; - -import javax.tools.Diagnostic; -import javax.lang.model.element.Element; -import javax.lang.model.element.Modifier; -import javax.lang.model.element.Name; -import javax.lang.model.element.ElementKind; -import javax.lang.model.element.TypeElement; -import javax.lang.model.element.ExecutableElement; -import javax.lang.model.type.NoType; -import javax.lang.model.type.TypeMirror; -import javax.lang.model.type.DeclaredType; -import javax.lang.model.util.Types; -import javax.lang.model.util.Elements; -import com.sourcegraph.semanticdb.Semanticdb.SymbolInformation.Kind; -import com.sourcegraph.semanticdb.Semanticdb.SymbolInformation.Property; -import com.sourcegraph.semanticdb.Semanticdb.SymbolOccurrence.Role; +import com.sun.source.tree.Tree; +import com.sun.source.tree.TypeParameterTree; +import com.sun.source.tree.VariableTree; +import com.sun.source.util.SourcePositions; +import com.sun.source.util.TreePath; +import com.sun.source.util.TreePathScanner; +import com.sun.source.util.Trees; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Path; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.List; import java.util.ArrayList; +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; -import java.util.HashSet; -import java.util.Set; import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; +import javax.lang.model.element.Element; +import javax.lang.model.element.ElementKind; +import javax.lang.model.element.ExecutableElement; +import javax.lang.model.element.Modifier; +import javax.lang.model.element.Name; +import javax.lang.model.element.TypeElement; +import javax.lang.model.type.DeclaredType; +import javax.lang.model.type.NoType; +import javax.lang.model.type.TypeMirror; +import javax.lang.model.util.Elements; +import javax.lang.model.util.Types; +import javax.tools.Diagnostic; -import static com.sourcegraph.semanticdb.SemanticdbBuilders.*; - -/** Walks the AST of a typechecked compilation unit and generates a SemanticDB TextDocument. */ -public class SemanticdbVisitor extends TreePathScanner { +/** + * Walks the AST of a typechecked compilation unit and generates a {@link Document} directly. + * + *

Symbols are produced through {@link GlobalSymbolsCache} and then translated to the placeholder + * SCIP form via {@link ScipSymbols#fromSemanticdbSymbol(String)}. Signature documentation is + * produced by {@link ScipSignatureFormatter} directly from javac's element model. + */ +public final class ScipVisitor extends TreePathScanner { private final GlobalSymbolsCache globals; private final LocalSymbolsCache locals; @@ -71,139 +72,233 @@ public class SemanticdbVisitor extends TreePathScanner { private final CompilationUnitTree compUnitTree; private final Elements elements; private final SemanticdbJavacOptions options; - private final SemanticdbDocumentBuilder documentBuilder; - private String source; - private String uri; - + private final ScipOccurrences occurrences; + private final LinkedHashMap symbols; + private final String source; + private final String relativePath; private final LinkedHashMap nodes; - public SemanticdbVisitor( + public ScipVisitor( GlobalSymbolsCache globals, - LocalSymbolsCache locals, CompilationUnitTree compUnitTree, SemanticdbJavacOptions options, Types types, Trees trees, - Elements elements, - SemanticdbDocumentBuilder documentBuilder) { + Elements elements) { this.globals = globals; - this.locals = locals; + this.locals = new LocalSymbolsCache<>(new IdentityHashMap<>(), SemanticdbSymbols::local); this.options = options; this.types = types; this.elements = elements; this.trees = trees; this.compUnitTree = compUnitTree; - this.documentBuilder = documentBuilder; - this.source = semanticdbText(); - this.uri = semanticdbUri(compUnitTree, options); + this.occurrences = new ScipOccurrences(); + this.symbols = new LinkedHashMap<>(); + this.source = sourceText(compUnitTree); + this.relativePath = sourceRelativePath(compUnitTree, options); this.nodes = new LinkedHashMap<>(); } - public Semanticdb.TextDocument buildTextDocument(CompilationUnitTree tree) { - this.scan(tree, null); // Trigger recursive AST traversal to collect SemanticDB information. - + /** Builds a single-document {@link Index} shard for the given compilation unit. */ + public Index buildShard(CompilationUnitTree tree) { + this.scan(tree, null); resolveNodes(); - return documentBuilder.build( - Semanticdb.Language.JAVA, uri, options.includeText ? this.source : "", semanticdbMd5()); + Document.Builder document = + Document.newBuilder().setRelativePath(relativePath).setLanguage(LANGUAGE_JAVA); + if (options.includeText) { + document.setText(source); + } + document.addAllOccurrences(occurrences.values()); + document.addAllSymbols(symbols.values()); + + return Index.newBuilder().addDocuments(document).build(); } - private Optional emitSymbolOccurrence( - Element sym, Tree tree, Name name, Role role, CompilerRange kind) { + /** SCIP {@code Document.language} value for Java sources. */ + private static final String LANGUAGE_JAVA = "java"; + + // ========================== + // Symbol/occurrence emission + // ========================== + + private Optional emitSymbolOccurrence( + Element sym, Tree tree, Name name, int roles, CompilerRange kind) { if (sym == null || name == null) return Optional.empty(); - Optional range = semanticdbRange(tree, kind, sym, name.toString()); - if (role == Role.DEFINITION) { - emitSymbolOccurrence(sym, range, role, computeEnclosingRange(tree)); - // Only emit SymbolInformation for symbols that are defined in this compilation unit. + Optional range = scipRangeOf(tree, kind, sym, name.toString()); + if (roles == SymbolRole.Definition_VALUE) { + emitOccurrence(sym, range, roles, computeEnclosingRange(tree)); emitSymbolInformation(sym, tree); return range; } - emitSymbolOccurrence(sym, range, role, Optional.empty()); + emitOccurrence(sym, range, roles, Optional.empty()); return range; } - private void emitSymbolOccurrence( - Element sym, - Optional range, - Role role, - Optional enclosingRange) { - if (sym == null) return; - Optional occ = - semanticdbOccurrence(sym, range, role, enclosingRange); - occ.ifPresent(documentBuilder::addOccurrence); + private void emitOccurrence( + Element sym, Optional range, int roles, Optional enclosingRange) { + if (sym == null || !range.isPresent()) return; + String semanticdbSymbol = semanticdbSymbol(sym); + if (semanticdbSymbol.equals(SemanticdbSymbols.NONE)) return; + + Occurrence.Builder occ = + Occurrence.newBuilder() + .addAllRange(range.get().asScipRange()) + .setSymbol(ScipSymbols.fromSemanticdbSymbol(semanticdbSymbol)) + .setSymbolRoles(roles); + enclosingRange.ifPresent(r -> occ.addAllEnclosingRange(r.asScipRange())); + occurrences.add(occ.build()); } private void emitSymbolInformation(Element sym, Tree tree) { - String symbol = semanticdbSymbol(sym); - Semanticdb.SymbolInformation.Builder builder = symbolInformation(symbol); - Semanticdb.Documentation documentation = semanticdbDocumentation(tree); - if (documentation != null) builder.setDocumentation(documentation); - Semanticdb.Signature signature = semanticdbSignature(sym); - if (signature != null) builder.setSignature(signature); - if (SemanticdbSymbols.isLocal(symbol)) { + String semanticdbSymbol = semanticdbSymbol(sym); + if (semanticdbSymbol.equals(SemanticdbSymbols.NONE)) return; + + SymbolInformation.Builder builder = + SymbolInformation.newBuilder() + .setSymbol(ScipSymbols.fromSemanticdbSymbol(semanticdbSymbol)) + .setDisplayName(sym.getSimpleName().toString()) + .setKind(scipKind(sym)); + + if (SemanticdbSymbols.isLocal(semanticdbSymbol)) { String enclosingSymbol = semanticdbSymbol(sym.getEnclosingElement()); - if (enclosingSymbol != null) builder.setEnclosingSymbol(enclosingSymbol); + if (enclosingSymbol != null && !enclosingSymbol.equals(SemanticdbSymbols.NONE)) { + builder.setEnclosingSymbol(ScipSymbols.fromSemanticdbSymbol(enclosingSymbol)); + } } - List annotations = - new SemanticdbTrees(globals, locals, uri, types, trees, nodes).annotations(tree); - if (annotations != null) builder.addAllAnnotations(annotations); + String documentation = semanticdbDocumentation(tree); + if (documentation != null && !documentation.isEmpty()) { + builder.addDocumentation(documentation); + } - builder - .setProperties(semanticdbSymbolInfoProperties(sym)) - .setDisplayName(sym.getSimpleName().toString()) - .setAccess(semanticdbAccess(sym)); + String signature = new ScipSignatureFormatter(sym).formatSymbol(); + if (!signature.isEmpty()) { + builder.setSignatureDocumentation( + Signature.newBuilder().setLanguage(LANGUAGE_JAVA).setText(signature)); + } + + boolean supportsReferenceRel = supportsReferenceRelationship(sym); switch (sym.getKind()) { case ENUM: case CLASS: - builder.setKind(Kind.CLASS); - builder.addAllOverriddenSymbols(semanticdbParentSymbols((TypeElement) sym)); - break; case INTERFACE: case ANNOTATION_TYPE: - builder.setKind(Kind.INTERFACE); - builder.addAllOverriddenSymbols(semanticdbParentSymbols((TypeElement) sym)); - break; - case FIELD: - builder.setKind(Kind.FIELD); + addParentRelationships(builder, (TypeElement) sym, supportsReferenceRel); break; case METHOD: - builder.setKind(Kind.METHOD); - builder.addAllOverriddenSymbols( + for (String overridden : semanticdbOverrides( - (ExecutableElement) sym, sym.getEnclosingElement(), new HashSet<>())); - break; - case CONSTRUCTOR: - builder.setKind(Kind.CONSTRUCTOR); - break; - case TYPE_PARAMETER: - builder.setKind(Kind.TYPE_PARAMETER); + (ExecutableElement) sym, sym.getEnclosingElement(), new HashSet<>())) { + if (isIgnoredOverriddenSymbol(overridden)) continue; + builder.addRelationships( + Relationship.newBuilder() + .setSymbol(ScipSymbols.fromSemanticdbSymbol(overridden)) + .setIsImplementation(true) + .setIsReference(supportsReferenceRel)); + } break; - case ENUM_CONSTANT: // overwrite previous value here - String args = - ((NewClassTree) ((VariableTree) tree).getInitializer()) - .getArguments().stream() - .map(ExpressionTree::toString) - .collect(Collectors.joining(", ")); - if (!args.isEmpty()) - builder.setDisplayName(sym.getSimpleName().toString() + "(" + args + ")"); + case ENUM_CONSTANT: + if (tree instanceof VariableTree && ((VariableTree) tree).getInitializer() != null) { + String args = + ((NewClassTree) ((VariableTree) tree).getInitializer()) + .getArguments().stream() + .map(ExpressionTree::toString) + .collect(Collectors.joining(", ")); + if (!args.isEmpty()) { + builder.setDisplayName(sym.getSimpleName().toString() + "(" + args + ")"); + } + } break; - case LOCAL_VARIABLE: - builder.setKind(Kind.LOCAL); + default: break; } - Semanticdb.SymbolInformation info = builder.build(); + // Deduplicate by symbol; last write wins so newly discovered metadata takes precedence. + symbols.put(builder.getSymbol(), builder.build()); + } + + private void addParentRelationships( + SymbolInformation.Builder builder, TypeElement sym, boolean supportsReferenceRel) { + for (String parent : semanticdbParentSymbols(sym)) { + if (isIgnoredOverriddenSymbol(parent)) continue; + builder.addRelationships( + Relationship.newBuilder() + .setSymbol(ScipSymbols.fromSemanticdbSymbol(parent)) + .setIsImplementation(true) + .setIsReference(supportsReferenceRel)); + } + } + + private static boolean isIgnoredOverriddenSymbol(String symbol) { + return symbol.equals("java/lang/Object#"); + } + + private static boolean supportsReferenceRelationship(Element sym) { + switch (sym.getKind()) { + case INTERFACE: + case CLASS: + case ANNOTATION_TYPE: + case ENUM: + return false; + default: + return true; + } + } + + // ================================================= + // Kind translation for SCIP emission. + // ================================================= + + private static SymbolInformation.Kind scipKind(Element sym) { + Set modifiers = sym.getModifiers(); + boolean isStatic = modifiers.contains(Modifier.STATIC); + // A `default` interface method has both ABSTRACT and DEFAULT modifiers; treat it as + // non-abstract. + boolean isAbstract = + modifiers.contains(Modifier.ABSTRACT) && !modifiers.contains(Modifier.DEFAULT); - documentBuilder.addSymbol(info); + switch (sym.getKind()) { + case ENUM: + return SymbolInformation.Kind.Enum; + case ENUM_CONSTANT: + return SymbolInformation.Kind.EnumMember; + case CLASS: + return SymbolInformation.Kind.Class; + case INTERFACE: + case ANNOTATION_TYPE: + return SymbolInformation.Kind.Interface; + case FIELD: + return isStatic ? SymbolInformation.Kind.StaticField : SymbolInformation.Kind.Field; + case CONSTRUCTOR: + return SymbolInformation.Kind.Constructor; + case METHOD: + if (isStatic) return SymbolInformation.Kind.StaticMethod; + if (isAbstract) return SymbolInformation.Kind.AbstractMethod; + return SymbolInformation.Kind.Method; + case TYPE_PARAMETER: + return SymbolInformation.Kind.TypeParameter; + case LOCAL_VARIABLE: + case EXCEPTION_PARAMETER: + case RESOURCE_VARIABLE: + return SymbolInformation.Kind.Variable; + case PARAMETER: + return SymbolInformation.Kind.Parameter; + case PACKAGE: + return SymbolInformation.Kind.Package; + default: + return SymbolInformation.Kind.UnspecifiedKind; + } } + // =========================================== + // Node resolution and traversal (unchanged from SemanticdbVisitor) + // =========================================== + void resolveNodes() { - // ignore parts of NewClassTree. It would cause references to classes in addition to references - // to constructors. In these cases, the references to classes aren't wanted HashSet ignoreNodes = new HashSet<>(); - for (Tree node : nodes.keySet()) + for (Tree node : nodes.keySet()) { if (node instanceof NewClassTree) { NewClassTree newClassTree = (NewClassTree) node; if (newClassTree.getClassBody() == null) { @@ -214,6 +309,7 @@ void resolveNodes() { ignoreNodes.add(newClassTree.getIdentifier()); } } + } for (Map.Entry entry : nodes.entrySet()) { Tree node = entry.getKey(); @@ -239,9 +335,6 @@ void resolveNodes() { } } - // ======================================= - // Overridden methods from TreePathScanner - // ======================================= @Override public Void scan(Tree tree, Void unused) { if (tree != null) { @@ -256,7 +349,7 @@ public Void visitPackage(PackageTree node, Void unused) { // Stop traversal at the package declaration. JDK 17+ TreePathScanner // recurses into the package name's identifiers and would emit a // self-reference for `package X.Y;`; JDK 11 does not. Skipping the - // whole package subtree keeps semanticdb output stable across JDKs and + // whole package subtree keeps SCIP output stable across JDKs and // matches the long-standing JDK 8/11 behavior of not emitting a // reference for the package declaration itself. return null; @@ -266,10 +359,6 @@ private boolean isAnonymous(Element sym) { return sym.getSimpleName().length() == 0; } - public static B bar(A paramA, B paramB) { - return paramB; - } - private void resolveClassTree(ClassTree node, TreePath treePath) { Element sym = trees.getElement(treePath); if (sym != null && sym.getSimpleName().length() > 0) { @@ -277,7 +366,7 @@ private void resolveClassTree(ClassTree node, TreePath treePath) { sym, node, sym.getSimpleName(), - Role.DEFINITION, + SymbolRole.Definition_VALUE, CompilerRange.FROM_POINT_WITH_TEXT_SEARCH); } } @@ -286,7 +375,11 @@ private void resolveTypeParameterTree(TypeParameterTree node, TreePath treePath) Element sym = trees.getElement(treePath); if (sym != null && sym.getSimpleName().length() > 0) { emitSymbolOccurrence( - sym, node, sym.getSimpleName(), Role.DEFINITION, CompilerRange.FROM_POINT_TO_SYMBOL_NAME); + sym, + node, + sym.getSimpleName(), + SymbolRole.Definition_VALUE, + CompilerRange.FROM_POINT_TO_SYMBOL_NAME); } } @@ -300,7 +393,11 @@ private void resolveMethodTree(MethodTree node, TreePath treePath) { else name = sym.getSimpleName(); emitSymbolOccurrence( - sym, node, name, Role.DEFINITION, CompilerRange.FROM_POINT_WITH_TEXT_SEARCH); + sym, + node, + name, + SymbolRole.Definition_VALUE, + CompilerRange.FROM_POINT_WITH_TEXT_SEARCH); } } } @@ -308,17 +405,17 @@ private void resolveMethodTree(MethodTree node, TreePath treePath) { private void resolveVariableTree(VariableTree node, TreePath treePath) { Element sym = trees.getElement(treePath); if (sym != null) { - Optional range = + Optional range = emitSymbolOccurrence( sym, node, sym.getSimpleName(), - Role.DEFINITION, + SymbolRole.Definition_VALUE, CompilerRange.FROM_POINT_WITH_TEXT_SEARCH); if (sym.getKind() == ElementKind.ENUM_CONSTANT) { TreePath typeTreePath = nodes.get(node.getInitializer()); Element typeSym = trees.getElement(typeTreePath); - if (typeSym != null) emitSymbolOccurrence(typeSym, range, Role.REFERENCE, Optional.empty()); + if (typeSym != null) emitOccurrence(typeSym, range, 0, Optional.empty()); } } } @@ -330,13 +427,12 @@ private void resolveIdentifierTree(IdentifierTree node, TreePath treePath) { if (sym != null) { boolean isThis = nodeName.toString().equals("this"); boolean isSuper = !isThis && nodeName.toString().equals("super"); - // exclude `this.` references but include `this(` and `super(` references if (((sym.getKind() == ElementKind.CONSTRUCTOR) == isThis) || (isSuper)) { TreePath parentPath = treePath.getParentPath(); Element parentSym = trees.getElement(parentPath); if (parentSym == null || parentSym.getKind() != null) { emitSymbolOccurrence( - sym, node, sym.getSimpleName(), Role.REFERENCE, CompilerRange.FROM_START_TO_END); + sym, node, sym.getSimpleName(), 0, CompilerRange.FROM_START_TO_END); } } } @@ -347,7 +443,7 @@ private void resolveMemberReferenceTree(MemberReferenceTree node, TreePath treeP Element sym = trees.getElement(treePath); if (sym != null) { emitSymbolOccurrence( - sym, node, sym.getSimpleName(), Role.REFERENCE, CompilerRange.FROM_END_TO_SYMBOL_NAME); + sym, node, sym.getSimpleName(), 0, CompilerRange.FROM_END_TO_SYMBOL_NAME); } } @@ -355,38 +451,28 @@ private void resolveMemberSelectTree(MemberSelectTree node, TreePath treePath) { Element sym = trees.getElement(treePath); if (sym != null) { emitSymbolOccurrence( - sym, node, sym.getSimpleName(), Role.REFERENCE, CompilerRange.FROM_END_TO_SYMBOL_NAME); + sym, node, sym.getSimpleName(), 0, CompilerRange.FROM_END_TO_SYMBOL_NAME); } } private void resolveNewClassTree(NewClassTree node, TreePath treePath) { - // ignore anonymous classes - otherwise there will be a local reference to itself if (node.getIdentifier() != null && node.getClassBody() == null) { Element sym = trees.getElement(treePath); if (sym != null) { TreePath parentPath = treePath.getParentPath(); Element parentSym = trees.getElement(parentPath); - if (parentSym == null || parentSym.getKind() != ElementKind.ENUM_CONSTANT) { TreePath identifierTreePath = nodes.get(node.getIdentifier()); Element identifierSym = trees.getElement(identifierTreePath); - // Simplest case, e.g. `new String()` if (identifierSym != null) { emitSymbolOccurrence( - sym, - node, - identifierSym.getSimpleName(), - Role.REFERENCE, - CompilerRange.FROM_TEXT_SEARCH); - } - // More complex case, where the type is annotated: `new @TypeParameters String()` - else if (node.getIdentifier().getKind() == Tree.Kind.ANNOTATED_TYPE) { + sym, node, identifierSym.getSimpleName(), 0, CompilerRange.FROM_TEXT_SEARCH); + } else if (node.getIdentifier().getKind() == Tree.Kind.ANNOTATED_TYPE) { AnnotatedTypeTree annotatedTypeTree = (AnnotatedTypeTree) node.getIdentifier(); if (annotatedTypeTree.getUnderlyingType() != null && annotatedTypeTree.getUnderlyingType().getKind() == Tree.Kind.IDENTIFIER) { IdentifierTree ident = (IdentifierTree) annotatedTypeTree.getUnderlyingType(); - emitSymbolOccurrence( - sym, ident, ident.getName(), Role.REFERENCE, CompilerRange.FROM_TEXT_SEARCH); + emitSymbolOccurrence(sym, ident, ident.getName(), 0, CompilerRange.FROM_TEXT_SEARCH); } } } @@ -395,20 +481,14 @@ else if (node.getIdentifier().getKind() == Tree.Kind.ANNOTATED_TYPE) { } // ================================================= - // Utilities to generate SemanticDB data structures. + // Symbol / range helpers used by the SCIP emission path. // ================================================= - private Semanticdb.Signature semanticdbSignature(Element sym) { - - return new SemanticdbSignatures(globals, locals, types).generateSignature(sym); - } - private String semanticdbSymbol(Element sym) { return globals.semanticdbSymbol(sym, locals); } - private Optional semanticdbRange( - Tree tree, CompilerRange kind, Element sym, String name) { + private Optional scipRangeOf(Tree tree, CompilerRange kind, Element sym, String name) { if (sym == null) return Optional.empty(); SourcePositions sourcePositions = trees.getSourcePositions(); @@ -426,97 +506,59 @@ private Optional semanticdbRange( } } else if (kind.isFromPoint()) { if (start != Diagnostic.NOPOS) { - // text may not exist or may be out of bounds (e.g. generated source like Lombok) int testEnd = start + name.length(); - if (source.length() > testEnd && source.substring(start, testEnd).equals(name)) + if (source.length() > testEnd && source.substring(start, testEnd).equals(name)) { end = testEnd; + } } } else if (kind.isFromEndPoint()) { if (end != Diagnostic.NOPOS) { - // text may not exist or may be out of bounds (e.g. generated source like Lombok) int testStart = end - name.length(); if (testStart >= 0 && source.length() > end - && source.substring(testStart, end).equals(name)) start = testStart; + && source.substring(testStart, end).equals(name)) { + start = testStart; + } } } } if (start != Diagnostic.NOPOS && end != Diagnostic.NOPOS && end > start) { LineMap lineMap = compUnitTree.getLineMap(); - Semanticdb.Range range = - Semanticdb.Range.newBuilder() - .setStartLine((int) lineMap.getLineNumber(start) - 1) - .setStartCharacter((int) lineMap.getColumnNumber(start) - 1) - .setEndLine((int) lineMap.getLineNumber(end) - 1) - .setEndCharacter((int) lineMap.getColumnNumber(end) - 1) - .build(); + ScipRange range = + new ScipRange( + (int) lineMap.getLineNumber(start) - 1, + (int) lineMap.getColumnNumber(start) - 1, + (int) lineMap.getLineNumber(end) - 1, + (int) lineMap.getColumnNumber(end) - 1); range = correctForTabs(range, lineMap, start); - return Optional.of(range); } return Optional.empty(); } - private Semanticdb.Range correctForTabs(Semanticdb.Range range, LineMap lineMap, int start) { + private ScipRange correctForTabs(ScipRange range, LineMap lineMap, int start) { int startLinePos = (int) lineMap.getPosition(lineMap.getLineNumber(start), 0); - - // javac replaces every tab with 8 spaces in the linemap. As this is potentially inconsistent - // with the source file itself, we adjust for that here if the line is actually indented with - // tabs. - // As for every tab there are 8 spaces, we remove 7 spaces for every tab to get the correct - // char offset (note: different to _column_ offset your editor shows) if (this.source.charAt(startLinePos) == '\t') { int count = 1; while (this.source.charAt(++startLinePos) == '\t') count++; range = - range - .toBuilder() - .setStartCharacter(range.getStartCharacter() - (count * 7)) - .setEndCharacter(range.getEndCharacter() - (count * 7)) - .build(); + range.withCharacters( + range.startCharacter - (count * 7), range.endCharacter - (count * 7)); } - return range; } - private Optional semanticdbOccurrence( - Element sym, - Optional range, - Role role, - Optional enclosingRange) { - if (range.isPresent()) { - String ssym = semanticdbSymbol(sym); - if (!ssym.equals(SemanticdbSymbols.NONE)) { - Semanticdb.SymbolOccurrence occ = symbolOccurrence(ssym, range.get(), role, enclosingRange); - return Optional.of(occ); - } else { - return Optional.empty(); - } - } else { - return Optional.empty(); - } - } - - /** - * Computes the enclosing range for the given tree node. Returns the range of the nearest - * non-trivial enclosing AST node. For definition occurrences, this includes the entire definition - * including documentation. For reference occurrences, this includes the parent expression bounds. - */ - private Optional computeEnclosingRange(Tree tree) { + private Optional computeEnclosingRange(Tree tree) { if (tree == null) return Optional.empty(); - TreePath path = nodes.get(tree); if (path == null) return Optional.empty(); - // For method, class, and variable definitions, use the tree itself as the enclosing range - // since we're processing the definition node Tree enclosingTree = tree; if (!(tree instanceof MethodTree || tree instanceof ClassTree || tree instanceof VariableTree)) { - // For non-definition nodes (like references), use the parent TreePath parentPath = path.getParentPath(); if (parentPath == null) return Optional.empty(); enclosingTree = parentPath.getLeaf(); @@ -529,67 +571,26 @@ private Optional computeEnclosingRange(Tree tree) { if (start != Diagnostic.NOPOS && end != Diagnostic.NOPOS && end > start) { LineMap lineMap = compUnitTree.getLineMap(); - Semanticdb.Range range = - Semanticdb.Range.newBuilder() - .setStartLine((int) lineMap.getLineNumber(start) - 1) - .setStartCharacter((int) lineMap.getColumnNumber(start) - 1) - .setEndLine((int) lineMap.getLineNumber(end) - 1) - .setEndCharacter((int) lineMap.getColumnNumber(end) - 1) - .build(); - + ScipRange range = + new ScipRange( + (int) lineMap.getLineNumber(start) - 1, + (int) lineMap.getColumnNumber(start) - 1, + (int) lineMap.getLineNumber(end) - 1, + (int) lineMap.getColumnNumber(end) - 1); range = correctForTabs(range, lineMap, start); - return Optional.of(range); } - return Optional.empty(); } - private String semanticdbText() { - if (source != null) return source; + private static String sourceText(CompilationUnitTree tree) { try { - source = compUnitTree.getSourceFile().getCharContent(true).toString(); + return tree.getSourceFile().getCharContent(true).toString(); } catch (IOException e) { - source = ""; - } - return source; - } - - private String semanticdbMd5() { - try { - byte[] bytes = - compUnitTree - .getSourceFile() - .getCharContent(true) - .toString() - .getBytes(StandardCharsets.UTF_8); - byte[] digest = MessageDigest.getInstance("MD5").digest(bytes); - StringBuilder sb = new StringBuilder(digest.length * 2); - for (byte b : digest) sb.append(String.format("%02X", b)); - return sb.toString(); - } catch (IOException | NoSuchAlgorithmException e) { return ""; } } - private int semanticdbSymbolInfoProperties(Element sym) { - int properties = 0; - properties |= - sym.getKind() == ElementKind.ENUM || sym.getKind() == ElementKind.ENUM_CONSTANT - ? Property.ENUM_VALUE - : 0; - for (Modifier modifier : sym.getModifiers()) { - if (modifier == Modifier.STATIC) properties |= Property.STATIC_VALUE; - else if (modifier == Modifier.DEFAULT) properties |= Property.DEFAULT_VALUE; - else if (modifier == Modifier.FINAL) properties |= Property.FINAL_VALUE; - else if (modifier == Modifier.ABSTRACT) properties |= Property.ABSTRACT_VALUE; - } - // for default interface methods, Modifier.ABSTRACT is also set... - if (((properties & Property.ABSTRACT_VALUE) > 0) && ((properties & Property.DEFAULT_VALUE) > 0)) - properties ^= Property.ABSTRACT_VALUE; - return properties; - } - private List semanticdbParentSymbols(TypeElement typeElement) { ArrayList parentSymbols = new ArrayList<>(); Set parentElements = semanticdbParentTypeElements(typeElement, new HashSet<>()); @@ -609,14 +610,13 @@ private Set semanticdbParentTypeElements( for (TypeMirror interfaceType : typeElement.getInterfaces()) { semanticdbParentSymbol(interfaceType, result); } - return result; } private void semanticdbParentSymbol(TypeMirror elementType, Set result) { if (!(elementType instanceof NoType)) { Element superElement = types.asElement(elementType); - if (superElement != null && superElement instanceof TypeElement) { + if (superElement instanceof TypeElement) { result.add((TypeElement) superElement); semanticdbParentTypeElements((TypeElement) superElement, result); } @@ -624,23 +624,19 @@ private void semanticdbParentSymbol(TypeMirror elementType, Set res } private Set semanticdbOverrides( - ExecutableElement sym, Element enclosingElement, HashSet overriddenSymbols) { + ExecutableElement sym, Element enclosingElement, Set overriddenSymbols) { if (enclosingElement instanceof TypeElement) { List superTypes = types.directSupertypes(enclosingElement.asType()); - // iterate through all super types for (TypeMirror superType : superTypes) { if (superType instanceof DeclaredType) { Element superElement = ((DeclaredType) superType).asElement(); - // find all elements of super class if (superElement instanceof TypeElement) { boolean methodFound = false; List enclosedElements = ((TypeElement) superElement).getEnclosedElements(); for (Element enclosedElement : enclosedElements) { - // check the element is a method if (enclosedElement instanceof ExecutableElement) { ExecutableElement enclosedExecutableElement = (ExecutableElement) enclosedElement; - // check the method overrides the original method if (elements.overrides( sym, enclosedExecutableElement, (TypeElement) sym.getEnclosingElement())) { String symbol = semanticdbSymbol(enclosedExecutableElement); @@ -660,40 +656,30 @@ private Set semanticdbOverrides( return overriddenSymbols; } - private Semanticdb.Access semanticdbAccess(Element sym) { - for (Modifier modifier : sym.getModifiers()) { - if (modifier == Modifier.PRIVATE) return privateAccess(); - if (modifier == Modifier.PUBLIC) return publicAccess(); - if (modifier == Modifier.PROTECTED) return protectedAccess(); - } - return privateWithinAccess(semanticdbSymbol(sym.getEnclosingElement())); - } - - private static String semanticdbUri( + private static String sourceRelativePath( CompilationUnitTree compUnitTree, SemanticdbJavacOptions options) { Path absolutePath = SemanticdbTaskListener.absolutePathFromUri(options, compUnitTree.getSourceFile()); - return SemanticdbPaths.semanticdbUri(options.sourceroot, absolutePath); + Path uriPath = + absolutePath.startsWith(options.sourceroot) + ? options.sourceroot.relativize(absolutePath) + : absolutePath; + StringBuilder out = new StringBuilder(); + Iterator it = uriPath.iterator(); + if (it.hasNext()) out.append(it.next().getFileName().toString()); + while (it.hasNext()) { + Path part = it.next(); + out.append('/').append(part.getFileName().toString()); + } + return out.toString(); } - private Semanticdb.Documentation semanticdbDocumentation(Tree tree) { + private String semanticdbDocumentation(Tree tree) { try { TreePath treePath = nodes.get(tree); String doc = trees.getDocComment(treePath); - if (doc == null) return null; - - return Semanticdb.Documentation.newBuilder() - .setFormat(Semanticdb.Documentation.Format.JAVADOC) - .setMessage(doc) - .build(); + return doc; } catch (NullPointerException e) { - // Can happen in `getDocComment()` - // Caused by: java.lang.NullPointerException - // at com.sun.tools.javac.model.JavacElements.cast(JavacElements.java:605) - // at com.sun.tools.javac.model.JavacElements.getTreeAndTopLevel(JavacElements.java:543) - // at com.sun.tools.javac.model.JavacElements.getDocComment(JavacElements.java:321) - // at - // com.sourcegraph.semanticdb_javac.SemanticdbVisitor.semanticdbDocumentation(SemanticdbVisitor.java:233) return null; } } diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSignatures.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSignatures.java deleted file mode 100644 index b49cac78f..000000000 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSignatures.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.sourcegraph.semanticdb_javac; - -import com.sourcegraph.semanticdb.LocalSymbolsCache; -import com.sourcegraph.semanticdb.Semanticdb; - -import com.sourcegraph.semanticdb.Semanticdb.*; - -import javax.lang.model.element.Element; -import javax.lang.model.element.TypeElement; -import javax.lang.model.element.ExecutableElement; -import javax.lang.model.element.VariableElement; -import javax.lang.model.element.TypeParameterElement; -import javax.lang.model.type.TypeVariable; -import javax.lang.model.type.TypeMirror; -import javax.lang.model.util.Types; -import java.util.List; -import java.util.stream.Collectors; - -import static com.sourcegraph.semanticdb.SemanticdbBuilders.*; -import static com.sourcegraph.semanticdb_javac.SemanticdbTypeVisitor.UNRESOLVED_TYPE_REF; - -public final class SemanticdbSignatures { - private final GlobalSymbolsCache cache; - private final LocalSymbolsCache locals; - private final Types types; - - public SemanticdbSignatures( - GlobalSymbolsCache cache, LocalSymbolsCache locals, Types types) { - this.cache = cache; - this.locals = locals; - this.types = types; - } - - public Signature generateSignature(Element sym) { - if (sym instanceof TypeElement) { - return generateClassSignature((TypeElement) sym); - } else if (sym instanceof ExecutableElement) { - return generateMethodSignature((ExecutableElement) sym); - } else if (sym instanceof VariableElement) { - return generateFieldSignature((VariableElement) sym); - } else if (sym instanceof TypeParameterElement) { - return generateTypeSignature((TypeParameterElement) sym); - } - return null; - } - - private Signature generateClassSignature(TypeElement sym) { - ClassSignature.Builder builder = ClassSignature.newBuilder(); - - builder.setTypeParameters(generateScope(sym.getTypeParameters())); - - for (TypeMirror superType : types.directSupertypes(sym.asType())) { - Semanticdb.Type semanticdbType = generateType(superType); - if (semanticdbType == null) { - semanticdbType = UNRESOLVED_TYPE_REF; - } - builder.addParents(semanticdbType); - } - - builder.setDeclarations(generateScope(sym.getEnclosedElements())); - - return signature(builder); - } - - private Signature generateMethodSignature(ExecutableElement sym) { - MethodSignature.Builder builder = MethodSignature.newBuilder(); - - builder.setTypeParameters(generateScope(sym.getTypeParameters())); - - builder.addParameterLists(generateScope(sym.getParameters())); - - Semanticdb.Type returnType = generateType(sym.getReturnType()); - if (returnType != null) { - builder.setReturnType(returnType); - } - - List thrownTypes = - sym.getThrownTypes().stream().map(this::generateType).collect(Collectors.toList()); - builder.addAllThrows(thrownTypes); - - return signature(builder); - } - - private Signature generateFieldSignature(VariableElement sym) { - Semanticdb.Type generateType = generateType(sym.asType()); - if (generateType == null) { - generateType = UNRESOLVED_TYPE_REF; - } - return signature(ValueSignature.newBuilder().setTpe(generateType)); - } - - private Signature generateTypeSignature(TypeParameterElement sym) { - TypeSignature.Builder builder = TypeSignature.newBuilder(); - - if (sym instanceof TypeElement) { - builder.setTypeParameters(generateScope(((TypeElement) sym).getTypeParameters())); - } - - TypeMirror varType = sym.asType(); - if (varType instanceof TypeVariable) { - Semanticdb.Type upperBound = generateType(((TypeVariable) varType).getUpperBound()); - if (upperBound != null) builder.setUpperBound(upperBound); - else builder.setUpperBound(UNRESOLVED_TYPE_REF); - } else builder.setUpperBound(UNRESOLVED_TYPE_REF); - - return signature(builder); - } - - private Scope generateScope(List elements) { - Scope.Builder scope = Scope.newBuilder(); - for (Element typeVar : elements) { - scope.addSymlinks(cache.semanticdbSymbol(typeVar, locals)); - } - return scope.build(); - } - - private Semanticdb.Type generateType(TypeMirror mirror) { - return new SemanticdbTypeVisitor(cache, locals, types).semanticdbType(mirror); - } -} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java index c134dffad..b6fb0de0c 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java @@ -1,38 +1,29 @@ package com.sourcegraph.semanticdb_javac; -import com.sourcegraph.semanticdb.LocalSymbolsCache; import com.sourcegraph.semanticdb.NoRelativePathMode; -import com.sourcegraph.semanticdb.Semanticdb; -import com.sourcegraph.semanticdb.SemanticdbDocumentBuilder; -import com.sourcegraph.semanticdb.SemanticdbPaths; -import com.sourcegraph.semanticdb.SemanticdbSymbols; -import com.sourcegraph.semanticdb.SemanticdbWriter; import com.sourcegraph.semanticdb.UriScheme; - import com.sun.source.util.JavacTask; import com.sun.source.util.TaskEvent; import com.sun.source.util.TaskListener; import com.sun.source.util.Trees; import javax.lang.model.util.Elements; import javax.lang.model.util.Types; +import org.scip_code.scip.Index; -import javax.lang.model.element.Element; import javax.tools.JavaFileObject; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.PrintWriter; import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.Map; -import java.util.Optional; /** - * Callback hook that generates SemanticDB when the compiler has completed typechecking a Java - * source file. + * Callback hook that drives {@link ScipVisitor} after javac finishes typechecking a Java source + * file. The visitor builds a self-contained {@code *.scip} shard which is written (or merged) under + * {@code META-INF/scip/...}. */ public final class SemanticdbTaskListener implements TaskListener { private final SemanticdbJavacOptions options; @@ -41,8 +32,6 @@ public final class SemanticdbTaskListener implements TaskListener { private final Types types; private final Trees trees; private final Elements elements; - // Javac fires ANALYZE once per top-level type; accumulate across rounds per output path. - private final Map perSourceState = new HashMap<>(); private int noRelativePathCounter = 0; public SemanticdbTaskListener( @@ -61,17 +50,14 @@ public SemanticdbTaskListener( @Override public void started(TaskEvent e) { - // Upon first encounter with a file (before any other tasks are run) - // we remove the semanticdb file for this source file to ensure - // stale data doesn't cause problems + // Upon first encounter with a file (before any other tasks are run) we remove any prior SCIP + // shard for this source file to avoid accumulating stale occurrences across builds. if (e.getKind() == TaskEvent.Kind.ENTER) { inferBazelSourceroot(e.getSourceFile()); - Result semanticdbPath = semanticdbOutputPath(options, e); - if (semanticdbPath.isOk()) { - Path output = semanticdbPath.getOrThrow(); - perSourceState.remove(output); + Result shardPath = scipShardOutputPath(options, e); + if (shardPath != null && shardPath.isOk()) { try { - Files.deleteIfExists(output); + Files.deleteIfExists(shardPath.getOrThrow()); } catch (IOException ex) { this.reportException(ex, e); } @@ -95,12 +81,8 @@ public void finished(TaskEvent e) { try { onFinishedAnalyze(e); } catch (Throwable ex) { - // Catch exceptions because we don't want to stop the compilation even if this - // plugin has a + // Catch exceptions because we don't want to stop the compilation even if this plugin has a // bug. We report the full stack trace because it's helpful for bug reports. - // Exceptions - // should only happen in *exceptional* situations and they should be reported - // upstream. Throwable throwable = ex; if (e.getSourceFile() != null) { throwable = @@ -111,10 +93,8 @@ public void finished(TaskEvent e) { } } - // Uses reporter.error with the full stack trace of the exception instead of - // reporter.exception - // because reporter.exception doesn't seem to print any meaningful information - // about the + // Uses reporter.error with the full stack trace of the exception instead of reporter.exception + // because reporter.exception doesn't seem to print any meaningful information about the // exception, it just prints the location with an empty message. private void reportException(Throwable exception, TaskEvent e) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -125,57 +105,39 @@ private void reportException(Throwable exception, TaskEvent e) { } private void onFinishedAnalyze(TaskEvent e) { - Result path = semanticdbOutputPath(options, e); - if (path != null) { - if (path.isOk()) { - Path output = path.getOrThrow(); - PerSourceState state = perSourceState.computeIfAbsent(output, k -> new PerSourceState()); - Semanticdb.TextDocument textDocument = - new SemanticdbVisitor( - globals, - state.locals, - e.getCompilationUnit(), - options, - types, - trees, - elements, - state.documentBuilder) - .buildTextDocument(e.getCompilationUnit()); - writeSemanticdb(e, output, textDocument); - } else { - reporter.error(path.getErrorOrThrow(), e); - } + Result path = scipShardOutputPath(options, e); + if (path == null) return; + if (!path.isOk()) { + reporter.error(path.getErrorOrThrow(), e); + return; } - } - private void writeSemanticdb(TaskEvent event, Path output, Semanticdb.TextDocument textDocument) { + Path shardPath = path.getOrThrow(); try { - SemanticdbWriter.writeTextDocument(output, textDocument); - } catch (IOException e) { - this.reportException(e, event); + Index shard = + new ScipVisitor(globals, e.getCompilationUnit(), options, types, trees, elements) + .buildShard(e.getCompilationUnit()); + Files.createDirectories(shardPath.getParent()); + if (Files.exists(shardPath)) { + try (InputStream is = Files.newInputStream(shardPath)) { + shard = ScipShards.merge(Index.parseFrom(is), shard); + } + } + Files.write(shardPath, shard.toByteArray()); + } catch (IOException ex) { + this.reportException(ex, e); } } - private static final class PerSourceState { - final SemanticdbDocumentBuilder documentBuilder = new SemanticdbDocumentBuilder(); - final LocalSymbolsCache locals = - new LocalSymbolsCache<>(new IdentityHashMap<>(), SemanticdbSymbols::local); - } - public static Path absolutePathFromUri(SemanticdbJavacOptions options, JavaFileObject file) { URI uri = file.toUri(); if (options.uriScheme == UriScheme.BAZEL) { String toString = file.toString().replace(":", "/"); - // This solution is hacky, and it would be very nice to use a dedicated API - // instead. - // The Bazel Java compiler constructs `SimpleFileObject/DirectoryFileObject` - // with a - // "user-friendly" name that points to the original source file and an - // underlying/actual - // file path in a temporary directory. We're constrained by having to use only - // public APIs of - // the Java compiler and `toString()` seems to be the only way to access the - // user-friendly + // This solution is hacky, and it would be very nice to use a dedicated API instead. + // The Bazel Java compiler constructs `SimpleFileObject/DirectoryFileObject` with a + // "user-friendly" name that points to the original source file and an underlying/actual + // file path in a temporary directory. We're constrained by having to use only public APIs of + // the Java compiler and `toString()` seems to be the only way to access the user-friendly // path. String[] knownBazelToStringPatterns = new String[] {"SimpleFileObject[", "DirectoryFileObject["}; @@ -202,19 +164,6 @@ private void inferBazelSourceroot(JavaFileObject file) { } Path absolutePath = absolutePathFromUri(options, file); Path uriPath = Paths.get(file.toUri()); - // absolutePath is the "human-readable" original path, for example - // /home/repo/com/example/Hello.java - // uriPath is the sandbox/temporary file path, for example - // /private/var/tmp/com/example/Hello.java - // - // We infer sourceroot by iterating the names of both files in reverse order - // and stop at the first entry where the two paths are different. For the - // example above, we compare "Hello.java", then "example", then "com", and - // when we reach "repo" != "tmp" then we guess that "/home/repo" is the - // sourceroot. This logic is brittle and it would be nice to use more - // dedicated APIs, but Bazel actively makes an effort to sandbox - // compilation and hide access to the original workspace, which is why we - // resort to solutions like this. int relativePathDepth = 0; int uriPathDepth = uriPath.getNameCount(); int absolutePathDepth = absolutePath.getNameCount(); @@ -232,34 +181,36 @@ private void inferBazelSourceroot(JavaFileObject file) { .resolve(absolutePath.subpath(0, absolutePathDepth - relativePathDepth)); } - private Result semanticdbOutputPath(SemanticdbJavacOptions options, TaskEvent e) { + private Result scipShardOutputPath(SemanticdbJavacOptions options, TaskEvent e) { Path absolutePath = absolutePathFromUri(options, e.getSourceFile()); - Optional happyPath = - SemanticdbPaths.semanticdbPath(options.targetroot, options.sourceroot, absolutePath); - if (happyPath.isPresent()) { - return Result.ok(happyPath.get()); + if (absolutePath.startsWith(options.sourceroot)) { + Path relativePath = options.sourceroot.relativize(absolutePath); + String filename = relativePath.getFileName().toString() + ".scip"; + Path scipOutputPath = + options + .targetroot + .resolve("META-INF") + .resolve("scip") + .resolve(relativePath) + .resolveSibling(filename); + return Result.ok(scipOutputPath); } switch (options.noRelativePath) { case INDEX_ANYWAY: - // Come up with a unique relative path for this file even if it's not under the - // sourceroot. - // By indexing auto-generated files, we collect SymbolInformation for - // auto-generated symbol, - // which results in more useful hover tooltips in the editor. - // In the future, we may want to additionally embed the full text contents of - // these files - // so that it's possible to browse generated files with precise code navigation. + // Come up with a unique relative path for this file even if it's not under the sourceroot. + // By indexing auto-generated files, we collect SymbolInformation for auto-generated + // symbols, which results in more useful hover tooltips in the editor. String uniqueFilename = - String.format("%d.%s.semanticdb", ++noRelativePathCounter, absolutePath.getFileName()); - Path semanticdbOutputPath = + String.format("%d.%s.scip", ++noRelativePathCounter, absolutePath.getFileName()); + Path scipOutputPath = options .targetroot .resolve("META-INF") - .resolve("semanticdb") + .resolve("scip") .resolve("no-relative-path") .resolve(uniqueFilename); - return Result.ok(semanticdbOutputPath); + return Result.ok(scipOutputPath); case WARNING: reporter.info( String.format( diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTrees.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTrees.java deleted file mode 100644 index e143c4596..000000000 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTrees.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.sourcegraph.semanticdb_javac; - -import com.sourcegraph.semanticdb.LocalSymbolsCache; -import com.sourcegraph.semanticdb.Semanticdb; - -import com.sun.source.tree.*; -import com.sun.source.util.Trees; -import javax.lang.model.element.Element; -import javax.lang.model.util.Types; -import javax.lang.model.type.TypeMirror; -import com.sun.source.util.TreePath; -import com.sun.source.tree.Tree; -import com.sun.source.tree.Tree.Kind; - -import java.util.HashMap; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import static com.sourcegraph.semanticdb.SemanticdbBuilders.*; -import static com.sourcegraph.semanticdb_javac.SemanticdbTypeVisitor.ARRAY_SYMBOL; - -public class SemanticdbTrees { - public SemanticdbTrees( - GlobalSymbolsCache globals, - LocalSymbolsCache locals, - String semanticdbUri, - Types types, - Trees trees, - HashMap nodes) { - this.globals = globals; - this.locals = locals; - this.semanticdbUri = semanticdbUri; - this.types = types; - this.trees = trees; - this.nodes = nodes; - this.typeVisitor = new SemanticdbTypeVisitor(globals, locals, types); - } - - private final GlobalSymbolsCache globals; - private final LocalSymbolsCache locals; - private final String semanticdbUri; - private final Types types; - private final Trees trees; - private final HashMap nodes; - private final SemanticdbTypeVisitor typeVisitor; - - public List annotations(Tree node) { - if (!(node instanceof ClassTree) - && !(node instanceof MethodTree) - && !(node instanceof VariableTree)) return null; - - List annotations = new ArrayList<>(); - - ModifiersTree mods; - if (node instanceof ClassTree) { - mods = ((ClassTree) node).getModifiers(); - } else if (node instanceof MethodTree) { - mods = ((MethodTree) node).getModifiers(); - } else { - mods = ((VariableTree) node).getModifiers(); - } - - for (AnnotationTree annotation : mods.getAnnotations()) { - annotations.add(annotationBuilder(annotation)); - } - - return annotations; - } - - public Semanticdb.AnnotationTree annotationBuilder(AnnotationTree annotation) { - ArrayList params = new ArrayList<>(annotation.getArguments().size()); - - for (ExpressionTree param : annotation.getArguments()) { - // anecdotally not always AssignmentTree in some situations when a compilation - // unit can't - // resolve symbols fully - if (param instanceof AssignmentTree) { - AssignmentTree assign = (AssignmentTree) param; - ExpressionTree assignValue = assign.getExpression(); - TreePath variableTreePath = nodes.get(assign.getVariable()); - if (variableTreePath != null) { - Element variableSym = trees.getElement(variableTreePath); - String symbol = globals.semanticdbSymbol(variableSym, locals); - params.add(tree(assignTree(tree(idTree(symbol)), annotationParameter(assignValue)))); - } - } else { - params.add(annotationParameter(param)); - } - } - - TreePath annotationTreePath = nodes.get(annotation); - Element annotationSym = trees.getElement(annotationTreePath); - - Semanticdb.Type type = typeVisitor.semanticdbType(annotationSym.asType()); - return annotationTree(type, params); - } - - private TypeMirror getTreeType(Tree tree) { - TreePath path = nodes.get(tree); - return trees.getTypeMirror(path); - } - - private Semanticdb.Tree annotationParameter(ExpressionTree expr) { - if (expr instanceof MemberSelectTree) { - TreePath expressionTreePath = nodes.get(expr); - Element expressionSym = trees.getElement(expressionTreePath); - return tree( - selectTree( - tree(idTree(globals.semanticdbSymbol(expressionSym.getEnclosingElement(), locals))), - idTree(globals.semanticdbSymbol(expressionSym, locals)))); - } else if (expr instanceof NewArrayTree) { - NewArrayTree rhs = (NewArrayTree) expr; - return tree( - applyTree( - tree(idTree(ARRAY_SYMBOL)), - rhs.getInitializers().stream() - .map(this::annotationParameter) - .collect(Collectors.toList()))); - } else if (expr instanceof LiteralTree) { - // Literals can either be a primitive or String - Object value = ((LiteralTree) expr).getValue(); - final Semanticdb.Constant constant; - // Technically, annotation parameter values cannot be null, - // according to JLS: https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.7.1 - // But this codepath is still possible to hit when compiling invalid code - and - // we should handle the null const case in order to fail more gracefully - if (value == null) constant = nullConst(); - else if (value instanceof String) constant = stringConst((String) value); - else if (value instanceof Boolean) constant = booleanConst((Boolean) value); - else if (value instanceof Byte) constant = byteConst((Byte) value); - else if (value instanceof Short) constant = shortConst((Short) value); - else if (value instanceof Integer) constant = intConst((Integer) value); - else if (value instanceof Long) constant = longConst((Long) value); - else if (value instanceof Character) constant = charConst((Character) value); - else if (value instanceof Float) constant = floatConst((Float) value); - else if (value instanceof Double) constant = doubleConst((Double) value); - else - throw new IllegalStateException( - semanticdbUri - + ": annotation parameter rhs was of unexpected class type " - + value.getClass() - + "\n" - + value); - return tree(literalTree(constant)); - } else if (expr instanceof AnnotationTree) { - return tree(annotationBuilder((AnnotationTree) expr)); - } else if (expr instanceof IdentifierTree) { - TreePath expressionTreePath = nodes.get(expr); - Element expressionSym = trees.getElement(expressionTreePath); - return tree(idTree(globals.semanticdbSymbol(expressionSym, locals))); - } else if (expr instanceof BinaryTree) { - BinaryTree binExpr = (BinaryTree) expr; - return tree( - binopTree( - annotationParameter(binExpr.getLeftOperand()), - semanticdbBinaryOperator(expr.getKind()), - annotationParameter(binExpr.getRightOperand()))); - } else if (expr instanceof UnaryTree) { - UnaryTree unaryExpr = (UnaryTree) expr; - return tree( - unaryOpTree( - semanticdbUnaryOperator(unaryExpr.getKind()), - annotationParameter(unaryExpr.getExpression()))); - } else if (expr instanceof ParenthesizedTree) { - ParenthesizedTree parenExpr = (ParenthesizedTree) expr; - return annotationParameter(parenExpr.getExpression()); - } else if (expr instanceof TypeCastTree) { - TypeCastTree tree = (TypeCastTree) expr; - return tree( - castTree( - typeVisitor.semanticdbType(getTreeType(tree.getType())), - annotationParameter(tree.getExpression()))); - } else { - throw new IllegalArgumentException( - semanticdbUri - + ": annotation parameter rhs was of unexpected tree node type " - + expr.getClass() - + "\n" - + expr); - } - } - - private Semanticdb.BinaryOperator semanticdbBinaryOperator(Tree.Kind kind) { - switch (kind) { - case PLUS: - return Semanticdb.BinaryOperator.PLUS; - case MINUS: - return Semanticdb.BinaryOperator.MINUS; - case MULTIPLY: - return Semanticdb.BinaryOperator.MULTIPLY; - case DIVIDE: - return Semanticdb.BinaryOperator.DIVIDE; - case REMAINDER: - return Semanticdb.BinaryOperator.REMAINDER; - case LESS_THAN: - return Semanticdb.BinaryOperator.LESS_THAN; - case GREATER_THAN: - return Semanticdb.BinaryOperator.GREATER_THAN; - case LEFT_SHIFT: - return Semanticdb.BinaryOperator.SHIFT_LEFT; - case RIGHT_SHIFT: - return Semanticdb.BinaryOperator.SHIFT_RIGHT; - case UNSIGNED_RIGHT_SHIFT: - return Semanticdb.BinaryOperator.SHIFT_RIGHT_UNSIGNED; - case EQUAL_TO: - return Semanticdb.BinaryOperator.EQUAL_TO; - case NOT_EQUAL_TO: - return Semanticdb.BinaryOperator.NOT_EQUAL_TO; - case LESS_THAN_EQUAL: - return Semanticdb.BinaryOperator.LESS_THAN_EQUAL; - case GREATER_THAN_EQUAL: - return Semanticdb.BinaryOperator.GREATER_THAN_EQUAL; - case CONDITIONAL_AND: - return Semanticdb.BinaryOperator.CONDITIONAL_AND; - case CONDITIONAL_OR: - return Semanticdb.BinaryOperator.CONDITIONAL_OR; - case AND: - return Semanticdb.BinaryOperator.AND; - case OR: - return Semanticdb.BinaryOperator.OR; - case XOR: - return Semanticdb.BinaryOperator.XOR; - default: - throw new IllegalStateException( - semanticdbUri + ": unexpected binary expression operator kind " + kind); - } - } - - private Semanticdb.UnaryOperator semanticdbUnaryOperator(Tree.Kind kind) { - switch (kind) { - case UNARY_MINUS: - return Semanticdb.UnaryOperator.UNARY_MINUS; - - case UNARY_PLUS: - return Semanticdb.UnaryOperator.UNARY_PLUS; - - case POSTFIX_INCREMENT: - return Semanticdb.UnaryOperator.UNARY_POSTFIX_INCREMENT; - - case POSTFIX_DECREMENT: - return Semanticdb.UnaryOperator.UNARY_POSTFIX_DECREMENT; - - case PREFIX_INCREMENT: - return Semanticdb.UnaryOperator.UNARY_PREFIX_INCREMENT; - - case PREFIX_DECREMENT: - return Semanticdb.UnaryOperator.UNARY_PREFIX_DECREMENT; - - case BITWISE_COMPLEMENT: - return Semanticdb.UnaryOperator.UNARY_BITWISE_COMPLEMENT; - - case LOGICAL_COMPLEMENT: - return Semanticdb.UnaryOperator.UNARY_LOGICAL_COMPLEMENT; - - default: - throw new IllegalStateException( - semanticdbUri + ": unexpected unary expression operator kind " + kind); - } - } -} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTypeVisitor.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTypeVisitor.java deleted file mode 100644 index ba458ab9d..000000000 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTypeVisitor.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.sourcegraph.semanticdb_javac; - -import com.sourcegraph.semanticdb.LocalSymbolsCache; -import com.sourcegraph.semanticdb.Semanticdb; - -import javax.lang.model.element.Element; -import javax.lang.model.util.SimpleTypeVisitor8; -import javax.lang.model.type.TypeMirror; -import javax.lang.model.type.DeclaredType; -import javax.lang.model.type.ArrayType; -import javax.lang.model.type.WildcardType; -import javax.lang.model.type.TypeVariable; -import javax.lang.model.type.IntersectionType; -import javax.lang.model.type.PrimitiveType; -import javax.lang.model.type.TypeKind; -import javax.lang.model.type.NoType; -import javax.lang.model.util.Types; -import java.util.ArrayList; - -import static com.sourcegraph.semanticdb.SemanticdbBuilders.*; - -/** A TypeMirror tree visitor that constructs a recursive SemanticDB Type structure. */ -class SemanticdbTypeVisitor extends SimpleTypeVisitor8 { - static final Semanticdb.Type UNRESOLVED_TYPE_REF = typeRef("unresolved_type#"); - - static final String ARRAY_SYMBOL = "scala/Array#"; - - private final GlobalSymbolsCache cache; - private final LocalSymbolsCache locals; - private final Types types; - - SemanticdbTypeVisitor( - GlobalSymbolsCache cache, LocalSymbolsCache locals, Types types) { - this.cache = cache; - this.locals = locals; - this.types = types; - } - - public Semanticdb.Type semanticdbType(TypeMirror tpe) { - Semanticdb.Type result = super.visit(tpe); - return result == null ? UNRESOLVED_TYPE_REF : result; - } - - @Override - public Semanticdb.Type visitDeclared(DeclaredType t, Void unused) { - boolean isExistential = - t.getTypeArguments().stream().anyMatch((type) -> type instanceof WildcardType); - - ArrayList typeParams = new ArrayList<>(); - Semanticdb.Scope.Builder declarations = Semanticdb.Scope.newBuilder(); - for (TypeMirror type : t.getTypeArguments()) { - typeParams.add(semanticdbType(type)); - - if (type instanceof WildcardType) { - Semanticdb.TypeSignature.Builder typeSig = Semanticdb.TypeSignature.newBuilder(); - WildcardType wildcardType = (WildcardType) type; - - // semanticdb spec asks for List() not None for type_parameters field - typeSig.setTypeParameters(Semanticdb.Scope.newBuilder()); - - if (wildcardType.getExtendsBound() != null) { - typeSig.setUpperBound(super.visit(wildcardType.getExtendsBound())); - } else if (wildcardType.getSuperBound() != null) { - typeSig.setLowerBound(super.visit(wildcardType.getSuperBound())); - } - - declarations.addHardlinks( - Semanticdb.SymbolInformation.newBuilder() - .setSymbol("local_wildcard") - .setSignature(Semanticdb.Signature.newBuilder().setTypeSignature(typeSig))); - } else { - Element element = types.asElement(type); - declarations.addSymlinks(cache.semanticdbSymbol(element, locals)); - } - } - - if (!isExistential) { - return typeRef(cache.semanticdbSymbol(t.asElement(), locals), typeParams); - } else { - return existentialType( - typeRef(cache.semanticdbSymbol(t.asElement(), locals), typeParams), declarations.build()); - } - } - - @Override - public Semanticdb.Type visitArray(ArrayType t, Void unused) { - ArrayList types = new ArrayList(); - types.add(semanticdbType(t.getComponentType())); - return typeRef(ARRAY_SYMBOL, types); - } - - @Override - public Semanticdb.Type visitPrimitive(PrimitiveType t, Void unused) { - return typeRef(primitiveSymbol(t.getKind())); - } - - @Override - public Semanticdb.Type visitTypeVariable(TypeVariable t, Void unused) { - return typeRef(cache.semanticdbSymbol(t.asElement(), locals)); - } - - @Override - public Semanticdb.Type visitIntersection(IntersectionType t, Void unused) { - ArrayList types = new ArrayList<>(); - for (TypeMirror type : t.getBounds()) { - types.add(super.visit(type)); - } - - return intersectionType(types); - } - - @Override - public Semanticdb.Type visitWildcard(WildcardType t, Void unused) { - // https://github.com/scalameta/scalameta/issues/1703 - // https://sourcegraph.com/github.com/scalameta/scalameta/-/blob/semanticdb/metacp/src/main/scala/scala/meta/internal/javacp/Javacp.scala#L452:19 - return typeRef("local_wildcard"); - } - - @Override - public Semanticdb.Type visitNoType(NoType t, Void unused) { - return typeRef(primitiveSymbol(t.getKind())); - } - - public String primitiveSymbol(TypeKind kind) { - switch (kind) { - case BOOLEAN: - return "scala/Boolean#"; - case BYTE: - return "scala/Byte#"; - case SHORT: - return "scala/Short#"; - case INT: - return "scala/Int#"; - case LONG: - return "scala/Long#"; - case CHAR: - return "scala/Char#"; - case FLOAT: - return "scala/Float#"; - case DOUBLE: - return "scala/Double#"; - case VOID: - return "scala/Unit#"; - default: - throw new IllegalArgumentException("got " + kind.name()); - } - } -} diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java index 299966fdd..b50629be4 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ClassConsumer.java @@ -1,28 +1,28 @@ package snapshots; -//⌄ enclosing_range_start semanticdb maven . . snapshots/ClassConsumer# +//⌄ enclosing_range_start scip-java maven . . snapshots/ClassConsumer# public class ClassConsumer { -// ^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/ClassConsumer# +// ^^^^^^^^^^^^^ definition scip-java maven . . snapshots/ClassConsumer# // display_name ClassConsumer // signature_documentation java public class ClassConsumer // kind Class -// ^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/ClassConsumer#``(). +// ^^^^^^^^^^^^^ definition scip-java maven . . snapshots/ClassConsumer#``(). // display_name // signature_documentation java public ClassConsumer() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . snapshots/ClassConsumer#run(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/ClassConsumer#run(). public static void run() { -// ^^^ definition semanticdb maven . . snapshots/ClassConsumer#run(). +// ^^^ definition scip-java maven . . snapshots/ClassConsumer#run(). // display_name run // signature_documentation java public static void run() // kind StaticMethod System.out.println(new Class().getAsdf()); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+9). -// ^^^^^ reference semanticdb maven . . snapshots/Class#``(+1). -// ^^^^^^^ reference semanticdb maven . . snapshots/Class#getAsdf(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+9). +// ^^^^^ reference scip-java maven . . snapshots/Class#``(+1). +// ^^^^^^^ reference scip-java maven . . snapshots/Class#getAsdf(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/ClassConsumer#run(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/ClassConsumer#run(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/ClassConsumer# +//⌃ enclosing_range_end scip-java maven . . snapshots/ClassConsumer# diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java index 6708477bb..962c6bbce 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/CompanionConsumer.java @@ -1,25 +1,25 @@ package snapshots; -//⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionConsumer# +//⌄ enclosing_range_start scip-java maven . . snapshots/CompanionConsumer# public class CompanionConsumer { -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/CompanionConsumer# +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/CompanionConsumer# // display_name CompanionConsumer // signature_documentation java public class CompanionConsumer // kind Class -// ⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionConsumer#``(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/CompanionConsumer#``(). CompanionConsumer() { -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/CompanionConsumer#``(). +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/CompanionConsumer#``(). // display_name // signature_documentation java CompanionConsumer() // kind Constructor CompanionOwner.Companion.create(); -// ^^^^^^^^^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner# -// ^^^^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner#Companion. -// ^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner#Companion#create(). +// ^^^^^^^^^^^^^^ reference scip-java maven . . snapshots/CompanionOwner# +// ^^^^^^^^^ reference scip-java maven . . snapshots/CompanionOwner#Companion. +// ^^^^^^ reference scip-java maven . . snapshots/CompanionOwner#Companion#create(). new CompanionOwner().create(); -// ^^^^^^^^^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner#``(). -// ^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner#create(). +// ^^^^^^^^^^^^^^ reference scip-java maven . . snapshots/CompanionOwner#``(). +// ^^^^^^ reference scip-java maven . . snapshots/CompanionOwner#create(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionConsumer#``(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/CompanionConsumer#``(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionConsumer# +//⌃ enclosing_range_end scip-java maven . . snapshots/CompanionConsumer# diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java index 82ea72ed4..77785c36a 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinClass.java @@ -1,45 +1,45 @@ package snapshots; -//⌄ enclosing_range_start semanticdb maven . . snapshots/KotlinClass# +//⌄ enclosing_range_start scip-java maven . . snapshots/KotlinClass# public class KotlinClass { -// ^^^^^^^^^^^ definition semanticdb maven . . snapshots/KotlinClass# +// ^^^^^^^^^^^ definition scip-java maven . . snapshots/KotlinClass# // display_name KotlinClass // signature_documentation java public class KotlinClass // kind Class -// ⌄ enclosing_range_start semanticdb maven . . snapshots/KotlinClass#``(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/KotlinClass#``(). KotlinClass() throws Class { -// ^^^^^^^^^^^ definition semanticdb maven . . snapshots/KotlinClass#``(). +// ^^^^^^^^^^^ definition scip-java maven . . snapshots/KotlinClass#``(). // display_name // signature_documentation java KotlinClass() throws Class // kind Constructor -// ^^^^^ reference semanticdb maven . . snapshots/Class# +// ^^^^^ reference scip-java maven . . snapshots/Class# throw new Class(); -// ^^^^^ reference semanticdb maven . . snapshots/Class#``(+1). +// ^^^^^ reference scip-java maven . . snapshots/Class#``(+1). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/KotlinClass#``(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/KotlinClass#``(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/KotlinClass#test(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/KotlinClass#test(). void test() throws Class { -// ^^^^ definition semanticdb maven . . snapshots/KotlinClass#test(). +// ^^^^ definition scip-java maven . . snapshots/KotlinClass#test(). // display_name test // signature_documentation java void test() throws Class // kind Method -// ^^^^^ reference semanticdb maven . . snapshots/Class# +// ^^^^^ reference scip-java maven . . snapshots/Class# throw new Class(1, ""); -// ^^^^^ reference semanticdb maven . . snapshots/Class#``(). +// ^^^^^ reference scip-java maven . . snapshots/Class#``(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/KotlinClass#test(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/KotlinClass#test(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/KotlinClass#other(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/KotlinClass#other(). void other() throws Class { -// ^^^^^ definition semanticdb maven . . snapshots/KotlinClass#other(). +// ^^^^^ definition scip-java maven . . snapshots/KotlinClass#other(). // display_name other // signature_documentation java void other() throws Class // kind Method -// ^^^^^ reference semanticdb maven . . snapshots/Class# +// ^^^^^ reference scip-java maven . . snapshots/Class# throw new Class(1); -// ^^^^^ reference semanticdb maven . . snapshots/Class#``(+2). +// ^^^^^ reference scip-java maven . . snapshots/Class#``(+2). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/KotlinClass#other(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/KotlinClass#other(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/KotlinClass# +//⌃ enclosing_range_end scip-java maven . . snapshots/KotlinClass# diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java index 4a57bc1d6..b952e169a 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/KotlinLambdas.java @@ -1,43 +1,43 @@ package snapshots; import kotlin.collections.CollectionsKt; -// ^^^^^^ reference semanticdb maven . . kotlin/ -// ^^^^^^^^^^^ reference semanticdb maven . . kotlin/collections/ -// ^^^^^^^^^^^^^ reference semanticdb maven . . kotlin/collections/CollectionsKt# +// ^^^^^^ reference scip-java maven . . kotlin/ +// ^^^^^^^^^^^ reference scip-java maven . . kotlin/collections/ +// ^^^^^^^^^^^^^ reference scip-java maven . . kotlin/collections/CollectionsKt# import kotlin.text.StringsKt; -// ^^^^^^ reference semanticdb maven . . kotlin/ -// ^^^^ reference semanticdb maven . . kotlin/text/ -// ^^^^^^^^^ reference semanticdb maven . . kotlin/text/StringsKt# +// ^^^^^^ reference scip-java maven . . kotlin/ +// ^^^^ reference scip-java maven . . kotlin/text/ +// ^^^^^^^^^ reference scip-java maven . . kotlin/text/StringsKt# -//⌄ enclosing_range_start semanticdb maven . . snapshots/KotlinLambdas# +//⌄ enclosing_range_start scip-java maven . . snapshots/KotlinLambdas# public class KotlinLambdas { -// ^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/KotlinLambdas# +// ^^^^^^^^^^^^^ definition scip-java maven . . snapshots/KotlinLambdas# // display_name KotlinLambdas // signature_documentation java public class KotlinLambdas // kind Class -// ^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/KotlinLambdas#``(). +// ^^^^^^^^^^^^^ definition scip-java maven . . snapshots/KotlinLambdas#``(). // display_name // signature_documentation java public KotlinLambdas() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . snapshots/KotlinLambdas#test(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/KotlinLambdas#test(). public void test() { -// ^^^^ definition semanticdb maven . . snapshots/KotlinLambdas#test(). +// ^^^^ definition scip-java maven . . snapshots/KotlinLambdas#test(). // display_name test // signature_documentation java public void test() // kind Method LambdasKt.getX(); // TODO figure out emit getX on kotlin side -// ^^^^^^^^^ reference semanticdb maven . . snapshots/LambdasKt# -// ^^^^ reference semanticdb maven . . snapshots/LambdasKt#getX(). +// ^^^^^^^^^ reference scip-java maven . . snapshots/LambdasKt# +// ^^^^ reference scip-java maven . . snapshots/LambdasKt#getX(). kotlin.collections.CollectionsKt.listOf(); -// ^^^^^^ reference semanticdb maven . . kotlin/ -// ^^^^^^^^^^^ reference semanticdb maven . . kotlin/collections/ -// ^^^^^^^^^^^^^ reference semanticdb maven . . kotlin/collections/CollectionsKt# -// ^^^^^^ reference semanticdb maven . . kotlin/collections/CollectionsKt__CollectionsKt#listOf(). +// ^^^^^^ reference scip-java maven . . kotlin/ +// ^^^^^^^^^^^ reference scip-java maven . . kotlin/collections/ +// ^^^^^^^^^^^^^ reference scip-java maven . . kotlin/collections/CollectionsKt# +// ^^^^^^ reference scip-java maven . . kotlin/collections/CollectionsKt__CollectionsKt#listOf(). FunctionsKt.sampleText(""); -// ^^^^^^^^^^^ reference semanticdb maven . . snapshots/FunctionsKt# -// ^^^^^^^^^^ reference semanticdb maven . . snapshots/FunctionsKt#sampleText(). +// ^^^^^^^^^^^ reference scip-java maven . . snapshots/FunctionsKt# +// ^^^^^^^^^^ reference scip-java maven . . snapshots/FunctionsKt#sampleText(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/KotlinLambdas#test(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/KotlinLambdas#test(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/KotlinLambdas# +//⌃ enclosing_range_end scip-java maven . . snapshots/KotlinLambdas# diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java index 8bbb54604..a9c03cefd 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/java/snapshots/ObjectKtConsumer.java @@ -1,26 +1,26 @@ package snapshots; -//⌄ enclosing_range_start semanticdb maven . . snapshots/ObjectKtConsumer# +//⌄ enclosing_range_start scip-java maven . . snapshots/ObjectKtConsumer# public class ObjectKtConsumer { -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/ObjectKtConsumer# +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/ObjectKtConsumer# // display_name ObjectKtConsumer // signature_documentation java public class ObjectKtConsumer // kind Class -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/ObjectKtConsumer#``(). +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/ObjectKtConsumer#``(). // display_name // signature_documentation java public ObjectKtConsumer() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . snapshots/ObjectKtConsumer#run(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/ObjectKtConsumer#run(). public static void run() { -// ^^^ definition semanticdb maven . . snapshots/ObjectKtConsumer#run(). +// ^^^ definition scip-java maven . . snapshots/ObjectKtConsumer#run(). // display_name run // signature_documentation java public static void run() // kind StaticMethod ObjectKt.INSTANCE.fail("boom"); -// ^^^^^^^^ reference semanticdb maven . . snapshots/ObjectKt# -// ^^^^^^^^ reference semanticdb maven . . snapshots/ObjectKt#INSTANCE. -// ^^^^ reference semanticdb maven . . snapshots/ObjectKt#fail(). +// ^^^^^^^^ reference scip-java maven . . snapshots/ObjectKt# +// ^^^^^^^^ reference scip-java maven . . snapshots/ObjectKt#INSTANCE. +// ^^^^ reference scip-java maven . . snapshots/ObjectKt#fail(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/ObjectKtConsumer#run(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/ObjectKtConsumer#run(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/ObjectKtConsumer# +//⌃ enclosing_range_end scip-java maven . . snapshots/ObjectKtConsumer# diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt index 57939c894..b99c5cbb0 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Class.kt @@ -1,129 +1,146 @@ package snapshots -// ^^^^^^^^^ reference semanticdb maven . . snapshots/ +// ^^^^^^^^^ reference scip-java maven . . snapshots/ -//⌄ enclosing_range_start semanticdb maven . . snapshots/Class# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#``(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#``().(banana) -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#banana. -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#getBanana(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#setBanana(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#setBanana().(value) -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#``().(apple) +//⌄ enclosing_range_start scip-java maven . . snapshots/Class# +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#``(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#``().(banana) +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#banana. +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#getBanana(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#setBanana(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#setBanana().(value) +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#``().(apple) class Class constructor(private var banana: Int, apple: String) : -// ^^^^^ definition semanticdb maven . . snapshots/Class# +// ^^^^^ definition scip-java maven . . snapshots/Class# // display_name Class -// documentation ```kotlin\npublic final class Class : Throwable\n``` -// relationship is_reference is_implementation semanticdb maven . . kotlin/Throwable# -// ^^^^^^^^^^^ definition semanticdb maven . . snapshots/Class#``(). +// signature_documentation kotlin public final class Class : Throwable +// kind Class +// relationship is_implementation scip-java maven . . kotlin/Throwable# +// ^^^^^^^^^^^ definition scip-java maven . . snapshots/Class#``(). // display_name Class -// documentation ```kotlin\npublic constructor(banana: Int, apple: String): Class\n``` -// ^^^^^^ definition semanticdb maven . . snapshots/Class#``().(banana) +// signature_documentation kotlin public constructor(banana: Int, apple: String): Class +// kind Constructor +// ^^^^^^ definition scip-java maven . . snapshots/Class#``().(banana) // display_name banana -// documentation ```kotlin\nbanana: Int\n``` -// ^^^^^^ reference semanticdb maven . . snapshots/Class#``().(banana) -// ^^^^^^ definition semanticdb maven . . snapshots/Class#banana. +// signature_documentation kotlin banana: Int +// kind Parameter +// ^^^^^^ reference scip-java maven . . snapshots/Class#``().(banana) +// ^^^^^^ definition scip-java maven . . snapshots/Class#banana. // display_name banana -// documentation ```kotlin\nprivate final var banana: Int\n``` -// ^^^^^^ definition semanticdb maven . . snapshots/Class#getBanana(). +// signature_documentation kotlin private final var banana: Int +// kind Property +// ^^^^^^ definition scip-java maven . . snapshots/Class#getBanana(). // display_name banana -// documentation ```kotlin\nprivate get(): Int\n``` -// ^^^^^^ definition semanticdb maven . . snapshots/Class#setBanana(). +// signature_documentation kotlin private get(): Int +// kind Method +// ^^^^^^ definition scip-java maven . . snapshots/Class#setBanana(). // display_name banana -// documentation ```kotlin\nprivate set(value: Int): Unit\n``` -// ^^^^^^ definition semanticdb maven . . snapshots/Class#setBanana().(value) +// signature_documentation kotlin private set(value: Int): Unit +// kind Method +// ^^^^^^ definition scip-java maven . . snapshots/Class#setBanana().(value) // display_name value -// documentation ```kotlin\nvalue: Int\n``` -// ^^^ reference semanticdb maven . . kotlin/Int# -// ^^^^^ definition semanticdb maven . . snapshots/Class#``().(apple) +// signature_documentation kotlin value: Int +// kind Parameter +// ^^^ reference scip-java maven . . kotlin/Int# +// ^^^^^ definition scip-java maven . . snapshots/Class#``().(apple) // display_name apple -// documentation ```kotlin\napple: String\n``` -// ^^^^^^ reference semanticdb maven . . kotlin/String# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#``().(banana) -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#banana. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#getBanana(). -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#setBanana(). -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#setBanana().(value) -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#``().(apple) -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#``(). +// signature_documentation kotlin apple: String +// kind Parameter +// ^^^^^^ reference scip-java maven . . kotlin/String# +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#``().(banana) +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#banana. +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#getBanana(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#setBanana(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#setBanana().(value) +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#``().(apple) +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#``(). Throwable(banana.toString() + apple) { -// ^^^^^^^^^ reference semanticdb maven . . kotlin/Throwable# -// ^^^^^^ reference semanticdb maven . . snapshots/Class#``().(banana) -// ^^^^^^^^ reference semanticdb maven . . kotlin/Int#toString(). -// ^ reference semanticdb maven . . kotlin/String#plus(). -// ^^^^^ reference semanticdb maven . . snapshots/Class#``().(apple) +// ^^^^^^^^^ reference scip-java maven . . kotlin/Throwable# +// ^^^^^^ reference scip-java maven . . snapshots/Class#``().(banana) +// ^^^^^^^^ reference scip-java maven . . kotlin/Int#toString(). +// ^ reference scip-java maven . . kotlin/String#plus(). +// ^^^^^ reference scip-java maven . . snapshots/Class#``().(apple) init { println("") -// ^^^^^^^ reference semanticdb maven . . kotlin/io/println(). +// ^^^^^^^ reference scip-java maven . . kotlin/io/println(). } -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#asdf. -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#getAsdf(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#asdf. +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#getAsdf(). val asdf = -// ^^^^ definition semanticdb maven . . snapshots/Class#asdf. +// ^^^^ definition scip-java maven . . snapshots/Class#asdf. // display_name asdf -// documentation ```kotlin\npublic final val asdf: Any\n``` -// ^^^^ definition semanticdb maven . . snapshots/Class#getAsdf(). +// signature_documentation kotlin public final val asdf: Any +// kind Property +// ^^^^ definition scip-java maven . . snapshots/Class#getAsdf(). // display_name asdf -// documentation ```kotlin\npublic get(): Any\n``` -// ⌄ enclosing_range_start semanticdb maven . . snapshots/``# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/``#``(). +// signature_documentation kotlin public get(): Any +// kind Method +// ⌄ enclosing_range_start scip-java maven . . snapshots/``# +// ⌄ enclosing_range_start scip-java maven . . snapshots/``#``(). object { -// ^^^^^^ definition semanticdb maven . . snapshots/``# +// ^^^^^^ definition scip-java maven . . snapshots/``# // display_name -// documentation ```kotlin\nobject : Any\n``` -// ^^^^^^ definition semanticdb maven . . snapshots/``#``(). +// signature_documentation kotlin object : Any +// kind Object +// ^^^^^^ definition scip-java maven . . snapshots/``#``(). // display_name -// documentation ```kotlin\nprivate constructor(): \n``` -// ⌄ enclosing_range_start semanticdb maven . . snapshots/``#doStuff(). +// signature_documentation kotlin private constructor(): +// kind Constructor +// ⌄ enclosing_range_start scip-java maven . . snapshots/``#doStuff(). fun doStuff() = Unit -// ^^^^^^^ definition semanticdb maven . . snapshots/``#doStuff(). +// ^^^^^^^ definition scip-java maven . . snapshots/``#doStuff(). // display_name doStuff -// documentation ```kotlin\npublic final fun doStuff(): Unit\n``` -// ⌃ enclosing_range_end semanticdb maven . . snapshots/``#doStuff(). +// signature_documentation kotlin public final fun doStuff(): Unit +// kind Method +// ⌃ enclosing_range_end scip-java maven . . snapshots/``#doStuff(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#asdf. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#getAsdf(). -// ⌃ enclosing_range_end semanticdb maven . . snapshots/``# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/``#``(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#asdf. +// ⌃ enclosing_range_end scip-java maven . . snapshots/``# +// ⌃ enclosing_range_end scip-java maven . . snapshots/``#``(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#getAsdf(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#``(+1). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#``(+1). constructor() : this(1, "") -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/Class#``(+1). +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/Class#``(+1). // display_name Class -// documentation ```kotlin\npublic constructor(): Class\n``` -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#``(+1). +// signature_documentation kotlin public constructor(): Class +// kind Constructor +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#``(+1). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#``(+2). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#``(+2).(banana) +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#``(+2). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#``(+2).(banana) constructor(banana: Int) : this(banana, "") -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/Class#``(+2). +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/Class#``(+2). // display_name Class -// documentation ```kotlin\npublic constructor(banana: Int): Class\n``` -// ^^^^^^ definition semanticdb maven . . snapshots/Class#``(+2).(banana) +// signature_documentation kotlin public constructor(banana: Int): Class +// kind Constructor +// ^^^^^^ definition scip-java maven . . snapshots/Class#``(+2).(banana) // display_name banana -// documentation ```kotlin\nbanana: Int\n``` -// ^^^ reference semanticdb maven . . kotlin/Int# -// ^^^^^^ reference semanticdb maven . . snapshots/Class#``(+2).(banana) -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#``(+2).(banana) -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#``(+2). +// signature_documentation kotlin banana: Int +// kind Parameter +// ^^^ reference scip-java maven . . kotlin/Int# +// ^^^^^^ reference scip-java maven . . snapshots/Class#``(+2).(banana) +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#``(+2).(banana) +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#``(+2). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Class#run(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Class#run(). fun run() { -// ^^^ definition semanticdb maven . . snapshots/Class#run(). +// ^^^ definition scip-java maven . . snapshots/Class#run(). // display_name run -// documentation ```kotlin\npublic final fun run(): Unit\n``` +// signature_documentation kotlin public final fun run(): Unit +// kind Method println(Class::class) -// ^^^^^^^ reference semanticdb maven . . kotlin/io/println(). +// ^^^^^^^ reference scip-java maven . . kotlin/io/println(). println("I eat $banana for lunch") -// ^^^^^^^ reference semanticdb maven . . kotlin/io/println(). -// ^^^^^^ reference semanticdb maven . . snapshots/Class#banana. -// ^^^^^^ reference semanticdb maven . . snapshots/Class#getBanana(). -// ^^^^^^ reference semanticdb maven . . snapshots/Class#setBanana(). +// ^^^^^^^ reference scip-java maven . . kotlin/io/println(). +// ^^^^^^ reference scip-java maven . . snapshots/Class#banana. +// ^^^^^^ reference scip-java maven . . snapshots/Class#getBanana(). +// ^^^^^^ reference scip-java maven . . snapshots/Class#setBanana(). banana = 42 -// ^^^^^^ reference semanticdb maven . . snapshots/Class#banana. -// ^^^^^^ reference semanticdb maven . . snapshots/Class#getBanana(). -// ^^^^^^ reference semanticdb maven . . snapshots/Class#setBanana(). +// ^^^^^^ reference scip-java maven . . snapshots/Class#banana. +// ^^^^^^ reference scip-java maven . . snapshots/Class#getBanana(). +// ^^^^^^ reference scip-java maven . . snapshots/Class#setBanana(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Class#run(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Class#run(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/Class# +//⌃ enclosing_range_end scip-java maven . . snapshots/Class# diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt index a5a386101..6ffe782a6 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/CompanionOwner.kt @@ -1,44 +1,50 @@ package snapshots -// ^^^^^^^^^ reference semanticdb maven . . snapshots/ +// ^^^^^^^^^ reference scip-java maven . . snapshots/ -//⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionOwner# -//⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionOwner#``(). +//⌄ enclosing_range_start scip-java maven . . snapshots/CompanionOwner# +//⌄ enclosing_range_start scip-java maven . . snapshots/CompanionOwner#``(). class CompanionOwner { -// ^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/CompanionOwner# +// ^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/CompanionOwner# // display_name CompanionOwner -// documentation ```kotlin\npublic final class CompanionOwner : Any\n``` -// ^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/CompanionOwner#``(). +// signature_documentation kotlin public final class CompanionOwner : Any +// kind Class +// ^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/CompanionOwner#``(). // display_name CompanionOwner -// documentation ```kotlin\npublic constructor(): CompanionOwner\n``` -// ⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionOwner#Companion# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionOwner#Companion#``(). +// signature_documentation kotlin public constructor(): CompanionOwner +// kind Constructor +// ⌄ enclosing_range_start scip-java maven . . snapshots/CompanionOwner#Companion# +// ⌄ enclosing_range_start scip-java maven . . snapshots/CompanionOwner#Companion#``(). companion object { -// ^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/CompanionOwner#Companion# 2:3 +// ^^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/CompanionOwner#Companion# 2:3 // display_name Companion -// documentation ```kotlin\npublic final companion object Companion : Any\n``` -// ^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/CompanionOwner#Companion#``(). 2:3 +// signature_documentation kotlin public final companion object Companion : Any +// kind Object +// ^^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/CompanionOwner#Companion#``(). 2:3 // display_name Companion -// documentation ```kotlin\nprivate constructor(): CompanionOwner.Companion\n``` -// ⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionOwner#Companion#create(). +// signature_documentation kotlin private constructor(): CompanionOwner.Companion +// kind Constructor +// ⌄ enclosing_range_start scip-java maven . . snapshots/CompanionOwner#Companion#create(). fun create(): CompanionOwner = CompanionOwner() -// ^^^^^^ definition semanticdb maven . . snapshots/CompanionOwner#Companion#create(). +// ^^^^^^ definition scip-java maven . . snapshots/CompanionOwner#Companion#create(). // display_name create -// documentation ```kotlin\npublic final fun create(): CompanionOwner\n``` -// ^^^^^^^^^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner# -// ^^^^^^^^^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner#``(). -// ⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionOwner#Companion#create(). +// signature_documentation kotlin public final fun create(): CompanionOwner +// kind Method +// ^^^^^^^^^^^^^^ reference scip-java maven . . snapshots/CompanionOwner# +// ^^^^^^^^^^^^^^ reference scip-java maven . . snapshots/CompanionOwner#``(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/CompanionOwner#Companion#create(). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionOwner#Companion# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionOwner#Companion#``(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/CompanionOwner#create(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/CompanionOwner#Companion# +// ⌃ enclosing_range_end scip-java maven . . snapshots/CompanionOwner#Companion#``(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/CompanionOwner#create(). fun create(): Int = CompanionOwner.create().hashCode() -// ^^^^^^ definition semanticdb maven . . snapshots/CompanionOwner#create(). +// ^^^^^^ definition scip-java maven . . snapshots/CompanionOwner#create(). // display_name create -// documentation ```kotlin\npublic final fun create(): Int\n``` -// ^^^ reference semanticdb maven . . kotlin/Int# -// ^^^^^^ reference semanticdb maven . . snapshots/CompanionOwner#Companion#create(). -// ^^^^^^^^ reference semanticdb maven . . kotlin/Any#hashCode(). -// ⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionOwner#create(). +// signature_documentation kotlin public final fun create(): Int +// kind Method +// ^^^ reference scip-java maven . . kotlin/Int# +// ^^^^^^ reference scip-java maven . . snapshots/CompanionOwner#Companion#create(). +// ^^^^^^^^ reference scip-java maven . . kotlin/Any#hashCode(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/CompanionOwner#create(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionOwner# -//⌃ enclosing_range_end semanticdb maven . . snapshots/CompanionOwner#``(). +//⌃ enclosing_range_end scip-java maven . . snapshots/CompanionOwner# +//⌃ enclosing_range_end scip-java maven . . snapshots/CompanionOwner#``(). diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt index cf219ac01..d9070bc1d 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Docstrings.kt @@ -1,44 +1,52 @@ package snapshots -// ^^^^^^^^^ reference semanticdb maven . . snapshots/ +// ^^^^^^^^^ reference scip-java maven . . snapshots/ import java.io.Serializable -// ^^^^ reference semanticdb maven . . java/ -// ^^ reference semanticdb maven . . java/io/ -// ^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/io/Serializable# +// ^^^^ reference scip-java maven . . java/ +// ^^ reference scip-java maven . . java/io/ +// ^^^^^^^^^^^^ reference scip-java maven jdk 11 java/io/Serializable# -//⌄ enclosing_range_start semanticdb maven . . snapshots/DocstringSuperclass# -//⌄ enclosing_range_start semanticdb maven . . snapshots/DocstringSuperclass#``(). +//⌄ enclosing_range_start scip-java maven . . snapshots/DocstringSuperclass# +//⌄ enclosing_range_start scip-java maven . . snapshots/DocstringSuperclass#``(). abstract class DocstringSuperclass -// ^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/DocstringSuperclass# +// ^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/DocstringSuperclass# // display_name DocstringSuperclass -// documentation ```kotlin\npublic abstract class DocstringSuperclass : Any\n``` -// ^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/DocstringSuperclass#``(). +// signature_documentation kotlin public abstract class DocstringSuperclass : Any +// kind Class +// ^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/DocstringSuperclass#``(). // display_name DocstringSuperclass -// documentation ```kotlin\npublic constructor(): DocstringSuperclass\n``` -// ⌃ enclosing_range_end semanticdb maven . . snapshots/DocstringSuperclass# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/DocstringSuperclass#``(). -//⌄ enclosing_range_start semanticdb maven . . snapshots/Docstrings# -//⌄ enclosing_range_start semanticdb maven . . snapshots/Docstrings#``(). +// signature_documentation kotlin public constructor(): DocstringSuperclass +// kind Constructor +// ⌃ enclosing_range_end scip-java maven . . snapshots/DocstringSuperclass# +// ⌃ enclosing_range_end scip-java maven . . snapshots/DocstringSuperclass#``(). +//⌄ enclosing_range_start scip-java maven . . snapshots/Docstrings# +//⌄ enclosing_range_start scip-java maven . . snapshots/Docstrings#``(). /** Example class docstring. */ class Docstrings : DocstringSuperclass(), Serializable { -// ^^^^^^^^^^ definition semanticdb maven . . snapshots/Docstrings# +// ^^^^^^^^^^ definition scip-java maven . . snapshots/Docstrings# // display_name Docstrings -// documentation ```kotlin\npublic final class Docstrings : DocstringSuperclass, Serializable\n```\n\n----\n\n Example class docstring. -// relationship is_reference is_implementation semanticdb maven . . snapshots/DocstringSuperclass# -// relationship is_reference is_implementation semanticdb maven jdk 11 java/io/Serializable# -// ^^^^^^^^^^ definition semanticdb maven . . snapshots/Docstrings#``(). +// signature_documentation kotlin public final class Docstrings : DocstringSuperclass, Serializable +// kind Class +// documentation Example class docstring. +// relationship is_implementation scip-java maven . . snapshots/DocstringSuperclass# +// relationship is_implementation scip-java maven jdk 11 java/io/Serializable# +// ^^^^^^^^^^ definition scip-java maven . . snapshots/Docstrings#``(). // display_name Docstrings -// documentation ```kotlin\npublic constructor(): Docstrings\n```\n\n----\n\n Example class docstring. -// ^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . snapshots/DocstringSuperclass# -// ^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/io/Serializable# +// signature_documentation kotlin public constructor(): Docstrings +// kind Constructor +// documentation Example class docstring. +// ^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . snapshots/DocstringSuperclass# +// ^^^^^^^^^^^^ reference scip-java maven jdk 11 java/io/Serializable# } -//⌃ enclosing_range_end semanticdb maven . . snapshots/Docstrings# -//⌃ enclosing_range_end semanticdb maven . . snapshots/Docstrings#``(). +//⌃ enclosing_range_end scip-java maven . . snapshots/Docstrings# +//⌃ enclosing_range_end scip-java maven . . snapshots/Docstrings#``(). -//⌄ enclosing_range_start semanticdb maven . . snapshots/docstrings(). +//⌄ enclosing_range_start scip-java maven . . snapshots/docstrings(). /** Example method docstring. */ fun docstrings() { } -// ^^^^^^^^^^ definition semanticdb maven . . snapshots/docstrings(). +// ^^^^^^^^^^ definition scip-java maven . . snapshots/docstrings(). // display_name docstrings -// documentation ```kotlin\npublic final fun docstrings(): Unit\n```\n\n----\n\n Example method docstring. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/docstrings(). +// signature_documentation kotlin public final fun docstrings(): Unit +// kind Method +// documentation Example method docstring. +// ⌃ enclosing_range_end scip-java maven . . snapshots/docstrings(). diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt index 30f646798..8df23c98b 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Functions.kt @@ -1,19 +1,21 @@ package snapshots -// ^^^^^^^^^ reference semanticdb maven . . snapshots/ +// ^^^^^^^^^ reference scip-java maven . . snapshots/ -//⌄ enclosing_range_start semanticdb maven . . snapshots/sampleText(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/sampleText().(x) +//⌄ enclosing_range_start scip-java maven . . snapshots/sampleText(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/sampleText().(x) fun sampleText(x: String = "") { -// ^^^^^^^^^^ definition semanticdb maven . . snapshots/sampleText(). +// ^^^^^^^^^^ definition scip-java maven . . snapshots/sampleText(). // display_name sampleText -// documentation ```kotlin\npublic final fun sampleText(x: String = ...): Unit\n``` -// ^ definition semanticdb maven . . snapshots/sampleText().(x) +// signature_documentation kotlin public final fun sampleText(x: String = ...): Unit +// kind Method +// ^ definition scip-java maven . . snapshots/sampleText().(x) // display_name x -// documentation ```kotlin\nx: String = ...\n``` -// ^^^^^^ reference semanticdb maven . . kotlin/String# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/sampleText().(x) +// signature_documentation kotlin x: String = ... +// kind Parameter +// ^^^^^^ reference scip-java maven . . kotlin/String# +// ⌃ enclosing_range_end scip-java maven . . snapshots/sampleText().(x) println(x) -// ^^^^^^^ reference semanticdb maven . . kotlin/io/println(). -// ^ reference semanticdb maven . . snapshots/sampleText().(x) +// ^^^^^^^ reference scip-java maven . . kotlin/io/println(). +// ^ reference scip-java maven . . snapshots/sampleText().(x) } -//⌃ enclosing_range_end semanticdb maven . . snapshots/sampleText(). +//⌃ enclosing_range_end scip-java maven . . snapshots/sampleText(). diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt index ebd286d31..934ab46cd 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Implementations.kt @@ -1,129 +1,146 @@ package snapshots -// ^^^^^^^^^ reference semanticdb maven . . snapshots/ +// ^^^^^^^^^ reference scip-java maven . . snapshots/ -//⌄ enclosing_range_start semanticdb maven . . snapshots/Overrides# -//⌄ enclosing_range_start semanticdb maven . . snapshots/Overrides#``(). +//⌄ enclosing_range_start scip-java maven . . snapshots/Overrides# +//⌄ enclosing_range_start scip-java maven . . snapshots/Overrides#``(). class Overrides : AutoCloseable { -// ^^^^^^^^^ definition semanticdb maven . . snapshots/Overrides# +// ^^^^^^^^^ definition scip-java maven . . snapshots/Overrides# // display_name Overrides -// documentation ```kotlin\npublic final class Overrides : {kotlin/AutoCloseable=} AutoCloseable\n``` -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/AutoCloseable# -// ^^^^^^^^^ definition semanticdb maven . . snapshots/Overrides#``(). +// signature_documentation kotlin public final class Overrides : {kotlin/AutoCloseable=} AutoCloseable +// kind Class +// relationship is_implementation scip-java maven jdk 11 java/lang/AutoCloseable# +// ^^^^^^^^^ definition scip-java maven . . snapshots/Overrides#``(). // display_name Overrides -// documentation ```kotlin\npublic constructor(): Overrides\n``` -// ^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/AutoCloseable# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Overrides#close(). +// signature_documentation kotlin public constructor(): Overrides +// kind Constructor +// ^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/AutoCloseable# +// ⌄ enclosing_range_start scip-java maven . . snapshots/Overrides#close(). override fun close() { -// ^^^^^ definition semanticdb maven . . snapshots/Overrides#close(). +// ^^^^^ definition scip-java maven . . snapshots/Overrides#close(). // display_name close -// documentation ```kotlin\npublic open override fun close(): Unit\n``` -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/AutoCloseable#close(). +// signature_documentation kotlin public open override fun close(): Unit +// kind Method +// relationship is_reference is_implementation scip-java maven jdk 11 java/lang/AutoCloseable#close(). TODO("Not yet implemented") -// ^^^^ reference semanticdb maven . . kotlin/TODO(+1). +// ^^^^ reference scip-java maven . . kotlin/TODO(+1). } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Overrides#close(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Overrides#close(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/Overrides# -//⌃ enclosing_range_end semanticdb maven . . snapshots/Overrides#``(). +//⌃ enclosing_range_end scip-java maven . . snapshots/Overrides# +//⌃ enclosing_range_end scip-java maven . . snapshots/Overrides#``(). -//⌄ enclosing_range_start semanticdb maven . . snapshots/Animal# +//⌄ enclosing_range_start scip-java maven . . snapshots/Animal# interface Animal { -// ^^^^^^ definition semanticdb maven . . snapshots/Animal# +// ^^^^^^ definition scip-java maven . . snapshots/Animal# // display_name Animal -// documentation ```kotlin\npublic abstract interface Animal : Any\n``` -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Animal#favoriteNumber. -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Animal#getFavoriteNumber(). +// signature_documentation kotlin public abstract interface Animal : Any +// kind Interface +// ⌄ enclosing_range_start scip-java maven . . snapshots/Animal#favoriteNumber. +// ⌄ enclosing_range_start scip-java maven . . snapshots/Animal#getFavoriteNumber(). val favoriteNumber: Int -// ^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/Animal#favoriteNumber. +// ^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/Animal#favoriteNumber. // display_name favoriteNumber -// documentation ```kotlin\npublic abstract val favoriteNumber: Int\n``` -// ^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/Animal#getFavoriteNumber(). +// signature_documentation kotlin public abstract val favoriteNumber: Int +// kind Property +// ^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/Animal#getFavoriteNumber(). // display_name favoriteNumber -// documentation ```kotlin\npublic get(): Int\n``` -// ^^^ reference semanticdb maven . . kotlin/Int# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Animal#favoriteNumber. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Animal#getFavoriteNumber(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Animal#sound(). +// signature_documentation kotlin public get(): Int +// kind Method +// ^^^ reference scip-java maven . . kotlin/Int# +// ⌃ enclosing_range_end scip-java maven . . snapshots/Animal#favoriteNumber. +// ⌃ enclosing_range_end scip-java maven . . snapshots/Animal#getFavoriteNumber(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Animal#sound(). fun sound(): String -// ^^^^^ definition semanticdb maven . . snapshots/Animal#sound(). +// ^^^^^ definition scip-java maven . . snapshots/Animal#sound(). // display_name sound -// documentation ```kotlin\npublic abstract fun sound(): String\n\n``` -// ^^^^^^ reference semanticdb maven . . kotlin/String# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Animal#sound(). +// signature_documentation kotlin public abstract fun sound(): String +// kind Method +// ^^^^^^ reference scip-java maven . . kotlin/String# +// ⌃ enclosing_range_end scip-java maven . . snapshots/Animal#sound(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/Animal# -//⌄ enclosing_range_start semanticdb maven . . snapshots/Bird# -//⌄ enclosing_range_start semanticdb maven . . snapshots/Bird#``(). +//⌃ enclosing_range_end scip-java maven . . snapshots/Animal# +//⌄ enclosing_range_start scip-java maven . . snapshots/Bird# +//⌄ enclosing_range_start scip-java maven . . snapshots/Bird#``(). open class Bird : Animal { -// ^^^^ definition semanticdb maven . . snapshots/Bird# +// ^^^^ definition scip-java maven . . snapshots/Bird# // display_name Bird -// documentation ```kotlin\npublic open class Bird : Animal\n``` -// relationship is_reference is_implementation semanticdb maven . . snapshots/Animal# -// ^^^^ definition semanticdb maven . . snapshots/Bird#``(). +// signature_documentation kotlin public open class Bird : Animal +// kind Class +// relationship is_implementation scip-java maven . . snapshots/Animal# +// ^^^^ definition scip-java maven . . snapshots/Bird#``(). // display_name Bird -// documentation ```kotlin\npublic constructor(): Bird\n``` -// ^^^^^^ reference semanticdb maven . . snapshots/Animal# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Bird#favoriteNumber. +// signature_documentation kotlin public constructor(): Bird +// kind Constructor +// ^^^^^^ reference scip-java maven . . snapshots/Animal# +// ⌄ enclosing_range_start scip-java maven . . snapshots/Bird#favoriteNumber. override val favoriteNumber: Int -// ^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/Bird#favoriteNumber. +// ^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/Bird#favoriteNumber. // display_name favoriteNumber -// documentation ```kotlin\npublic open override val favoriteNumber: Int\n``` -// ^^^ reference semanticdb maven . . kotlin/Int# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Bird#getFavoriteNumber(). +// signature_documentation kotlin public open override val favoriteNumber: Int +// kind Property +// ^^^ reference scip-java maven . . kotlin/Int# +// ⌄ enclosing_range_start scip-java maven . . snapshots/Bird#getFavoriteNumber(). get() = 42 -// ^^^ definition semanticdb maven . . snapshots/Bird#getFavoriteNumber(). +// ^^^ definition scip-java maven . . snapshots/Bird#getFavoriteNumber(). // display_name favoriteNumber -// documentation ```kotlin\npublic get(): Int\n``` -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Bird#favoriteNumber. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Bird#getFavoriteNumber(). +// signature_documentation kotlin public get(): Int +// kind Method +// ⌃ enclosing_range_end scip-java maven . . snapshots/Bird#favoriteNumber. +// ⌃ enclosing_range_end scip-java maven . . snapshots/Bird#getFavoriteNumber(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Bird#sound(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Bird#sound(). override fun sound(): String { -// ^^^^^ definition semanticdb maven . . snapshots/Bird#sound(). +// ^^^^^ definition scip-java maven . . snapshots/Bird#sound(). // display_name sound -// documentation ```kotlin\npublic open override fun sound(): String\n``` -// relationship is_reference is_implementation semanticdb maven . . snapshots/Animal#sound(). -// ^^^^^^ reference semanticdb maven . . kotlin/String# +// signature_documentation kotlin public open override fun sound(): String +// kind Method +// relationship is_reference is_implementation scip-java maven . . snapshots/Animal#sound(). +// ^^^^^^ reference scip-java maven . . kotlin/String# return "tweet" } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Bird#sound(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Bird#sound(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/Bird# -//⌃ enclosing_range_end semanticdb maven . . snapshots/Bird#``(). -//⌄ enclosing_range_start semanticdb maven . . snapshots/Seagull# -//⌄ enclosing_range_start semanticdb maven . . snapshots/Seagull#``(). +//⌃ enclosing_range_end scip-java maven . . snapshots/Bird# +//⌃ enclosing_range_end scip-java maven . . snapshots/Bird#``(). +//⌄ enclosing_range_start scip-java maven . . snapshots/Seagull# +//⌄ enclosing_range_start scip-java maven . . snapshots/Seagull#``(). class Seagull : Bird() { -// ^^^^^^^ definition semanticdb maven . . snapshots/Seagull# +// ^^^^^^^ definition scip-java maven . . snapshots/Seagull# // display_name Seagull -// documentation ```kotlin\npublic final class Seagull : Bird\n``` -// relationship is_reference is_implementation semanticdb maven . . snapshots/Bird# -// ^^^^^^^ definition semanticdb maven . . snapshots/Seagull#``(). +// signature_documentation kotlin public final class Seagull : Bird +// kind Class +// relationship is_implementation scip-java maven . . snapshots/Bird# +// ^^^^^^^ definition scip-java maven . . snapshots/Seagull#``(). // display_name Seagull -// documentation ```kotlin\npublic constructor(): Seagull\n``` -// ^^^^ reference semanticdb maven . . snapshots/Bird# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Seagull#favoriteNumber. +// signature_documentation kotlin public constructor(): Seagull +// kind Constructor +// ^^^^ reference scip-java maven . . snapshots/Bird# +// ⌄ enclosing_range_start scip-java maven . . snapshots/Seagull#favoriteNumber. override val favoriteNumber: Int -// ^^^^^^^^^^^^^^ definition semanticdb maven . . snapshots/Seagull#favoriteNumber. +// ^^^^^^^^^^^^^^ definition scip-java maven . . snapshots/Seagull#favoriteNumber. // display_name favoriteNumber -// documentation ```kotlin\npublic open override val favoriteNumber: Int\n``` -// ^^^ reference semanticdb maven . . kotlin/Int# -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Seagull#getFavoriteNumber(). +// signature_documentation kotlin public open override val favoriteNumber: Int +// kind Property +// ^^^ reference scip-java maven . . kotlin/Int# +// ⌄ enclosing_range_start scip-java maven . . snapshots/Seagull#getFavoriteNumber(). get() = 1337 -// ^^^ definition semanticdb maven . . snapshots/Seagull#getFavoriteNumber(). +// ^^^ definition scip-java maven . . snapshots/Seagull#getFavoriteNumber(). // display_name favoriteNumber -// documentation ```kotlin\npublic get(): Int\n``` -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Seagull#favoriteNumber. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Seagull#getFavoriteNumber(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/Seagull#sound(). +// signature_documentation kotlin public get(): Int +// kind Method +// ⌃ enclosing_range_end scip-java maven . . snapshots/Seagull#favoriteNumber. +// ⌃ enclosing_range_end scip-java maven . . snapshots/Seagull#getFavoriteNumber(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/Seagull#sound(). override fun sound(): String { -// ^^^^^ definition semanticdb maven . . snapshots/Seagull#sound(). +// ^^^^^ definition scip-java maven . . snapshots/Seagull#sound(). // display_name sound -// documentation ```kotlin\npublic open override fun sound(): String\n``` -// relationship is_reference is_implementation semanticdb maven . . snapshots/Bird#sound(). -// ^^^^^^ reference semanticdb maven . . kotlin/String# +// signature_documentation kotlin public open override fun sound(): String +// kind Method +// relationship is_reference is_implementation scip-java maven . . snapshots/Bird#sound(). +// ^^^^^^ reference scip-java maven . . kotlin/String# return "squawk" } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/Seagull#sound(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/Seagull#sound(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/Seagull# -//⌃ enclosing_range_end semanticdb maven . . snapshots/Seagull#``(). +//⌃ enclosing_range_end scip-java maven . . snapshots/Seagull# +//⌃ enclosing_range_end scip-java maven . . snapshots/Seagull#``(). diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt index d531349ba..50448bf78 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/Lambdas.kt @@ -1,66 +1,75 @@ package snapshots -// ^^^^^^^^^ reference semanticdb maven . . snapshots/ +// ^^^^^^^^^ reference scip-java maven . . snapshots/ -//⌄ enclosing_range_start semanticdb maven . . snapshots/x. -//⌄ enclosing_range_start semanticdb maven . . snapshots/getX(). +//⌄ enclosing_range_start scip-java maven . . snapshots/x. +//⌄ enclosing_range_start scip-java maven . . snapshots/getX(). // ⌄ enclosing_range_start local 0 // ⌄ enclosing_range_start local 1 val x = arrayListOf().forEachIndexed { i, s -> println("$i $s") } -// ^ definition semanticdb maven . . snapshots/getX(). +// ^ definition scip-java maven . . snapshots/getX(). // display_name x -// documentation ```kotlin\npublic get(): Unit\n``` -// ^ definition semanticdb maven . . snapshots/x. +// signature_documentation kotlin public get(): Unit +// kind Method +// ^ definition scip-java maven . . snapshots/x. // display_name x -// documentation ```kotlin\npublic final val x: Unit\n``` -// ^^^^^^^^^^^ reference semanticdb maven . . kotlin/collections/arrayListOf(). -// ^^^^^^^^^^^^^^ reference semanticdb maven . . kotlin/collections/forEachIndexed(+9). +// signature_documentation kotlin public final val x: Unit +// kind Property +// ^^^^^^^^^^^ reference scip-java maven . . kotlin/collections/arrayListOf(). +// ^^^^^^^^^^^^^^ reference scip-java maven . . kotlin/collections/forEachIndexed(+9). // ^ definition local 0 // display_name i -// documentation ```kotlin\ni: Int\n``` +// signature_documentation kotlin i: Int +// kind Parameter // ^ definition local 1 // display_name s -// documentation ```kotlin\ns: String\n``` -// ^^^^^^^ reference semanticdb maven . . kotlin/io/println(). +// signature_documentation kotlin s: String +// kind Parameter +// ^^^^^^^ reference scip-java maven . . kotlin/io/println(). // ^ reference local 0 // ^ reference local 1 // ⌃ enclosing_range_end local 0 // ⌃ enclosing_range_end local 1 -// ⌃ enclosing_range_end semanticdb maven . . snapshots/x. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/getX(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/x. +// ⌃ enclosing_range_end scip-java maven . . snapshots/getX(). -//⌄ enclosing_range_start semanticdb maven . . snapshots/y. -//⌄ enclosing_range_start semanticdb maven . . snapshots/getY(). +//⌄ enclosing_range_start scip-java maven . . snapshots/y. +//⌄ enclosing_range_start scip-java maven . . snapshots/getY(). val y = "fdsa".run { this.toByteArray() } -// ^ definition semanticdb maven . . snapshots/getY(). +// ^ definition scip-java maven . . snapshots/getY(). // display_name y -// documentation ```kotlin\npublic get(): ByteArray\n``` -// ^ definition semanticdb maven . . snapshots/y. +// signature_documentation kotlin public get(): ByteArray +// kind Method +// ^ definition scip-java maven . . snapshots/y. // display_name y -// documentation ```kotlin\npublic final val y: ByteArray\n``` -// ^^^ reference semanticdb maven . . kotlin/run(+1). -// ^^^^^^^^^^^ reference semanticdb maven . . kotlin/text/toByteArray(). -// ⌃ enclosing_range_end semanticdb maven . . snapshots/y. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/getY(). +// signature_documentation kotlin public final val y: ByteArray +// kind Property +// ^^^ reference scip-java maven . . kotlin/run(+1). +// ^^^^^^^^^^^ reference scip-java maven . . kotlin/text/toByteArray(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/y. +// ⌃ enclosing_range_end scip-java maven . . snapshots/getY(). -//⌄ enclosing_range_start semanticdb maven . . snapshots/z. -//⌄ enclosing_range_start semanticdb maven . . snapshots/getZ(). +//⌄ enclosing_range_start scip-java maven . . snapshots/z. +//⌄ enclosing_range_start scip-java maven . . snapshots/getZ(). // ⌄ enclosing_range_start local 2 val z = y.let { it.size } -// ^ definition semanticdb maven . . snapshots/getZ(). +// ^ definition scip-java maven . . snapshots/getZ(). // display_name z -// documentation ```kotlin\npublic get(): Int\n``` -// ^ definition semanticdb maven . . snapshots/z. +// signature_documentation kotlin public get(): Int +// kind Method +// ^ definition scip-java maven . . snapshots/z. // display_name z -// documentation ```kotlin\npublic final val z: Int\n``` -// ^ reference semanticdb maven . . snapshots/getY(). -// ^ reference semanticdb maven . . snapshots/y. -// ^^^ reference semanticdb maven . . kotlin/let(). +// signature_documentation kotlin public final val z: Int +// kind Property +// ^ reference scip-java maven . . snapshots/getY(). +// ^ reference scip-java maven . . snapshots/y. +// ^^^ reference scip-java maven . . kotlin/let(). // ^^^^^^^^^^^ definition local 2 // display_name it -// documentation ```kotlin\nit: ByteArray\n``` +// signature_documentation kotlin it: ByteArray +// kind Parameter // ^^ reference local 2 -// ^^^^ reference semanticdb maven . . kotlin/ByteArray#getSize(). -// ^^^^ reference semanticdb maven . . kotlin/ByteArray#size. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/z. -// ⌃ enclosing_range_end semanticdb maven . . snapshots/getZ(). +// ^^^^ reference scip-java maven . . kotlin/ByteArray#getSize(). +// ^^^^ reference scip-java maven . . kotlin/ByteArray#size. +// ⌃ enclosing_range_end scip-java maven . . snapshots/z. // ⌃ enclosing_range_end local 2 +// ⌃ enclosing_range_end scip-java maven . . snapshots/getZ(). diff --git a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt index 5a4b21f3c..62e50ac11 100644 --- a/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt +++ b/semanticdb-kotlinc/minimized/src/generatedSnapshots/resources/semanticdb-kotlinc/minimized/src/main/kotlin/snapshots/ObjectKt.kt @@ -1,37 +1,41 @@ package snapshots -// ^^^^^^^^^ reference semanticdb maven . . snapshots/ +// ^^^^^^^^^ reference scip-java maven . . snapshots/ import java.lang.RuntimeException -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/RuntimeException# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/RuntimeException# -//⌄ enclosing_range_start semanticdb maven . . snapshots/ObjectKt# -//⌄ enclosing_range_start semanticdb maven . . snapshots/ObjectKt#``(). +//⌄ enclosing_range_start scip-java maven . . snapshots/ObjectKt# +//⌄ enclosing_range_start scip-java maven . . snapshots/ObjectKt#``(). object ObjectKt { -// ^^^^^^^^ definition semanticdb maven . . snapshots/ObjectKt# +// ^^^^^^^^ definition scip-java maven . . snapshots/ObjectKt# // display_name ObjectKt -// documentation ```kotlin\npublic final object ObjectKt : Any\n``` -// ^^^^^^^^ definition semanticdb maven . . snapshots/ObjectKt#``(). +// signature_documentation kotlin public final object ObjectKt : Any +// kind Object +// ^^^^^^^^ definition scip-java maven . . snapshots/ObjectKt#``(). // display_name ObjectKt -// documentation ```kotlin\nprivate constructor(): ObjectKt\n``` -// ⌄ enclosing_range_start semanticdb maven . . snapshots/ObjectKt#fail(). -// ⌄ enclosing_range_start semanticdb maven . . snapshots/ObjectKt#fail().(message) +// signature_documentation kotlin private constructor(): ObjectKt +// kind Constructor +// ⌄ enclosing_range_start scip-java maven . . snapshots/ObjectKt#fail(). +// ⌄ enclosing_range_start scip-java maven . . snapshots/ObjectKt#fail().(message) fun fail(message: String?): Nothing { -// ^^^^ definition semanticdb maven . . snapshots/ObjectKt#fail(). +// ^^^^ definition scip-java maven . . snapshots/ObjectKt#fail(). // display_name fail -// documentation ```kotlin\npublic final fun fail(message: String?): Nothing\n``` -// ^^^^^^^ definition semanticdb maven . . snapshots/ObjectKt#fail().(message) +// signature_documentation kotlin public final fun fail(message: String?): Nothing +// kind Method +// ^^^^^^^ definition scip-java maven . . snapshots/ObjectKt#fail().(message) // display_name message -// documentation ```kotlin\nmessage: String?\n``` -// ^^^^^^^ reference semanticdb maven . . kotlin/String# -// ^^^^^^^ reference semanticdb maven . . kotlin/Nothing# -// ⌃ enclosing_range_end semanticdb maven . . snapshots/ObjectKt#fail().(message) +// signature_documentation kotlin message: String? +// kind Parameter +// ^^^^^^^ reference scip-java maven . . kotlin/String# +// ^^^^^^^ reference scip-java maven . . kotlin/Nothing# +// ⌃ enclosing_range_end scip-java maven . . snapshots/ObjectKt#fail().(message) throw RuntimeException(message) -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/RuntimeException#``(). -// ^^^^^^^ reference semanticdb maven . . snapshots/ObjectKt#fail().(message) +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/RuntimeException#``(). +// ^^^^^^^ reference scip-java maven . . snapshots/ObjectKt#fail().(message) } -// ⌃ enclosing_range_end semanticdb maven . . snapshots/ObjectKt#fail(). +// ⌃ enclosing_range_end scip-java maven . . snapshots/ObjectKt#fail(). } -//⌃ enclosing_range_end semanticdb maven . . snapshots/ObjectKt# -//⌃ enclosing_range_end semanticdb maven . . snapshots/ObjectKt#``(). +//⌃ enclosing_range_end scip-java maven . . snapshots/ObjectKt# +//⌃ enclosing_range_end scip-java maven . . snapshots/ObjectKt#``(). diff --git a/semanticdb-kotlinc/src/main/java/com/sourcegraph/semanticdb_kotlinc/SemanticdbBuilders.kt b/semanticdb-kotlinc/src/main/java/com/sourcegraph/semanticdb_kotlinc/SemanticdbBuilders.kt index d1e85c809..652ebe267 100644 --- a/semanticdb-kotlinc/src/main/java/com/sourcegraph/semanticdb_kotlinc/SemanticdbBuilders.kt +++ b/semanticdb-kotlinc/src/main/java/com/sourcegraph/semanticdb_kotlinc/SemanticdbBuilders.kt @@ -3,8 +3,6 @@ package com.sourcegraph.semanticdb_kotlinc -import com.sourcegraph.semanticdb.Semanticdb - import kotlin.DslMarker import kotlin.Unit import kotlin.annotation.AnnotationRetention diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/AnalyzerRegistrar.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/AnalyzerRegistrar.kt index 9f33ca704..c3e5b5b12 100644 --- a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/AnalyzerRegistrar.kt +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/AnalyzerRegistrar.kt @@ -1,8 +1,6 @@ package com.sourcegraph.semanticdb_kotlinc -import com.sourcegraph.semanticdb.Semanticdb import com.sourcegraph.semanticdb.SemanticdbOptions - import kotlin.contracts.ExperimentalContracts import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/PostAnalysisExtension.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/PostAnalysisExtension.kt index fca98c91c..07ccfa1ce 100644 --- a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/PostAnalysisExtension.kt +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/PostAnalysisExtension.kt @@ -1,11 +1,8 @@ package com.sourcegraph.semanticdb_kotlinc -import com.sourcegraph.semanticdb.Semanticdb -import com.sourcegraph.semanticdb.SemanticdbPaths -import com.sourcegraph.semanticdb.SemanticdbWriter - import java.io.PrintWriter import java.io.Writer +import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths import kotlin.contracts.ExperimentalContracts @@ -30,8 +27,11 @@ class PostAnalysisExtension( for ((ktSourceFile, visitor) in AnalyzerCheckers.visitors) { try { val document = visitor.build() - semanticdbOutPathForFile(ktSourceFile)?.let { outPath -> - SemanticdbWriter.writeTextDocument(outPath, document) + semanticdbOutPathForFile(ktSourceFile)?.apply { + Files.write(this, TextDocuments { addDocuments(document) }.toByteArray()) + } + scipShardOutPathForFile(ktSourceFile)?.apply { + ScipShardWriter.write(this, visitor.buildScipIndex()) } callback(document) } catch (e: Exception) { @@ -43,14 +43,32 @@ class PostAnalysisExtension( } } - private fun semanticdbOutPathForFile(file: KtSourceFile): Path? { + private fun semanticdbOutPathForFile(file: KtSourceFile): Path? = + outPathForFile(file, subdir = "semanticdb", suffix = ".semanticdb") + + private fun scipShardOutPathForFile(file: KtSourceFile): Path? = + outPathForFile(file, subdir = "scip", suffix = ".scip") + + private fun outPathForFile(file: KtSourceFile, subdir: String, suffix: String): Path? { val normalizedPath = Paths.get(file.path).normalize() - val outPath = SemanticdbPaths.semanticdbPath(targetRoot, sourceRoot, normalizedPath) - if (outPath.isPresent) { - return outPath.get() + if (normalizedPath.startsWith(sourceRoot)) { + val relative = sourceRoot.relativize(normalizedPath) + val filename = relative.fileName.toString() + suffix + val outPath = + targetRoot + .resolve("META-INF") + .resolve(subdir) + .resolve(relative) + .resolveSibling(filename) + + Files.createDirectories(outPath.parent) + return outPath + } + // Warn once per file; attach to the SemanticDB path to avoid double warnings. + if (subdir == "semanticdb") { + System.err.println( + "given file is not under the sourceroot.\n\tSourceroot: $sourceRoot\n\tFile path: ${file.path}\n\tNormalized file path: $normalizedPath") } - System.err.println( - "given file is not under the sourceroot.\n\tSourceroot: $sourceRoot\n\tFile path: ${file.path}\n\tNormalized file path: $normalizedPath") return null } diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipOccurrences.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipOccurrences.kt new file mode 100644 index 000000000..d34bdbb1b --- /dev/null +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipOccurrences.kt @@ -0,0 +1,34 @@ +package com.sourcegraph.semanticdb_kotlinc + +import org.scip_code.scip.Occurrence + +/** + * Accumulator that deduplicates SCIP [Occurrence] entries by `(symbol, range, roles)`. Variants + * differing only in whether `enclosing_range` is set are collapsed, preferring the one that + * carries it. Mirrors the Java `ScipOccurrences` accumulator. + */ +internal class ScipOccurrences { + + private val out = LinkedHashMap() + + fun add(occ: Occurrence) { + val key = Key.of(occ) + val existing = out[key] + if (existing == null) { + out[key] = occ + return + } + if (existing.enclosingRangeCount == 0 && occ.enclosingRangeCount > 0) { + out[key] = occ + } + } + + fun values(): Collection = out.values + + private data class Key(val symbol: String, val range: List, val roles: Int) { + companion object { + fun of(occ: Occurrence): Key = + Key(occ.symbol, occ.rangeList.toList(), occ.symbolRoles) + } + } +} diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipShardWriter.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipShardWriter.kt new file mode 100644 index 000000000..b2611c571 --- /dev/null +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipShardWriter.kt @@ -0,0 +1,22 @@ +package com.sourcegraph.semanticdb_kotlinc + +import org.scip_code.scip.Document +import org.scip_code.scip.Index +import java.nio.file.Files +import java.nio.file.Path + +/** + * Writes per-source SCIP shards from the kotlinc plug-in. Kotlin compiles each source once per + * round and stale shards are removed via [delete], so no merge step is needed. + */ +internal object ScipShardWriter { + + fun write(output: Path, shard: Index) { + Files.createDirectories(output.parent) + Files.write(output, shard.toByteArray()) + } + + fun delete(output: Path) { + Files.deleteIfExists(output) + } +} diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipSymbols.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipSymbols.kt new file mode 100644 index 000000000..c8685acae --- /dev/null +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipSymbols.kt @@ -0,0 +1,22 @@ +package com.sourcegraph.semanticdb_kotlinc + +/** + * Converts SemanticDB-style symbol strings into the placeholder SCIP form expected by the + * aggregator: globals are prefixed with [PLACEHOLDER_PREFIX] (rewritten to + * `scip-java maven ` once coordinates are known), locals use the canonical + * `local N` form and pass through unchanged. Mirrors the Java `ScipSymbols` helper. + */ +object ScipSymbols { + + const val PLACEHOLDER_PREFIX: String = ". . . . " + + fun fromSemanticdbSymbol(symbol: String?): String { + if (symbol.isNullOrEmpty()) return "" + if (symbol.startsWith("local")) { + return "local " + symbol.substring("local".length) + } + return PLACEHOLDER_PREFIX + symbol + } + + fun fromSemanticdbSymbol(symbol: Symbol): String = fromSemanticdbSymbol(symbol.toString()) +} diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipTextDocumentBuilder.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipTextDocumentBuilder.kt new file mode 100644 index 000000000..18fd3e8fa --- /dev/null +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/ScipTextDocumentBuilder.kt @@ -0,0 +1,300 @@ +package com.sourcegraph.semanticdb_kotlinc + +import org.scip_code.scip.Document +import org.scip_code.scip.Index +import org.scip_code.scip.Occurrence +import org.scip_code.scip.Relationship +import org.scip_code.scip.Signature +import org.scip_code.scip.SymbolInformation +import org.scip_code.scip.SymbolRole +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.SymbolOccurrence.Role +import kotlin.contracts.ExperimentalContracts +import org.jetbrains.kotlin.KtSourceElement +import org.jetbrains.kotlin.KtSourceFile +import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext +import org.jetbrains.kotlin.fir.analysis.checkers.directOverriddenSymbolsSafe +import org.jetbrains.kotlin.fir.analysis.checkers.toClassLikeSymbol +import org.jetbrains.kotlin.fir.analysis.getChild +import org.jetbrains.kotlin.fir.renderer.* +import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol +import org.jetbrains.kotlin.fir.symbols.SymbolInternals +import org.jetbrains.kotlin.fir.symbols.impl.* +import org.jetbrains.kotlin.fir.types.impl.FirImplicitAnyTypeRef +import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.text + +/** + * Builds a single-document [Index] shard for one Kotlin source from callbacks fired by + * [SemanticdbVisitor]. Symbols use the [ScipSymbols.PLACEHOLDER_PREFIX] scheme; signature + * documentation is rendered via [FirRenderer] as raw Kotlin source. + */ +@ExperimentalContracts +class ScipTextDocumentBuilder( + private val file: KtSourceFile, + private val lineMap: LineMap, + private val cache: SymbolsCache, + private val relativePath: String, +) { + private val occurrences = ScipOccurrences() + // Keyed by symbol so re-encounters (multi-round compilation, synthetic accessors) don't dup. + private val symbols = LinkedHashMap() + + fun build(): Document = + Document + .newBuilder() + .setRelativePath(relativePath) + .setLanguage(LANGUAGE_KOTLIN) + .addAllOccurrences(occurrences.values()) + .addAllSymbols(symbols.values) + .build() + + fun buildIndex(): Index = Index.newBuilder().addDocuments(build()).build() + + fun emitScipData( + firBasedSymbol: FirBasedSymbol<*>?, + symbol: Symbol, + element: KtSourceElement, + role: Role, + context: CheckerContext, + enclosingSource: KtSourceElement? = null, + ) { + if (symbol == Symbol.NONE) return + + emitOccurrence(symbol, element, role, enclosingSource) + if (role == Role.DEFINITION) { + emitSymbolInformation(firBasedSymbol, symbol, element, context) + } + } + + private fun emitOccurrence( + symbol: Symbol, + element: KtSourceElement, + role: Role, + enclosingSource: KtSourceElement?, + ) { + val builder = + Occurrence + .newBuilder() + .addAllRange(scipRange(element)) + .setSymbol(ScipSymbols.fromSemanticdbSymbol(symbol)) + .setSymbolRoles(scipRole(role)) + if (enclosingSource != null) { + builder.addAllEnclosingRange(scipEnclosingRange(enclosingSource)) + } + occurrences.add(builder.build()) + } + + @OptIn(SymbolInternals::class) + private fun emitSymbolInformation( + firBasedSymbol: FirBasedSymbol<*>?, + symbol: Symbol, + element: KtSourceElement, + context: CheckerContext, + ) { + val scipSymbolStr = ScipSymbols.fromSemanticdbSymbol(symbol) + val builder = + SymbolInformation + .newBuilder() + .setSymbol(scipSymbolStr) + .setDisplayName(displayName(firBasedSymbol, element)) + .setKind(scipKind(firBasedSymbol)) + + val signature = signatureText(firBasedSymbol) + if (signature.isNotEmpty()) { + builder.setSignatureDocumentation( + Signature.newBuilder().setLanguage(LANGUAGE_KOTLIN).setText(signature)) + } + + val kdoc = kdocText(firBasedSymbol) + if (kdoc.isNotEmpty()) { + builder.addDocumentation(kdoc) + } + + val supportsRefRel = supportsReferenceRelationship(firBasedSymbol) + for (parent in parentOrOverriddenSymbols(firBasedSymbol, context)) { + val parentSymbolStr = ScipSymbols.fromSemanticdbSymbol(parent) + if (parentSymbolStr.isEmpty()) continue + builder.addRelationships( + Relationship.newBuilder() + .setSymbol(parentSymbolStr) + .setIsImplementation(true) + .setIsReference(supportsRefRel)) + } + + // Last write wins: newly discovered metadata takes precedence. + symbols[scipSymbolStr] = builder.build() + } + + @OptIn(SymbolInternals::class) + private fun parentOrOverriddenSymbols( + firBasedSymbol: FirBasedSymbol<*>?, + context: CheckerContext, + ): List { + return when (firBasedSymbol) { + is FirClassSymbol -> + firBasedSymbol + .resolvedSuperTypeRefs + .filter { it !is FirImplicitAnyTypeRef } + .mapNotNull { it.toClassLikeSymbol(firBasedSymbol.moduleData.session) } + .flatMap { cache[it].toList() } + is FirFunctionSymbol<*> -> + firBasedSymbol + .directOverriddenSymbolsSafe(context) + .flatMap { cache[it].toList() } + else -> emptyList() + } + } + + private fun supportsReferenceRelationship(firBasedSymbol: FirBasedSymbol<*>?): Boolean { + return when (firBasedSymbol) { + is FirClassSymbol, + is FirTypeAliasSymbol -> false + else -> true + } + } + + private fun scipRange(element: KtSourceElement): List { + val startLine = lineMap.lineNumber(element) - 1 + val startCharacter = lineMap.startCharacter(element) + val endCharacter = lineMap.endCharacter(element) + // SemanticdbVisitor only emits single-line ranges, so 3 ints suffice. + return listOf(startLine, startCharacter, endCharacter) + } + + private fun scipEnclosingRange(element: KtSourceElement): List { + val startLine = lineMap.lineNumber(element) - 1 + val startCharacter = lineMap.startCharacter(element) + val endLine = lineMap.lineNumberForOffset(element.endOffset) - 1 + val endCharacter = lineMap.columnForOffset(element.endOffset) + return if (startLine == endLine) { + listOf(startLine, startCharacter, endCharacter) + } else { + listOf(startLine, startCharacter, endLine, endCharacter) + } + } + + @OptIn(SymbolInternals::class) + private fun signatureText(firBasedSymbol: FirBasedSymbol<*>?): String { + if (firBasedSymbol == null) return "" + return try { + renderer.renderElementAsString(firBasedSymbol.fir).trimEnd() + } catch (_: Throwable) { + "" + } + } + + private fun kdocText(firBasedSymbol: FirBasedSymbol<*>?): String { + if (firBasedSymbol == null) return "" + val kdoc = + firBasedSymbol.source?.getChild(KtTokens.DOC_COMMENT)?.text?.toString() ?: return "" + return stripKDocAsterisks(kdoc) + } + + /** Strips leading/trailing slash and asterisk tokens from each line of a kdoc string. */ + private fun stripKDocAsterisks(kdoc: String): String { + if (kdoc.isEmpty()) return kdoc + val out = StringBuilder() + kdoc.lineSequence().forEach { line -> + if (line.isEmpty()) return@forEach + var start = 0 + while (start < line.length && line[start].isWhitespace()) { + start++ + } + if (start < line.length && line[start] == '/') { + start++ + } + while (start < line.length && line[start] == '*') { + start++ + } + var end = line.length - 1 + if (end > start && line[end] == '/') { + end-- + } + while (end > start && line[end] == '*') { + end-- + } + while (end > start && line[end].isWhitespace()) { + end-- + } + start = minOf(start, line.length - 1) + if (end > start) { + end++ + } + if (out.isNotEmpty()) out.append('\n') + out.append(line, start, end) + } + return out.toString() + } + + companion object { + private const val LANGUAGE_KOTLIN: String = "kotlin" + + @OptIn(SymbolInternals::class) + private fun displayName( + firBasedSymbol: FirBasedSymbol<*>?, + element: KtSourceElement, + ): String = + when (firBasedSymbol) { + null -> element.text?.toString() ?: "" + is FirClassSymbol -> firBasedSymbol.classId.shortClassName.asString() + is FirPropertyAccessorSymbol -> firBasedSymbol.fir.propertySymbol.name.asString() + is FirFunctionSymbol<*> -> firBasedSymbol.callableId.callableName.asString() + is FirPropertySymbol -> firBasedSymbol.callableId.callableName.asString() + is FirVariableSymbol<*> -> firBasedSymbol.name.asString() + else -> firBasedSymbol.toString() + } + + private fun scipRole(role: Role): Int = + when (role) { + Role.DEFINITION -> SymbolRole.Definition_VALUE + else -> 0 + } + + private fun scipKind(firBasedSymbol: FirBasedSymbol<*>?): SymbolInformation.Kind = + when (firBasedSymbol) { + null -> SymbolInformation.Kind.UnspecifiedKind + is FirRegularClassSymbol -> + when (firBasedSymbol.classKind) { + org.jetbrains.kotlin.descriptors.ClassKind.INTERFACE -> + SymbolInformation.Kind.Interface + org.jetbrains.kotlin.descriptors.ClassKind.ENUM_CLASS -> + SymbolInformation.Kind.Enum + org.jetbrains.kotlin.descriptors.ClassKind.ENUM_ENTRY -> + SymbolInformation.Kind.EnumMember + org.jetbrains.kotlin.descriptors.ClassKind.OBJECT -> + SymbolInformation.Kind.Object + org.jetbrains.kotlin.descriptors.ClassKind.ANNOTATION_CLASS -> + SymbolInformation.Kind.Interface + else -> SymbolInformation.Kind.Class + } + is FirAnonymousObjectSymbol -> SymbolInformation.Kind.Object + is FirTypeAliasSymbol -> SymbolInformation.Kind.TypeAlias + is FirConstructorSymbol -> SymbolInformation.Kind.Constructor + is FirPropertyAccessorSymbol -> SymbolInformation.Kind.Method + is FirFunctionSymbol<*> -> SymbolInformation.Kind.Method + is FirPropertySymbol -> SymbolInformation.Kind.Property + is FirFieldSymbol -> SymbolInformation.Kind.Field + is FirEnumEntrySymbol -> SymbolInformation.Kind.EnumMember + is FirValueParameterSymbol -> SymbolInformation.Kind.Parameter + is FirTypeParameterSymbol -> SymbolInformation.Kind.TypeParameter + is FirVariableSymbol<*> -> SymbolInformation.Kind.Variable + else -> SymbolInformation.Kind.UnspecifiedKind + } + + // Renders declarations as raw Kotlin source for SymbolInformation.signature_documentation. + private val renderer: FirRenderer + get() = + FirRenderer( + typeRenderer = ConeTypeRenderer(), + idRenderer = ConeIdShortRenderer(), + classMemberRenderer = FirNoClassMemberRenderer(), + bodyRenderer = null, + propertyAccessorRenderer = null, + callArgumentsRenderer = FirCallNoArgumentsRenderer(), + modifierRenderer = FirAllModifierRenderer(), + callableSignatureRenderer = + FirCallableSignatureRendererForReadability(), + declarationRenderer = FirDeclarationRenderer("local "), + ) + } +} diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbSymbols.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbSymbols.kt index 74d7fc51f..3e60befcf 100644 --- a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbSymbols.kt +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbSymbols.kt @@ -1,17 +1,11 @@ package com.sourcegraph.semanticdb_kotlinc -import com.sourcegraph.semanticdb.SemanticdbSymbols as SharedSymbols - @JvmInline value class Symbol(private val symbol: String) { companion object { - val NONE = Symbol(SharedSymbols.NONE) - val ROOT_PACKAGE = Symbol(SharedSymbols.ROOT_PACKAGE) + val NONE = Symbol("") + val ROOT_PACKAGE = Symbol("_root_/") - // Note: this intentionally diverges from `SharedSymbols.global` when - // `desc == NONE` — Java returns `NONE`, Kotlin returns the owner. - // SymbolsCache relies on this behavior; do not delegate without first - // updating those call sites. fun createGlobal(owner: Symbol, desc: SemanticdbSymbolDescriptor): Symbol = when { desc == SemanticdbSymbolDescriptor.NONE -> owner @@ -19,12 +13,12 @@ value class Symbol(private val symbol: String) { else -> desc.encode() } - fun createLocal(i: Int) = Symbol(SharedSymbols.local(i)) + fun createLocal(i: Int) = Symbol("local$i") } - fun isGlobal() = SharedSymbols.isGlobal(symbol) + fun isGlobal() = !isLocal() - fun isLocal() = SharedSymbols.isLocal(symbol) + fun isLocal() = symbol.startsWith("local") override fun toString(): String = symbol } @@ -34,13 +28,22 @@ fun String.symbol(): Symbol = Symbol(this) data class SemanticdbSymbolDescriptor( val kind: Kind, val name: String, - // Default differs from `SharedSymbols.Descriptor` (which is "") because - // Kotlin call sites — getters/setters in particular — rely on the no-arg - // overload producing `name().` rather than `name.` for METHOD kinds. val disambiguator: String = "()" ) { companion object { val NONE = SemanticdbSymbolDescriptor(Kind.NONE, "") + + private fun encodeName(name: String): String { + if (name.isEmpty()) return "``" + val isStartOk = Character.isJavaIdentifierStart(name[0]) + var isPartsOk = true + var i = 1 + while (isPartsOk && i < name.length) { + isPartsOk = Character.isJavaIdentifierPart(name[i]) + i++ + } + return if (isStartOk && isPartsOk) name else "`$name`" + } } enum class Kind { @@ -50,21 +53,18 @@ data class SemanticdbSymbolDescriptor( TYPE, PACKAGE, PARAMETER, - TYPE_PARAMETER; - - internal fun toSharedKind(): SharedSymbols.Descriptor.Kind = - when (this) { - NONE -> SharedSymbols.Descriptor.Kind.None - TERM -> SharedSymbols.Descriptor.Kind.Term - METHOD -> SharedSymbols.Descriptor.Kind.Method - TYPE -> SharedSymbols.Descriptor.Kind.Type - PACKAGE -> SharedSymbols.Descriptor.Kind.Package - PARAMETER -> SharedSymbols.Descriptor.Kind.Parameter - TYPE_PARAMETER -> SharedSymbols.Descriptor.Kind.TypeParameter - } + TYPE_PARAMETER } - fun encode(): Symbol = - if (kind == Kind.NONE) Symbol(SharedSymbols.NONE) - else Symbol(SharedSymbols.Descriptor(kind.toSharedKind(), name, disambiguator).encode()) + fun encode() = + Symbol( + when (kind) { + Kind.NONE -> "" + Kind.TERM -> "${encodeName(name)}." + Kind.METHOD -> "${encodeName(name)}${disambiguator}." + Kind.TYPE -> "${encodeName(name)}#" + Kind.PACKAGE -> "${encodeName(name)}/" + Kind.PARAMETER -> "(${encodeName(name)})" + Kind.TYPE_PARAMETER -> "[${encodeName(name)}]" + }) } diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbTextDocumentBuilder.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbTextDocumentBuilder.kt index c9a348b62..d37d5bee1 100644 --- a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbTextDocumentBuilder.kt +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbTextDocumentBuilder.kt @@ -1,10 +1,6 @@ package com.sourcegraph.semanticdb_kotlinc -import com.sourcegraph.semanticdb.Semanticdb - -import com.sourcegraph.semanticdb.Semanticdb.SymbolOccurrence.Role -import com.sourcegraph.semanticdb.SemanticdbDocumentBuilder -import com.sourcegraph.semanticdb.SemanticdbPaths +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.SymbolOccurrence.Role import java.nio.file.Path import java.nio.file.Paths import java.security.MessageDigest @@ -34,12 +30,21 @@ class SemanticdbTextDocumentBuilder( private val lineMap: LineMap, private val cache: SymbolsCache, ) { - private val documentBuilder = SemanticdbDocumentBuilder() + private val occurrences = mutableListOf() + private val symbols = mutableListOf() private val fileText = file.getContentsAsStream().reader().readText() private val semanticMd5 = semanticdbMD5() - fun build(): Semanticdb.TextDocument = - documentBuilder.build(Semanticdb.Language.KOTLIN, semanticdbURI(), fileText, semanticMd5) + fun build() = TextDocument { + this.text = fileText + this.uri = semanticdbURI() + this.md5 = semanticMd5 + this.schema = Semanticdb.Schema.SEMANTICDB4 + this.language = Semanticdb.Language.KOTLIN + occurrences.sortWith(compareBy({ it.range.startLine }, { it.range.startCharacter })) + this.addAllOccurrences(occurrences) + this.addAllSymbols(symbols) + } fun emitSemanticdbData( firBasedSymbol: FirBasedSymbol<*>?, @@ -49,10 +54,14 @@ class SemanticdbTextDocumentBuilder( context: CheckerContext, enclosingSource: KtSourceElement? = null, ) { - documentBuilder.addOccurrence(symbolOccurrence(symbol, element, role, enclosingSource)) - if (role == Role.DEFINITION) { - documentBuilder.addSymbol(symbolInformation(firBasedSymbol, symbol, element, context)) + symbolOccurrence(symbol, element, role, enclosingSource).let { + if (!occurrences.contains(it)) { + occurrences.add(it) + } } + val symbolInformation = symbolInformation(firBasedSymbol, symbol, element, context) + if (role == Role.DEFINITION && !symbols.contains(symbolInformation)) + symbols.add(symbolInformation) } @OptIn(SymbolInternals::class) @@ -136,8 +145,11 @@ class SemanticdbTextDocumentBuilder( } } - private fun semanticdbURI(): String = - SemanticdbPaths.semanticdbUri(sourceroot, Paths.get(file.path)) + private fun semanticdbURI(): String { + // TODO: unix-style only + val relative = sourceroot.relativize(Paths.get(file.path)) + return relative.toString() + } private fun semanticdbMD5(): String = MessageDigest.getInstance("MD5") diff --git a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbVisitor.kt b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbVisitor.kt index 268d2b480..bdbbb4ba8 100644 --- a/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbVisitor.kt +++ b/semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/SemanticdbVisitor.kt @@ -1,9 +1,9 @@ package com.sourcegraph.semanticdb_kotlinc -import com.sourcegraph.semanticdb.Semanticdb - -import com.sourcegraph.semanticdb.Semanticdb.SymbolOccurrence.Role +import org.scip_code.scip.Index +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.SymbolOccurrence.Role import java.nio.file.Path +import java.nio.file.Paths import kotlin.contracts.ExperimentalContracts import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.KtSourceFile @@ -24,7 +24,9 @@ class SemanticdbVisitor( locals: LocalSymbolsCache = LocalSymbolsCache() ) { private val cache = SymbolsCache(globals, locals) + private val relativePath: String = computeRelativePath(sourceroot, file) private val documentBuilder = SemanticdbTextDocumentBuilder(sourceroot, file, lineMap, cache) + private val scipBuilder = ScipTextDocumentBuilder(file, lineMap, cache, relativePath) private data class SymbolDescriptorPair( val firBasedSymbol: FirBasedSymbol<*>?, @@ -35,6 +37,10 @@ class SemanticdbVisitor( return documentBuilder.build() } + fun buildScipIndex(): Index = scipBuilder.buildIndex() + + fun scipRelativePath(): String = relativePath + private fun Sequence?.emitAll( element: KtSourceElement, role: Role, @@ -43,6 +49,7 @@ class SemanticdbVisitor( ): List? = this?.onEach { (firBasedSymbol, symbol) -> documentBuilder.emitSemanticdbData(firBasedSymbol, symbol, element, role, context, enclosingSource) + scipBuilder.emitScipData(firBasedSymbol, symbol, element, role, context, enclosingSource) } ?.map { it.symbol } ?.toList() @@ -114,3 +121,16 @@ class SemanticdbVisitor( } } +/** + * SCIP `Document.relative_path` for [file] relative to [sourceroot]. Best-effort: falls back to + * the raw path when the file is outside the sourceroot (PostAnalysisExtension skips writing then). + */ +private fun computeRelativePath(sourceroot: Path, file: KtSourceFile): String { + val normalized = Paths.get(file.path ?: "").normalize() + return if (normalized.startsWith(sourceroot)) { + sourceroot.relativize(normalized).toString().replace('\\', '/') + } else { + normalized.toString().replace('\\', '/') + } +} + diff --git a/semanticdb-kotlinc/src/main/proto/com.sourcegraph.semanticdb_kotlin/semanticdb.proto b/semanticdb-kotlinc/src/main/proto/com.sourcegraph.semanticdb_kotlin/semanticdb.proto new file mode 100644 index 000000000..f09cf9231 --- /dev/null +++ b/semanticdb-kotlinc/src/main/proto/com.sourcegraph.semanticdb_kotlin/semanticdb.proto @@ -0,0 +1,192 @@ +// Original source: https://github.com/scalameta/scalameta/blob/cf796cf2436b40494baf2bdc266623dc65264ad5/semanticdb/semanticdb/semanticdb.proto +// Local modifications: +// - Removes unused fields to minimize the amount of generated code. +// - Adds SymbolInformation.documentation that is pending upstream approval. +// - Adds SymbolOccurrence.enclosing_range to support SCIP's enclosing_range field. + +syntax = "proto3"; + +package com.sourcegraph.semanticdb_kotlinc; + +option java_package = "com.sourcegraph.semanticdb_kotlinc"; +option java_multiple_files = false; + +enum Schema { + LEGACY = 0; + SEMANTICDB3 = 3; + SEMANTICDB4 = 4; +} + +message TextDocuments { + repeated TextDocument documents = 1; +} + +message TextDocument { + reserved 4, 8, 9; + Schema schema = 1; + string uri = 2; + string text = 3; + string md5 = 11; + Language language = 10; + repeated SymbolInformation symbols = 5; + repeated SymbolOccurrence occurrences = 6; +} + +enum Language { + UNKNOWN_LANGUAGE = 0; + SCALA = 1; + JAVA = 2; + KOTLIN = 3; +} + +message Range { + int32 start_line = 1; + int32 start_character = 2; + int32 end_line = 3; + int32 end_character = 4; +} + +message Signature { + oneof sealed_value { + ClassSignature class_signature = 1; + MethodSignature method_signature = 2; + TypeSignature type_signature = 3; + ValueSignature value_signature = 4; + } +} + +message ClassSignature { + Scope type_parameters = 1; + repeated Type parents = 2; + Scope declarations = 4; +} + +message MethodSignature { + Scope type_parameters = 1; + repeated Scope parameter_lists = 2; + Type return_type = 3; +} + +message TypeSignature { + Scope type_parameters = 1; + Type lower_bound = 2; + Type upper_bound = 3; +} + +message ValueSignature { + Type tpe = 1; +} + +message SymbolInformation { + enum Kind { + reserved 1, 2, 4, 5, 15, 16; + UNKNOWN_KIND = 0; + LOCAL = 19; + FIELD = 20; + METHOD = 3; + CONSTRUCTOR = 21; + TYPE = 7; + PARAMETER = 8; + TYPE_PARAMETER = 9; + PACKAGE = 11; + CLASS = 13; + INTERFACE = 18; + } + enum Property { + UNKNOWN_PROPERTY = 0; + reserved 0x1; + reserved 0x2; + ABSTRACT = 0x4; + FINAL = 0x8; + SEALED = 0x10; + STATIC = 0x1000; + ENUM = 0x4000; + } + reserved 2, 6, 7, 8, 9, 10, 11, 12, 14, 15; + string symbol = 1; + Language language = 16; + Kind kind = 3; + int32 properties = 4; + string display_name = 5; + Signature signature = 17; + Access access = 18; + repeated string overridden_symbols = 19; + // NOTE: this field does not exist in the upstream SemanticDB spec. + // It is added to support documentation strings (e.g., KDoc). + Documentation documentation = 20; +} + +message Access { + oneof sealed_value { + PrivateAccess private_access = 1; + PrivateWithinAccess private_within_access = 3; + ProtectedAccess protected_access = 4; + PublicAccess public_access = 7; + } +} + +message PrivateAccess {} + +message PrivateWithinAccess { + string symbol = 1; +} + +message ProtectedAccess {} + +message PublicAccess {} + +message Documentation { + enum Format { + HTML = 0; + MARKDOWN = 1; + JAVADOC = 2; + SCALADOC = 3; + KDOC = 4; + } + string message = 1; + Format format = 2; +} + +message SymbolOccurrence { + enum Role { + UNKNOWN_ROLE = 0; + REFERENCE = 1; + DEFINITION = 2; + } + Range range = 1; + string symbol = 2; + Role role = 3; + // NOTE: this field does not exist in the upstream SemanticDB spec. + // It is added to support SCIP's enclosing_range field. + // This is the range of the nearest non-trivial enclosing AST node. + optional Range enclosing_range = 4; +} + +message Scope { + repeated string symlinks = 1; + repeated SymbolInformation hardlinks = 2; +} + +message Type { + reserved 1, 3, 4, 5, 6, 11, 12, 15, 16; + oneof sealed_value { + TypeRef type_ref = 2; + ExistentialType existential_type = 9; + IntersectionType intersection_type = 17; + } +} + +message TypeRef { + string symbol = 2; + repeated Type type_arguments = 3; +} + +message IntersectionType { + repeated Type types = 1; +} + +message ExistentialType { + reserved 2; + Type tpe = 1; + Scope declarations = 3; +} diff --git a/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/AnalyzerTest.kt b/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/AnalyzerTest.kt index 9ce6d24e6..09724ed34 100644 --- a/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/AnalyzerTest.kt +++ b/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/AnalyzerTest.kt @@ -1,11 +1,9 @@ package com.sourcegraph.semanticdb_kotlinc.test -import com.sourcegraph.semanticdb.Semanticdb - import com.sourcegraph.semanticdb_kotlinc.* -import com.sourcegraph.semanticdb.Semanticdb.Language.KOTLIN -import com.sourcegraph.semanticdb.Semanticdb.SymbolOccurrence.Role -import com.sourcegraph.semanticdb.Semanticdb.TextDocument +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.Language.KOTLIN +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.SymbolOccurrence.Role +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.TextDocument import com.tschuchort.compiletesting.KotlinCompilation import com.tschuchort.compiletesting.PluginOption import com.tschuchort.compiletesting.SourceFile diff --git a/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/SemanticdbSymbolsTest.kt b/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/SemanticdbSymbolsTest.kt index 90f451dda..d3cef3027 100644 --- a/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/SemanticdbSymbolsTest.kt +++ b/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/SemanticdbSymbolsTest.kt @@ -1,11 +1,9 @@ package com.sourcegraph.semanticdb_kotlinc.test -import com.sourcegraph.semanticdb.Semanticdb - import com.sourcegraph.semanticdb_kotlinc.* -import com.sourcegraph.semanticdb.Semanticdb.Documentation.Format -import com.sourcegraph.semanticdb.Semanticdb.Language -import com.sourcegraph.semanticdb.Semanticdb.SymbolOccurrence.Role +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.Documentation.Format +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.Language +import com.sourcegraph.semanticdb_kotlinc.Semanticdb.SymbolOccurrence.Role import com.sourcegraph.semanticdb_kotlinc.test.ExpectedSymbols.SemanticdbData import com.sourcegraph.semanticdb_kotlinc.test.ExpectedSymbols.SymbolCacheData import com.tschuchort.compiletesting.SourceFile diff --git a/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/Utils.kt b/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/Utils.kt index 84b9b82ce..d407be27d 100644 --- a/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/Utils.kt +++ b/semanticdb-kotlinc/src/test/kotlin/com/sourcegraph/semanticdb_kotlinc/test/Utils.kt @@ -1,8 +1,6 @@ package com.sourcegraph.semanticdb_kotlinc.test -import com.sourcegraph.semanticdb.Semanticdb import com.sourcegraph.semanticdb.SemanticdbOptions - import com.sourcegraph.semanticdb_kotlinc.* import com.sourcegraph.semanticdb_kotlinc.AnalyzerCheckers.Companion.visitors import com.tschuchort.compiletesting.KotlinCompilation diff --git a/tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala b/tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala index 45b12f5fd..905c16d81 100644 --- a/tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala +++ b/tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala @@ -54,9 +54,9 @@ abstract class BaseBuildToolSuite extends MopedSuite(ScipJava.app) { } } - private val semanticdbPattern = FileSystems + private val scipShardPattern = FileSystems .getDefault - .getPathMatcher("glob:**.semanticdb") + .getPathMatcher("glob:**/META-INF/scip/**.scip") def checkBuild( options: TestOptions, @@ -123,17 +123,17 @@ abstract class BaseBuildToolSuite extends MopedSuite(ScipJava.app) { case None => assertEquals(exit, 0, clues(app.capturedOutput)) } - val semanticdbFiles = + val scipShards = if (!Files.isDirectory(targetroot)) Nil else FileIO .listAllFilesRecursively(AbsolutePath(targetroot)) - .filter(p => semanticdbPattern.matches(p.toNIO)) - if (semanticdbFiles.length != expectedSemanticdbFiles) { + .filter(p => scipShardPattern.matches(p.toNIO)) + if (scipShards.length != expectedSemanticdbFiles) { fail( - s"Expected $expectedSemanticdbFiles SemanticDB file(s) to be generated.", - clues(semanticdbFiles, app.capturedOutput) + s"Expected $expectedSemanticdbFiles SCIP shard file(s) to be generated.", + clues(scipShards, app.capturedOutput) ) } if (expectedPackages.nonEmpty) { diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AbstractClasses.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AbstractClasses.java index ac2e74c31..fc494c4ac 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AbstractClasses.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AbstractClasses.java @@ -1,34 +1,34 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/AbstractClasses# +//⌄ enclosing_range_start scip-java maven . . minimized/AbstractClasses# public abstract class AbstractClasses { -// ^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AbstractClasses# +// ^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AbstractClasses# // display_name AbstractClasses // signature_documentation java public abstract class AbstractClasses // kind Class -// ^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AbstractClasses#``(). +// ^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AbstractClasses#``(). // display_name // signature_documentation java public AbstractClasses() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/AbstractClasses#defaultImplementation(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AbstractClasses#defaultImplementation(). public String defaultImplementation() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AbstractClasses#defaultImplementation(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AbstractClasses#defaultImplementation(). // display_name defaultImplementation // signature_documentation java public String defaultImplementation() // kind Method return ""; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/AbstractClasses#defaultImplementation(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AbstractClasses#defaultImplementation(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/AbstractClasses#abstractImplementation(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AbstractClasses#abstractImplementation(). public abstract String abstractImplementation(); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AbstractClasses#abstractImplementation(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AbstractClasses#abstractImplementation(). // display_name abstractImplementation // signature_documentation java public abstract String abstractImplementation() // kind AbstractMethod -// relationship is_reference is_implementation semanticdb maven . . minimized/SubClasses#abstractImplementation(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/AbstractClasses#abstractImplementation(). +// relationship is_reference is_implementation scip-java maven . . minimized/SubClasses#abstractImplementation(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AbstractClasses#abstractImplementation(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/AbstractClasses# +//⌃ enclosing_range_end scip-java maven . . minimized/AbstractClasses# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationParameters.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationParameters.java index dbfff8af2..8a9e5d38b 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationParameters.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationParameters.java @@ -1,154 +1,154 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/Bar# +//⌄ enclosing_range_start scip-java maven . . minimized/Bar# @interface Bar { -// ^^^ definition semanticdb maven . . minimized/Bar# +// ^^^ definition scip-java maven . . minimized/Bar# // display_name Bar -// signature_documentation java @interface Bar +// signature_documentation java abstract @interface Bar implements Annotation // kind Interface -// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/Bar#value(). +// relationship is_implementation scip-java maven jdk 11 java/lang/annotation/Annotation# +// ⌄ enclosing_range_start scip-java maven . . minimized/Bar#value(). double value(); -// ^^^^^ definition semanticdb maven . . minimized/Bar#value(). +// ^^^^^ definition scip-java maven . . minimized/Bar#value(). // display_name value // signature_documentation java public abstract double value() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Bar#value(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Bar#value(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Bar# +//⌃ enclosing_range_end scip-java maven . . minimized/Bar# -//⌄ enclosing_range_start semanticdb maven . . minimized/BarB# +//⌄ enclosing_range_start scip-java maven . . minimized/BarB# @interface BarB { -// ^^^^ definition semanticdb maven . . minimized/BarB# +// ^^^^ definition scip-java maven . . minimized/BarB# // display_name BarB -// signature_documentation java @interface BarB +// signature_documentation java abstract @interface BarB implements Annotation // kind Interface -// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/BarB#value(). +// relationship is_implementation scip-java maven jdk 11 java/lang/annotation/Annotation# +// ⌄ enclosing_range_start scip-java maven . . minimized/BarB#value(). boolean value(); -// ^^^^^ definition semanticdb maven . . minimized/BarB#value(). +// ^^^^^ definition scip-java maven . . minimized/BarB#value(). // display_name value // signature_documentation java public abstract boolean value() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/BarB#value(). +// ⌃ enclosing_range_end scip-java maven . . minimized/BarB#value(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/BarB# +//⌃ enclosing_range_end scip-java maven . . minimized/BarB# -//⌄ enclosing_range_start semanticdb maven . . minimized/Nullable# +//⌄ enclosing_range_start scip-java maven . . minimized/Nullable# @interface Nullable { -// ^^^^^^^^ definition semanticdb maven . . minimized/Nullable# +// ^^^^^^^^ definition scip-java maven . . minimized/Nullable# // display_name Nullable -// signature_documentation java @interface Nullable +// signature_documentation java abstract @interface Nullable implements Annotation // kind Interface -// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/Nullable#value(). +// relationship is_implementation scip-java maven jdk 11 java/lang/annotation/Annotation# +// ⌄ enclosing_range_start scip-java maven . . minimized/Nullable#value(). String value() default ""; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^ definition semanticdb maven . . minimized/Nullable#value(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^ definition scip-java maven . . minimized/Nullable#value(). // display_name value // signature_documentation java public abstract String value() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Nullable#value(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Nullable#value(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Nullable# +//⌃ enclosing_range_end scip-java maven . . minimized/Nullable# -//⌄ enclosing_range_start semanticdb maven . . minimized/BarRef# +//⌄ enclosing_range_start scip-java maven . . minimized/BarRef# @interface BarRef{ -// ^^^^^^ definition semanticdb maven . . minimized/BarRef# +// ^^^^^^ definition scip-java maven . . minimized/BarRef# // display_name BarRef -// signature_documentation java @interface BarRef +// signature_documentation java abstract @interface BarRef implements Annotation // kind Interface -// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/BarRef#value(). +// relationship is_implementation scip-java maven jdk 11 java/lang/annotation/Annotation# +// ⌄ enclosing_range_start scip-java maven . . minimized/BarRef#value(). SuppressWarnings value(); -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -// ^^^^^ definition semanticdb maven . . minimized/BarRef#value(). +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# +// ^^^^^ definition scip-java maven . . minimized/BarRef#value(). // display_name value // signature_documentation java public abstract SuppressWarnings value() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/BarRef#value(). +// ⌃ enclosing_range_end scip-java maven . . minimized/BarRef#value(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/BarRef# +//⌃ enclosing_range_end scip-java maven . . minimized/BarRef# -//⌄ enclosing_range_start semanticdb maven . . minimized/Foo# +//⌄ enclosing_range_start scip-java maven . . minimized/Foo# interface Foo { -// ^^^ definition semanticdb maven . . minimized/Foo# +// ^^^ definition scip-java maven . . minimized/Foo# // display_name Foo -// signature_documentation java interface Foo +// signature_documentation java abstract interface Foo // kind Interface -// ⌄ enclosing_range_start semanticdb maven . . minimized/Foo#test(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Foo#test(). @Bar(-1d) -// ^^^ reference semanticdb maven . . minimized/Bar# +// ^^^ reference scip-java maven . . minimized/Bar# double test(); -// ^^^^ definition semanticdb maven . . minimized/Foo#test(). +// ^^^^ definition scip-java maven . . minimized/Foo#test(). // display_name test -// signature_documentation java @Bar(-1.0)\npublic abstract double test() +// signature_documentation java @Bar\npublic abstract double test() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Foo#test(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Foo#test(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Foo#test2(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Foo#test2(). @Bar(~5) -// ^^^ reference semanticdb maven . . minimized/Bar# +// ^^^ reference scip-java maven . . minimized/Bar# @SuppressWarnings(value = "unchecked") -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -// ^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#value(). +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# +// ^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings#value(). double test2(); -// ^^^^^ definition semanticdb maven . . minimized/Foo#test2(). +// ^^^^^ definition scip-java maven . . minimized/Foo#test2(). // display_name test2 -// signature_documentation java @Bar(~5)\n@SuppressWarnings("unchecked")\npublic abstract double test2() +// signature_documentation java @Bar\n@SuppressWarnings\npublic abstract double test2() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Foo#test2(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Foo#test2(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Foo#test3(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Foo#test3(). @BarB(!true) -// ^^^^ reference semanticdb maven . . minimized/BarB# +// ^^^^ reference scip-java maven . . minimized/BarB# double test3(); -// ^^^^^ definition semanticdb maven . . minimized/Foo#test3(). +// ^^^^^ definition scip-java maven . . minimized/Foo#test3(). // display_name test3 -// signature_documentation java @BarB(!true)\npublic abstract double test3() +// signature_documentation java @BarB\npublic abstract double test3() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Foo#test3(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Foo#test3(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Foo#test4(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Foo#test4(). @Nullable(("what")) -// ^^^^^^^^ reference semanticdb maven . . minimized/Nullable# +// ^^^^^^^^ reference scip-java maven . . minimized/Nullable# Foo test4(); -// ^^^ reference semanticdb maven . . minimized/Foo# -// ^^^^^ definition semanticdb maven . . minimized/Foo#test4(). +// ^^^ reference scip-java maven . . minimized/Foo# +// ^^^^^ definition scip-java maven . . minimized/Foo#test4(). // display_name test4 -// signature_documentation java @Nullable("what")\npublic abstract Foo test4() +// signature_documentation java @Nullable\npublic abstract Foo test4() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Foo#test4(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Foo#test4(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Foo#testCast(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Foo#testCast(). @Bar((double) -1) -// ^^^ reference semanticdb maven . . minimized/Bar# +// ^^^ reference scip-java maven . . minimized/Bar# double testCast(); -// ^^^^^^^^ definition semanticdb maven . . minimized/Foo#testCast(). +// ^^^^^^^^ definition scip-java maven . . minimized/Foo#testCast(). // display_name testCast -// signature_documentation java @Bar((double) -1)\npublic abstract double testCast() +// signature_documentation java @Bar\npublic abstract double testCast() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Foo#testCast(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Foo#testCast(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Foo# +//⌃ enclosing_range_end scip-java maven . . minimized/Foo# -//⌄ enclosing_range_start semanticdb maven . . minimized/TestRef# +//⌄ enclosing_range_start scip-java maven . . minimized/TestRef# interface TestRef { -// ^^^^^^^ definition semanticdb maven . . minimized/TestRef# +// ^^^^^^^ definition scip-java maven . . minimized/TestRef# // display_name TestRef -// signature_documentation java interface TestRef +// signature_documentation java abstract interface TestRef // kind Interface -// ⌄ enclosing_range_start semanticdb maven . . minimized/TestRef#testCase(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TestRef#testCase(). @BarRef(@SuppressWarnings(value = "unchecked")) -// ^^^^^^ reference semanticdb maven . . minimized/BarRef# -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -// ^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#value(). +// ^^^^^^ reference scip-java maven . . minimized/BarRef# +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# +// ^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings#value(). abstract double testCase(); -// ^^^^^^^^ definition semanticdb maven . . minimized/TestRef#testCase(). +// ^^^^^^^^ definition scip-java maven . . minimized/TestRef#testCase(). // display_name testCase -// signature_documentation java @BarRef(@SuppressWarnings("unchecked"))\npublic abstract double testCase() +// signature_documentation java @BarRef\npublic abstract double testCase() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/TestRef#testCase(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TestRef#testCase(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/TestRef# +//⌃ enclosing_range_end scip-java maven . . minimized/TestRef# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java index 1a6ace917..061c9a401 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java @@ -1,79 +1,79 @@ package minimized; import java.lang.annotation.Documented; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^ reference semanticdb maven . . java/lang/annotation/ -// ^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Documented# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^ reference scip-java maven . . java/lang/annotation/ +// ^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Documented# import java.lang.annotation.Retention; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^ reference semanticdb maven . . java/lang/annotation/ -// ^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Retention# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^ reference scip-java maven . . java/lang/annotation/ +// ^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Retention# import java.lang.annotation.RetentionPolicy; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^ reference semanticdb maven . . java/lang/annotation/ -// ^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/RetentionPolicy# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^ reference scip-java maven . . java/lang/annotation/ +// ^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/RetentionPolicy# import java.lang.annotation.Target; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^ reference semanticdb maven . . java/lang/annotation/ -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Target# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^ reference scip-java maven . . java/lang/annotation/ +// ^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Target# import static java.lang.annotation.ElementType.*; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^ reference semanticdb maven . . java/lang/annotation/ -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^ reference scip-java maven . . java/lang/annotation/ +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType# -//⌄ enclosing_range_start semanticdb maven . . minimized/Annotations# +//⌄ enclosing_range_start scip-java maven . . minimized/Annotations# @Documented -// ^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Documented# +// ^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Documented# @Retention(RetentionPolicy.RUNTIME) -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Retention# -// ^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/RetentionPolicy# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/RetentionPolicy#RUNTIME. +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Retention# +// ^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/RetentionPolicy# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/RetentionPolicy#RUNTIME. @Target(value = {CONSTRUCTOR, -// ^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Target# -// ^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Target#value(). -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#CONSTRUCTOR. +// ^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Target# +// ^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Target#value(). +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#CONSTRUCTOR. FIELD, -// ^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#FIELD. +// ^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#FIELD. LOCAL_VARIABLE, -// ^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#LOCAL_VARIABLE. +// ^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#LOCAL_VARIABLE. METHOD, -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#METHOD. +// ^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#METHOD. PACKAGE, -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#PACKAGE. +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#PACKAGE. PARAMETER, -// ^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#PARAMETER. +// ^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#PARAMETER. TYPE} -// ^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#TYPE. +// ^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#TYPE. ) public @interface Annotations { -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/Annotations# +// ^^^^^^^^^^^ definition scip-java maven . . minimized/Annotations# // display_name Annotations -// signature_documentation java @Documented\n@Retention(RetentionPolicy.RUNTIME)\n@Target({CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})\npublic @interface Annotations +// signature_documentation java @Documented\n@Retention\n@Target\npublic abstract @interface Annotations implements Annotation // kind Interface -// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# +// relationship is_implementation scip-java maven jdk 11 java/lang/annotation/Annotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/Annotations#value(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Annotations#value(). String value() default ""; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^ definition semanticdb maven . . minimized/Annotations#value(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^ definition scip-java maven . . minimized/Annotations#value(). // display_name value // signature_documentation java public abstract String value() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Annotations#value(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Annotations#value(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Annotations#format(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Annotations#format(). String format() default ""; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^ definition semanticdb maven . . minimized/Annotations#format(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^ definition scip-java maven . . minimized/Annotations#format(). // display_name format // signature_documentation java public abstract String format() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Annotations#format(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Annotations#format(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Annotations# +//⌃ enclosing_range_end scip-java maven . . minimized/Annotations# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java index 926380b42..4465c89df 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnnotationsOnParameterizedTypes.java @@ -1,238 +1,290 @@ package minimized; import java.lang.reflect.Constructor; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^ reference semanticdb maven . . java/lang/reflect/ -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/reflect/Constructor# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^ reference scip-java maven . . java/lang/reflect/ +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/reflect/Constructor# import java.lang.reflect.InvocationHandler; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^ reference semanticdb maven . . java/lang/reflect/ -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/reflect/InvocationHandler# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^ reference scip-java maven . . java/lang/reflect/ +// ^^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/reflect/InvocationHandler# import java.util.concurrent.ConcurrentHashMap; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^^^^ reference semanticdb maven . . java/util/concurrent/ -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/concurrent/ConcurrentHashMap# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^^^^ reference scip-java maven . . java/util/concurrent/ +// ^^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/concurrent/ConcurrentHashMap# import java.util.concurrent.ConcurrentMap; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^^^^ reference semanticdb maven . . java/util/concurrent/ -// ^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/concurrent/ConcurrentMap# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^^^^ reference scip-java maven . . java/util/concurrent/ +// ^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/concurrent/ConcurrentMap# import java.util.function.Function; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^^ reference semanticdb maven . . java/util/function/ -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^^ reference scip-java maven . . java/util/function/ +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# -//⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypes# +//⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypes# public interface AnnotationsOnParameterizedTypes { -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypes# +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypes# // display_name AnnotationsOnParameterizedTypes -// signature_documentation java public interface AnnotationsOnParameterizedTypes +// signature_documentation java public abstract interface AnnotationsOnParameterizedTypes // kind Interface -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#getInstance(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypes#getInstance(). public static AnnotationsOnParameterizedTypes getInstance() { -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypes# -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#getInstance(). +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypes# +// ^^^^^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypes#getInstance(). // display_name getInstance // signature_documentation java public static AnnotationsOnParameterizedTypes getInstance() // kind StaticMethod return new AnnotationsOnParameterizedTypesImpl(); -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#``(). +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#``(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#getInstance(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypes#getInstance(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] // ⌄ enclosing_range_start local 0 // ⌄ enclosing_range_start local 1 Function adapter(Class contract, Class wrappedClass); -// ^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] +// ^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] // display_name C // signature_documentation java C // kind TypeParameter -// ^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] +// ^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] // display_name W // signature_documentation java W // kind TypeParameter -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] -// ^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] +// ^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). // display_name adapter // signature_documentation java public abstract Function adapter(Class contract, Class wrappedClass) // kind AbstractMethod -// relationship is_reference is_implementation semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). -// ^^^^^ reference semanticdb maven jdk 11 java/lang/Class# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] +// relationship is_reference is_implementation scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// ^^^^^ reference scip-java maven jdk 11 java/lang/Class# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] // ^^^^^^^^ definition local 0 // display_name contract // signature_documentation java Class contract -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). -// ^^^^^ reference semanticdb maven jdk 11 java/lang/Class# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// kind Parameter +// ^^^^^ reference scip-java maven jdk 11 java/lang/Class# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] // ^^^^^^^^^^^^ definition local 1 // display_name wrappedClass // signature_documentation java Class wrappedClass -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// kind Parameter // ⌃ enclosing_range_end local 0 // ⌃ enclosing_range_end local 1 -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[C] +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter().[W] } -//⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypes# +//⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypes# -//⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl# +//⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl# class AnnotationsOnParameterizedTypesImpl implements AnnotationsOnParameterizedTypes { -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl# +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl# // display_name AnnotationsOnParameterizedTypesImpl -// signature_documentation java class AnnotationsOnParameterizedTypesImpl +// signature_documentation java class AnnotationsOnParameterizedTypesImpl implements AnnotationsOnParameterizedTypes // kind Class -// relationship is_implementation semanticdb maven . . minimized/AnnotationsOnParameterizedTypes# -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#``(). +// relationship is_implementation scip-java maven . . minimized/AnnotationsOnParameterizedTypes# +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#``(). // display_name // signature_documentation java AnnotationsOnParameterizedTypesImpl() // kind Constructor -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypes# -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypes# +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. private ConcurrentMap, Constructor> proxyConstructors = new ConcurrentHashMap<>(); -// ^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/concurrent/ConcurrentMap# -// ^^^^^ reference semanticdb maven jdk 11 java/lang/Class# -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/reflect/Constructor# -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. +// ^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/concurrent/ConcurrentMap# +// ^^^^^ reference scip-java maven jdk 11 java/lang/Class# +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/reflect/Constructor# +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. // display_name proxyConstructors // signature_documentation java private ConcurrentMap, Constructor> proxyConstructors // kind Field -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/concurrent/ConcurrentHashMap#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. +// ^^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/concurrent/ConcurrentHashMap#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# // ⌄ enclosing_range_start local 2 +// ⌄ enclosing_range_start local 0 // ⌄ enclosing_range_start local 3 +// ⌄ enclosing_range_start local 1 public Function adapter(Class contract, Class wrappedClass) { -// ^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] +// ^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] // display_name C // signature_documentation java C // kind TypeParameter -// ^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] +// ^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] // display_name W // signature_documentation java W // kind TypeParameter -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] -// ^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] +// ^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). // display_name adapter // signature_documentation java @Override\npublic Function adapter(Class contract, Class wrappedClass) // kind Method -// relationship is_reference is_implementation semanticdb maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). -// ^^^^^ reference semanticdb maven jdk 11 java/lang/Class# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] -// ^^^^^^^^ definition local 2 +// relationship is_reference is_implementation scip-java maven . . minimized/AnnotationsOnParameterizedTypes#adapter(). +// ^^^^^ reference scip-java maven jdk 11 java/lang/Class# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] +// ^^^^^^^^ definition local 0 // display_name contract // signature_documentation java Class contract -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). -// ^^^^^ reference semanticdb maven jdk 11 java/lang/Class# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] -// ^^^^^^^^^^^^ definition local 3 +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// kind Parameter +// ^^^^^^^^ definition local 2 +// display_name constructor +// signature_documentation java Function constructor +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// kind Variable +// ^^^^^ reference scip-java maven jdk 11 java/lang/Class# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] +// ^^^^^^^^^^^^ definition local 1 // display_name wrappedClass // signature_documentation java Class wrappedClass -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// kind Parameter +// ^^^^^^^^^^^^ definition local 3 +// display_name contract +// signature_documentation java Class contract +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// kind Parameter // ⌃ enclosing_range_end local 2 +// ⌃ enclosing_range_end local 0 // ⌃ enclosing_range_end local 3 +// ⌃ enclosing_range_end local 1 // ⌄ enclosing_range_start local 4 +// ⌄ enclosing_range_start local 2 Function constructor = getConstructor(contract); -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/reflect/InvocationHandler# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] -// ^^^^^^^^^^^ definition local 4 +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# +// ^^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/reflect/InvocationHandler# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] +// ^^^^^^^^^^^ definition local 2 // display_name constructor // signature_documentation java Function constructor -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). // kind Variable -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// ^^^^^^^^^^^ definition local 4 +// display_name constructor +// signature_documentation java @SuppressWarnings\nConstructor constructor +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// kind Variable +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// ^^^^^^^^ reference local 0 // ^^^^^^^^ reference local 2 // ⌃ enclosing_range_end local 4 +// ⌃ enclosing_range_end local 2 System.out.println(constructor); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+9). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+9). +// ^^^^^^^^^^^ reference local 2 // ^^^^^^^^^^^ reference local 4 return null; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[C] +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#adapter().[W] -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] // ⌄ enclosing_range_start local 5 +// ⌄ enclosing_range_start local 3 private Function getConstructor(Class contract) { -// ^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] +// ^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] // display_name T // signature_documentation java T // kind TypeParameter -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/reflect/InvocationHandler# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# +// ^^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/reflect/InvocationHandler# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). // display_name getConstructor // signature_documentation java private Function getConstructor(Class contract) // kind Method -// ^^^^^ reference semanticdb maven jdk 11 java/lang/Class# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] -// ^^^^^^^^ definition local 5 +// ^^^^^ reference scip-java maven jdk 11 java/lang/Class# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] +// ^^^^^^^^ definition local 3 // display_name contract // signature_documentation java Class contract -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// kind Parameter +// ^^^^^^^^ definition local 5 +// display_name c +// signature_documentation java Class c +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// kind Parameter // ⌃ enclosing_range_end local 5 +// ⌃ enclosing_range_end local 3 // ⌄ enclosing_range_start local 6 +// ⌄ enclosing_range_start local 4 @SuppressWarnings("unchecked") -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# // ⌄ enclosing_range_start local 7 +// ⌄ enclosing_range_start local 5 Constructor constructor = (Constructor) proxyConstructors.computeIfAbsent(contract, c -> { -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/reflect/Constructor# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/reflect/Constructor# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] +// ^^^^^^^^^^^ definition local 4 +// display_name constructor +// signature_documentation java @SuppressWarnings\nConstructor constructor +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// kind Variable // ^^^^^^^^^^^ definition local 6 // display_name constructor // signature_documentation java @SuppressWarnings\nConstructor constructor -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). // kind Variable -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/reflect/Constructor# -// ^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. -// ^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/concurrent/ConcurrentMap#computeIfAbsent(). +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/reflect/Constructor# +// ^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#proxyConstructors. +// ^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/concurrent/ConcurrentMap#computeIfAbsent(). +// ^^^^^^^^ reference local 3 // ^^^^^^^^ reference local 5 +// ^ definition local 5 +// display_name c +// signature_documentation java Class c +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// kind Parameter // ^ definition local 7 // display_name c // signature_documentation java Class c -// enclosing_symbol semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// enclosing_symbol scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// kind Parameter // ⌃ enclosing_range_end local 7 +// ⌃ enclosing_range_end local 5 return null; }); // ⌃ enclosing_range_end local 6 +// ⌃ enclosing_range_end local 4 System.out.println(constructor); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+9). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+9). +// ^^^^^^^^^^^ reference local 4 // ^^^^^^^^^^^ reference local 6 return null; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). - }//⌃ enclosing_range_end semanticdb maven . . minimized/AnnotationsOnParameterizedTypesImpl# +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl#getConstructor().[T] + }//⌃ enclosing_range_end scip-java maven . . minimized/AnnotationsOnParameterizedTypesImpl# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnonymousClasses.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnonymousClasses.java index 5b997a6b4..7d7687db8 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnonymousClasses.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/AnonymousClasses.java @@ -1,66 +1,68 @@ package minimized; import java.util.function.Function; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^^ reference semanticdb maven . . java/util/function/ -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^^ reference scip-java maven . . java/util/function/ +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# -//⌄ enclosing_range_start semanticdb maven . . minimized/AnonymousClasses# +//⌄ enclosing_range_start scip-java maven . . minimized/AnonymousClasses# @SuppressWarnings("ALL") -// ^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# +// ^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# public class AnonymousClasses { -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AnonymousClasses# +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AnonymousClasses# // display_name AnonymousClasses -// signature_documentation java @SuppressWarnings("ALL")\npublic class AnonymousClasses +// signature_documentation java @SuppressWarnings\npublic class AnonymousClasses // kind Class -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/AnonymousClasses#``(). +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/AnonymousClasses#``(). // display_name // signature_documentation java public AnonymousClasses() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/AnonymousClasses#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/AnonymousClasses#app(). // ⌄ enclosing_range_start local 0 public static int app(int n) { -// ^^^ definition semanticdb maven . . minimized/AnonymousClasses#app(). +// ^^^ definition scip-java maven . . minimized/AnonymousClasses#app(). // display_name app // signature_documentation java public static int app(int n) // kind StaticMethod // ^ definition local 0 // display_name n // signature_documentation java int n -// enclosing_symbol semanticdb maven . . minimized/AnonymousClasses#app(). +// enclosing_symbol scip-java maven . . minimized/AnonymousClasses#app(). +// kind Parameter // ⌃ enclosing_range_end local 0 // ⌄ enclosing_range_start local 1 Function fn = -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# // ^^ definition local 1 // display_name fn // signature_documentation java Function fn -// enclosing_symbol semanticdb maven . . minimized/AnonymousClasses#app(). +// enclosing_symbol scip-java maven . . minimized/AnonymousClasses#app(). // kind Variable new Function() { -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/function/Function# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/function/Function# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# // ⌄ enclosing_range_start local 3 @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# // ⌄ enclosing_range_start local 4 public Integer apply(Integer integer) { -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# // ^^^^^ definition local 3 // display_name apply // signature_documentation java @Override\npublic Integer apply(Integer integer) // enclosing_symbol local 2 // kind Method -// relationship is_reference is_implementation semanticdb maven jdk 11 java/util/function/Function#apply(). -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# +// relationship is_reference is_implementation scip-java maven jdk 11 java/util/function/Function#apply(). +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# // ^^^^^^^ definition local 4 // display_name integer // signature_documentation java Integer integer // enclosing_symbol local 3 +// kind Parameter // ⌃ enclosing_range_end local 4 return integer + n; // ^^^^^^^ reference local 4 @@ -72,9 +74,9 @@ public Integer apply(Integer integer) { return fn.apply(n); // ^^ reference local 1 -// ^^^^^ reference semanticdb maven jdk 11 java/util/function/Function#apply(). +// ^^^^^ reference scip-java maven jdk 11 java/util/function/Function#apply(). // ^ reference local 0 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/AnonymousClasses#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/AnonymousClasses#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/AnonymousClasses# +//⌃ enclosing_range_end scip-java maven . . minimized/AnonymousClasses# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Arrays.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Arrays.java index e3a05bc9a..b788cf026 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Arrays.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Arrays.java @@ -1,19 +1,19 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/Arrays# +//⌄ enclosing_range_start scip-java maven . . minimized/Arrays# public class Arrays { -// ^^^^^^ definition semanticdb maven . . minimized/Arrays# +// ^^^^^^ definition scip-java maven . . minimized/Arrays# // display_name Arrays // signature_documentation java public class Arrays // kind Class -// ^^^^^^ definition semanticdb maven . . minimized/Arrays#``(). +// ^^^^^^ definition scip-java maven . . minimized/Arrays#``(). // display_name // signature_documentation java public Arrays() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/Arrays#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Arrays#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/Arrays#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/Arrays#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod @@ -22,16 +22,16 @@ public static String app() { // ^ definition local 0 // display_name a // signature_documentation java int[] a -// enclosing_symbol semanticdb maven . . minimized/Arrays#app(). +// enclosing_symbol scip-java maven . . minimized/Arrays#app(). // kind Variable // ⌃ enclosing_range_end local 0 // ⌄ enclosing_range_start local 1 String[] b = {"1", "2", "3"}; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^ definition local 1 // display_name b // signature_documentation java String[] b -// enclosing_symbol semanticdb maven . . minimized/Arrays#app(). +// enclosing_symbol scip-java maven . . minimized/Arrays#app(). // kind Variable // ⌃ enclosing_range_end local 1 // ⌄ enclosing_range_start local 2 @@ -39,16 +39,16 @@ public static String app() { // ^ definition local 2 // display_name c // signature_documentation java int[][] c -// enclosing_symbol semanticdb maven . . minimized/Arrays#app(). +// enclosing_symbol scip-java maven . . minimized/Arrays#app(). // kind Variable // ⌃ enclosing_range_end local 2 // ⌄ enclosing_range_start local 3 String[][] d = {{"1"}, {"2"}, {"3"}}; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^ definition local 3 // display_name d // signature_documentation java String[][] d -// enclosing_symbol semanticdb maven . . minimized/Arrays#app(). +// enclosing_symbol scip-java maven . . minimized/Arrays#app(). // kind Variable // ⌃ enclosing_range_end local 3 return b[0] + a[0] + c[1][0] + d[1][0]; @@ -57,6 +57,6 @@ public static String app() { // ^ reference local 2 // ^ reference local 3 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Arrays#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Arrays#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Arrays# +//⌃ enclosing_range_end scip-java maven . . minimized/Arrays# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ClassOf.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ClassOf.java index b5d2a0718..e69bec052 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ClassOf.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ClassOf.java @@ -1,27 +1,27 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/ClassOf# +//⌄ enclosing_range_start scip-java maven . . minimized/ClassOf# public class ClassOf { -// ^^^^^^^ definition semanticdb maven . . minimized/ClassOf# +// ^^^^^^^ definition scip-java maven . . minimized/ClassOf# // display_name ClassOf // signature_documentation java public class ClassOf // kind Class -// ^^^^^^^ definition semanticdb maven . . minimized/ClassOf#``(). +// ^^^^^^^ definition scip-java maven . . minimized/ClassOf#``(). // display_name // signature_documentation java public ClassOf() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/ClassOf#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/ClassOf#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/ClassOf#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/ClassOf#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod return ClassOf.class.getName(); -// ^^^^^^^ reference semanticdb maven . . minimized/ClassOf# -// ^^^^^ reference semanticdb maven . . minimized/ClassOf#class. -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Class#getName(). +// ^^^^^^^ reference scip-java maven . . minimized/ClassOf# +// ^^^^^ reference scip-java maven . . minimized/ClassOf#class. +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Class#getName(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/ClassOf#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ClassOf#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/ClassOf# +//⌃ enclosing_range_end scip-java maven . . minimized/ClassOf# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Docstrings.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Docstrings.java index db59496fc..f5476a4d5 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Docstrings.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Docstrings.java @@ -1,43 +1,43 @@ package minimized; /** Example class docstring. */ -//⌄ enclosing_range_start semanticdb maven . . minimized/Docstrings# +//⌄ enclosing_range_start scip-java maven . . minimized/Docstrings# public class Docstrings { -// ^^^^^^^^^^ definition semanticdb maven . . minimized/Docstrings# +// ^^^^^^^^^^ definition scip-java maven . . minimized/Docstrings# // display_name Docstrings // signature_documentation java public class Docstrings // kind Class // documentation Example class docstring. -// ^^^^^^^^^^ definition semanticdb maven . . minimized/Docstrings#``(). +// ^^^^^^^^^^ definition scip-java maven . . minimized/Docstrings#``(). // display_name // signature_documentation java public Docstrings() // kind Constructor /** Example field docstring. */ -// ⌄ enclosing_range_start semanticdb maven . . minimized/Docstrings#field. +// ⌄ enclosing_range_start scip-java maven . . minimized/Docstrings#field. public static int field = 42; -// ^^^^^ definition semanticdb maven . . minimized/Docstrings#field. +// ^^^^^ definition scip-java maven . . minimized/Docstrings#field. // display_name field // signature_documentation java public static int field // kind StaticField // documentation Example field docstring. -// ⌃ enclosing_range_end semanticdb maven . . minimized/Docstrings#field. +// ⌃ enclosing_range_end scip-java maven . . minimized/Docstrings#field. /** * Example method docstring. * * @return 42. */ -// ⌄ enclosing_range_start semanticdb maven . . minimized/Docstrings#method(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Docstrings#method(). public static int method() { -// ^^^^^^ definition semanticdb maven . . minimized/Docstrings#method(). +// ^^^^^^ definition scip-java maven . . minimized/Docstrings#method(). // display_name method // signature_documentation java public static int method() // kind StaticMethod // documentation Example method docstring.\n\n @return 42.\n return 42; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Docstrings#method(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Docstrings#method(). /** * Example method parameter docstring. @@ -45,10 +45,10 @@ public static int method() { * @param n The parameter. * @return The number + 42. */ -// ⌄ enclosing_range_start semanticdb maven . . minimized/Docstrings#methodParameter(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Docstrings#methodParameter(). // ⌄ enclosing_range_start local 0 public static int methodParameter(int n) { -// ^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Docstrings#methodParameter(). +// ^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Docstrings#methodParameter(). // display_name methodParameter // signature_documentation java public static int methodParameter(int n) // kind StaticMethod @@ -56,27 +56,28 @@ public static int methodParameter(int n) { // ^ definition local 0 // display_name n // signature_documentation java int n -// enclosing_symbol semanticdb maven . . minimized/Docstrings#methodParameter(). +// enclosing_symbol scip-java maven . . minimized/Docstrings#methodParameter(). +// kind Parameter // ⌃ enclosing_range_end local 0 return n + 42; // ^ reference local 0 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Docstrings#methodParameter(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Docstrings#methodParameter(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Docstrings#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Docstrings#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/Docstrings#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/Docstrings#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod return String.format("%s%s%s", field, method(), methodParameter(42)); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String#format(). -// ^^^^^ reference semanticdb maven . . minimized/Docstrings#field. -// ^^^^^^ reference semanticdb maven . . minimized/Docstrings#method(). -// ^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Docstrings#methodParameter(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String#format(). +// ^^^^^ reference scip-java maven . . minimized/Docstrings#field. +// ^^^^^^ reference scip-java maven . . minimized/Docstrings#method(). +// ^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Docstrings#methodParameter(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Docstrings#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Docstrings#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Docstrings# +//⌃ enclosing_range_end scip-java maven . . minimized/Docstrings# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Enums.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Enums.java index 2e8cf63ca..ee255d00f 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Enums.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Enums.java @@ -1,123 +1,129 @@ package minimized; import java.util.Arrays; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^ reference semanticdb maven jdk 11 java/util/Arrays# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^ reference scip-java maven jdk 11 java/util/Arrays# import java.util.stream.Collectors; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^ reference semanticdb maven . . java/util/stream/ -// ^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/stream/Collectors# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^ reference scip-java maven . . java/util/stream/ +// ^^^^^^^^^^ reference scip-java maven jdk 11 java/util/stream/Collectors# -//⌄ enclosing_range_start semanticdb maven . . minimized/Enums# +//⌄ enclosing_range_start scip-java maven . . minimized/Enums# enum Enums { -// ^^^^^ definition semanticdb maven . . minimized/Enums# +// ^^^^^ definition scip-java maven . . minimized/Enums# // display_name Enums -// signature_documentation java enum Enums +// signature_documentation java final enum Enums extends Enum // kind Enum -// relationship is_implementation semanticdb maven jdk 11 java/io/Serializable# -// relationship is_implementation semanticdb maven jdk 11 java/lang/Comparable# -// relationship is_implementation semanticdb maven jdk 11 java/lang/Enum# -// ⌄ enclosing_range_start semanticdb maven . . minimized/Enums#A. +// relationship is_implementation scip-java maven jdk 11 java/io/Serializable# +// relationship is_implementation scip-java maven jdk 11 java/lang/Comparable# +// relationship is_implementation scip-java maven jdk 11 java/lang/Enum# +// ⌄ enclosing_range_start scip-java maven . . minimized/Enums#A. A("A", 420), -// ^ definition semanticdb maven . . minimized/Enums#A. +// ^ definition scip-java maven . . minimized/Enums#A. // display_name A("A", 420) -// signature_documentation java Enums.A("A", 420) /* ordinal 0 */ -// ^ reference semanticdb maven . . minimized/Enums#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Enums#A. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Enums#B. +// signature_documentation java public static final A +// kind EnumMember +// ^ reference scip-java maven . . minimized/Enums#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Enums#A. +// ⌄ enclosing_range_start scip-java maven . . minimized/Enums#B. B("B", 1), -// ^ definition semanticdb maven . . minimized/Enums#B. +// ^ definition scip-java maven . . minimized/Enums#B. // display_name B("B", 1) -// signature_documentation java Enums.B("B", 1) /* ordinal 1 */ -// ^ reference semanticdb maven . . minimized/Enums#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Enums#B. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Enums#C. +// signature_documentation java public static final B +// kind EnumMember +// ^ reference scip-java maven . . minimized/Enums#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Enums#B. +// ⌄ enclosing_range_start scip-java maven . . minimized/Enums#C. C("C", 5); -// ^ definition semanticdb maven . . minimized/Enums#C. +// ^ definition scip-java maven . . minimized/Enums#C. // display_name C("C", 5) -// signature_documentation java Enums.C("C", 5) /* ordinal 2 */ -// ^ reference semanticdb maven . . minimized/Enums#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Enums#C. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Enums#value. +// signature_documentation java public static final C +// kind EnumMember +// ^ reference scip-java maven . . minimized/Enums#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Enums#C. +// ⌄ enclosing_range_start scip-java maven . . minimized/Enums#value. public String value; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^ definition semanticdb maven . . minimized/Enums#value. +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^ definition scip-java maven . . minimized/Enums#value. // display_name value // signature_documentation java public String value // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/Enums#value. +// ⌃ enclosing_range_end scip-java maven . . minimized/Enums#value. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Enums#``(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Enums#``(). // ⌄ enclosing_range_start local 0 // ⌄ enclosing_range_start local 1 Enums(String value, int a) { -// ^^^^^ definition semanticdb maven . . minimized/Enums#``(). +// ^^^^^ definition scip-java maven . . minimized/Enums#``(). // display_name // signature_documentation java private Enums(String value, int a) // kind Constructor -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^^^ definition local 0 // display_name value // signature_documentation java String value -// enclosing_symbol semanticdb maven . . minimized/Enums#``(). +// enclosing_symbol scip-java maven . . minimized/Enums#``(). +// kind Parameter // ^ definition local 1 // display_name a // signature_documentation java int a -// enclosing_symbol semanticdb maven . . minimized/Enums#``(). +// enclosing_symbol scip-java maven . . minimized/Enums#``(). +// kind Parameter // ⌃ enclosing_range_end local 0 // ⌃ enclosing_range_end local 1 this.value = value; -// ^^^^^ reference semanticdb maven . . minimized/Enums#value. +// ^^^^^ reference scip-java maven . . minimized/Enums#value. // ^^^^^ reference local 0 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Enums#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Enums#``(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Enums#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Enums#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/Enums#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/Enums#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod // ⌄ enclosing_range_start local 2 // ⌄ enclosing_range_start local 3 String all = Arrays.stream(values()).map(e -> e.value).map(Enums::valueOf).collect(Collectors.toList()).toString(); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^ definition local 2 // display_name all // signature_documentation java String all -// enclosing_symbol semanticdb maven . . minimized/Enums#app(). +// enclosing_symbol scip-java maven . . minimized/Enums#app(). // kind Variable -// ^^^^^^ reference semanticdb maven jdk 11 java/util/Arrays# -// ^^^^^^ reference semanticdb maven jdk 11 java/util/Arrays#stream(). -// ^^^^^^ reference semanticdb maven . . minimized/Enums#values(). -// ^^^ reference semanticdb maven jdk 11 java/util/stream/Stream#map(). +// ^^^^^^ reference scip-java maven jdk 11 java/util/Arrays# +// ^^^^^^ reference scip-java maven jdk 11 java/util/Arrays#stream(). +// ^^^^^^ reference scip-java maven . . minimized/Enums#values(). +// ^^^ reference scip-java maven jdk 11 java/util/stream/Stream#map(). // ^ definition local 3 // display_name e // signature_documentation java Enums e -// enclosing_symbol semanticdb maven . . minimized/Enums#app(). +// enclosing_symbol scip-java maven . . minimized/Enums#app(). +// kind Parameter // ^ reference local 3 -// ^^^^^ reference semanticdb maven . . minimized/Enums#value. -// ^^^ reference semanticdb maven jdk 11 java/util/stream/Stream#map(). -// ^^^^^ reference semanticdb maven . . minimized/Enums# -// ^^^^^^^ reference semanticdb maven . . minimized/Enums#valueOf(). -// ^^^^^^^ reference semanticdb maven jdk 11 java/util/stream/Stream#collect(+1). -// ^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/stream/Collectors# -// ^^^^^^ reference semanticdb maven jdk 11 java/util/stream/Collectors#toList(). -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Object#toString(). +// ^^^^^ reference scip-java maven . . minimized/Enums#value. +// ^^^ reference scip-java maven jdk 11 java/util/stream/Stream#map(). +// ^^^^^ reference scip-java maven . . minimized/Enums# +// ^^^^^^^ reference scip-java maven . . minimized/Enums#valueOf(). +// ^^^^^^^ reference scip-java maven jdk 11 java/util/stream/Stream#collect(+1). +// ^^^^^^^^^^ reference scip-java maven jdk 11 java/util/stream/Collectors# +// ^^^^^^ reference scip-java maven jdk 11 java/util/stream/Collectors#toList(). +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Object#toString(). // ⌃ enclosing_range_end local 3 // ⌃ enclosing_range_end local 2 return all + A.value + B.value + C.value; // ^^^ reference local 2 -// ^ reference semanticdb maven . . minimized/Enums#A. -// ^^^^^ reference semanticdb maven . . minimized/Enums#value. -// ^ reference semanticdb maven . . minimized/Enums#B. -// ^^^^^ reference semanticdb maven . . minimized/Enums#value. -// ^ reference semanticdb maven . . minimized/Enums#C. -// ^^^^^ reference semanticdb maven . . minimized/Enums#value. +// ^ reference scip-java maven . . minimized/Enums#A. +// ^^^^^ reference scip-java maven . . minimized/Enums#value. +// ^ reference scip-java maven . . minimized/Enums#B. +// ^^^^^ reference scip-java maven . . minimized/Enums#value. +// ^ reference scip-java maven . . minimized/Enums#C. +// ^^^^^ reference scip-java maven . . minimized/Enums#value. } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Enums#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Enums#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Enums# +//⌃ enclosing_range_end scip-java maven . . minimized/Enums# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Fields.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Fields.java index 3a9236e2e..903159eb0 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Fields.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Fields.java @@ -1,171 +1,171 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/Fields# +//⌄ enclosing_range_start scip-java maven . . minimized/Fields# public class Fields { -// ^^^^^^ definition semanticdb maven . . minimized/Fields# +// ^^^^^^ definition scip-java maven . . minimized/Fields# // display_name Fields // signature_documentation java public class Fields // kind Class -// ^^^^^^ definition semanticdb maven . . minimized/Fields#``(). +// ^^^^^^ definition scip-java maven . . minimized/Fields#``(). // display_name // signature_documentation java public Fields() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#privateField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#privateField. private final int privateField = 0; -// ^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#privateField. +// ^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#privateField. // display_name privateField // signature_documentation java private final int privateField // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#privateField. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#protectedField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#privateField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#protectedField. protected int protectedField = 0; -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#protectedField. +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#protectedField. // display_name protectedField // signature_documentation java protected int protectedField // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#protectedField. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#publicField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#protectedField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#publicField. public int publicField = 0; -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#publicField. +// ^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#publicField. // display_name publicField // signature_documentation java public int publicField // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#publicField. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#staticPrivateField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#publicField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#staticPrivateField. private static final int staticPrivateField = 0; -// ^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#staticPrivateField. +// ^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#staticPrivateField. // display_name staticPrivateField // signature_documentation java private static final int staticPrivateField // kind StaticField -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#staticPrivateField. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#staticProtectedFields. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#staticPrivateField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#staticProtectedFields. protected static int staticProtectedFields = 0; -// ^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#staticProtectedFields. +// ^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#staticProtectedFields. // display_name staticProtectedFields // signature_documentation java protected static int staticProtectedFields // kind StaticField -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#staticProtectedFields. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#staticPublicField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#staticProtectedFields. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#staticPublicField. public static int staticPublicField = 0; -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#staticPublicField. +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#staticPublicField. // display_name staticPublicField // signature_documentation java public static int staticPublicField // kind StaticField -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#staticPublicField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#staticPublicField. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#InnerFields# +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#InnerFields# public class InnerFields { -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#InnerFields# +// ^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#InnerFields# // display_name InnerFields // signature_documentation java public class InnerFields // kind Class -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#InnerFields#``(). +// ^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#InnerFields#``(). // display_name // signature_documentation java public InnerFields() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#InnerFields#publicInnerField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#InnerFields#publicInnerField. public int publicInnerField = publicField; -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#InnerFields#publicInnerField. +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#InnerFields#publicInnerField. // display_name publicInnerField // signature_documentation java public int publicInnerField // kind Field -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#publicField. -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#InnerFields#publicInnerField. +// ^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#publicField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#InnerFields#publicInnerField. } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#InnerFields# +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#InnerFields# -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#InnerStaticFields# +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#InnerStaticFields# public static class InnerStaticFields { -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#InnerStaticFields# +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#InnerStaticFields# // display_name InnerStaticFields // signature_documentation java public static class InnerStaticFields // kind Class -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#InnerStaticFields#``(). +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#InnerStaticFields#``(). // display_name // signature_documentation java public InnerStaticFields() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. public int publicNonStaticInnerField = 0; -// ^^^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. +// ^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. // display_name publicNonStaticInnerField // signature_documentation java public int publicNonStaticInnerField // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. public static int publicStaticInnerField = 0; -// ^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. +// ^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. // display_name publicStaticInnerField // signature_documentation java public static int publicStaticInnerField // kind StaticField -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#InnerStaticFields# +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#InnerStaticFields# -// ⌄ enclosing_range_start semanticdb maven . . minimized/Fields#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Fields#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/Fields#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/Fields#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod // ⌄ enclosing_range_start local 0 Fields fields = new Fields(); -// ^^^^^^ reference semanticdb maven . . minimized/Fields# +// ^^^^^^ reference scip-java maven . . minimized/Fields# // ^^^^^^ definition local 0 // display_name fields // signature_documentation java Fields fields -// enclosing_symbol semanticdb maven . . minimized/Fields#app(). +// enclosing_symbol scip-java maven . . minimized/Fields#app(). // kind Variable -// ^^^^^^ reference semanticdb maven . . minimized/Fields#``(). +// ^^^^^^ reference scip-java maven . . minimized/Fields#``(). // ⌃ enclosing_range_end local 0 // ⌄ enclosing_range_start local 1 InnerFields innerFields = fields.new InnerFields(); -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerFields# +// ^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerFields# // ^^^^^^^^^^^ definition local 1 // display_name innerFields // signature_documentation java InnerFields innerFields -// enclosing_symbol semanticdb maven . . minimized/Fields#app(). +// enclosing_symbol scip-java maven . . minimized/Fields#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerFields#``(). +// ^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerFields#``(). // ⌃ enclosing_range_end local 1 // ⌄ enclosing_range_start local 2 InnerStaticFields innerStaticFields = new InnerStaticFields(); -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerStaticFields# +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerStaticFields# // ^^^^^^^^^^^^^^^^^ definition local 2 // display_name innerStaticFields // signature_documentation java InnerStaticFields innerStaticFields -// enclosing_symbol semanticdb maven . . minimized/Fields#app(). +// enclosing_symbol scip-java maven . . minimized/Fields#app(). // kind Variable -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerStaticFields#``(). +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerStaticFields#``(). // ⌃ enclosing_range_end local 2 return String.valueOf(fields.privateField) -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/String#valueOf(+5). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/String#valueOf(+5). // ^^^^^^ reference local 0 -// ^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#privateField. +// ^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#privateField. + fields.protectedField // ^^^^^^ reference local 0 -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#protectedField. +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#protectedField. + fields.publicField // ^^^^^^ reference local 0 -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#publicField. +// ^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#publicField. + staticPrivateField -// ^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#staticPrivateField. +// ^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#staticPrivateField. + staticProtectedFields -// ^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#staticProtectedFields. +// ^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#staticProtectedFields. + staticPublicField -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#staticPublicField. +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#staticPublicField. + innerFields.publicInnerField // ^^^^^^^^^^^ reference local 1 -// ^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerFields#publicInnerField. +// ^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerFields#publicInnerField. + InnerStaticFields.publicStaticInnerField -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerStaticFields# -// ^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerStaticFields# +// ^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerStaticFields#publicStaticInnerField. + innerStaticFields.publicNonStaticInnerField; // ^^^^^^^^^^^^^^^^^ reference local 2 -// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. +// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Fields#InnerStaticFields#publicNonStaticInnerField. } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Fields#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Fields#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Fields# +//⌃ enclosing_range_end scip-java maven . . minimized/Fields# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ForComprehensions.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ForComprehensions.java index c1164a5c3..18cc6bcb7 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ForComprehensions.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ForComprehensions.java @@ -1,47 +1,48 @@ package minimized; import java.util.Collections; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Collections# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Collections# import java.util.List; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^ reference semanticdb maven jdk 11 java/util/List# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^ reference scip-java maven jdk 11 java/util/List# -//⌄ enclosing_range_start semanticdb maven . . minimized/ForComprehensions# +//⌄ enclosing_range_start scip-java maven . . minimized/ForComprehensions# public class ForComprehensions { -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ForComprehensions# +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ForComprehensions# // display_name ForComprehensions // signature_documentation java public class ForComprehensions // kind Class -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ForComprehensions#``(). +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ForComprehensions#``(). // display_name // signature_documentation java public ForComprehensions() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/ForComprehensions#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/ForComprehensions#app(). // ⌄ enclosing_range_start local 0 public static int app(int n) { -// ^^^ definition semanticdb maven . . minimized/ForComprehensions#app(). +// ^^^ definition scip-java maven . . minimized/ForComprehensions#app(). // display_name app // signature_documentation java public static int app(int n) // kind StaticMethod // ^ definition local 0 // display_name n // signature_documentation java int n -// enclosing_symbol semanticdb maven . . minimized/ForComprehensions#app(). +// enclosing_symbol scip-java maven . . minimized/ForComprehensions#app(). +// kind Parameter // ⌃ enclosing_range_end local 0 // ⌄ enclosing_range_start local 1 List integers = Collections.singletonList(n); -// ^^^^ reference semanticdb maven jdk 11 java/util/List# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# +// ^^^^ reference scip-java maven jdk 11 java/util/List# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# // ^^^^^^^^ definition local 1 // display_name integers // signature_documentation java List integers -// enclosing_symbol semanticdb maven . . minimized/ForComprehensions#app(). +// enclosing_symbol scip-java maven . . minimized/ForComprehensions#app(). // kind Variable -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Collections# -// ^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Collections#singletonList(). +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Collections# +// ^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Collections#singletonList(). // ^ reference local 0 // ⌃ enclosing_range_end local 1 // ⌄ enclosing_range_start local 2 @@ -49,7 +50,7 @@ public static int app(int n) { // ^^^^^^ definition local 2 // display_name result // signature_documentation java int result -// enclosing_symbol semanticdb maven . . minimized/ForComprehensions#app(). +// enclosing_symbol scip-java maven . . minimized/ForComprehensions#app(). // kind Variable // ⌃ enclosing_range_end local 2 // ⌄ enclosing_range_start local 3 @@ -57,7 +58,7 @@ public static int app(int n) { // ^ definition local 3 // display_name i // signature_documentation java int i -// enclosing_symbol semanticdb maven . . minimized/ForComprehensions#app(). +// enclosing_symbol scip-java maven . . minimized/ForComprehensions#app(). // kind Variable // ^^^^^^^^ reference local 1 // ⌃ enclosing_range_end local 3 @@ -68,6 +69,6 @@ public static int app(int n) { return result; // ^^^^^^ reference local 2 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/ForComprehensions#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ForComprehensions#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/ForComprehensions# +//⌃ enclosing_range_end scip-java maven . . minimized/ForComprehensions# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java index 90779baed..5a300f7b6 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java @@ -1,399 +1,410 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses# +//⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses# public class InnerClasses { -// ^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses# +// ^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses# // display_name InnerClasses // signature_documentation java public class InnerClasses // kind Class -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#exampleField. +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#exampleField. private final int exampleField; -// ^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#exampleField. +// ^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#exampleField. // display_name exampleField // signature_documentation java private final int exampleField // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#exampleField. +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#exampleField. -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#STRING. +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#STRING. private static final String STRING = "asdf"; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^ definition semanticdb maven . . minimized/InnerClasses#STRING. +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^ definition scip-java maven . . minimized/InnerClasses#STRING. // display_name STRING // signature_documentation java private static final String STRING // kind StaticField -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#STRING. +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#STRING. -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#top. +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#top. private static final int top = 5; -// ^^^ definition semanticdb maven . . minimized/InnerClasses#top. +// ^^^ definition scip-java maven . . minimized/InnerClasses#top. // display_name top // signature_documentation java private static final int top // kind StaticField -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#top. -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#bottom. +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#top. +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#bottom. private static final int bottom = 10; -// ^^^^^^ definition semanticdb maven . . minimized/InnerClasses#bottom. +// ^^^^^^ definition scip-java maven . . minimized/InnerClasses#bottom. // display_name bottom // signature_documentation java private static final int bottom // kind StaticField -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#bottom. +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#bottom. -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#``(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#``(). // ⌄ enclosing_range_start local 0 public InnerClasses(int exampleField) { -// ^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#``(). +// ^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#``(). // display_name // signature_documentation java public InnerClasses(int exampleField) // kind Constructor // ^^^^^^^^^^^^ definition local 0 // display_name exampleField // signature_documentation java int exampleField -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#``(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#``(). +// kind Parameter // ⌃ enclosing_range_end local 0 this.exampleField = exampleField; -// ^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#exampleField. +// ^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#exampleField. // ^^^^^^^^^^^^ reference local 0 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#``(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerEnum# +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerEnum# public enum InnerEnum { -// ^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerEnum# +// ^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerEnum# // display_name InnerEnum -// signature_documentation java public enum InnerEnum +// signature_documentation java public static final enum InnerEnum extends Enum // kind Enum -// relationship is_implementation semanticdb maven jdk 11 java/io/Serializable# -// relationship is_implementation semanticdb maven jdk 11 java/lang/Comparable# -// relationship is_implementation semanticdb maven jdk 11 java/lang/Enum# -// ^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerEnum#``(). +// relationship is_implementation scip-java maven jdk 11 java/io/Serializable# +// relationship is_implementation scip-java maven jdk 11 java/lang/Comparable# +// relationship is_implementation scip-java maven jdk 11 java/lang/Enum# +// ^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerEnum#``(). // display_name // signature_documentation java private InnerEnum() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerEnum#A. +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerEnum#A. A, -// ^ definition semanticdb maven . . minimized/InnerClasses#InnerEnum#A. +// ^ definition scip-java maven . . minimized/InnerClasses#InnerEnum#A. // display_name A -// signature_documentation java InnerEnum.A /* ordinal 0 */ -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerEnum#A. -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerEnum#B. +// signature_documentation java public static final A +// kind EnumMember +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerEnum#A. +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerEnum#B. B, -// ^ definition semanticdb maven . . minimized/InnerClasses#InnerEnum#B. +// ^ definition scip-java maven . . minimized/InnerClasses#InnerEnum#B. // display_name B -// signature_documentation java InnerEnum.B /* ordinal 1 */ -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerEnum#B. -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerEnum#C. +// signature_documentation java public static final B +// kind EnumMember +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerEnum#B. +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerEnum#C. C -// ^ definition semanticdb maven . . minimized/InnerClasses#InnerEnum#C. +// ^ definition scip-java maven . . minimized/InnerClasses#InnerEnum#C. // display_name C -// signature_documentation java InnerEnum.C /* ordinal 2 */ -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerEnum#C. +// signature_documentation java public static final C +// kind EnumMember +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerEnum#C. } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerEnum# +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerEnum# -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerInterface# -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerInterface#[A] -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerInterface#[B] +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerInterface# +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerInterface#[A] +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerInterface#[B] public interface InnerInterface { -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerInterface# +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerInterface# // display_name InnerInterface -// signature_documentation java public interface InnerInterface +// signature_documentation java public abstract static interface InnerInterface // kind Interface -// ^ definition semanticdb maven . . minimized/InnerClasses#InnerInterface#[A] +// ^ definition scip-java maven . . minimized/InnerClasses#InnerInterface#[A] // display_name A // signature_documentation java A // kind TypeParameter -// ^ definition semanticdb maven . . minimized/InnerClasses#InnerInterface#[B] +// ^ definition scip-java maven . . minimized/InnerClasses#InnerInterface#[B] // display_name B // signature_documentation java B // kind TypeParameter -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). // ⌄ enclosing_range_start local 1 B apply(A a); -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface#[B] -// ^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). +// ^ reference scip-java maven . . minimized/InnerClasses#InnerInterface#[B] +// ^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). // display_name apply // signature_documentation java public abstract B apply(A a) // kind AbstractMethod -// relationship is_reference is_implementation semanticdb maven . . minimized/InnerClasses#InnerClass#apply(). -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface#[A] +// relationship is_reference is_implementation scip-java maven . . minimized/InnerClasses#InnerClass#apply(). +// ^ reference scip-java maven . . minimized/InnerClasses#InnerInterface#[A] // ^ definition local 1 // display_name a // signature_documentation java A a -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). +// kind Parameter // ⌃ enclosing_range_end local 1 -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerInterface# -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerInterface#[A] -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerInterface#[B] +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerInterface# +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerInterface#[A] +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerInterface#[B] -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerAnnotation# +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerAnnotation# public @interface InnerAnnotation { -// ^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerAnnotation# +// ^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerAnnotation# // display_name InnerAnnotation -// signature_documentation java public @interface InnerAnnotation +// signature_documentation java public abstract static @interface InnerAnnotation implements Annotation // kind Interface -// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerAnnotation#value(). +// relationship is_implementation scip-java maven jdk 11 java/lang/annotation/Annotation# +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerAnnotation#value(). int value(); -// ^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerAnnotation#value(). +// ^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerAnnotation#value(). // display_name value // signature_documentation java public abstract int value() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerAnnotation#value(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerAnnotation#value(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerAnnotation# +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerAnnotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerStaticClass# +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerStaticClass# @SuppressWarnings(STRING + " ") -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -// ^^^^^^ reference semanticdb maven . . minimized/InnerClasses#STRING. +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# +// ^^^^^^ reference scip-java maven . . minimized/InnerClasses#STRING. @InnerAnnotation(top / bottom) -// ^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerAnnotation# -// ^^^ reference semanticdb maven . . minimized/InnerClasses#top. -// ^^^^^^ reference semanticdb maven . . minimized/InnerClasses#bottom. +// ^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerAnnotation# +// ^^^ reference scip-java maven . . minimized/InnerClasses#top. +// ^^^^^^ reference scip-java maven . . minimized/InnerClasses#bottom. public static class InnerStaticClass { -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerStaticClass# +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerStaticClass# // display_name InnerStaticClass -// signature_documentation java @SuppressWarnings(STRING + " ")\n@InnerAnnotation(top / bottom)\npublic static class InnerStaticClass +// signature_documentation java @SuppressWarnings\n@InnerAnnotation\npublic static class InnerStaticClass // kind Class -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerStaticClass#``(). +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerStaticClass#``(). // display_name // signature_documentation java public InnerStaticClass() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). public static void innerStaticMethod() {} -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). // display_name innerStaticMethod // signature_documentation java public static void innerStaticMethod() // kind StaticMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerStaticClass# +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerStaticClass# -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerClass# +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerClass# public class InnerClass implements InnerInterface { -// ^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerClass# +// ^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerClass# // display_name InnerClass -// signature_documentation java public class InnerClass +// signature_documentation java public class InnerClass implements InnerInterface // kind Class -// relationship is_implementation semanticdb maven . . minimized/InnerClasses#InnerInterface# -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerClass#field. +// relationship is_implementation scip-java maven . . minimized/InnerClasses#InnerInterface# +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerInterface# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerClass#field. private final int field; -// ^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerClass#field. +// ^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerClass#field. // display_name field // signature_documentation java private final int field // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerClass#field. +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerClass#field. -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerClass#``(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerClass#``(). // ⌄ enclosing_range_start local 2 public InnerClass(int field) { -// ^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerClass#``(). +// ^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerClass#``(). // display_name // signature_documentation java public InnerClass(int field) // kind Constructor // ^^^^^ definition local 2 // display_name field // signature_documentation java int field -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#InnerClass#``(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#InnerClass#``(). +// kind Parameter // ⌃ enclosing_range_end local 2 this.field = field; -// ^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerClass#field. +// ^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerClass#field. // ^^^^^ reference local 2 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerClass#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerClass#``(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerClass#innerMethod(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerClass#innerMethod(). public void innerMethod() { -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerClass#innerMethod(). +// ^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerClass#innerMethod(). // display_name innerMethod // signature_documentation java public void innerMethod() // kind Method System.out.println(field + exampleField); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+3). -// ^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerClass#field. -// ^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#exampleField. +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+3). +// ^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerClass#field. +// ^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#exampleField. } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerClass#innerMethod(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerClass#innerMethod(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#InnerClass#apply(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#InnerClass#apply(). @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# // ⌄ enclosing_range_start local 3 public Integer apply(Integer integer) { -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# -// ^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerClass#apply(). +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# +// ^^^^^ definition scip-java maven . . minimized/InnerClasses#InnerClass#apply(). // display_name apply // signature_documentation java @Override\npublic Integer apply(Integer integer) // kind Method -// relationship is_reference is_implementation semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# +// relationship is_reference is_implementation scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# // ^^^^^^^ definition local 3 // display_name integer // signature_documentation java Integer integer -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#InnerClass#apply(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#InnerClass#apply(). +// kind Parameter // ⌃ enclosing_range_end local 3 return field * integer; -// ^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerClass#field. +// ^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerClass#field. // ^^^^^^^ reference local 3 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerClass#apply(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerClass#apply(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#InnerClass# +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#InnerClass# -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#runInnerInterface().[A] -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#runInnerInterface().[B] -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#runInnerInterface(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#runInnerInterface(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#runInnerInterface().[A] +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#runInnerInterface().[B] // ⌄ enclosing_range_start local 4 // ⌄ enclosing_range_start local 5 private static B runInnerInterface(InnerInterface fn, A a) { -// ^ definition semanticdb maven . . minimized/InnerClasses#runInnerInterface().[A] +// ^ definition scip-java maven . . minimized/InnerClasses#runInnerInterface().[A] // display_name A // signature_documentation java A // kind TypeParameter -// ^ definition semanticdb maven . . minimized/InnerClasses#runInnerInterface().[B] +// ^ definition scip-java maven . . minimized/InnerClasses#runInnerInterface().[B] // display_name B // signature_documentation java B // kind TypeParameter -// ^ reference semanticdb maven . . minimized/InnerClasses#runInnerInterface().[B] -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#runInnerInterface(). +// ^ reference scip-java maven . . minimized/InnerClasses#runInnerInterface().[B] +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#runInnerInterface(). // display_name runInnerInterface // signature_documentation java private static B runInnerInterface(InnerInterface fn, A a) // kind StaticMethod -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface# -// ^ reference semanticdb maven . . minimized/InnerClasses#runInnerInterface().[A] -// ^ reference semanticdb maven . . minimized/InnerClasses#runInnerInterface().[B] +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerInterface# +// ^ reference scip-java maven . . minimized/InnerClasses#runInnerInterface().[A] +// ^ reference scip-java maven . . minimized/InnerClasses#runInnerInterface().[B] // ^^ definition local 4 // display_name fn // signature_documentation java InnerInterface fn -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#runInnerInterface(). -// ^ reference semanticdb maven . . minimized/InnerClasses#runInnerInterface().[A] +// enclosing_symbol scip-java maven . . minimized/InnerClasses#runInnerInterface(). +// kind Parameter +// ^ reference scip-java maven . . minimized/InnerClasses#runInnerInterface().[A] // ^ definition local 5 // display_name a // signature_documentation java A a -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#runInnerInterface(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#runInnerInterface(). +// kind Parameter // ⌃ enclosing_range_end local 4 // ⌃ enclosing_range_end local 5 return fn.apply(a); // ^^ reference local 4 -// ^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). +// ^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). // ^ reference local 5 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#runInnerInterface().[A] -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#runInnerInterface().[B] -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#runInnerInterface(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#runInnerInterface(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#runInnerInterface().[A] +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#runInnerInterface().[B] -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#testEnum(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#testEnum(). // ⌄ enclosing_range_start local 6 public static void testEnum(InnerEnum magicEnum) { -// ^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#testEnum(). +// ^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#testEnum(). // display_name testEnum // signature_documentation java public static void testEnum(InnerEnum magicEnum) // kind StaticMethod -// ^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum# +// ^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerEnum# // ^^^^^^^^^ definition local 6 // display_name magicEnum // signature_documentation java InnerEnum magicEnum -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#testEnum(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#testEnum(). +// kind Parameter // ⌃ enclosing_range_end local 6 if (System.nanoTime() > System.currentTimeMillis()) { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/System#nanoTime(). -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/System#currentTimeMillis(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/System#nanoTime(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/System#currentTimeMillis(). magicEnum = InnerEnum.B; // ^^^^^^^^^ reference local 6 -// ^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum# -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#B. +// ^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerEnum# +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#B. } switch (magicEnum) { // ^^^^^^^^^ reference local 6 case B: -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#B. +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#B. System.out.println("b"); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+8). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+8). break; case A: -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#A. +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#A. System.out.println("a"); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+8). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+8). break; default: break; } if (magicEnum == InnerEnum.A) System.out.println("a"); // ^^^^^^^^^ reference local 6 -// ^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum# -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#A. -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+8). +// ^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerEnum# +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#A. +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+8). else if (magicEnum == InnerEnum.C) System.out.println("b"); // ^^^^^^^^^ reference local 6 -// ^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum# -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#C. -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+8). +// ^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerEnum# +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#C. +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+8). else System.out.println("c"); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+8). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+8). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#testEnum(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#testEnum(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#testAnon(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#testAnon(). public static void testAnon() { -// ^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#testAnon(). +// ^^^^^^^^ definition scip-java maven . . minimized/InnerClasses#testAnon(). // display_name testAnon // signature_documentation java public static void testAnon() // kind StaticMethod // ⌄ enclosing_range_start local 7 InnerInterface fn = -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerInterface# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^ definition local 7 // display_name fn // signature_documentation java InnerInterface fn -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#testAnon(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#testAnon(). // kind Variable new InnerInterface() { -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerInterface# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ⌄ enclosing_range_start local 9 @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# // ⌄ enclosing_range_start local 10 public String apply(String s) { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^^^ definition local 9 // display_name apply // signature_documentation java @Override\npublic String apply(String s) // enclosing_symbol local 8 // kind Method -// relationship is_reference is_implementation semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// relationship is_reference is_implementation scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^ definition local 10 // display_name s // signature_documentation java String s // enclosing_symbol local 9 +// kind Parameter // ⌃ enclosing_range_end local 10 return s + "b"; // ^ reference local 10 @@ -402,18 +413,18 @@ public String apply(String s) { }; // ⌃ enclosing_range_end local 7 System.out.println(fn.apply("a")); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+8). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+8). // ^^ reference local 7 -// ^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerInterface#apply(). +// ^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerInterface#apply(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#testAnon(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#testAnon(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/InnerClasses#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/InnerClasses#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/InnerClasses#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/InnerClasses#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod @@ -422,53 +433,53 @@ public static String app() { // ^ definition local 11 // display_name a // signature_documentation java int a -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#app(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#app(). // kind Variable // ⌃ enclosing_range_end local 11 InnerStaticClass.innerStaticMethod(); -// ^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerStaticClass# -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). +// ^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerStaticClass# +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). // ⌄ enclosing_range_start local 12 InnerClasses innerClasses = new InnerClasses(a); -// ^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses# +// ^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses# // ^^^^^^^^^^^^ definition local 12 // display_name innerClasses // signature_documentation java InnerClasses innerClasses -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#app(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#app(). // kind Variable -// ^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#``(). +// ^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#``(). // ^ reference local 11 // ⌃ enclosing_range_end local 12 // ⌄ enclosing_range_start local 13 InnerClass innerClass = innerClasses.new InnerClass(a); -// ^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerClass# +// ^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerClass# // ^^^^^^^^^^ definition local 13 // display_name innerClass // signature_documentation java InnerClass innerClass -// enclosing_symbol semanticdb maven . . minimized/InnerClasses#app(). +// enclosing_symbol scip-java maven . . minimized/InnerClasses#app(). // kind Variable // ^^^^^^^^^^^^ reference local 12 -// ^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerClass#``(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerClass#``(). // ^ reference local 11 // ⌃ enclosing_range_end local 13 innerClass.innerMethod(); // ^^^^^^^^^^ reference local 13 -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerClass#innerMethod(). +// ^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerClass#innerMethod(). System.out.println(runInnerInterface(innerClass, a)); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+9). -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#runInnerInterface(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+9). +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#runInnerInterface(). // ^^^^^^^^^^ reference local 13 // ^ reference local 11 testEnum(InnerEnum.A); -// ^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#testEnum(). -// ^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum# -// ^ reference semanticdb maven . . minimized/InnerClasses#InnerEnum#A. +// ^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#testEnum(). +// ^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#InnerEnum# +// ^ reference scip-java maven . . minimized/InnerClasses#InnerEnum#A. testAnon(); -// ^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses#testAnon(). +// ^^^^^^^^ reference scip-java maven . . minimized/InnerClasses#testAnon(). return ""; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/InnerClasses# +//⌃ enclosing_range_end scip-java maven . . minimized/InnerClasses# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Interfaces.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Interfaces.java index 544af797d..a4ade2095 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Interfaces.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Interfaces.java @@ -1,83 +1,83 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/Interfaces# +//⌄ enclosing_range_start scip-java maven . . minimized/Interfaces# public interface Interfaces { -// ^^^^^^^^^^ definition semanticdb maven . . minimized/Interfaces# +// ^^^^^^^^^^ definition scip-java maven . . minimized/Interfaces# // display_name Interfaces -// signature_documentation java public interface Interfaces +// signature_documentation java public abstract interface Interfaces // kind Interface -// ⌄ enclosing_range_start semanticdb maven . . minimized/Interfaces#staticInterfaceMethod(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Interfaces#staticInterfaceMethod(). static void staticInterfaceMethod() {} -// ^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Interfaces#staticInterfaceMethod(). +// ^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Interfaces#staticInterfaceMethod(). // display_name staticInterfaceMethod // signature_documentation java public static void staticInterfaceMethod() // kind StaticMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Interfaces#staticInterfaceMethod(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Interfaces#staticInterfaceMethod(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Interfaces#abstractInterfaceMethod(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Interfaces#abstractInterfaceMethod(). String abstractInterfaceMethod(); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Interfaces#abstractInterfaceMethod(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Interfaces#abstractInterfaceMethod(). // display_name abstractInterfaceMethod // signature_documentation java public abstract String abstractInterfaceMethod() // kind AbstractMethod -// relationship is_reference is_implementation semanticdb maven . . minimized/SubClasses#abstractInterfaceMethod(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Interfaces#abstractInterfaceMethod(). +// relationship is_reference is_implementation scip-java maven . . minimized/SubClasses#abstractInterfaceMethod(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Interfaces#abstractInterfaceMethod(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Interfaces#defaultInterfaceMethod(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Interfaces#defaultInterfaceMethod(). default String defaultInterfaceMethod() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Interfaces#defaultInterfaceMethod(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Interfaces#defaultInterfaceMethod(). // display_name defaultInterfaceMethod // signature_documentation java public default String defaultInterfaceMethod() // kind Method return "default"; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Interfaces#defaultInterfaceMethod(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Interfaces#defaultInterfaceMethod(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Interfaces# +//⌃ enclosing_range_end scip-java maven . . minimized/Interfaces# -//⌄ enclosing_range_start semanticdb maven . . minimized/BookService# +//⌄ enclosing_range_start scip-java maven . . minimized/BookService# interface BookService { -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/BookService# +// ^^^^^^^^^^^ definition scip-java maven . . minimized/BookService# // display_name BookService -// signature_documentation java interface BookService +// signature_documentation java abstract interface BookService // kind Interface -// ⌄ enclosing_range_start semanticdb maven . . minimized/BookService#checkPages(). +// ⌄ enclosing_range_start scip-java maven . . minimized/BookService#checkPages(). void checkPages(); -// ^^^^^^^^^^ definition semanticdb maven . . minimized/BookService#checkPages(). +// ^^^^^^^^^^ definition scip-java maven . . minimized/BookService#checkPages(). // display_name checkPages // signature_documentation java public abstract void checkPages() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/BookService#checkPages(). +// ⌃ enclosing_range_end scip-java maven . . minimized/BookService#checkPages(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/BookService# +//⌃ enclosing_range_end scip-java maven . . minimized/BookService# -//⌄ enclosing_range_start semanticdb maven . . minimized/MyService# +//⌄ enclosing_range_start scip-java maven . . minimized/MyService# interface MyService { -// ^^^^^^^^^ definition semanticdb maven . . minimized/MyService# +// ^^^^^^^^^ definition scip-java maven . . minimized/MyService# // display_name MyService -// signature_documentation java interface MyService +// signature_documentation java abstract interface MyService // kind Interface -// ⌄ enclosing_range_start semanticdb maven . . minimized/MyService#bookService(). +// ⌄ enclosing_range_start scip-java maven . . minimized/MyService#bookService(). BookService bookService(); -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/BookService# -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/MyService#bookService(). +// ^^^^^^^^^^^ reference scip-java maven . . minimized/BookService# +// ^^^^^^^^^^^ definition scip-java maven . . minimized/MyService#bookService(). // display_name bookService // signature_documentation java public abstract BookService bookService() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/MyService#bookService(). +// ⌃ enclosing_range_end scip-java maven . . minimized/MyService#bookService(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/MyService#example(). +// ⌄ enclosing_range_start scip-java maven . . minimized/MyService#example(). default void example() { -// ^^^^^^^ definition semanticdb maven . . minimized/MyService#example(). +// ^^^^^^^ definition scip-java maven . . minimized/MyService#example(). // display_name example // signature_documentation java public default void example() // kind Method bookService().checkPages(); -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/MyService#bookService(). -// ^^^^^^^^^^ reference semanticdb maven . . minimized/BookService#checkPages(). +// ^^^^^^^^^^^ reference scip-java maven . . minimized/MyService#bookService(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/BookService#checkPages(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/MyService#example(). +// ⌃ enclosing_range_end scip-java maven . . minimized/MyService#example(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/MyService# +//⌃ enclosing_range_end scip-java maven . . minimized/MyService# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/LombokBuilder.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/LombokBuilder.java index 8bb0cff51..37279344a 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/LombokBuilder.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/LombokBuilder.java @@ -1,97 +1,99 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#HelloBuilder#build(). -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#builder(). -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#HelloBuilder#toString(). -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#HelloBuilder# -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#HelloBuilder#``(). -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello# -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#``(). +//⌄ enclosing_range_start scip-java maven . . minimized/Hello# +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#``(). //⌄ enclosing_range_start local 0 -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#HelloBuilder#message. -//⌄ enclosing_range_start semanticdb maven . . minimized/Hello#HelloBuilder#message(). +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#HelloBuilder# +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#HelloBuilder#message. +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#HelloBuilder#``(). +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#HelloBuilder#message(). //⌄ enclosing_range_start local 1 +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#HelloBuilder#build(). +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#HelloBuilder#toString(). +//⌄ enclosing_range_start scip-java maven . . minimized/Hello#builder(). @lombok.Builder //^^^^^^^^^^^^^^^ reference local 0 //^^^^^^^^^^^^^^^ reference local 1 -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello# -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello#HelloBuilder# -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello#HelloBuilder#message. -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello#message. -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#value(). -// ^^^^^ reference semanticdb maven . . lombok/ -// ^^^^^^^ reference semanticdb maven . . lombok/Builder# -// definition semanticdb maven . . minimized/Hello#HelloBuilder#build(). 1:4 +//^^^^^^^^^^^^^^^ reference scip-java maven . . java/ +//^^^^^^^^^^^^^^^ reference scip-java maven . . java/lang/ +//^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Hello# +//^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Hello#HelloBuilder# +//^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Hello#HelloBuilder#message. +//^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Hello#message. +//^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# +//^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/String# +//^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# +//^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings#value(). +// ^^^^^ reference scip-java maven . . lombok/ +// ^^^^^^^ reference scip-java maven . . lombok/Builder# +// definition scip-java maven . . minimized/Hello#HelloBuilder#build(). 1:4 // display_name build -// signature_documentation java @SuppressWarnings("all")\npublic Hello build() +// signature_documentation java @SuppressWarnings\npublic Hello build() // kind Method -// definition semanticdb maven . . minimized/Hello#builder(). 1:6 +// definition scip-java maven . . minimized/Hello#builder(). 1:6 // display_name builder -// signature_documentation java @SuppressWarnings("all")\npublic static HelloBuilder builder() +// signature_documentation java @SuppressWarnings\npublic static HelloBuilder builder() // kind StaticMethod -// definition semanticdb maven . . minimized/Hello#HelloBuilder#toString(). 1:7 +// definition scip-java maven . . minimized/Hello#HelloBuilder#toString(). 1:7 // display_name toString -// signature_documentation java @Override\n@SuppressWarnings("all")\npublic String toString() +// signature_documentation java @Override\n@SuppressWarnings\npublic String toString() // kind Method -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/Object#toString(). -// definition semanticdb maven . . minimized/Hello#HelloBuilder# 1:11 +// relationship is_reference is_implementation scip-java maven jdk 11 java/lang/Object#toString(). +// definition scip-java maven . . minimized/Hello#HelloBuilder# 1:11 // display_name HelloBuilder -// signature_documentation java @SuppressWarnings("all")\npublic static class HelloBuilder +// signature_documentation java @SuppressWarnings\npublic static class HelloBuilder // kind Class -// definition semanticdb maven . . minimized/Hello#HelloBuilder#``(). 1:11 +// definition scip-java maven . . minimized/Hello#HelloBuilder#``(). 1:11 // display_name -// signature_documentation java @SuppressWarnings("all")\nHelloBuilder() +// signature_documentation java @SuppressWarnings\nHelloBuilder() // kind Constructor -// reference semanticdb maven . . minimized/Hello#HelloBuilder#``(). 1:11 -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#HelloBuilder#build(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#builder(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#HelloBuilder#toString(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#HelloBuilder# -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#HelloBuilder#``(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#``(). +// reference scip-java maven . . minimized/Hello#HelloBuilder#``(). 1:11 +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#``(). // ⌃ enclosing_range_end local 0 -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#HelloBuilder#message. -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#HelloBuilder#message(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#HelloBuilder# +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#HelloBuilder#message. +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#HelloBuilder#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#HelloBuilder#message(). // ⌃ enclosing_range_end local 1 +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#HelloBuilder#build(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#HelloBuilder#toString(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#builder(). class Hello { -// ^^^^^ definition semanticdb maven . . minimized/Hello# +// ^^^^^ definition scip-java maven . . minimized/Hello# // display_name Hello // signature_documentation java @Builder\nclass Hello // kind Class -// ^^^^^ definition semanticdb maven . . minimized/Hello#``(). +// ^^^^^ definition scip-java maven . . minimized/Hello#``(). // display_name -// signature_documentation java @SuppressWarnings("all")\nHello(String message) +// signature_documentation java @SuppressWarnings\nHello(String message) // kind Constructor -// ^^^^^ reference semanticdb maven . . minimized/Hello#``(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Hello#message. +// ^^^^^ reference scip-java maven . . minimized/Hello#``(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Hello#message. private String message; -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^^^^^ definition local 0 // display_name message // signature_documentation java final String message -// enclosing_symbol semanticdb maven . . minimized/Hello#``(). +// enclosing_symbol scip-java maven . . minimized/Hello#``(). +// kind Parameter // ^^^^^^^ definition local 1 // display_name message // signature_documentation java final String message -// enclosing_symbol semanticdb maven . . minimized/Hello#HelloBuilder#message(). -// ^^^^^^^ definition semanticdb maven . . minimized/Hello#HelloBuilder#message(). +// enclosing_symbol scip-java maven . . minimized/Hello#HelloBuilder#message(). +// kind Parameter +// ^^^^^^^ definition scip-java maven . . minimized/Hello#HelloBuilder#message(). // display_name message -// signature_documentation java @SuppressWarnings("all")\npublic HelloBuilder message(String message) +// signature_documentation java @SuppressWarnings\npublic HelloBuilder message(String message) // kind Method // documentation @return {@code this}. -// ^^^^^^^ definition semanticdb maven . . minimized/Hello#HelloBuilder#message. +// ^^^^^^^ definition scip-java maven . . minimized/Hello#HelloBuilder#message. // display_name message -// signature_documentation java @SuppressWarnings("all")\nprivate String message +// signature_documentation java @SuppressWarnings\nprivate String message // kind Field -// ^^^^^^^ definition semanticdb maven . . minimized/Hello#message. +// ^^^^^^^ definition scip-java maven . . minimized/Hello#message. // display_name message // signature_documentation java private String message // kind Field -// ⌃ enclosing_range_end semanticdb maven . . minimized/Hello#message. +// ⌃ enclosing_range_end scip-java maven . . minimized/Hello#message. } -//⌃ enclosing_range_end semanticdb maven . . minimized/Hello# +//⌃ enclosing_range_end scip-java maven . . minimized/Hello# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Methods.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Methods.java index a7c2528aa..ec5bfefaf 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Methods.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Methods.java @@ -1,138 +1,144 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/Methods# +//⌄ enclosing_range_start scip-java maven . . minimized/Methods# public class Methods { -// ^^^^^^^ definition semanticdb maven . . minimized/Methods# +// ^^^^^^^ definition scip-java maven . . minimized/Methods# // display_name Methods // signature_documentation java public class Methods // kind Class -// ^^^^^^^ definition semanticdb maven . . minimized/Methods#``(). +// ^^^^^^^ definition scip-java maven . . minimized/Methods#``(). // display_name // signature_documentation java public Methods() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/Methods#overload(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Methods#overload(). // ⌄ enclosing_range_start local 0 private int overload(int value) { -// ^^^^^^^^ definition semanticdb maven . . minimized/Methods#overload(). +// ^^^^^^^^ definition scip-java maven . . minimized/Methods#overload(). // display_name overload // signature_documentation java private int overload(int value) // kind Method // ^^^^^ definition local 0 // display_name value // signature_documentation java int value -// enclosing_symbol semanticdb maven . . minimized/Methods#overload(). +// enclosing_symbol scip-java maven . . minimized/Methods#overload(). +// kind Parameter // ⌃ enclosing_range_end local 0 return value + 1; // ^^^^^ reference local 0 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Methods#overload(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Methods#overload(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Methods#overload(+1). +// ⌄ enclosing_range_start scip-java maven . . minimized/Methods#overload(+1). // ⌄ enclosing_range_start local 1 private String overload(String value) { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^ definition semanticdb maven . . minimized/Methods#overload(+1). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^ definition scip-java maven . . minimized/Methods#overload(+1). // display_name overload // signature_documentation java private String overload(String value) // kind Method -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^^^ definition local 1 // display_name value // signature_documentation java String value -// enclosing_symbol semanticdb maven . . minimized/Methods#overload(+1). +// enclosing_symbol scip-java maven . . minimized/Methods#overload(+1). +// kind Parameter // ⌃ enclosing_range_end local 1 return value + "1"; // ^^^^^ reference local 1 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Methods#overload(+1). +// ⌃ enclosing_range_end scip-java maven . . minimized/Methods#overload(+1). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Methods#staticOverload(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Methods#staticOverload(). // ⌄ enclosing_range_start local 2 private static int staticOverload(int value) { -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Methods#staticOverload(). +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Methods#staticOverload(). // display_name staticOverload // signature_documentation java private static int staticOverload(int value) // kind StaticMethod // ^^^^^ definition local 2 // display_name value // signature_documentation java int value -// enclosing_symbol semanticdb maven . . minimized/Methods#staticOverload(). +// enclosing_symbol scip-java maven . . minimized/Methods#staticOverload(). +// kind Parameter // ⌃ enclosing_range_end local 2 return value + 1; // ^^^^^ reference local 2 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Methods#staticOverload(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Methods#staticOverload(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Methods#staticOverload(+1). +// ⌄ enclosing_range_start scip-java maven . . minimized/Methods#staticOverload(+1). // ⌄ enclosing_range_start local 3 private static String staticOverload(String value) { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/Methods#staticOverload(+1). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/Methods#staticOverload(+1). // display_name staticOverload // signature_documentation java private static String staticOverload(String value) // kind StaticMethod -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^^^ definition local 3 // display_name value // signature_documentation java String value -// enclosing_symbol semanticdb maven . . minimized/Methods#staticOverload(+1). +// enclosing_symbol scip-java maven . . minimized/Methods#staticOverload(+1). +// kind Parameter // ⌃ enclosing_range_end local 3 return value + "1"; // ^^^^^ reference local 3 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Methods#staticOverload(+1). +// ⌃ enclosing_range_end scip-java maven . . minimized/Methods#staticOverload(+1). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Methods#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Methods#app(). // ⌄ enclosing_range_start local 4 // ⌄ enclosing_range_start local 5 public static String app(int n, String m) throws RuntimeException, IndexOutOfBoundsException { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/Methods#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/Methods#app(). // display_name app // signature_documentation java public static String app(int n, String m) throws RuntimeException, IndexOutOfBoundsException // kind StaticMethod // ^ definition local 4 // display_name n // signature_documentation java int n -// enclosing_symbol semanticdb maven . . minimized/Methods#app(). -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// enclosing_symbol scip-java maven . . minimized/Methods#app(). +// kind Parameter +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^ definition local 5 // display_name m // signature_documentation java String m -// enclosing_symbol semanticdb maven . . minimized/Methods#app(). -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/RuntimeException# -// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/IndexOutOfBoundsException# +// enclosing_symbol scip-java maven . . minimized/Methods#app(). +// kind Parameter +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/RuntimeException# +// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/IndexOutOfBoundsException# // ⌃ enclosing_range_end local 4 // ⌃ enclosing_range_end local 5 // ⌄ enclosing_range_start local 6 Methods methods = new Methods(); -// ^^^^^^^ reference semanticdb maven . . minimized/Methods# +// ^^^^^^^ reference scip-java maven . . minimized/Methods# // ^^^^^^^ definition local 6 // display_name methods // signature_documentation java Methods methods -// enclosing_symbol semanticdb maven . . minimized/Methods#app(). +// enclosing_symbol scip-java maven . . minimized/Methods#app(). // kind Variable -// ^^^^^^^ reference semanticdb maven . . minimized/Methods#``(). +// ^^^^^^^ reference scip-java maven . . minimized/Methods#``(). // ⌃ enclosing_range_end local 6 // ⌄ enclosing_range_start local 7 int a = staticOverload(n); // ^ definition local 7 // display_name a // signature_documentation java int a -// enclosing_symbol semanticdb maven . . minimized/Methods#app(). +// enclosing_symbol scip-java maven . . minimized/Methods#app(). // kind Variable -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Methods#staticOverload(). +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Methods#staticOverload(). // ^ reference local 4 // ⌃ enclosing_range_end local 7 // ⌄ enclosing_range_start local 8 String b = staticOverload(m); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^ definition local 8 // display_name b // signature_documentation java String b -// enclosing_symbol semanticdb maven . . minimized/Methods#app(). +// enclosing_symbol scip-java maven . . minimized/Methods#app(). // kind Variable -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Methods#staticOverload(+1). +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Methods#staticOverload(+1). // ^ reference local 5 // ⌃ enclosing_range_end local 8 // ⌄ enclosing_range_start local 9 @@ -140,22 +146,22 @@ public static String app(int n, String m) throws RuntimeException, IndexOutOfBou // ^ definition local 9 // display_name c // signature_documentation java int c -// enclosing_symbol semanticdb maven . . minimized/Methods#app(). +// enclosing_symbol scip-java maven . . minimized/Methods#app(). // kind Variable // ^^^^^^^ reference local 6 -// ^^^^^^^^ reference semanticdb maven . . minimized/Methods#overload(). +// ^^^^^^^^ reference scip-java maven . . minimized/Methods#overload(). // ^ reference local 4 // ⌃ enclosing_range_end local 9 // ⌄ enclosing_range_start local 10 String d = methods.overload(m); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^ definition local 10 // display_name d // signature_documentation java String d -// enclosing_symbol semanticdb maven . . minimized/Methods#app(). +// enclosing_symbol scip-java maven . . minimized/Methods#app(). // kind Variable // ^^^^^^^ reference local 6 -// ^^^^^^^^ reference semanticdb maven . . minimized/Methods#overload(+1). +// ^^^^^^^^ reference scip-java maven . . minimized/Methods#overload(+1). // ^ reference local 5 // ⌃ enclosing_range_end local 10 return b + a + c + d; @@ -164,6 +170,6 @@ public static String app(int n, String m) throws RuntimeException, IndexOutOfBou // ^ reference local 9 // ^ reference local 10 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Methods#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Methods#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Methods# +//⌃ enclosing_range_end scip-java maven . . minimized/Methods# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/MinimizedJavaMain.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/MinimizedJavaMain.java index c6d47949f..bcb98b329 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/MinimizedJavaMain.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/MinimizedJavaMain.java @@ -1,81 +1,82 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/MinimizedJavaMain# +//⌄ enclosing_range_start scip-java maven . . minimized/MinimizedJavaMain# @Annotations(value = "value", format = "format") -// ^^^^^^^^^^ reference semanticdb maven . . minimized/Annotations# -// ^^^^^ reference semanticdb maven . . minimized/Annotations#value(). -// ^^^^^^ reference semanticdb maven . . minimized/Annotations#format(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/Annotations# +// ^^^^^ reference scip-java maven . . minimized/Annotations#value(). +// ^^^^^^ reference scip-java maven . . minimized/Annotations#format(). public class MinimizedJavaMain { -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/MinimizedJavaMain# +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/MinimizedJavaMain# // display_name MinimizedJavaMain -// signature_documentation java @Annotations(value = "value", format = "format")\npublic class MinimizedJavaMain +// signature_documentation java @Annotations\npublic class MinimizedJavaMain // kind Class -// ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/MinimizedJavaMain#``(). +// ^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/MinimizedJavaMain#``(). // display_name // signature_documentation java public MinimizedJavaMain() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/MinimizedJavaMain#main(). +// ⌄ enclosing_range_start scip-java maven . . minimized/MinimizedJavaMain#main(). // ⌄ enclosing_range_start local 0 public static void main(String[] args) { -// ^^^^ definition semanticdb maven . . minimized/MinimizedJavaMain#main(). +// ^^^^ definition scip-java maven . . minimized/MinimizedJavaMain#main(). // display_name main // signature_documentation java public static void main(String[] args) // kind StaticMethod -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^^ definition local 0 // display_name args // signature_documentation java String[] args -// enclosing_symbol semanticdb maven . . minimized/MinimizedJavaMain#main(). +// enclosing_symbol scip-java maven . . minimized/MinimizedJavaMain#main(). +// kind Parameter // ⌃ enclosing_range_end local 0 TypeVariables.app(new TypeVariables.CT()); -// ^^^^^^^^^^^^^ reference semanticdb maven . . minimized/TypeVariables# -// ^^^ reference semanticdb maven . . minimized/TypeVariables#app(). -// ^^^^^^^^^^^^^ reference semanticdb maven . . minimized/TypeVariables# -// ^^ reference semanticdb maven . . minimized/TypeVariables#CT#``(). +// ^^^^^^^^^^^^^ reference scip-java maven . . minimized/TypeVariables# +// ^^^ reference scip-java maven . . minimized/TypeVariables#app(). +// ^^^^^^^^^^^^^ reference scip-java maven . . minimized/TypeVariables# +// ^^ reference scip-java maven . . minimized/TypeVariables#CT#``(). System.out.println( -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^ reference semanticdb maven jdk 11 java/lang/System#out. -// ^^^^^^^ reference semanticdb maven jdk 11 java/io/PrintStream#println(+8). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^ reference scip-java maven jdk 11 java/lang/System#out. +// ^^^^^^^ reference scip-java maven jdk 11 java/io/PrintStream#println(+8). Methods.app(42, "42") -// ^^^^^^^ reference semanticdb maven . . minimized/Methods# -// ^^^ reference semanticdb maven . . minimized/Methods#app(). +// ^^^^^^^ reference scip-java maven . . minimized/Methods# +// ^^^ reference scip-java maven . . minimized/Methods#app(). + Enums.app() -// ^^^^^ reference semanticdb maven . . minimized/Enums# -// ^^^ reference semanticdb maven . . minimized/Enums#app(). +// ^^^^^ reference scip-java maven . . minimized/Enums# +// ^^^ reference scip-java maven . . minimized/Enums#app(). + Docstrings.app() -// ^^^^^^^^^^ reference semanticdb maven . . minimized/Docstrings# -// ^^^ reference semanticdb maven . . minimized/Docstrings#app(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/Docstrings# +// ^^^ reference scip-java maven . . minimized/Docstrings#app(). + InnerClasses.app() -// ^^^^^^^^^^^^ reference semanticdb maven . . minimized/InnerClasses# -// ^^^ reference semanticdb maven . . minimized/InnerClasses#app(). +// ^^^^^^^^^^^^ reference scip-java maven . . minimized/InnerClasses# +// ^^^ reference scip-java maven . . minimized/InnerClasses#app(). + ForComprehensions.app(42) -// ^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/ForComprehensions# -// ^^^ reference semanticdb maven . . minimized/ForComprehensions#app(). +// ^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/ForComprehensions# +// ^^^ reference scip-java maven . . minimized/ForComprehensions#app(). + AnonymousClasses.app(42) -// ^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AnonymousClasses# -// ^^^ reference semanticdb maven . . minimized/AnonymousClasses#app(). +// ^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AnonymousClasses# +// ^^^ reference scip-java maven . . minimized/AnonymousClasses#app(). + Primitives.app() -// ^^^^^^^^^^ reference semanticdb maven . . minimized/Primitives# -// ^^^ reference semanticdb maven . . minimized/Primitives#app(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/Primitives# +// ^^^ reference scip-java maven . . minimized/Primitives#app(). + new ParameterizedTypes().app(42, "42") -// ^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/ParameterizedTypes#``(). -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ reference semanticdb maven . . minimized/ParameterizedTypes#app(). +// ^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/ParameterizedTypes#``(). +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ reference scip-java maven . . minimized/ParameterizedTypes#app(). + RawTypes.x.toString() -// ^^^^^^^^ reference semanticdb maven . . minimized/RawTypes# -// ^ reference semanticdb maven . . minimized/RawTypes#x. -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Object#toString(). +// ^^^^^^^^ reference scip-java maven . . minimized/RawTypes# +// ^ reference scip-java maven . . minimized/RawTypes#x. +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Object#toString(). + ClassOf.app() -// ^^^^^^^ reference semanticdb maven . . minimized/ClassOf# -// ^^^ reference semanticdb maven . . minimized/ClassOf#app(). +// ^^^^^^^ reference scip-java maven . . minimized/ClassOf# +// ^^^ reference scip-java maven . . minimized/ClassOf#app(). + SubClasses.app() -// ^^^^^^^^^^ reference semanticdb maven . . minimized/SubClasses# -// ^^^ reference semanticdb maven . . minimized/SubClasses#app(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/SubClasses# +// ^^^ reference scip-java maven . . minimized/SubClasses#app(). + Fields.app()); -// ^^^^^^ reference semanticdb maven . . minimized/Fields# -// ^^^ reference semanticdb maven . . minimized/Fields#app(). +// ^^^^^^ reference scip-java maven . . minimized/Fields# +// ^^^ reference scip-java maven . . minimized/Fields#app(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/MinimizedJavaMain#main(). +// ⌃ enclosing_range_end scip-java maven . . minimized/MinimizedJavaMain#main(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/MinimizedJavaMain# +//⌃ enclosing_range_end scip-java maven . . minimized/MinimizedJavaMain# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ParameterizedTypes.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ParameterizedTypes.java index 1dbe55c0d..27a2254cc 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ParameterizedTypes.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/ParameterizedTypes.java @@ -1,155 +1,158 @@ package minimized; import java.util.HashMap; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^ reference semanticdb maven jdk 11 java/util/HashMap# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^ reference scip-java maven jdk 11 java/util/HashMap# import java.util.Iterator; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/Iterator# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/Iterator# import java.util.List; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^ reference semanticdb maven jdk 11 java/util/List# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^ reference scip-java maven jdk 11 java/util/List# import java.util.Map; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^ reference semanticdb maven jdk 11 java/util/Map# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^ reference scip-java maven jdk 11 java/util/Map# -//⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes# -//⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#[A] -//⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#[B] +//⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes# +//⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#[A] +//⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#[B] public class ParameterizedTypes { -// ^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ParameterizedTypes# +// ^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ParameterizedTypes# // display_name ParameterizedTypes // signature_documentation java public class ParameterizedTypes // kind Class -// ^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ParameterizedTypes#``(). +// ^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ParameterizedTypes#``(). // display_name // signature_documentation java public ParameterizedTypes() // kind Constructor -// ^ definition semanticdb maven . . minimized/ParameterizedTypes#[A] +// ^ definition scip-java maven . . minimized/ParameterizedTypes#[A] // display_name A // signature_documentation java A // kind TypeParameter -// ^ definition semanticdb maven . . minimized/ParameterizedTypes#[B] +// ^ definition scip-java maven . . minimized/ParameterizedTypes#[B] // display_name B // signature_documentation java B extends String // kind TypeParameter -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#iteratorable().[T] -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#iteratorable(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#iteratorable(). +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#iteratorable().[T] // ⌄ enclosing_range_start local 0 public & Iterator> void iteratorable(List list) {} -// ^ definition semanticdb maven . . minimized/ParameterizedTypes#iteratorable().[T] +// ^ definition scip-java maven . . minimized/ParameterizedTypes#iteratorable().[T] // display_name T // signature_documentation java T extends Iterable & Iterator // kind TypeParameter -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Iterable# -// ^ reference semanticdb maven . . minimized/ParameterizedTypes#[A] -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/Iterator# -// ^ reference semanticdb maven . . minimized/ParameterizedTypes#[B] -// ^^^^^^^^^^^^ definition semanticdb maven . . minimized/ParameterizedTypes#iteratorable(). +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Iterable# +// ^ reference scip-java maven . . minimized/ParameterizedTypes#[A] +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/Iterator# +// ^ reference scip-java maven . . minimized/ParameterizedTypes#[B] +// ^^^^^^^^^^^^ definition scip-java maven . . minimized/ParameterizedTypes#iteratorable(). // display_name iteratorable // signature_documentation java public & Iterator> void iteratorable(List list) // kind Method -// ^^^^ reference semanticdb maven jdk 11 java/util/List# -// ^ reference semanticdb maven . . minimized/ParameterizedTypes#iteratorable().[T] +// ^^^^ reference scip-java maven jdk 11 java/util/List# +// ^ reference scip-java maven . . minimized/ParameterizedTypes#iteratorable().[T] // ^^^^ definition local 0 // display_name list // signature_documentation java List list -// enclosing_symbol semanticdb maven . . minimized/ParameterizedTypes#iteratorable(). +// enclosing_symbol scip-java maven . . minimized/ParameterizedTypes#iteratorable(). +// kind Parameter // ⌃ enclosing_range_end local 0 -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#iteratorable().[T] -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#iteratorable(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#iteratorable(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#iteratorable().[T] -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#app(). // ⌄ enclosing_range_start local 1 // ⌄ enclosing_range_start local 2 public String app(A a, B b) { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/ParameterizedTypes#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/ParameterizedTypes#app(). // display_name app // signature_documentation java public String app(A a, B b) // kind Method -// ^ reference semanticdb maven . . minimized/ParameterizedTypes#[A] +// ^ reference scip-java maven . . minimized/ParameterizedTypes#[A] // ^ definition local 1 // display_name a // signature_documentation java A a -// enclosing_symbol semanticdb maven . . minimized/ParameterizedTypes#app(). -// ^ reference semanticdb maven . . minimized/ParameterizedTypes#[B] +// enclosing_symbol scip-java maven . . minimized/ParameterizedTypes#app(). +// kind Parameter +// ^ reference scip-java maven . . minimized/ParameterizedTypes#[B] // ^ definition local 2 // display_name b // signature_documentation java B b -// enclosing_symbol semanticdb maven . . minimized/ParameterizedTypes#app(). +// enclosing_symbol scip-java maven . . minimized/ParameterizedTypes#app(). +// kind Parameter // ⌃ enclosing_range_end local 1 // ⌃ enclosing_range_end local 2 return a.toString() + b; // ^ reference local 1 -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Object#toString(). +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Object#toString(). // ^ reference local 2 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#app(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#doStuff(). +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#doStuff(). public Map doStuff() { return null; } -// ^^^ reference semanticdb maven jdk 11 java/util/Map# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^ definition semanticdb maven . . minimized/ParameterizedTypes#doStuff(). +// ^^^ reference scip-java maven jdk 11 java/util/Map# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^ definition scip-java maven . . minimized/ParameterizedTypes#doStuff(). // display_name doStuff // signature_documentation java public Map doStuff() // kind Method -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#doStuff(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#doStuff(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#createQuadruplet(). +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#createQuadruplet(). public Quadruplet createQuadruplet() { return null; } -// ^^^^^^^^^^ reference semanticdb maven . . minimized/ParameterizedTypes#Quadruplet# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/Object# -// ^^^^^^^ reference semanticdb maven jdk 11 java/lang/Integer# -// ^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ParameterizedTypes#createQuadruplet(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/ParameterizedTypes#Quadruplet# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/Object# +// ^^^^^^^ reference scip-java maven jdk 11 java/lang/Integer# +// ^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ParameterizedTypes#createQuadruplet(). // display_name createQuadruplet // signature_documentation java public Quadruplet createQuadruplet() // kind Method -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#createQuadruplet(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#createQuadruplet(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#Quadruplet# -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[T] -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[S] -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[X] -// ⌄ enclosing_range_start semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[Y] +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#Quadruplet# +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[T] +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[S] +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[X] +// ⌄ enclosing_range_start scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[Y] public static class Quadruplet {} -// ^^^^^^^^^^ definition semanticdb maven . . minimized/ParameterizedTypes#Quadruplet# +// ^^^^^^^^^^ definition scip-java maven . . minimized/ParameterizedTypes#Quadruplet# // display_name Quadruplet // signature_documentation java public static class Quadruplet // kind Class -// ^^^^^^^^^^ definition semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#``(). +// ^^^^^^^^^^ definition scip-java maven . . minimized/ParameterizedTypes#Quadruplet#``(). // display_name // signature_documentation java public Quadruplet() // kind Constructor -// ^ definition semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[T] +// ^ definition scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[T] // display_name T // signature_documentation java T // kind TypeParameter -// ^ definition semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[S] +// ^ definition scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[S] // display_name S // signature_documentation java S // kind TypeParameter -// ^ definition semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[X] +// ^ definition scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[X] // display_name X // signature_documentation java X // kind TypeParameter -// ^ definition semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[Y] +// ^ definition scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[Y] // display_name Y // signature_documentation java Y // kind TypeParameter -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#Quadruplet# -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[T] -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[S] -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[X] -// ⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#Quadruplet#[Y] +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#Quadruplet# +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[T] +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[S] +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[X] +// ⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#Quadruplet#[Y] } -//⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes# -//⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#[A] -//⌃ enclosing_range_end semanticdb maven . . minimized/ParameterizedTypes#[B] +//⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes# +//⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#[A] +//⌃ enclosing_range_end scip-java maven . . minimized/ParameterizedTypes#[B] diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Primitives.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Primitives.java index d1fb9899f..83e5de549 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Primitives.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Primitives.java @@ -1,116 +1,116 @@ package minimized; import java.util.Random; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^ reference semanticdb maven jdk 11 java/util/Random# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^ reference scip-java maven jdk 11 java/util/Random# -//⌄ enclosing_range_start semanticdb maven . . minimized/Primitives# +//⌄ enclosing_range_start scip-java maven . . minimized/Primitives# public class Primitives { -// ^^^^^^^^^^ definition semanticdb maven . . minimized/Primitives# +// ^^^^^^^^^^ definition scip-java maven . . minimized/Primitives# // display_name Primitives // signature_documentation java public class Primitives // kind Class -// ^^^^^^^^^^ definition semanticdb maven . . minimized/Primitives#``(). +// ^^^^^^^^^^ definition scip-java maven . . minimized/Primitives#``(). // display_name // signature_documentation java public Primitives() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/Primitives#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Primitives#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/Primitives#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/Primitives#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod // ⌄ enclosing_range_start local 0 Random random = new Random(); -// ^^^^^^ reference semanticdb maven jdk 11 java/util/Random# +// ^^^^^^ reference scip-java maven jdk 11 java/util/Random# // ^^^^^^ definition local 0 // display_name random // signature_documentation java Random random -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable -// ^^^^^^ reference semanticdb maven jdk 11 java/util/Random#``(). +// ^^^^^^ reference scip-java maven jdk 11 java/util/Random#``(). // ⌃ enclosing_range_end local 0 // ⌄ enclosing_range_start local 1 byte a = (byte) random.nextInt(); // ^ definition local 1 // display_name a // signature_documentation java byte a -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextInt(). +// ^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextInt(). // ⌃ enclosing_range_end local 1 // ⌄ enclosing_range_start local 2 short b = (short) random.nextInt(); // ^ definition local 2 // display_name b // signature_documentation java short b -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextInt(). +// ^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextInt(). // ⌃ enclosing_range_end local 2 // ⌄ enclosing_range_start local 3 int c = random.nextInt(); // ^ definition local 3 // display_name c // signature_documentation java int c -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextInt(). +// ^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextInt(). // ⌃ enclosing_range_end local 3 // ⌄ enclosing_range_start local 4 long d = random.nextLong(); // ^ definition local 4 // display_name d // signature_documentation java long d -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextLong(). +// ^^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextLong(). // ⌃ enclosing_range_end local 4 // ⌄ enclosing_range_start local 5 char e = (char) random.nextInt(); // ^ definition local 5 // display_name e // signature_documentation java char e -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextInt(). +// ^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextInt(). // ⌃ enclosing_range_end local 5 // ⌄ enclosing_range_start local 6 float f = (float) random.nextDouble(); // ^ definition local 6 // display_name f // signature_documentation java float f -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextDouble(). +// ^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextDouble(). // ⌃ enclosing_range_end local 6 // ⌄ enclosing_range_start local 7 double g = (double) random.nextDouble(); // ^ definition local 7 // display_name g // signature_documentation java double g -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextDouble(). +// ^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextDouble(). // ⌃ enclosing_range_end local 7 // ⌄ enclosing_range_start local 8 boolean h = random.nextBoolean(); // ^ definition local 8 // display_name h // signature_documentation java boolean h -// enclosing_symbol semanticdb maven . . minimized/Primitives#app(). +// enclosing_symbol scip-java maven . . minimized/Primitives#app(). // kind Variable // ^^^^^^ reference local 0 -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Random#nextBoolean(). +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Random#nextBoolean(). // ⌃ enclosing_range_end local 8 return "" + a + b + c + d + e + f + g + h; // ^ reference local 1 @@ -122,14 +122,14 @@ public static String app() { // ^ reference local 7 // ^ reference local 8 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/Primitives#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Primitives#app(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/Primitives#test(). +// ⌄ enclosing_range_start scip-java maven . . minimized/Primitives#test(). public static void test() {} -// ^^^^ definition semanticdb maven . . minimized/Primitives#test(). +// ^^^^ definition scip-java maven . . minimized/Primitives#test(). // display_name test // signature_documentation java public static void test() // kind StaticMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/Primitives#test(). +// ⌃ enclosing_range_end scip-java maven . . minimized/Primitives#test(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/Primitives# +//⌃ enclosing_range_end scip-java maven . . minimized/Primitives# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/RawTypes.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/RawTypes.java index ac6262b9d..4bb3b6aef 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/RawTypes.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/RawTypes.java @@ -1,35 +1,35 @@ package minimized; import java.util.Collections; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Collections# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Collections# import java.util.List; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/util/ -// ^^^^ reference semanticdb maven jdk 11 java/util/List# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/util/ +// ^^^^ reference scip-java maven jdk 11 java/util/List# -//⌄ enclosing_range_start semanticdb maven . . minimized/RawTypes# +//⌄ enclosing_range_start scip-java maven . . minimized/RawTypes# @SuppressWarnings("ALL") -// ^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# +// ^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/SuppressWarnings# public class RawTypes { -// ^^^^^^^^ definition semanticdb maven . . minimized/RawTypes# +// ^^^^^^^^ definition scip-java maven . . minimized/RawTypes# // display_name RawTypes -// signature_documentation java @SuppressWarnings("ALL")\npublic class RawTypes +// signature_documentation java @SuppressWarnings\npublic class RawTypes // kind Class -// ^^^^^^^^ definition semanticdb maven . . minimized/RawTypes#``(). +// ^^^^^^^^ definition scip-java maven . . minimized/RawTypes#``(). // display_name // signature_documentation java public RawTypes() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/RawTypes#x. +// ⌄ enclosing_range_start scip-java maven . . minimized/RawTypes#x. public static final List x = Collections.singletonList(42); -// ^^^^ reference semanticdb maven jdk 11 java/util/List# -// ^ definition semanticdb maven . . minimized/RawTypes#x. +// ^^^^ reference scip-java maven jdk 11 java/util/List# +// ^ definition scip-java maven . . minimized/RawTypes#x. // display_name x // signature_documentation java public static final List x // kind StaticField -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Collections# -// ^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/util/Collections#singletonList(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/RawTypes#x. +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Collections# +// ^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/util/Collections#singletonList(). +// ⌃ enclosing_range_end scip-java maven . . minimized/RawTypes#x. } -//⌃ enclosing_range_end semanticdb maven . . minimized/RawTypes# +//⌃ enclosing_range_end scip-java maven . . minimized/RawTypes# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/SubClasses.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/SubClasses.java index 4e99f292f..cb9210521 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/SubClasses.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/SubClasses.java @@ -1,78 +1,78 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/SubClasses# +//⌄ enclosing_range_start scip-java maven . . minimized/SubClasses# public class SubClasses extends AbstractClasses implements Interfaces { -// ^^^^^^^^^^ definition semanticdb maven . . minimized/SubClasses# +// ^^^^^^^^^^ definition scip-java maven . . minimized/SubClasses# // display_name SubClasses -// signature_documentation java public class SubClasses +// signature_documentation java public class SubClasses extends AbstractClasses implements Interfaces // kind Class -// relationship is_implementation semanticdb maven . . minimized/AbstractClasses# -// relationship is_implementation semanticdb maven . . minimized/Interfaces# -// ^^^^^^^^^^ definition semanticdb maven . . minimized/SubClasses#``(). +// relationship is_implementation scip-java maven . . minimized/AbstractClasses# +// relationship is_implementation scip-java maven . . minimized/Interfaces# +// ^^^^^^^^^^ definition scip-java maven . . minimized/SubClasses#``(). // display_name // signature_documentation java public SubClasses() // kind Constructor -// ^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AbstractClasses# -// ^^^^^^^^^^ reference semanticdb maven . . minimized/Interfaces# +// ^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AbstractClasses# +// ^^^^^^^^^^ reference scip-java maven . . minimized/Interfaces# -// ⌄ enclosing_range_start semanticdb maven . . minimized/SubClasses#abstractImplementation(). +// ⌄ enclosing_range_start scip-java maven . . minimized/SubClasses#abstractImplementation(). @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# public String abstractImplementation() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/SubClasses#abstractImplementation(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/SubClasses#abstractImplementation(). // display_name abstractImplementation // signature_documentation java @Override\npublic String abstractImplementation() // kind Method -// relationship is_reference is_implementation semanticdb maven . . minimized/AbstractClasses#abstractImplementation(). +// relationship is_reference is_implementation scip-java maven . . minimized/AbstractClasses#abstractImplementation(). return "abstract"; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/SubClasses#abstractImplementation(). +// ⌃ enclosing_range_end scip-java maven . . minimized/SubClasses#abstractImplementation(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/SubClasses#abstractInterfaceMethod(). +// ⌄ enclosing_range_start scip-java maven . . minimized/SubClasses#abstractInterfaceMethod(). @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# public String abstractInterfaceMethod() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/SubClasses#abstractInterfaceMethod(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/SubClasses#abstractInterfaceMethod(). // display_name abstractInterfaceMethod // signature_documentation java @Override\npublic String abstractInterfaceMethod() // kind Method -// relationship is_reference is_implementation semanticdb maven . . minimized/Interfaces#abstractInterfaceMethod(). +// relationship is_reference is_implementation scip-java maven . . minimized/Interfaces#abstractInterfaceMethod(). return "abstractInterface"; } -// ⌃ enclosing_range_end semanticdb maven . . minimized/SubClasses#abstractInterfaceMethod(). +// ⌃ enclosing_range_end scip-java maven . . minimized/SubClasses#abstractInterfaceMethod(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/SubClasses#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/SubClasses#app(). public static String app() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^ definition semanticdb maven . . minimized/SubClasses#app(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^ definition scip-java maven . . minimized/SubClasses#app(). // display_name app // signature_documentation java public static String app() // kind StaticMethod // ⌄ enclosing_range_start local 0 SubClasses s = new SubClasses(); -// ^^^^^^^^^^ reference semanticdb maven . . minimized/SubClasses# +// ^^^^^^^^^^ reference scip-java maven . . minimized/SubClasses# // ^ definition local 0 // display_name s // signature_documentation java SubClasses s -// enclosing_symbol semanticdb maven . . minimized/SubClasses#app(). +// enclosing_symbol scip-java maven . . minimized/SubClasses#app(). // kind Variable -// ^^^^^^^^^^ reference semanticdb maven . . minimized/SubClasses#``(). +// ^^^^^^^^^^ reference scip-java maven . . minimized/SubClasses#``(). // ⌃ enclosing_range_end local 0 return s.abstractImplementation() // ^ reference local 0 -// ^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/SubClasses#abstractImplementation(). +// ^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/SubClasses#abstractImplementation(). + s.defaultImplementation() // ^ reference local 0 -// ^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/AbstractClasses#defaultImplementation(). +// ^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/AbstractClasses#defaultImplementation(). + s.abstractInterfaceMethod() // ^ reference local 0 -// ^^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/SubClasses#abstractInterfaceMethod(). +// ^^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/SubClasses#abstractInterfaceMethod(). + s.defaultInterfaceMethod(); // ^ reference local 0 -// ^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Interfaces#defaultInterfaceMethod(). +// ^^^^^^^^^^^^^^^^^^^^^^ reference scip-java maven . . minimized/Interfaces#defaultInterfaceMethod(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/SubClasses#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/SubClasses#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/SubClasses# +//⌃ enclosing_range_end scip-java maven . . minimized/SubClasses# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TabIndented.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TabIndented.java index 3af5743c3..0ed6f003d 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TabIndented.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TabIndented.java @@ -1,33 +1,33 @@ package minimized; -//⌄ enclosing_range_start semanticdb maven . . minimized/TabIndented# +//⌄ enclosing_range_start scip-java maven . . minimized/TabIndented# public class TabIndented { -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/TabIndented# +// ^^^^^^^^^^^ definition scip-java maven . . minimized/TabIndented# // display_name TabIndented // signature_documentation java public class TabIndented // kind Class -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/TabIndented#``(). +// ^^^^^^^^^^^ definition scip-java maven . . minimized/TabIndented#``(). // display_name // signature_documentation java public TabIndented() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/TabIndented#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TabIndented#app(). public void app() { -// ^^^ definition semanticdb maven . . minimized/TabIndented#app(). +// ^^^ definition scip-java maven . . minimized/TabIndented#app(). // display_name app // signature_documentation java public void app() // kind Method // ⌄ enclosing_range_start local 0 Object o = new Object() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/Object# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/Object# // ^ definition local 0 // display_name o // signature_documentation java Object o -// enclosing_symbol semanticdb maven . . minimized/TabIndented#app(). +// enclosing_symbol scip-java maven . . minimized/TabIndented#app(). // kind Variable -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/Object# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/Object# // ⌄ enclosing_range_start local 2 @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# // ⌄ enclosing_range_start local 3 public boolean equals(Object other) { // ^^^^^^ definition local 2 @@ -35,12 +35,13 @@ public boolean equals(Object other) { // signature_documentation java @Override\npublic boolean equals(Object other) // enclosing_symbol local 1 // kind Method -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/Object#equals(). -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/Object# +// relationship is_reference is_implementation scip-java maven jdk 11 java/lang/Object#equals(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/Object# // ^^^^^ definition local 3 // display_name other // signature_documentation java Object other // enclosing_symbol local 2 +// kind Parameter // ⌃ enclosing_range_end local 3 return false; } @@ -48,37 +49,37 @@ public boolean equals(Object other) { // ⌄ enclosing_range_start local 4 @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# public int hashCode() { // ^^^^^^^^ definition local 4 // display_name hashCode // signature_documentation java @Override\npublic int hashCode() // enclosing_symbol local 1 // kind Method -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/Object#hashCode(). +// relationship is_reference is_implementation scip-java maven jdk 11 java/lang/Object#hashCode(). return System.identityHashCode(this); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/System# -// ^^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/System#identityHashCode(). +// ^^^^^^ reference scip-java maven jdk 11 java/lang/System# +// ^^^^^^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/System#identityHashCode(). } // ⌃ enclosing_range_end local 4 // ⌄ enclosing_range_start local 5 @Override -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/Override# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/Override# public String toString() { -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^^^^^^^^ definition local 5 // display_name toString // signature_documentation java @Override\npublic String toString() // enclosing_symbol local 1 // kind Method -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/Object#toString(). +// relationship is_reference is_implementation scip-java maven jdk 11 java/lang/Object#toString(). return ""; } // ⌃ enclosing_range_end local 5 }; // ⌃ enclosing_range_end local 0 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/TabIndented#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TabIndented#app(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/TabIndented# +//⌃ enclosing_range_end scip-java maven . . minimized/TabIndented# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeAnnotations.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeAnnotations.java index c23c63560..17e660b7d 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeAnnotations.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeAnnotations.java @@ -1,72 +1,72 @@ package minimized; import java.lang.annotation.ElementType; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^ reference semanticdb maven . . java/lang/annotation/ -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^ reference scip-java maven . . java/lang/annotation/ +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType# import java.lang.annotation.Target; -// ^^^^ reference semanticdb maven . . java/ -// ^^^^ reference semanticdb maven . . java/lang/ -// ^^^^^^^^^^ reference semanticdb maven . . java/lang/annotation/ -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Target# +// ^^^^ reference scip-java maven . . java/ +// ^^^^ reference scip-java maven . . java/lang/ +// ^^^^^^^^^^ reference scip-java maven . . java/lang/annotation/ +// ^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Target# -//⌄ enclosing_range_start semanticdb maven . . minimized/TypeAnnotation# +//⌄ enclosing_range_start scip-java maven . . minimized/TypeAnnotation# @Target({ ElementType.TYPE_USE }) -// ^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/Target# -// ^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType# -// ^^^^^^^^ reference semanticdb maven jdk 11 java/lang/annotation/ElementType#TYPE_USE. +// ^^^^^ reference scip-java maven jdk 11 java/lang/annotation/Target# +// ^^^^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType# +// ^^^^^^^^ reference scip-java maven jdk 11 java/lang/annotation/ElementType#TYPE_USE. @interface TypeAnnotation { -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/TypeAnnotation# +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/TypeAnnotation# // display_name TypeAnnotation -// signature_documentation java @Target({ElementType.TYPE_USE})\n@interface TypeAnnotation +// signature_documentation java @Target\nabstract @interface TypeAnnotation implements Annotation // kind Interface -// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeAnnotation#integer(). +// relationship is_implementation scip-java maven jdk 11 java/lang/annotation/Annotation# +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeAnnotation#integer(). int integer() default 1; -// ^^^^^^^ definition semanticdb maven . . minimized/TypeAnnotation#integer(). +// ^^^^^^^ definition scip-java maven . . minimized/TypeAnnotation#integer(). // display_name integer // signature_documentation java public abstract int integer() // kind AbstractMethod -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeAnnotation#integer(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeAnnotation#integer(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/TypeAnnotation# +//⌃ enclosing_range_end scip-java maven . . minimized/TypeAnnotation# // FIXME(issue: GRAPH-1122): Definition range for T below is incorrect -//⌄ enclosing_range_start semanticdb maven . . minimized/ClassProcessed# -//⌄ enclosing_range_start semanticdb maven . . minimized/ClassProcessed#[T] +//⌄ enclosing_range_start scip-java maven . . minimized/ClassProcessed# +//⌄ enclosing_range_start scip-java maven . . minimized/ClassProcessed#[T] class ClassProcessed<@TypeAnnotation T extends Number> { -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ClassProcessed# +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ClassProcessed# // display_name ClassProcessed // signature_documentation java class ClassProcessed // kind Class -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ClassProcessed#[T] +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ClassProcessed#[T] // display_name T // signature_documentation java T extends Number // kind TypeParameter -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/TypeAnnotation# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/Number# +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/TypeAnnotation# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/Number# -// ⌄ enclosing_range_start semanticdb maven . . minimized/ClassProcessed#``(). +// ⌄ enclosing_range_start scip-java maven . . minimized/ClassProcessed#``(). public ClassProcessed() { -// ^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/ClassProcessed#``(). +// ^^^^^^^^^^^^^^ definition scip-java maven . . minimized/ClassProcessed#``(). // display_name // signature_documentation java public ClassProcessed() // kind Constructor // ⌄ enclosing_range_start local 0 String s = new @TypeAnnotation String(); -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# // ^ definition local 0 // display_name s // signature_documentation java String s -// enclosing_symbol semanticdb maven . . minimized/ClassProcessed#``(). +// enclosing_symbol scip-java maven . . minimized/ClassProcessed#``(). // kind Variable -// ^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/TypeAnnotation# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String#``(). +// ^^^^^^^^^^^^^^ reference scip-java maven . . minimized/TypeAnnotation# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# +// ^^^^^^ reference scip-java maven jdk 11 java/lang/String#``(). // ⌃ enclosing_range_end local 0 } -// ⌃ enclosing_range_end semanticdb maven . . minimized/ClassProcessed#``(). +// ⌃ enclosing_range_end scip-java maven . . minimized/ClassProcessed#``(). } -//⌃ enclosing_range_end semanticdb maven . . minimized/ClassProcessed# -//⌃ enclosing_range_end semanticdb maven . . minimized/ClassProcessed#[T] +//⌃ enclosing_range_end scip-java maven . . minimized/ClassProcessed# +//⌃ enclosing_range_end scip-java maven . . minimized/ClassProcessed#[T] diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeVariables.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeVariables.java index bda109668..9079ee038 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeVariables.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/TypeVariables.java @@ -1,129 +1,130 @@ package minimized; /** Example from https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.4 */ -//⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables# +//⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables# public class TypeVariables { -// ^^^^^^^^^^^^^ definition semanticdb maven . . minimized/TypeVariables# +// ^^^^^^^^^^^^^ definition scip-java maven . . minimized/TypeVariables# // display_name TypeVariables // signature_documentation java public class TypeVariables // kind Class // documentation Example from https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.4 -// ^^^^^^^^^^^^^ definition semanticdb maven . . minimized/TypeVariables#``(). +// ^^^^^^^^^^^^^ definition scip-java maven . . minimized/TypeVariables#``(). // display_name // signature_documentation java public TypeVariables() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#C# +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#C# static class C { -// ^ definition semanticdb maven . . minimized/TypeVariables#C# +// ^ definition scip-java maven . . minimized/TypeVariables#C# // display_name C // signature_documentation java static class C // kind Class -// ^ definition semanticdb maven . . minimized/TypeVariables#C#``(). +// ^ definition scip-java maven . . minimized/TypeVariables#C#``(). // display_name // signature_documentation java C() // kind Constructor -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#C#mCPublic(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#C#mCPublic(). public void mCPublic() {} -// ^^^^^^^^ definition semanticdb maven . . minimized/TypeVariables#C#mCPublic(). +// ^^^^^^^^ definition scip-java maven . . minimized/TypeVariables#C#mCPublic(). // display_name mCPublic // signature_documentation java public void mCPublic() // kind Method -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#C#mCPublic(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#C#mCPublic(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#C#mCProtected(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#C#mCProtected(). protected void mCProtected() {} -// ^^^^^^^^^^^ definition semanticdb maven . . minimized/TypeVariables#C#mCProtected(). +// ^^^^^^^^^^^ definition scip-java maven . . minimized/TypeVariables#C#mCProtected(). // display_name mCProtected // signature_documentation java protected void mCProtected() // kind Method -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#C#mCProtected(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#C#mCProtected(). -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#C#mCPackage(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#C#mCPackage(). void mCPackage() {} -// ^^^^^^^^^ definition semanticdb maven . . minimized/TypeVariables#C#mCPackage(). +// ^^^^^^^^^ definition scip-java maven . . minimized/TypeVariables#C#mCPackage(). // display_name mCPackage // signature_documentation java void mCPackage() // kind Method -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#C#mCPackage(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#C#mCPackage(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#C# +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#C# -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#I# +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#I# interface I { -// ^ definition semanticdb maven . . minimized/TypeVariables#I# +// ^ definition scip-java maven . . minimized/TypeVariables#I# // display_name I -// signature_documentation java interface I +// signature_documentation java abstract static interface I // kind Interface -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#I#mI(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#I#mI(). void mI(); -// ^^ definition semanticdb maven . . minimized/TypeVariables#I#mI(). +// ^^ definition scip-java maven . . minimized/TypeVariables#I#mI(). // display_name mI // signature_documentation java public abstract void mI() // kind AbstractMethod -// relationship is_reference is_implementation semanticdb maven . . minimized/TypeVariables#CT#mI(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#I#mI(). +// relationship is_reference is_implementation scip-java maven . . minimized/TypeVariables#CT#mI(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#I#mI(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#I# +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#I# -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#CT# +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#CT# static class CT extends C implements I { -// ^^ definition semanticdb maven . . minimized/TypeVariables#CT# +// ^^ definition scip-java maven . . minimized/TypeVariables#CT# // display_name CT -// signature_documentation java static class CT +// signature_documentation java static class CT extends C implements I // kind Class -// relationship is_implementation semanticdb maven . . minimized/TypeVariables#C# -// relationship is_implementation semanticdb maven . . minimized/TypeVariables#I# -// ^^ definition semanticdb maven . . minimized/TypeVariables#CT#``(). +// relationship is_implementation scip-java maven . . minimized/TypeVariables#C# +// relationship is_implementation scip-java maven . . minimized/TypeVariables#I# +// ^^ definition scip-java maven . . minimized/TypeVariables#CT#``(). // display_name // signature_documentation java CT() // kind Constructor -// ^ reference semanticdb maven . . minimized/TypeVariables#C# -// ^ reference semanticdb maven . . minimized/TypeVariables#I# -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#CT#mI(). +// ^ reference scip-java maven . . minimized/TypeVariables#C# +// ^ reference scip-java maven . . minimized/TypeVariables#I# +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#CT#mI(). public void mI() {} -// ^^ definition semanticdb maven . . minimized/TypeVariables#CT#mI(). +// ^^ definition scip-java maven . . minimized/TypeVariables#CT#mI(). // display_name mI // signature_documentation java public void mI() // kind Method -// relationship is_reference is_implementation semanticdb maven . . minimized/TypeVariables#I#mI(). -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#CT#mI(). +// relationship is_reference is_implementation scip-java maven . . minimized/TypeVariables#I#mI(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#CT#mI(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#CT# +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#CT# -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#app().[T] -// ⌄ enclosing_range_start semanticdb maven . . minimized/TypeVariables#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#app(). +// ⌄ enclosing_range_start scip-java maven . . minimized/TypeVariables#app().[T] // ⌄ enclosing_range_start local 0 public static void app(T t) { -// ^ definition semanticdb maven . . minimized/TypeVariables#app().[T] +// ^ definition scip-java maven . . minimized/TypeVariables#app().[T] // display_name T // signature_documentation java T extends C & I // kind TypeParameter -// ^ reference semanticdb maven . . minimized/TypeVariables#C# -// ^ reference semanticdb maven . . minimized/TypeVariables#I# -// ^^^ definition semanticdb maven . . minimized/TypeVariables#app(). +// ^ reference scip-java maven . . minimized/TypeVariables#C# +// ^ reference scip-java maven . . minimized/TypeVariables#I# +// ^^^ definition scip-java maven . . minimized/TypeVariables#app(). // display_name app // signature_documentation java public static void app(T t) // kind StaticMethod -// ^ reference semanticdb maven . . minimized/TypeVariables#app().[T] +// ^ reference scip-java maven . . minimized/TypeVariables#app().[T] // ^ definition local 0 // display_name t // signature_documentation java T t -// enclosing_symbol semanticdb maven . . minimized/TypeVariables#app(). +// enclosing_symbol scip-java maven . . minimized/TypeVariables#app(). +// kind Parameter // ⌃ enclosing_range_end local 0 t.mI(); // ^ reference local 0 -// ^^ reference semanticdb maven . . minimized/TypeVariables#I#mI(). +// ^^ reference scip-java maven . . minimized/TypeVariables#I#mI(). t.mCPublic(); // ^ reference local 0 -// ^^^^^^^^ reference semanticdb maven . . minimized/TypeVariables#C#mCPublic(). +// ^^^^^^^^ reference scip-java maven . . minimized/TypeVariables#C#mCPublic(). t.mCProtected(); // ^ reference local 0 -// ^^^^^^^^^^^ reference semanticdb maven . . minimized/TypeVariables#C#mCProtected(). +// ^^^^^^^^^^^ reference scip-java maven . . minimized/TypeVariables#C#mCProtected(). t.mCPackage(); // ^ reference local 0 -// ^^^^^^^^^ reference semanticdb maven . . minimized/TypeVariables#C#mCPackage(). +// ^^^^^^^^^ reference scip-java maven . . minimized/TypeVariables#C#mCPackage(). } -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#app().[T] -// ⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#app(). +// ⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables#app().[T] } -//⌃ enclosing_range_end semanticdb maven . . minimized/TypeVariables# +//⌃ enclosing_range_end scip-java maven . . minimized/TypeVariables# diff --git a/tests/snapshots/src/main/scala/tests/MinimizedSnapshotScipGenerator.scala b/tests/snapshots/src/main/scala/tests/MinimizedSnapshotScipGenerator.scala index b17dafe99..746e99435 100644 --- a/tests/snapshots/src/main/scala/tests/MinimizedSnapshotScipGenerator.scala +++ b/tests/snapshots/src/main/scala/tests/MinimizedSnapshotScipGenerator.scala @@ -44,6 +44,7 @@ class MinimizedSnapshotScipGenerator { sourceroot.toString(), "--output", scipOutput.toString, + "--use-scip-shards", "--targetroot", targetroot.toString() ) diff --git a/tests/snapshots/src/main/scala/tests/SemanticdbFile.scala b/tests/snapshots/src/main/scala/tests/SemanticdbFile.scala deleted file mode 100644 index c73c4c919..000000000 --- a/tests/snapshots/src/main/scala/tests/SemanticdbFile.scala +++ /dev/null @@ -1,49 +0,0 @@ -package tests - -import java.nio.file.Files - -import scala.meta.internal.io.FileIO -import scala.meta.io.AbsolutePath -import scala.meta.io.RelativePath - -import com.sourcegraph.semanticdb.Semanticdb.TextDocument -import com.sourcegraph.semanticdb.Semanticdb.TextDocuments - -case class SemanticdbFile( - sourceroot: AbsolutePath, - relativePath: RelativePath, - sourceDirectory: AbsolutePath, - targetroot: AbsolutePath -) { - def javaPath: AbsolutePath = sourceroot.resolve(relativePath) - def semanticdbPath: AbsolutePath = targetroot - .resolve("META-INF") - .resolve("semanticdb") - .resolve(relativePath.toString() + ".semanticdb") - def textDocument: TextDocument = { - val docs = TextDocuments.parseFrom(Files.readAllBytes(semanticdbPath.toNIO)) - if (docs.getDocumentsCount == 0) - TextDocument.newBuilder().build() - else - docs.getDocuments(0) - } -} - -object SemanticdbFile { - def fromDirectory( - sourceDirectory: AbsolutePath, - sourceroot: AbsolutePath, - targetroot: AbsolutePath - ): Seq[SemanticdbFile] = { - FileIO - .listAllFilesRecursively(sourceDirectory) - .map { file => - SemanticdbFile( - sourceroot, - file.toRelative(sourceroot), - sourceDirectory, - targetroot - ) - } - } -} diff --git a/tests/unit/src/main/scala/tests/CompileResult.scala b/tests/unit/src/main/scala/tests/CompileResult.scala index 21e76f470..6c91caa70 100644 --- a/tests/unit/src/main/scala/tests/CompileResult.scala +++ b/tests/unit/src/main/scala/tests/CompileResult.scala @@ -1,28 +1,23 @@ package tests -import com.sourcegraph.semanticdb.Semanticdb +import scala.jdk.CollectionConverters._ + +import org.scip_code.scip.Document +import org.scip_code.scip.Index case class CompileResult( byteCode: Array[Byte], stdout: String, - textDocuments: Semanticdb.TextDocuments, + documents: List[Document], isSuccess: Boolean ) { - def textDocument: Option[Semanticdb.TextDocument] = { - Option.when(textDocuments.getDocumentsCount() > 0) { - textDocuments.getDocuments(0) - } - } + def document: Option[Document] = documents.headOption def merge(other: CompileResult): CompileResult = { copy( byteCode = this.byteCode ++ other.byteCode, stdout = this.stdout ++ other.stdout, - textDocuments = this - .textDocuments - .toBuilder - .addAllDocuments(other.textDocuments.getDocumentsList) - .build(), + documents = this.documents ++ other.documents, isSuccess = this.isSuccess && other.isSuccess ) } @@ -32,7 +27,11 @@ object CompileResult { val empty: CompileResult = CompileResult( Array.emptyByteArray, "", - Semanticdb.TextDocuments.getDefaultInstance, + Nil, isSuccess = true ) + + /** Parses a `*.scip` shard and returns its documents. */ + def documentsFromShard(bytes: Array[Byte]): List[Document] = + Index.parseFrom(bytes).getDocumentsList.asScala.toList } diff --git a/tests/unit/src/main/scala/tests/TestCompiler.scala b/tests/unit/src/main/scala/tests/TestCompiler.scala index a4ea44db7..d0e9f0f4c 100644 --- a/tests/unit/src/main/scala/tests/TestCompiler.scala +++ b/tests/unit/src/main/scala/tests/TestCompiler.scala @@ -13,7 +13,7 @@ import scala.meta.Input import scala.meta.internal.io.FileIO import scala.meta.io.AbsolutePath -import com.sourcegraph.semanticdb.Semanticdb +import org.scip_code.scip.Document object TestCompiler { val PROCESSOR_PATH = System.getProperty("java.class.path") @@ -23,7 +23,7 @@ class TestCompiler( val classpath: String, val javacOptions: List[String], val targetroot: Path, - val sourceroot: Path = Files.createTempDirectory("semanticdb-javac") + val sourceroot: Path = Files.createTempDirectory("scip-javac") ) { private val compiler = ToolProvider.getSystemJavaCompiler @@ -37,10 +37,18 @@ class TestCompiler( this(TestCompiler.PROCESSOR_PATH, Nil, targetroot) } + /** + * Compiles every `*.java` file under [[dir]] with the SCIP shard plugin + * attached. + */ def compileSemanticdbDirectory(dir: Path): CompileResult = { compileSemanticdb(inputsFromDirectory(dir)) } + /** + * Compiles [[inputs]] with the SCIP shard plugin and reads the shards back + * from disk. + */ def compileSemanticdb(inputs: Seq[Input.VirtualFile]): CompileResult = { compile( inputs, @@ -94,23 +102,19 @@ class TestCompiler( var bytecode = new Array[Byte](0) if (!fileManager.compiled.isEmpty) bytecode = fileManager.compiled.iterator.next.getCompiledBinaries - val textDocuments = Semanticdb.TextDocuments.newBuilder - inputs.map { input => - val outputPath = targetroot + val documents = ListBuffer.empty[Document] + inputs.foreach { input => + val shardPath = targetroot .resolve("META-INF") - .resolve("semanticdb") - .resolve(input.path + ".semanticdb") - if (Files.isRegularFile(outputPath)) { - textDocuments.addAllDocuments( - Semanticdb - .TextDocuments - .parseFrom(Files.readAllBytes(outputPath)) - .getDocumentsList - ) + .resolve("scip") + .resolve(input.path + ".scip") + if (Files.isRegularFile(shardPath)) { + documents ++= + CompileResult.documentsFromShard(Files.readAllBytes(shardPath)) } } val stdout = output.toString - CompileResult(bytecode, stdout, textDocuments.build(), isSuccess) + CompileResult(bytecode, stdout, documents.toList, isSuccess) } private def inputsFromDirectory(dir: Path): Seq[Input.VirtualFile] = { diff --git a/tests/unit/src/test/scala/tests/GeneratedConstructorSuite.scala b/tests/unit/src/test/scala/tests/GeneratedConstructorSuite.scala index d371838e5..abd01c30f 100644 --- a/tests/unit/src/test/scala/tests/GeneratedConstructorSuite.scala +++ b/tests/unit/src/test/scala/tests/GeneratedConstructorSuite.scala @@ -2,9 +2,9 @@ package tests import scala.meta.inputs.Input -import com.sourcegraph.semanticdb.Semanticdb.TextDocument import munit.FunSuite import munit.TestOptions +import org.scip_code.scip.Document class GeneratedConstructorSuite extends FunSuite with TempDirectories { val targetroot = new DirectoryFixture() @@ -15,7 +15,7 @@ class GeneratedConstructorSuite extends FunSuite with TempDirectories { def doSomething( options: TestOptions, original: String, - fn: (TextDocument, List[String]) => Unit, + fn: (Document, List[String]) => Unit, qualifiedClassName: String = "example.Test" )(implicit loc: munit.Location): Unit = { test(options) { diff --git a/tests/unit/src/test/scala/tests/JavacClassesDirectorySuite.scala b/tests/unit/src/test/scala/tests/JavacClassesDirectorySuite.scala index 4a3d51155..6674ba015 100644 --- a/tests/unit/src/test/scala/tests/JavacClassesDirectorySuite.scala +++ b/tests/unit/src/test/scala/tests/JavacClassesDirectorySuite.scala @@ -36,12 +36,12 @@ class JavacClassesDirectorySuite extends FunSuite with TempDirectories { ) ) assert(clue(compileResult).isSuccess) - val semanticdbPath = Paths + val shardPath = Paths .get("META-INF") - .resolve("semanticdb") + .resolve("scip") .resolve("example") - .resolve("Example.java.semanticdb") - assert(Files.isRegularFile(clue(sourceroot().resolve(semanticdbPath)))) + .resolve("Example.java.scip") + assert(Files.isRegularFile(clue(sourceroot().resolve(shardPath)))) } } diff --git a/tests/unit/src/test/scala/tests/OverridesSuite.scala b/tests/unit/src/test/scala/tests/OverridesSuite.scala index 15b069aff..bdb2b1e37 100644 --- a/tests/unit/src/test/scala/tests/OverridesSuite.scala +++ b/tests/unit/src/test/scala/tests/OverridesSuite.scala @@ -1,10 +1,10 @@ package tests -import java.util.stream.Collectors +import scala.jdk.CollectionConverters._ import scala.meta.Input -import com.sourcegraph.scip_semanticdb.Symtab +import com.sourcegraph.semanticdb_javac.ScipSymbols import munit.FunSuite import munit.TestOptions @@ -26,16 +26,37 @@ class OverridesSuite extends FunSuite with TempDirectories { val relativePath = "example.Parent".replace('.', '/') + ".java" val input = Input.VirtualFile(relativePath, source) val result = compiler.compileSemanticdb(List(input)) - val symtab = new Symtab(result.textDocument.orNull) + val document = result.document.getOrElse(fail("no SCIP document emitted")) + val placeholderSymbol = ScipSymbols.PLACEHOLDER_PREFIX + extractSymbol + val info = document + .getSymbolsList + .asScala + .find(_.getSymbol == placeholderSymbol) + .getOrElse( + fail( + s"symbol $extractSymbol not found in document; symbols = " + + document + .getSymbolsList + .asScala + .map(_.getSymbol) + .mkString("\n ", "\n ", "") + ) + ) + + val obtainedSymbols = info + .getRelationshipsList + .asScala + .filter(_.getIsImplementation) + .map(_.getSymbol) + .map { sym => + if (sym.startsWith(ScipSymbols.PLACEHOLDER_PREFIX)) + sym.substring(ScipSymbols.PLACEHOLDER_PREFIX.length) + else + sym + } val expectedSyms = expectedSymbols.mkString("\n") - val syms = symtab - .symbols - .get(extractSymbol) - .getOverriddenSymbolsList - .stream - .collect(Collectors.joining("\n")) - assertNoDiff(syms, expectedSyms) + assertNoDiff(obtainedSymbols.mkString("\n"), expectedSyms) } } diff --git a/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala b/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala new file mode 100644 index 000000000..f0b07c8c4 --- /dev/null +++ b/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala @@ -0,0 +1,92 @@ +package tests + +import java.nio.file.Files +import java.util.Collections + +import scala.jdk.CollectionConverters._ + +import scala.meta.Input + +import com.sourcegraph.scip_semanticdb.ScipSemanticdbOptions +import com.sourcegraph.scip_semanticdb.ScipSemanticdbReporter +import com.sourcegraph.scip_semanticdb.ScipShardAggregator +import munit.FunSuite +import org.scip_code.scip.Index +import org.scip_code.scip.ToolInfo + +// End-to-end: compile Java, aggregate the resulting shards, and assert the final index uses the +// scip-java symbol scheme. +class ScipAggregationSuite extends FunSuite { + + private val source = Input.VirtualFile( + "example/Foo.java", + """package example; + | + |public class Foo { + | public int bar() { return 1; } + |} + |""".stripMargin + ) + + test("aggregator produces a scip-java index from compiler shards") { + val targetroot = Files.createTempDirectory("scip-agg-target-") + val sourceroot = Files.createTempDirectory("scip-agg-source-") + val compiler = + new TestCompiler(TestCompiler.PROCESSOR_PATH, Nil, targetroot, sourceroot) + val result = compiler.compile( + Seq(source), + Seq( + s"-Xplugin:semanticdb -text:on -sourceroot:$sourceroot -targetroot:$targetroot" + ) + ) + assert(result.isSuccess, s"javac failed:\n${result.stdout}") + + val output = Files.createTempFile("scip-agg-out-", ".scip") + val options = + new ScipSemanticdbOptions( + Collections.singletonList(targetroot), + output, + sourceroot, + new ScipSemanticdbReporter() {}, + ToolInfo.newBuilder().setName("scip-java").setVersion("test").build(), + false, + Collections.emptyList(), + true, + false, + false + ) + + ScipShardAggregator.run(options) + + // SCIP streams concatenate multiple Index messages; parsing the bytes as one Index merges + // them (last-write-wins for singular fields, concatenation for repeated fields), giving us + // the full aggregated view. + val bytes = Files.readAllBytes(output) + val index = Index.parseFrom(bytes) + + assert(index.hasMetadata, s"expected metadata in index: $index") + assertEquals(index.getMetadata.getToolInfo.getName, "scip-java") + + val docs = index.getDocumentsList.asScala + assert(docs.nonEmpty, "expected at least one document in aggregated index") + val doc = docs.find(_.getRelativePath == "example/Foo.java").get + + // Every symbol/occurrence must be in final form: local or scip-java. + doc + .getSymbolsList + .asScala + .foreach { info => + val s = info.getSymbol + val ok = s.startsWith("scip-java maven ") || s.startsWith("local ") + assert(ok, s"symbol not in final form: $s") + } + doc + .getOccurrencesList + .asScala + .foreach { occ => + val s = occ.getSymbol + val ok = s.startsWith("scip-java maven ") || s.startsWith("local ") + assert(ok, s"occurrence not in final form: $s") + } + } +} diff --git a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala new file mode 100644 index 000000000..3176fee71 --- /dev/null +++ b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala @@ -0,0 +1,109 @@ +package tests + +import java.nio.file.Files + +import scala.jdk.CollectionConverters._ + +import scala.meta.Input + +import com.sourcegraph.semanticdb_javac.ScipSymbols +import munit.FunSuite +import org.scip_code.scip.Index +import org.scip_code.scip.SymbolInformation + +/** + * Asserts the javac plug-in emits a `*.scip` shard under `META-INF/scip/...` + * and no SemanticDB. + */ +class ScipShardEmissionSuite extends FunSuite { + + private val source = Input.VirtualFile( + "example/Foo.java", + """package example; + | + |public class Foo { + | public int bar() { + | int x = 1; + | return x; + | } + |} + |""".stripMargin + ) + + test("compiler emits a parseable SCIP shard and no SemanticDB file") { + val targetroot = Files.createTempDirectory("scip-shard-emission-") + val sourceroot = Files.createTempDirectory("scip-shard-emission-src-") + val compiler = + new TestCompiler(TestCompiler.PROCESSOR_PATH, Nil, targetroot, sourceroot) + val result = compiler.compile( + Seq(source), + Seq( + s"-Xplugin:semanticdb -text:on -sourceroot:$sourceroot -targetroot:$targetroot" + ) + ) + assert(result.isSuccess, s"javac failed:\n${result.stdout}") + + val semanticdbPath = targetroot.resolve( + "META-INF/semanticdb/example/Foo.java.semanticdb" + ) + val scipPath = targetroot.resolve("META-INF/scip/example/Foo.java.scip") + + assert( + !Files.exists(semanticdbPath), + s"unexpected semanticdb $semanticdbPath" + ) + assert(Files.isRegularFile(scipPath), s"missing $scipPath") + + val shard = Index.parseFrom(Files.readAllBytes(scipPath)) + assertEquals(shard.getDocumentsCount, 1) + val doc = shard.getDocuments(0) + assertEquals(doc.getRelativePath, "example/Foo.java") + assertEquals(doc.getLanguage, "java") + + val symbols = doc.getSymbolsList.asScala + assert(symbols.nonEmpty, "expected at least one symbol") + + // Globals must use the placeholder prefix; locals must use "local N". + symbols.foreach { info => + val s = info.getSymbol + val ok = + s.startsWith(ScipSymbols.PLACEHOLDER_PREFIX) || s.startsWith("local ") + assert(ok, s"unexpected symbol form: $s") + } + + val occurrences = doc.getOccurrencesList.asScala + assert(occurrences.nonEmpty, "expected at least one occurrence") + occurrences.foreach { occ => + val s = occ.getSymbol + val ok = + s.startsWith(ScipSymbols.PLACEHOLDER_PREFIX) || s.startsWith("local ") + assert(ok, s"unexpected occurrence symbol: $s") + } + + val withSignatures = symbols.filter { info => + info.hasSignatureDocumentation && + info.getSignatureDocumentation.getLanguage == "java" && + info.getSignatureDocumentation.getText.nonEmpty + } + assert( + withSignatures.nonEmpty, + s"expected signature docs; got: ${symbols.mkString("\n")}" + ) + + val fooClass = symbols.find { info => + info.getKind == SymbolInformation.Kind.Class && + info.getDisplayName == "Foo" + } + assert(fooClass.isDefined, "expected Foo class symbol") + val text = fooClass.get.getSignatureDocumentation.getText + assert(text.contains("class Foo"), s"unexpected signature: $text") + + val barMethod = symbols.find { info => + info.getKind == SymbolInformation.Kind.Method && + info.getDisplayName == "bar" + } + assert(barMethod.isDefined, "expected bar method symbol") + val barText = barMethod.get.getSignatureDocumentation.getText + assert(barText.contains("int bar("), s"unexpected bar signature: $barText") + } +} diff --git a/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala b/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala new file mode 100644 index 000000000..2b856c01c --- /dev/null +++ b/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala @@ -0,0 +1,74 @@ +package tests + +import java.nio.file.Paths +import java.util.Collections +import java.util.Optional + +import com.sourcegraph.scip_semanticdb.Package +import com.sourcegraph.scip_semanticdb.PackageTable +import com.sourcegraph.scip_semanticdb.ScipSemanticdbOptions +import com.sourcegraph.scip_semanticdb.ScipSemanticdbReporter +import com.sourcegraph.scip_semanticdb.SymbolRewriter +import com.sourcegraph.semanticdb_javac.ScipSymbols +import munit.FunSuite +import org.scip_code.scip.ToolInfo + +class ScipSymbolsSuite extends FunSuite { + + test("global symbol gets placeholder prefix") { + assertEquals( + ScipSymbols.fromSemanticdbSymbol("com/example/Foo#bar()."), + ". . . . com/example/Foo#bar()." + ) + } + + test("local symbol gets canonical SCIP form") { + assertEquals(ScipSymbols.fromSemanticdbSymbol("local42"), "local 42") + } + + test("empty / null symbol stays empty") { + assertEquals(ScipSymbols.fromSemanticdbSymbol(""), "") + assertEquals(ScipSymbols.fromSemanticdbSymbol(null), "") + } + + // PackageTable that always returns no package; isolates SymbolRewriter from classpath. + private lazy val emptyPackages: PackageTable = + new PackageTable( + new ScipSemanticdbOptions( + Collections.emptyList(), + Paths.get("/tmp"), + Paths.get("/tmp"), + new ScipSemanticdbReporter() {}, + ToolInfo.newBuilder().setName("scip-java").setVersion("test").build(), + false, + Collections.emptyList(), + false, + true, + false + ) + ) { + override def packageForSymbol(symbol: String): Optional[Package] = + Optional.empty() + } + + test("SymbolRewriter leaves locals and final symbols alone") { + val rewriter = new SymbolRewriter(emptyPackages) + assertEquals(rewriter.rewrite("local 1"), "local 1") + assertEquals( + rewriter.rewrite("scip-java maven g a v com/example/Foo#"), + "scip-java maven g a v com/example/Foo#" + ) + assertEquals(rewriter.rewrite(""), "") + assertEquals(rewriter.rewrite(null), null) + } + + test( + "SymbolRewriter falls back to empty package when no metadata available" + ) { + val rewriter = new SymbolRewriter(emptyPackages) + assertEquals( + rewriter.rewrite(". . . . com/example/Foo#bar()."), + "scip-java maven . . com/example/Foo#bar()." + ) + } +} diff --git a/tests/unit/src/test/scala/tests/SnapshotCommandSuite.scala b/tests/unit/src/test/scala/tests/SnapshotCommandSuite.scala index aa4a89fb0..2c359d4b1 100644 --- a/tests/unit/src/test/scala/tests/SnapshotCommandSuite.scala +++ b/tests/unit/src/test/scala/tests/SnapshotCommandSuite.scala @@ -57,37 +57,38 @@ class SnapshotCommandSuite extends MopedSuite(ScipJava.app) { | /** | * Sample class | */ - |//⌄ enclosing_range_start semanticdb maven . . main/Sample# + |//⌄ enclosing_range_start scip-java maven . . main/Sample# | public class Sample { - |// ^^^^^^ definition semanticdb maven . . main/Sample# + |// ^^^^^^ definition scip-java maven . . main/Sample# |// display_name Sample |// signature_documentation java public class Sample |// kind Class |// documentation Sample class\n - |// ^^^^^^ definition semanticdb maven . . main/Sample#``(). + |// ^^^^^^ definition scip-java maven . . main/Sample#``(). |// display_name |// signature_documentation java public Sample() |// kind Constructor | /** | * Main application entry point | */ - |// ⌄ enclosing_range_start semanticdb maven . . main/Sample#main(). + |// ⌄ enclosing_range_start scip-java maven . . main/Sample#main(). |// ⌄ enclosing_range_start local 0 | public static void main(String[] asdf) {} - |// ^^^^ definition semanticdb maven . . main/Sample#main(). + |// ^^^^ definition scip-java maven . . main/Sample#main(). |// display_name main |// signature_documentation java public static void main(String[] asdf) |// kind StaticMethod |// documentation Main application entry point\n - |// ^^^^^^ reference semanticdb maven jdk 11 java/lang/String# + |// ^^^^^^ reference scip-java maven jdk 11 java/lang/String# |// ^^^^ definition local 0 |// display_name asdf |// signature_documentation java String[] asdf - |// enclosing_symbol semanticdb maven . . main/Sample#main(). + |// enclosing_symbol scip-java maven . . main/Sample#main(). + |// kind Parameter |// ⌃ enclosing_range_end local 0 - |// ⌃ enclosing_range_end semanticdb maven . . main/Sample#main(). + |// ⌃ enclosing_range_end scip-java maven . . main/Sample#main(). | } - |//⌃ enclosing_range_end semanticdb maven . . main/Sample# + |//⌃ enclosing_range_end scip-java maven . . main/Sample# |""".stripMargin ) } diff --git a/tests/unit/src/test/scala/tests/TargetedSuite.scala b/tests/unit/src/test/scala/tests/TargetedSuite.scala index 284804738..ab01eef11 100644 --- a/tests/unit/src/test/scala/tests/TargetedSuite.scala +++ b/tests/unit/src/test/scala/tests/TargetedSuite.scala @@ -7,10 +7,9 @@ import scala.meta.Input import scala.meta.Position import scala.meta.internal.inputs._ -import com.sourcegraph.semanticdb.Semanticdb -import com.sourcegraph.semanticdb.Semanticdb.TextDocument import munit.FunSuite import munit.TestOptions +import org.scip_code.scip.Document @nowarn("msg=match may not be exhaustive") class TargetedSuite extends FunSuite with TempDirectories { @@ -20,10 +19,19 @@ class TargetedSuite extends FunSuite with TempDirectories { override def munitFixtures: Seq[Fixture[_]] = super.munitFixtures ++ List(targetroot) + /** Encodes a position the same way SCIP encodes a single-line range. */ + private def asScipRange(pos: Position): java.util.List[Integer] = { + if (pos.startLine == pos.endLine) + List[Integer](pos.startLine, pos.startColumn, pos.endColumn).asJava + else + List[Integer](pos.startLine, pos.startColumn, pos.endLine, pos.endColumn) + .asJava + } + def checkDoc( options: TestOptions, original: String, - fn: (TextDocument, List[String]) => Unit, + fn: (Document, List[String]) => Unit, qualifiedClassName: String = "example.Test" )(implicit loc: munit.Location): Unit = { test(options) { @@ -44,18 +52,11 @@ class TargetedSuite extends FunSuite with TempDirectories { }) .toList val result = compiler.compileSemanticdb(List(input)) - val textDocument = result.textDocument.orNull - val occurrences = textDocument.getOccurrencesList.asScala.toList + val document = result.document.getOrElse(fail("no SCIP document emitted")) + val occurrences = document.getOccurrencesList.asScala.toList val symbols: List[String] = positions.map { pos => - val posRange = Semanticdb - .Range - .newBuilder() - .setStartLine(pos.startLine) - .setStartCharacter(pos.startColumn) - .setEndLine(pos.endLine) - .setEndCharacter(pos.endColumn) - .build() - val matchingOccurrences = occurrences.filter(_.getRange == posRange) + val expected = asScipRange(pos) + val matchingOccurrences = occurrences.filter(_.getRangeList == expected) matchingOccurrences match { case Nil => fail( @@ -63,7 +64,7 @@ class TargetedSuite extends FunSuite with TempDirectories { "error", s"no symbol occurrence for this position." ), - clues(occurrences, posRange) + clues(occurrences, expected) ) case sym :: Nil => sym.getSymbol @@ -73,11 +74,11 @@ class TargetedSuite extends FunSuite with TempDirectories { "error", s"ambiguous symbols for this position" ), - clues(many, occurrences, posRange) + clues(many, occurrences, expected) ) } } - fn(textDocument, symbols) + fn(document, symbols) } } @@ -98,10 +99,21 @@ class TargetedSuite extends FunSuite with TempDirectories { |} |""".stripMargin, { case (_, List(a, b, c, d)) => - assertNoDiff(a, "java/lang/String#lastIndexOf().") - assertNoDiff(b, "java/lang/String#lastIndexOf(+1).") - assertNoDiff(c, "java/lang/String#lastIndexOf(+2).") - assertNoDiff(d, "java/lang/String#lastIndexOf(+3).") + assertNoDiff(stripPlaceholder(a), "java/lang/String#lastIndexOf().") + assertNoDiff(stripPlaceholder(b), "java/lang/String#lastIndexOf(+1).") + assertNoDiff(stripPlaceholder(c), "java/lang/String#lastIndexOf(+2).") + assertNoDiff(stripPlaceholder(d), "java/lang/String#lastIndexOf(+3).") } ) + + /** + * Strips the placeholder prefix that compiler-emitted shards use for globals. + */ + private def stripPlaceholder(symbol: String): String = { + import com.sourcegraph.semanticdb_javac.ScipSymbols.PLACEHOLDER_PREFIX + if (symbol.startsWith(PLACEHOLDER_PREFIX)) + symbol.substring(PLACEHOLDER_PREFIX.length) + else + symbol + } }