From fc86740ce5469e6d232f3c9c142b880a96a36240 Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 13:48:30 +0200 Subject: [PATCH 1/8] PR1 (M1+M2): Add passive SCIP shard infrastructure and opt-in dual emission First two milestones of dropping the intermediate SemanticDB step in favour of direct SCIP shard output from the Java compiler plugin. Adds, with no behaviour change in the default config: semanticdb-javac: - ScipSymbols: helper that maps SemanticDB symbol strings to SCIP symbol strings. Globals get the '. . . . ' placeholder prefix that the aggregator later rewrites into 'scip-java maven g a v ...'. Locals are normalised to the canonical 'local N' form. - ScipShardWriter: write-or-merge helper for *.scip shards that deduplicates documents/symbols/occurrences across compiler rounds. - ScipShardFromSemanticdb: intermediate translator that converts the in-memory Semanticdb.TextDocument into a single-document Scip.Index shard. To be replaced by a direct-from-AST ScipVisitor in Milestone 3. - SemanticdbJavacOptions: new -emit-scip:on|off flag (default off). - SemanticdbTaskListener: when -emit-scip:on is set, also writes a *.scip shard under META-INF/scip/ alongside the existing *.semanticdb file, reusing the already-built TextDocument. scip-semanticdb: - ScipShardWalker: recursively collects *.scip shards under the configured targetroots, mirroring SemanticdbWalker. - SymbolRewriter: rewrites placeholder global symbols into the final 'scip-java maven ...' form using PackageTable. Locals and already rewritten symbols pass through unchanged. build.sbt: - javacPlugin now depends on scipProto so the plugin can emit Scip.* protobuf messages directly. - Discard top-level Bazel BUILD files from fat-jar merge so the new scipProto resources don't collide with semanticdb-java. tests/unit: - ScipSymbolsSuite: unit tests for ScipSymbols and SymbolRewriter, including the local/global discrimination and Package.EMPTY fallback. - ScipShardEmissionSuite: end-to-end test that drives javac with the semanticdb plugin and -emit-scip:on, then parses the produced Scip.Index shard to assert the document layout and that every emitted symbol either uses the placeholder prefix or is a 'local N'. All 29 unit tests pass. --- build.sbt | 7 +- .../scip_semanticdb/ScipShardWalker.java | 55 +++++ .../scip_semanticdb/SymbolRewriter.java | 58 ++++++ .../ScipShardFromSemanticdb.java | 189 ++++++++++++++++++ .../semanticdb_javac/ScipShardWriter.java | 119 +++++++++++ .../semanticdb_javac/ScipSymbols.java | 57 ++++++ .../SemanticdbJavacOptions.java | 11 + .../SemanticdbTaskListener.java | 53 +++++ .../scala/tests/ScipShardEmissionSuite.scala | 90 +++++++++ .../test/scala/tests/ScipSymbolsSuite.scala | 94 +++++++++ 10 files changed, 732 insertions(+), 1 deletion(-) 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/ScipShardFromSemanticdb.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java 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 839157bd1..4df7d8f07 100644 --- a/build.sbt +++ b/build.sbt @@ -154,7 +154,7 @@ lazy val javacPlugin = project .inAll ) ) - .dependsOn(semanticdb) + .dependsOn(semanticdb, scipProto) lazy val scipProto = project .in(file("scip-java-proto")) @@ -693,6 +693,11 @@ lazy val fatjarPackageSettings = List[Def.Setting[_]]( MergeStrategy.discard case PathList("META-INF", "versions", "9", "module-info.class") => MergeStrategy.discard + // Bazel BUILD files live next to *.proto sources in our subprojects; they are + // not needed at runtime and would conflict when multiple proto modules are + // merged into the same fat jar. + case PathList("BUILD") => + MergeStrategy.discard case x => val oldStrategy = (assembly / assemblyMergeStrategy).value oldStrategy(x) 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..7122969fe --- /dev/null +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardWalker.java @@ -0,0 +1,55 @@ +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; + +/** + * A file visitor that recursively collects all SCIP shard files ({@code *.scip}) under the + * configured targetroots. + */ +public class ScipShardWalker extends SimpleFileVisitor { + private final ArrayList result; + private final ScipSemanticdbOptions options; + private final PathMatcher scipPattern = FileSystems.getDefault().getPathMatcher("glob:**.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/SymbolRewriter.java b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/SymbolRewriter.java new file mode 100644 index 000000000..227ffdcd1 --- /dev/null +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/SymbolRewriter.java @@ -0,0 +1,58 @@ +package com.sourcegraph.scip_semanticdb; + +/** + * Rewrites placeholder SCIP global symbols emitted by the compiler plugin into their final form. + * + *

The compiler plugin does not know the Maven coordinates ({@code groupId:artifactId:version}) + * of the source it is compiling, so it emits global symbols with the sentinel prefix {@code ". . . + * . "}. The aggregator resolves the appropriate coordinates via {@link PackageTable} and rewrites + * those symbols to the final {@code "scip-java"} scheme. + * + *

{@code local N} symbols are passed through unchanged. + */ +public final class SymbolRewriter { + + /** + * Sentinel prefix used by the compiler plugin for global symbols whose coordinates are not yet + * known. + */ + public static final String PLACEHOLDER_PREFIX = ". . . . "; + + /** SCIP scheme used for symbols produced by scip-java. */ + public static final String SCIP_JAVA_SCHEME = "scip-java"; + + private final PackageTable packages; + + public SymbolRewriter(PackageTable packages) { + this.packages = packages; + } + + /** + * Returns {@code true} if {@code symbol} is a placeholder global emitted by the compiler plugin. + */ + public static boolean isPlaceholderGlobal(String symbol) { + return symbol != null && symbol.startsWith(PLACEHOLDER_PREFIX); + } + + /** + * Returns {@code true} if {@code symbol} is a SCIP local symbol of the form {@code "local N"}. + */ + public static boolean isLocal(String symbol) { + return symbol != null && symbol.startsWith("local "); + } + + /** + * Rewrites a placeholder global symbol into its final form using the appropriate package + * coordinates from {@link PackageTable}. Local symbols and already-rewritten symbols are returned + * unchanged. + */ + 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/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardFromSemanticdb.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardFromSemanticdb.java new file mode 100644 index 000000000..97dfc26c8 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardFromSemanticdb.java @@ -0,0 +1,189 @@ +package com.sourcegraph.semanticdb_javac; + +import com.sourcegraph.Scip; +import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation; +import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation.Kind; +import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation.Property; +import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence; +import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence.Role; + +import java.util.ArrayList; +import java.util.List; + +/** + * Converts an in-memory {@link Semanticdb.TextDocument} into a single-document {@link Scip.Index} + * shard. + * + *

Global SemanticDB symbols are rewritten via {@link ScipSymbols#fromSemanticdbSymbol(String)} + * to use the {@code ". . . . "} placeholder scheme expected by the aggregator. Local symbols are + * normalized to the SCIP {@code "local N"} form. + * + *

This is an intermediate stepping stone: a future {@code ScipVisitor} will build {@link + * Scip.Document} values directly from the javac AST, removing the need for this conversion. + */ +public final class ScipShardFromSemanticdb { + + private ScipShardFromSemanticdb() {} + + /** Builds a single-document {@link Scip.Index} shard from {@code doc}. */ + public static Scip.Index buildShard(Semanticdb.TextDocument doc, String relativePath) { + Scip.Document.Builder document = + Scip.Document.newBuilder() + .setRelativePath(relativePath) + .setLanguage(scipLanguage(doc.getLanguage())); + + for (SymbolOccurrence occ : doc.getOccurrencesList()) { + if (occ.getSymbol().isEmpty()) continue; + document.addOccurrences(toScipOccurrence(occ)); + } + + for (SymbolInformation info : doc.getSymbolsList()) { + if (info.getSymbol().isEmpty()) continue; + document.addSymbols(toScipSymbolInformation(info)); + } + + return Scip.Index.newBuilder().addDocuments(document).build(); + } + + private static String scipLanguage(Semanticdb.Language lang) { + switch (lang) { + case JAVA: + return Scip.Language.Java.name(); + case KOTLIN: + return Scip.Language.Kotlin.name(); + case SCALA: + return Scip.Language.Scala.name(); + default: + return ""; + } + } + + private static Scip.Occurrence toScipOccurrence(SymbolOccurrence occ) { + Scip.Occurrence.Builder builder = + Scip.Occurrence.newBuilder() + .addAllRange(scipRange(occ.getRange())) + .setSymbol(ScipSymbols.fromSemanticdbSymbol(occ.getSymbol())) + .setSymbolRoles(scipRoles(occ.getRole())); + if (occ.hasEnclosingRange()) { + builder.addAllEnclosingRange(scipRange(occ.getEnclosingRange())); + } + return builder.build(); + } + + private static int scipRoles(Role role) { + if (role == Role.DEFINITION || role == Role.SYNTHETIC_DEFINITION) { + return Scip.SymbolRole.Definition_VALUE; + } + return 0; + } + + private static List scipRange(Semanticdb.Range range) { + List result = new ArrayList<>(4); + result.add(range.getStartLine()); + result.add(range.getStartCharacter()); + if (range.getStartLine() == range.getEndLine()) { + result.add(range.getEndCharacter()); + } else { + result.add(range.getEndLine()); + result.add(range.getEndCharacter()); + } + return result; + } + + private static Scip.SymbolInformation toScipSymbolInformation(SymbolInformation info) { + Scip.SymbolInformation.Builder builder = + Scip.SymbolInformation.newBuilder() + .setSymbol(ScipSymbols.fromSemanticdbSymbol(info.getSymbol())) + .setDisplayName(info.getDisplayName()) + .setKind(scipKind(info)); + + if (!info.getEnclosingSymbol().isEmpty()) { + builder.setEnclosingSymbol(ScipSymbols.fromSemanticdbSymbol(info.getEnclosingSymbol())); + } + + for (int i = 0; i < info.getOverriddenSymbolsCount(); i++) { + String overridden = info.getOverriddenSymbols(i); + if (overridden.isEmpty()) continue; + if (isIgnoredOverriddenSymbol(overridden)) continue; + builder.addRelationships( + Scip.Relationship.newBuilder() + .setSymbol(ScipSymbols.fromSemanticdbSymbol(overridden)) + .setIsImplementation(true) + .setIsReference(supportsReferenceRelationship(info))); + } + + String documentation = info.getDocumentation().getMessage(); + if (!documentation.isEmpty()) { + builder.addDocumentation(documentation); + } + + return builder.build(); + } + + private static boolean isIgnoredOverriddenSymbol(String symbol) { + return symbol.equals("java/lang/Object#"); + } + + private static boolean supportsReferenceRelationship(SymbolInformation info) { + switch (info.getKind()) { + case INTERFACE: + case TYPE: + case CLASS: + case OBJECT: + case PACKAGE_OBJECT: + return false; + default: + return true; + } + } + + private static Scip.SymbolInformation.Kind scipKind(SymbolInformation info) { + Kind kind = info.getKind(); + int properties = info.getProperties(); + boolean isStatic = (properties & Property.STATIC_VALUE) > 0; + boolean isAbstract = (properties & Property.ABSTRACT_VALUE) > 0; + boolean isEnum = (properties & Property.ENUM_VALUE) > 0; + + switch (kind) { + case CLASS: + return isEnum ? Scip.SymbolInformation.Kind.Enum : Scip.SymbolInformation.Kind.Class; + case CONSTRUCTOR: + return Scip.SymbolInformation.Kind.Constructor; + case FIELD: + return isStatic + ? Scip.SymbolInformation.Kind.StaticField + : Scip.SymbolInformation.Kind.Field; + case INTERFACE: + return Scip.SymbolInformation.Kind.Interface; + case LOCAL: + return isStatic + ? Scip.SymbolInformation.Kind.StaticVariable + : Scip.SymbolInformation.Kind.Variable; + case MACRO: + return Scip.SymbolInformation.Kind.Macro; + case METHOD: + if (isStatic) return Scip.SymbolInformation.Kind.StaticMethod; + if (isAbstract) return Scip.SymbolInformation.Kind.AbstractMethod; + return Scip.SymbolInformation.Kind.Method; + case OBJECT: + return Scip.SymbolInformation.Kind.Object; + case PACKAGE: + return Scip.SymbolInformation.Kind.Package; + case PACKAGE_OBJECT: + return Scip.SymbolInformation.Kind.PackageObject; + case PARAMETER: + return Scip.SymbolInformation.Kind.Parameter; + case SELF_PARAMETER: + return Scip.SymbolInformation.Kind.SelfParameter; + case TRAIT: + return Scip.SymbolInformation.Kind.Trait; + case TYPE: + return isEnum ? Scip.SymbolInformation.Kind.Enum : Scip.SymbolInformation.Kind.Type; + case TYPE_PARAMETER: + return Scip.SymbolInformation.Kind.TypeParameter; + case UNKNOWN_KIND: + default: + return Scip.SymbolInformation.Kind.UnspecifiedKind; + } + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java new file mode 100644 index 000000000..f3e19f417 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java @@ -0,0 +1,119 @@ +package com.sourcegraph.semanticdb_javac; + +import com.sourcegraph.Scip; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * Writes and merges per-source SCIP shards produced by the compiler plugin. + * + *

Each source file produces a self-contained {@link Scip.Index} shard containing a single {@link + * Scip.Document}. When a shard already exists on disk (e.g. during annotation processing rounds), + * the new document is merged into the existing one, deduplicating occurrences, symbols and + * relationships. + */ +public final class ScipShardWriter { + + private ScipShardWriter() {} + + /** + * Writes the given {@code shard} to {@code output}, creating parent directories as needed. If + * {@code output} already exists, the existing shard is parsed and merged with the new one. + */ + public static void writeOrMerge(Path output, Scip.Index shard) throws IOException { + Files.createDirectories(output.getParent()); + if (Files.exists(output)) { + Scip.Index existing; + try (InputStream is = Files.newInputStream(output)) { + existing = Scip.Index.parseFrom(is); + } + shard = merge(existing, shard); + } + Files.write(output, shard.toByteArray()); + } + + /** + * 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 Scip.Index merge(Scip.Index a, Scip.Index b) { + Scip.Index.Builder builder = Scip.Index.newBuilder(); + if (b.hasMetadata()) { + builder.setMetadata(b.getMetadata()); + } else if (a.hasMetadata()) { + builder.setMetadata(a.getMetadata()); + } + + LinkedHashMap byPath = new LinkedHashMap<>(); + for (Scip.Document doc : a.getDocumentsList()) { + byPath.put(doc.getRelativePath(), doc); + } + for (Scip.Document doc : b.getDocumentsList()) { + Scip.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 (Scip.SymbolInformation s : a.getExternalSymbolsList()) externals.put(s.getSymbol(), s); + for (Scip.SymbolInformation s : b.getExternalSymbolsList()) externals.put(s.getSymbol(), s); + builder.addAllExternalSymbols(externals.values()); + + return builder.build(); + } + + private static Scip.Document mergeDocuments(Scip.Document a, Scip.Document b) { + Scip.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 structural equality. + LinkedHashMap occurrences = new LinkedHashMap<>(); + for (Scip.Occurrence occ : a.getOccurrencesList()) occurrences.put(occ, occ); + for (Scip.Occurrence occ : b.getOccurrencesList()) occurrences.put(occ, occ); + builder.addAllOccurrences(occurrences.values()); + + // Deduplicate symbols by symbol string; merge relationships and documentation. + Map bySymbol = new LinkedHashMap<>(); + for (Scip.SymbolInformation info : a.getSymbolsList()) bySymbol.put(info.getSymbol(), info); + for (Scip.SymbolInformation info : b.getSymbolsList()) { + Scip.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 Scip.SymbolInformation mergeSymbol( + Scip.SymbolInformation a, Scip.SymbolInformation b) { + Scip.SymbolInformation.Builder builder = b.toBuilder(); + // Merge relationships, deduplicating by structural equality. + Map rels = new HashMap<>(); + for (Scip.Relationship r : a.getRelationshipsList()) rels.put(r, r); + for (Scip.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/ScipSymbols.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java new file mode 100644 index 000000000..bcc4b9153 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java @@ -0,0 +1,57 @@ +package com.sourcegraph.semanticdb_javac; + +/** + * Helpers for emitting SCIP symbol strings from the compiler plugin. + * + *

Because the compiler plugin does not know the final Maven coordinates ({@code + * groupId:artifactId:version}) at compile time, it emits global symbols using a sentinel + * placeholder scheme that is rewritten by the aggregator to its final form: + * + *

+ *   ". . . . " + <semanticdb-style descriptor path>
+ *     ->  "scip-java maven <groupId> <artifactId> <version> <descriptor path>"
+ * 
+ * + *

Local symbols are emitted using the canonical SCIP {@code "local N"} form (with the space) and + * are not rewritten by the aggregator. + */ +public final class ScipSymbols { + + /** + * Prefix marking a global symbol whose package coordinates must be filled in by the aggregator. + * The trailing space matches the SCIP grammar requirement of separating the scheme from the + * package fields. + */ + public static final String PLACEHOLDER_PREFIX = ". . . . "; + + private ScipSymbols() {} + + /** + * Converts a SemanticDB-style symbol string (as produced by {@link GlobalSymbolsCache} and {@link + * LocalSymbolsCache}) into the SCIP symbol form expected by the aggregator. + * + *

    + *
  • Empty strings stay empty. + *
  • Local symbols of the form {@code "local42"} become {@code "local 42"}. + *
  • Everything else is prefixed with {@link #PLACEHOLDER_PREFIX}. + *
+ */ + 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; + } + + /** Returns {@code true} if {@code symbol} is a placeholder global symbol. */ + public static boolean isPlaceholderGlobal(String symbol) { + return symbol != null && symbol.startsWith(PLACEHOLDER_PREFIX); + } + + /** Strips the placeholder prefix, returning just the SemanticDB descriptor path. */ + public static String descriptorPath(String placeholderSymbol) { + if (!isPlaceholderGlobal(placeholderSymbol)) return placeholderSymbol; + return placeholderSymbol.substring(PLACEHOLDER_PREFIX.length()); + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java index 672813a47..4bd335b57 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java @@ -24,6 +24,13 @@ public class SemanticdbJavacOptions { public Path sourceroot; public boolean includeText = false; public boolean verboseEnabled = false; + /** + * When {@code true}, the plugin also emits {@code *.scip} shards under {@code META-INF/scip/...} + * alongside the existing {@code *.semanticdb} files. Defaults to {@code false} during the + * SemanticDB→SCIP transition. + */ + public boolean emitScip = false; + public final ArrayList errors; public boolean alreadyReportedErrors = false; public UriScheme uriScheme = UriScheme.DEFAULT; @@ -97,6 +104,10 @@ public static SemanticdbJavacOptions parse(String[] args, JavacTask task) { result.verboseEnabled = true; } else if (arg.equals("-verbose:off")) { result.verboseEnabled = false; + } else if (arg.equals("-emit-scip:on")) { + result.emitScip = true; + } else if (arg.equals("-emit-scip:off")) { + result.emitScip = false; } else if (arg.startsWith("-randomtimestamp")) { } else { result.errors.add(String.format("unknown flag '%s'\n", arg)); 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 7c5238f65..09e475dfb 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 @@ -117,12 +117,65 @@ private void onFinishedAnalyze(TaskEvent e) { Path output = path.getOrThrow(); if (Files.exists(output)) appendSemanticdb(e, output, textDocument); else writeSemanticdb(e, output, textDocument); + + if (options.emitScip) { + emitScipShard(e, output, textDocument); + } } else { reporter.error(path.getErrorOrThrow(), e); } } } + /** + * Mirrors {@link #writeSemanticdb}/{@link #appendSemanticdb} but for the {@code *.scip} shard + * layout under {@code META-INF/scip/}. Reuses the in-memory {@link Semanticdb.TextDocument} built + * by {@link SemanticdbVisitor} so we do not pay for a second AST walk. + */ + private void emitScipShard(TaskEvent event, Path semanticdbPath, Semanticdb.TextDocument doc) { + try { + Path shardPath = scipShardPath(semanticdbPath); + com.sourcegraph.Scip.Index shard = ScipShardFromSemanticdb.buildShard(doc, doc.getUri()); + ScipShardWriter.writeOrMerge(shardPath, shard); + } catch (IOException ex) { + this.reportException(ex, event); + } + } + + /** + * Converts a {@code META-INF/semanticdb/.semanticdb} path into the matching {@code + * META-INF/scip/.scip} path. + */ + static Path scipShardPath(Path semanticdbPath) { + Path filename = semanticdbPath.getFileName(); + String name = filename.toString(); + if (name.endsWith(".semanticdb")) { + name = name.substring(0, name.length() - ".semanticdb".length()) + ".scip"; + } else { + name = name + ".scip"; + } + // Replace the trailing ".../META-INF/semanticdb/" prefix with ".../META-INF/scip/" + Path withoutFile = semanticdbPath.getParent(); + Path scipParent = rewriteSemanticdbToScip(withoutFile); + return scipParent.resolve(name); + } + + private static Path rewriteSemanticdbToScip(Path dir) { + // Walk up looking for a `semanticdb` segment immediately under `META-INF` and replace it. + Path root = dir.getRoot(); + java.util.ArrayList parts = new java.util.ArrayList<>(); + for (Path p : dir) parts.add(p.getFileName().toString()); + for (int i = parts.size() - 1; i > 0; i--) { + if (parts.get(i).equals("semanticdb") && parts.get(i - 1).equals("META-INF")) { + parts.set(i, "scip"); + break; + } + } + Path result = root == null ? Paths.get("") : root; + for (String part : parts) result = result.resolve(part); + return result; + } + private void writeSemanticdb(TaskEvent event, Path output, Semanticdb.TextDocument textDocument) { try { byte[] bytes = 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..19639c8b7 --- /dev/null +++ b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala @@ -0,0 +1,90 @@ +package tests + +import java.nio.file.Files + +import scala.jdk.CollectionConverters._ +import scala.meta.Input + +import com.sourcegraph.Scip +import com.sourcegraph.semanticdb_javac.ScipSymbols +import munit.FunSuite + +/** + * Verifies that the `-emit-scip:on` plugin flag produces a parseable `*.scip` + * shard alongside the existing `*.semanticdb` file. + */ +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 when -emit-scip:on is set") { + 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 -emit-scip:on -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.isRegularFile(semanticdbPath), s"missing $semanticdbPath") + assert(Files.isRegularFile(scipPath), s"missing $scipPath") + + val shard = Scip.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") + } + } + + test("compiler does not emit SCIP shards when -emit-scip is off") { + val targetroot = Files.createTempDirectory("scip-shard-off-") + val sourceroot = Files.createTempDirectory("scip-shard-off-src-") + val compiler = + new TestCompiler(TestCompiler.PROCESSOR_PATH, Nil, targetroot, sourceroot) + val result = compiler.compileSemanticdb(Seq(source)) + assert(result.isSuccess, s"javac failed:\n${result.stdout}") + + val scipPath = targetroot.resolve("META-INF/scip/example/Foo.java.scip") + assert(!Files.exists(scipPath), s"unexpected scip shard at $scipPath") + } +} 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..cf9708ddd --- /dev/null +++ b/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala @@ -0,0 +1,94 @@ +package tests + +import java.nio.file.Paths +import java.util.{Collections, Optional} + +import com.sourcegraph.Scip +import com.sourcegraph.scip_semanticdb.{ + Package, + PackageTable, + ScipOutputFormat, + ScipSemanticdbOptions, + ScipSemanticdbReporter, + SymbolRewriter +} +import com.sourcegraph.semanticdb_javac.ScipSymbols +import munit.FunSuite + +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), "") + } + + test("isPlaceholderGlobal recognises the prefix") { + assert(ScipSymbols.isPlaceholderGlobal(". . . . a/b#")) + assert(!ScipSymbols.isPlaceholderGlobal("local 1")) + assert(!ScipSymbols.isPlaceholderGlobal("scip-java maven g a v a/b#")) + } + + test("descriptorPath strips the placeholder prefix") { + assertEquals(ScipSymbols.descriptorPath(". . . . a/b#"), "a/b#") + assertEquals(ScipSymbols.descriptorPath("local 1"), "local 1") + } + + // A PackageTable built with no packages — packageForSymbol always returns empty + // unless the JDK classfile is on the classpath. Override defensively just in case. + private lazy val emptyPackages: PackageTable = + new PackageTable( + new ScipSemanticdbOptions( + Collections.emptyList(), + Paths.get("/tmp"), + Paths.get("/tmp"), + new ScipSemanticdbReporter() {}, + Scip + .ToolInfo + .newBuilder() + .setName("scip-java") + .setVersion("test") + .build(), + ScipOutputFormat.TYPED_PROTOBUF, + 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()." + ) + } +} From f867d4785e4558b44002dfa13fb7e716792cbcbd Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 13:54:20 +0200 Subject: [PATCH 2/8] PR1 (M3): Fork SemanticdbVisitor into native ScipVisitor Milestone 3 of the SemanticDB->SCIP migration: replace the bridge that went through ScipShardFromSemanticdb with a direct AST walk that produces Scip.Document values. - ScipVisitor: fork of SemanticdbVisitor with identical traversal semantics. Emits Scip.Occurrence, Scip.SymbolInformation, and Scip.Relationship directly. Symbols still come from the existing GlobalSymbolsCache/LocalSymbolsCache and are translated to the placeholder SCIP form via ScipSymbols.fromSemanticdbSymbol at the emission boundary. Skips signatures and annotations for now - ScipSignatureFormatter in Milestone 4 will add signature_documentation. - SemanticdbTaskListener: when -emit-scip:on is set, runs ScipVisitor directly instead of converting from Semanticdb.TextDocument. This is a second AST walk during the transition; SemanticdbVisitor remains the sole producer of legacy *.semanticdb files until Milestone 8. - ScipShardFromSemanticdb: deleted; no longer needed now that ScipVisitor produces the same shard format natively. All 29 unit tests pass, including the end-to-end ScipShardEmissionSuite that exercises the new ScipVisitor through real javac invocations. --- .../ScipShardFromSemanticdb.java | 189 ----- .../semanticdb_javac/ScipVisitor.java | 700 ++++++++++++++++++ .../SemanticdbTaskListener.java | 15 +- 3 files changed, 709 insertions(+), 195 deletions(-) delete mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardFromSemanticdb.java create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardFromSemanticdb.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardFromSemanticdb.java deleted file mode 100644 index 97dfc26c8..000000000 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardFromSemanticdb.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.sourcegraph.semanticdb_javac; - -import com.sourcegraph.Scip; -import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation; -import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation.Kind; -import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation.Property; -import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence; -import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence.Role; - -import java.util.ArrayList; -import java.util.List; - -/** - * Converts an in-memory {@link Semanticdb.TextDocument} into a single-document {@link Scip.Index} - * shard. - * - *

Global SemanticDB symbols are rewritten via {@link ScipSymbols#fromSemanticdbSymbol(String)} - * to use the {@code ". . . . "} placeholder scheme expected by the aggregator. Local symbols are - * normalized to the SCIP {@code "local N"} form. - * - *

This is an intermediate stepping stone: a future {@code ScipVisitor} will build {@link - * Scip.Document} values directly from the javac AST, removing the need for this conversion. - */ -public final class ScipShardFromSemanticdb { - - private ScipShardFromSemanticdb() {} - - /** Builds a single-document {@link Scip.Index} shard from {@code doc}. */ - public static Scip.Index buildShard(Semanticdb.TextDocument doc, String relativePath) { - Scip.Document.Builder document = - Scip.Document.newBuilder() - .setRelativePath(relativePath) - .setLanguage(scipLanguage(doc.getLanguage())); - - for (SymbolOccurrence occ : doc.getOccurrencesList()) { - if (occ.getSymbol().isEmpty()) continue; - document.addOccurrences(toScipOccurrence(occ)); - } - - for (SymbolInformation info : doc.getSymbolsList()) { - if (info.getSymbol().isEmpty()) continue; - document.addSymbols(toScipSymbolInformation(info)); - } - - return Scip.Index.newBuilder().addDocuments(document).build(); - } - - private static String scipLanguage(Semanticdb.Language lang) { - switch (lang) { - case JAVA: - return Scip.Language.Java.name(); - case KOTLIN: - return Scip.Language.Kotlin.name(); - case SCALA: - return Scip.Language.Scala.name(); - default: - return ""; - } - } - - private static Scip.Occurrence toScipOccurrence(SymbolOccurrence occ) { - Scip.Occurrence.Builder builder = - Scip.Occurrence.newBuilder() - .addAllRange(scipRange(occ.getRange())) - .setSymbol(ScipSymbols.fromSemanticdbSymbol(occ.getSymbol())) - .setSymbolRoles(scipRoles(occ.getRole())); - if (occ.hasEnclosingRange()) { - builder.addAllEnclosingRange(scipRange(occ.getEnclosingRange())); - } - return builder.build(); - } - - private static int scipRoles(Role role) { - if (role == Role.DEFINITION || role == Role.SYNTHETIC_DEFINITION) { - return Scip.SymbolRole.Definition_VALUE; - } - return 0; - } - - private static List scipRange(Semanticdb.Range range) { - List result = new ArrayList<>(4); - result.add(range.getStartLine()); - result.add(range.getStartCharacter()); - if (range.getStartLine() == range.getEndLine()) { - result.add(range.getEndCharacter()); - } else { - result.add(range.getEndLine()); - result.add(range.getEndCharacter()); - } - return result; - } - - private static Scip.SymbolInformation toScipSymbolInformation(SymbolInformation info) { - Scip.SymbolInformation.Builder builder = - Scip.SymbolInformation.newBuilder() - .setSymbol(ScipSymbols.fromSemanticdbSymbol(info.getSymbol())) - .setDisplayName(info.getDisplayName()) - .setKind(scipKind(info)); - - if (!info.getEnclosingSymbol().isEmpty()) { - builder.setEnclosingSymbol(ScipSymbols.fromSemanticdbSymbol(info.getEnclosingSymbol())); - } - - for (int i = 0; i < info.getOverriddenSymbolsCount(); i++) { - String overridden = info.getOverriddenSymbols(i); - if (overridden.isEmpty()) continue; - if (isIgnoredOverriddenSymbol(overridden)) continue; - builder.addRelationships( - Scip.Relationship.newBuilder() - .setSymbol(ScipSymbols.fromSemanticdbSymbol(overridden)) - .setIsImplementation(true) - .setIsReference(supportsReferenceRelationship(info))); - } - - String documentation = info.getDocumentation().getMessage(); - if (!documentation.isEmpty()) { - builder.addDocumentation(documentation); - } - - return builder.build(); - } - - private static boolean isIgnoredOverriddenSymbol(String symbol) { - return symbol.equals("java/lang/Object#"); - } - - private static boolean supportsReferenceRelationship(SymbolInformation info) { - switch (info.getKind()) { - case INTERFACE: - case TYPE: - case CLASS: - case OBJECT: - case PACKAGE_OBJECT: - return false; - default: - return true; - } - } - - private static Scip.SymbolInformation.Kind scipKind(SymbolInformation info) { - Kind kind = info.getKind(); - int properties = info.getProperties(); - boolean isStatic = (properties & Property.STATIC_VALUE) > 0; - boolean isAbstract = (properties & Property.ABSTRACT_VALUE) > 0; - boolean isEnum = (properties & Property.ENUM_VALUE) > 0; - - switch (kind) { - case CLASS: - return isEnum ? Scip.SymbolInformation.Kind.Enum : Scip.SymbolInformation.Kind.Class; - case CONSTRUCTOR: - return Scip.SymbolInformation.Kind.Constructor; - case FIELD: - return isStatic - ? Scip.SymbolInformation.Kind.StaticField - : Scip.SymbolInformation.Kind.Field; - case INTERFACE: - return Scip.SymbolInformation.Kind.Interface; - case LOCAL: - return isStatic - ? Scip.SymbolInformation.Kind.StaticVariable - : Scip.SymbolInformation.Kind.Variable; - case MACRO: - return Scip.SymbolInformation.Kind.Macro; - case METHOD: - if (isStatic) return Scip.SymbolInformation.Kind.StaticMethod; - if (isAbstract) return Scip.SymbolInformation.Kind.AbstractMethod; - return Scip.SymbolInformation.Kind.Method; - case OBJECT: - return Scip.SymbolInformation.Kind.Object; - case PACKAGE: - return Scip.SymbolInformation.Kind.Package; - case PACKAGE_OBJECT: - return Scip.SymbolInformation.Kind.PackageObject; - case PARAMETER: - return Scip.SymbolInformation.Kind.Parameter; - case SELF_PARAMETER: - return Scip.SymbolInformation.Kind.SelfParameter; - case TRAIT: - return Scip.SymbolInformation.Kind.Trait; - case TYPE: - return isEnum ? Scip.SymbolInformation.Kind.Enum : Scip.SymbolInformation.Kind.Type; - case TYPE_PARAMETER: - return Scip.SymbolInformation.Kind.TypeParameter; - case UNKNOWN_KIND: - default: - return Scip.SymbolInformation.Kind.UnspecifiedKind; - } - } -} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java new file mode 100644 index 000000000..9f880bc03 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java @@ -0,0 +1,700 @@ +package com.sourcegraph.semanticdb_javac; + +import com.sourcegraph.Scip; +import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation.Property; +import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence.Role; +import com.sun.source.tree.AnnotatedTypeTree; +import com.sun.source.tree.ClassTree; +import com.sun.source.tree.CompilationUnitTree; +import com.sun.source.tree.ExpressionTree; +import com.sun.source.tree.IdentifierTree; +import com.sun.source.tree.LineMap; +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.ParameterizedTypeTree; +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.file.Path; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +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; + +/** + * Walks the AST of a typechecked compilation unit and generates a {@link Scip.Document} directly. + * + *

Structurally this is a fork of {@link SemanticdbVisitor} that emits SCIP types instead of + * SemanticDB ones. Symbols are produced through {@link GlobalSymbolsCache} and then translated to + * the placeholder SCIP form via {@link ScipSymbols#fromSemanticdbSymbol(String)}. + * + *

Signature documentation and SemanticDB-only metadata (access, annotations, full SemanticDB + * type tree) are not yet emitted; those will be added by {@code ScipSignatureFormatter} in a + * follow-up milestone. + */ +public final class ScipVisitor extends TreePathScanner { + + private final GlobalSymbolsCache globals; + private final LocalSymbolsCache locals; + private final Types types; + private final Trees trees; + private final CompilationUnitTree compUnitTree; + private final Elements elements; + private final SemanticdbJavacOptions options; + private final ArrayList occurrences; + private final LinkedHashMap symbols; + private String source; + private final String relativePath; + private final LinkedHashMap nodes; + + public ScipVisitor( + GlobalSymbolsCache globals, + CompilationUnitTree compUnitTree, + SemanticdbJavacOptions options, + Types types, + Trees trees, + Elements elements) { + this.globals = globals; + this.locals = new LocalSymbolsCache(); + this.options = options; + this.types = types; + this.elements = elements; + this.trees = trees; + this.compUnitTree = compUnitTree; + this.occurrences = new ArrayList<>(); + this.symbols = new LinkedHashMap<>(); + this.source = sourceText(); + this.relativePath = sourceRelativePath(compUnitTree, options); + this.nodes = new LinkedHashMap<>(); + } + + /** Builds a single-document {@link Scip.Index} shard for the given compilation unit. */ + public Scip.Index buildShard(CompilationUnitTree tree) { + this.scan(tree, null); + resolveNodes(); + + Scip.Document.Builder document = + Scip.Document.newBuilder() + .setRelativePath(relativePath) + .setLanguage(Scip.Language.Java.name()); + if (options.includeText) { + document.setText(source); + } + document.addAllOccurrences(occurrences); + document.addAllSymbols(symbols.values()); + + return Scip.Index.newBuilder().addDocuments(document).build(); + } + + // ========================== + // Symbol/occurrence emission + // ========================== + + private Optional emitSymbolOccurrence( + Element sym, Tree tree, Name name, Role role, CompilerRange kind) { + if (sym == null || name == null) return Optional.empty(); + Optional range = semanticdbRange(tree, kind, sym, name.toString()); + if (role == Role.DEFINITION) { + emitOccurrence(sym, range, role, computeEnclosingRange(tree)); + emitSymbolInformation(sym, tree); + return range; + } + emitOccurrence(sym, range, role, Optional.empty()); + return range; + } + + private void emitOccurrence( + Element sym, + Optional range, + Role role, + Optional enclosingRange) { + if (sym == null || !range.isPresent()) return; + String semanticdbSymbol = semanticdbSymbol(sym); + if (semanticdbSymbol.equals(SemanticdbSymbols.NONE)) return; + + Scip.Occurrence.Builder occ = + Scip.Occurrence.newBuilder() + .addAllRange(scipRange(range.get())) + .setSymbol(ScipSymbols.fromSemanticdbSymbol(semanticdbSymbol)) + .setSymbolRoles(scipRole(role)); + enclosingRange.ifPresent(r -> occ.addAllEnclosingRange(scipRange(r))); + occurrences.add(occ.build()); + } + + private void emitSymbolInformation(Element sym, Tree tree) { + String semanticdbSymbol = semanticdbSymbol(sym); + if (semanticdbSymbol.equals(SemanticdbSymbols.NONE)) return; + + Scip.SymbolInformation.Builder builder = + Scip.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 && !enclosingSymbol.equals(SemanticdbSymbols.NONE)) { + builder.setEnclosingSymbol(ScipSymbols.fromSemanticdbSymbol(enclosingSymbol)); + } + } + + String documentation = semanticdbDocumentation(tree); + if (documentation != null && !documentation.isEmpty()) { + builder.addDocumentation(documentation); + } + + boolean supportsReferenceRel = supportsReferenceRelationship(sym); + + switch (sym.getKind()) { + case ENUM: + case CLASS: + addParentRelationships(builder, (TypeElement) sym, supportsReferenceRel); + break; + case INTERFACE: + case ANNOTATION_TYPE: + addParentRelationships(builder, (TypeElement) sym, supportsReferenceRel); + break; + case METHOD: + for (String overridden : + semanticdbOverrides( + (ExecutableElement) sym, sym.getEnclosingElement(), new HashSet<>())) { + if (isIgnoredOverriddenSymbol(overridden)) continue; + builder.addRelationships( + Scip.Relationship.newBuilder() + .setSymbol(ScipSymbols.fromSemanticdbSymbol(overridden)) + .setIsImplementation(true) + .setIsReference(supportsReferenceRel)); + } + break; + 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; + default: + break; + } + + // Deduplicate by symbol; last write wins so newly discovered metadata takes precedence. + symbols.put(builder.getSymbol(), builder.build()); + } + + private void addParentRelationships( + Scip.SymbolInformation.Builder builder, TypeElement sym, boolean supportsReferenceRel) { + for (String parent : semanticdbParentSymbols(sym)) { + if (isIgnoredOverriddenSymbol(parent)) continue; + builder.addRelationships( + Scip.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: + return false; + default: + return true; + } + } + + // ================================================= + // Range / role / kind translation between SemanticDB and SCIP. + // ================================================= + + private static int scipRole(Role role) { + if (role == Role.DEFINITION || role == Role.SYNTHETIC_DEFINITION) { + return Scip.SymbolRole.Definition_VALUE; + } + return 0; + } + + private static List scipRange(Semanticdb.Range range) { + if (range.getStartLine() == range.getEndLine()) { + return Arrays.asList( + range.getStartLine(), range.getStartCharacter(), range.getEndCharacter()); + } + return Arrays.asList( + range.getStartLine(), + range.getStartCharacter(), + range.getEndLine(), + range.getEndCharacter()); + } + + private static Scip.SymbolInformation.Kind scipKind(Element sym) { + int properties = 0; + for (Modifier modifier : sym.getModifiers()) { + if (modifier == Modifier.STATIC) properties |= Property.STATIC_VALUE; + else if (modifier == Modifier.ABSTRACT) properties |= Property.ABSTRACT_VALUE; + else if (modifier == Modifier.DEFAULT) properties |= Property.DEFAULT_VALUE; + } + if (((properties & Property.ABSTRACT_VALUE) > 0) + && ((properties & Property.DEFAULT_VALUE) > 0)) { + properties ^= Property.ABSTRACT_VALUE; + } + boolean isStatic = (properties & Property.STATIC_VALUE) > 0; + boolean isAbstract = (properties & Property.ABSTRACT_VALUE) > 0; + + switch (sym.getKind()) { + case ENUM: + return Scip.SymbolInformation.Kind.Enum; + case ENUM_CONSTANT: + return Scip.SymbolInformation.Kind.EnumMember; + case CLASS: + return Scip.SymbolInformation.Kind.Class; + case INTERFACE: + case ANNOTATION_TYPE: + return Scip.SymbolInformation.Kind.Interface; + case FIELD: + return isStatic + ? Scip.SymbolInformation.Kind.StaticField + : Scip.SymbolInformation.Kind.Field; + case CONSTRUCTOR: + return Scip.SymbolInformation.Kind.Constructor; + case METHOD: + if (isStatic) return Scip.SymbolInformation.Kind.StaticMethod; + if (isAbstract) return Scip.SymbolInformation.Kind.AbstractMethod; + return Scip.SymbolInformation.Kind.Method; + case TYPE_PARAMETER: + return Scip.SymbolInformation.Kind.TypeParameter; + case LOCAL_VARIABLE: + case EXCEPTION_PARAMETER: + case RESOURCE_VARIABLE: + return Scip.SymbolInformation.Kind.Variable; + case PARAMETER: + return Scip.SymbolInformation.Kind.Parameter; + case PACKAGE: + return Scip.SymbolInformation.Kind.Package; + default: + return Scip.SymbolInformation.Kind.UnspecifiedKind; + } + } + + // =========================================== + // Node resolution and traversal (unchanged from SemanticdbVisitor) + // =========================================== + + void resolveNodes() { + HashSet ignoreNodes = new HashSet<>(); + for (Tree node : nodes.keySet()) { + if (node instanceof NewClassTree) { + NewClassTree newClassTree = (NewClassTree) node; + if (newClassTree.getClassBody() == null) { + if (newClassTree.getIdentifier() instanceof ParameterizedTypeTree) { + ParameterizedTypeTree paramNode = (ParameterizedTypeTree) newClassTree.getIdentifier(); + ignoreNodes.add(paramNode.getType()); + } + ignoreNodes.add(newClassTree.getIdentifier()); + } + } + } + + for (Map.Entry entry : nodes.entrySet()) { + Tree node = entry.getKey(); + if (!ignoreNodes.contains(node)) { + if (node instanceof TypeParameterTree) { + resolveTypeParameterTree((TypeParameterTree) node, entry.getValue()); + } else if (node instanceof ClassTree) { + resolveClassTree((ClassTree) node, entry.getValue()); + } else if (node instanceof MethodTree) { + resolveMethodTree((MethodTree) node, entry.getValue()); + } else if (node instanceof VariableTree) { + resolveVariableTree((VariableTree) node, entry.getValue()); + } else if (node instanceof IdentifierTree) { + resolveIdentifierTree((IdentifierTree) node, entry.getValue()); + } else if (node instanceof MemberReferenceTree) { + resolveMemberReferenceTree((MemberReferenceTree) node, entry.getValue()); + } else if (node instanceof MemberSelectTree) { + resolveMemberSelectTree((MemberSelectTree) node, entry.getValue()); + } else if (node instanceof NewClassTree) { + resolveNewClassTree((NewClassTree) node, entry.getValue()); + } + } + } + } + + @Override + public Void scan(Tree tree, Void unused) { + if (tree != null) { + TreePath path = new TreePath(getCurrentPath(), tree); + nodes.put(tree, path); + } + return super.scan(tree, unused); + } + + private boolean isAnonymous(Element sym) { + return sym.getSimpleName().length() == 0; + } + + private void resolveClassTree(ClassTree 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_WITH_TEXT_SEARCH); + } + } + + 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); + } + } + + private void resolveMethodTree(MethodTree node, TreePath treePath) { + Element sym = trees.getElement(treePath); + if (sym != null) { + Element enclosingElement = sym.getEnclosingElement(); + if (sym.getKind() != ElementKind.CONSTRUCTOR || !isAnonymous(enclosingElement)) { + Name name; + if (sym.getKind() == ElementKind.CONSTRUCTOR) name = enclosingElement.getSimpleName(); + else name = sym.getSimpleName(); + + emitSymbolOccurrence( + sym, node, name, Role.DEFINITION, CompilerRange.FROM_POINT_WITH_TEXT_SEARCH); + } + } + } + + private void resolveVariableTree(VariableTree node, TreePath treePath) { + Element sym = trees.getElement(treePath); + if (sym != null) { + Optional range = + emitSymbolOccurrence( + sym, + node, + sym.getSimpleName(), + Role.DEFINITION, + 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) emitOccurrence(typeSym, range, Role.REFERENCE, Optional.empty()); + } + } + } + + private void resolveIdentifierTree(IdentifierTree node, TreePath treePath) { + Name nodeName = node.getName(); + if (nodeName != null) { + Element sym = trees.getElement(treePath); + if (sym != null) { + boolean isThis = nodeName.toString().equals("this"); + boolean isSuper = !isThis && nodeName.toString().equals("super"); + 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); + } + } + } + } + } + + private void resolveMemberReferenceTree(MemberReferenceTree node, TreePath treePath) { + Element sym = trees.getElement(treePath); + if (sym != null) { + emitSymbolOccurrence( + sym, node, sym.getSimpleName(), Role.REFERENCE, CompilerRange.FROM_END_TO_SYMBOL_NAME); + } + } + + 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); + } + } + + private void resolveNewClassTree(NewClassTree node, TreePath treePath) { + 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); + if (identifierSym != null) { + emitSymbolOccurrence( + sym, + node, + identifierSym.getSimpleName(), + Role.REFERENCE, + 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); + } + } + } + } + } + } + + // ================================================= + // Helpers shared with SemanticdbVisitor (range / symbol / parent overrides). + // ================================================= + + private String semanticdbSymbol(Element sym) { + return globals.semanticdbSymbol(sym, locals); + } + + private Optional semanticdbRange( + Tree tree, CompilerRange kind, Element sym, String name) { + if (sym == null) return Optional.empty(); + + SourcePositions sourcePositions = trees.getSourcePositions(); + int start = (int) sourcePositions.getStartPosition(compUnitTree, tree); + int end = (int) sourcePositions.getEndPosition(compUnitTree, tree); + if (kind.isPlusOne()) start++; + + if (name != null) { + if (kind.isFromTextSearch() && name.length() > 0) { + Optional startEndRange = + RangeFinder.findRange(sym, name, start, end, this.source, kind.isFromEnd()); + if (startEndRange.isPresent()) { + start = startEndRange.get().start; + end = startEndRange.get().end; + } + } else if (kind.isFromPoint()) { + if (start != Diagnostic.NOPOS) { + int testEnd = start + name.length(); + if (source.length() > testEnd && source.substring(start, testEnd).equals(name)) { + end = testEnd; + } + } + } else if (kind.isFromEndPoint()) { + if (end != Diagnostic.NOPOS) { + int testStart = end - name.length(); + if (testStart >= 0 + && source.length() > end + && 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(); + + range = correctForTabs(range, lineMap, start); + return Optional.of(range); + } + return Optional.empty(); + } + + private Semanticdb.Range correctForTabs(Semanticdb.Range range, LineMap lineMap, int start) { + int startLinePos = (int) lineMap.getPosition(lineMap.getLineNumber(start), 0); + 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(); + } + return range; + } + + private Optional computeEnclosingRange(Tree tree) { + if (tree == null) return Optional.empty(); + TreePath path = nodes.get(tree); + if (path == null) return Optional.empty(); + + Tree enclosingTree = tree; + if (!(tree instanceof MethodTree + || tree instanceof ClassTree + || tree instanceof VariableTree)) { + TreePath parentPath = path.getParentPath(); + if (parentPath == null) return Optional.empty(); + enclosingTree = parentPath.getLeaf(); + if (enclosingTree == null || enclosingTree == compUnitTree) return Optional.empty(); + } + + SourcePositions sourcePositions = trees.getSourcePositions(); + int start = (int) sourcePositions.getStartPosition(compUnitTree, enclosingTree); + int end = (int) sourcePositions.getEndPosition(compUnitTree, enclosingTree); + + 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(); + range = correctForTabs(range, lineMap, start); + return Optional.of(range); + } + return Optional.empty(); + } + + private String sourceText() { + if (source != null) return source; + try { + source = compUnitTree.getSourceFile().getCharContent(true).toString(); + } catch (IOException e) { + source = ""; + } + return source; + } + + private List semanticdbParentSymbols(TypeElement typeElement) { + ArrayList parentSymbols = new ArrayList<>(); + Set parentElements = semanticdbParentTypeElements(typeElement, new HashSet<>()); + for (TypeElement parentElement : parentElements) { + String ssym = semanticdbSymbol(parentElement); + if (!Objects.equals(ssym, SemanticdbSymbols.NONE)) { + parentSymbols.add(ssym); + } + } + return parentSymbols; + } + + private Set semanticdbParentTypeElements( + TypeElement typeElement, Set result) { + TypeMirror superType = typeElement.getSuperclass(); + semanticdbParentSymbol(superType, result); + 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 instanceof TypeElement) { + result.add((TypeElement) superElement); + semanticdbParentTypeElements((TypeElement) superElement, result); + } + } + } + + private Set semanticdbOverrides( + ExecutableElement sym, Element enclosingElement, HashSet overriddenSymbols) { + if (enclosingElement instanceof TypeElement) { + List superTypes = types.directSupertypes(enclosingElement.asType()); + for (TypeMirror superType : superTypes) { + if (superType instanceof DeclaredType) { + Element superElement = ((DeclaredType) superType).asElement(); + if (superElement instanceof TypeElement) { + boolean methodFound = false; + List enclosedElements = + ((TypeElement) superElement).getEnclosedElements(); + for (Element enclosedElement : enclosedElements) { + if (enclosedElement instanceof ExecutableElement) { + ExecutableElement enclosedExecutableElement = (ExecutableElement) enclosedElement; + if (elements.overrides( + sym, enclosedExecutableElement, (TypeElement) sym.getEnclosingElement())) { + String symbol = semanticdbSymbol(enclosedExecutableElement); + overriddenSymbols.add(symbol); + methodFound = true; + semanticdbOverrides(enclosedExecutableElement, superElement, overriddenSymbols); + } + } + } + if (!methodFound) { + semanticdbOverrides(sym, superElement, overriddenSymbols); + } + } + } + } + } + return overriddenSymbols; + } + + private static String sourceRelativePath( + CompilationUnitTree compUnitTree, SemanticdbJavacOptions options) { + Path absolutePath = + SemanticdbTaskListener.absolutePathFromUri(options, compUnitTree.getSourceFile()); + 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 String semanticdbDocumentation(Tree tree) { + try { + TreePath treePath = nodes.get(tree); + String doc = trees.getDocComment(treePath); + return doc; + } catch (NullPointerException e) { + return null; + } + } +} 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 09e475dfb..72cc75f4d 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 @@ -119,7 +119,7 @@ private void onFinishedAnalyze(TaskEvent e) { else writeSemanticdb(e, output, textDocument); if (options.emitScip) { - emitScipShard(e, output, textDocument); + emitScipShard(e, output); } } else { reporter.error(path.getErrorOrThrow(), e); @@ -128,14 +128,17 @@ private void onFinishedAnalyze(TaskEvent e) { } /** - * Mirrors {@link #writeSemanticdb}/{@link #appendSemanticdb} but for the {@code *.scip} shard - * layout under {@code META-INF/scip/}. Reuses the in-memory {@link Semanticdb.TextDocument} built - * by {@link SemanticdbVisitor} so we do not pay for a second AST walk. + * Drives {@link ScipVisitor} over the compilation unit to build a {@code *.scip} shard under the + * matching {@code META-INF/scip/} path. During the SemanticDB→SCIP transition this is a second + * AST walk; once the legacy {@code *.semanticdb} output is removed the SCIP walk will be the only + * one. */ - private void emitScipShard(TaskEvent event, Path semanticdbPath, Semanticdb.TextDocument doc) { + private void emitScipShard(TaskEvent event, Path semanticdbPath) { try { Path shardPath = scipShardPath(semanticdbPath); - com.sourcegraph.Scip.Index shard = ScipShardFromSemanticdb.buildShard(doc, doc.getUri()); + com.sourcegraph.Scip.Index shard = + new ScipVisitor(globals, event.getCompilationUnit(), options, types, trees, elements) + .buildShard(event.getCompilationUnit()); ScipShardWriter.writeOrMerge(shardPath, shard); } catch (IOException ex) { this.reportException(ex, event); From bed4c2a7344b47422bbc0b967c330697f253ed0c Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 13:56:32 +0200 Subject: [PATCH 3/8] PR1 (M4): Add in-plugin ScipSignatureFormatter for Java Milestone 4: emit SCIP signature_documentation directly from the compiler plugin, eliminating the need to format signatures from a SemanticDB intermediate representation. - ScipSignatureFormatter: walks javac Element/TypeMirror and produces a readable Java declaration string. Supports classes, interfaces, annotations, enums, methods, constructors, fields, parameters, locals, enum constants, and type parameters with bounds. The internal TypePrinter handles declared types, type arguments, arrays, primitives, type variables, wildcards, intersections, and void. Suppresses implicit 'extends Object' and 'java.lang.Object' supertypes. - ScipVisitor: when a definition is emitted, the formatter is invoked and (when the result is non-empty) the signature is attached to SymbolInformation.signature_documentation with language 'Java' and the current source's relative path. - ScipShardEmissionSuite: extended end-to-end checks. Verifies the shard contains at least one signature_documentation block, that the Foo class symbol's signature contains 'class Foo', and that the bar() method symbol's signature contains 'int bar('. All 29 unit tests pass. --- .../ScipSignatureFormatter.java | 288 ++++++++++++++++++ .../semanticdb_javac/ScipVisitor.java | 9 + .../scala/tests/ScipShardEmissionSuite.scala | 27 ++ 3 files changed, 324 insertions(+) create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSignatureFormatter.java 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..91dd63892 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSignatureFormatter.java @@ -0,0 +1,288 @@ +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 human-readable declaration string suitable for SCIP's {@code + * SymbolInformation.signature_documentation.text}. + * + *

This is a port of the Java-relevant parts of {@code SignatureFormatter} that runs directly + * over javac's {@link Element}/{@link TypeMirror} APIs, eliminating the need to round-trip through + * SemanticDB signatures. + */ +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 { + // Constructor: name = enclosing class simple name + 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/ScipVisitor.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java index 9f880bc03..2b6016c8a 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java @@ -170,6 +170,15 @@ private void emitSymbolInformation(Element sym, Tree tree) { builder.addDocumentation(documentation); } + String signature = new ScipSignatureFormatter(sym).formatSymbol(); + if (!signature.isEmpty()) { + builder.setSignatureDocumentation( + Scip.Document.newBuilder() + .setLanguage(Scip.Language.Java.name()) + .setRelativePath(relativePath) + .setText(signature)); + } + boolean supportsReferenceRel = supportsReferenceRelationship(sym); switch (sym.getKind()) { diff --git a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala index 19639c8b7..3dbb20482 100644 --- a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala +++ b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala @@ -74,6 +74,33 @@ class ScipShardEmissionSuite extends FunSuite { s.startsWith(ScipSymbols.PLACEHOLDER_PREFIX) || s.startsWith("local ") assert(ok, s"unexpected occurrence symbol: $s") } + + // At least one definition should carry a Java signature_documentation block. + 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 == Scip.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 == Scip.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") } test("compiler does not emit SCIP shards when -emit-scip is off") { From 45839fcbaf130b63a7cb6314b4911fc9d6455603 Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 13:59:38 +0200 Subject: [PATCH 4/8] PR1 (M5): Add ScipShardAggregator for .scip shards Milestone 5: parallel aggregator that walks *.scip shards produced by ScipVisitor and emits a final scip-java-scheme index.scip. The existing SemanticDB-based ScipSemanticdb.run() is untouched. - ScipShardAggregator: * walks for *.scip shards (and *.jar files containing them) via ScipShardWalker * parses each shard into a Scip.Index * rewrites placeholder global symbols ('. . . . ' prefix) into the final 'scip-java maven g a v ...' form via SymbolRewriter * deduplicates documents by relative_path, merging occurrences and symbol-info entries from annotation-processor rounds * computes inverse 'is_implementation && is_reference' relationships across the whole project, gated on options.emitInverseRelationships * emits one Metadata Index plus one Index per merged Document via ScipWriter - ScipAggregationSuite: end-to-end test that compiles a Java source with -emit-scip:on, runs ScipShardAggregator over the produced shards, and asserts the final index has metadata with the scip-java tool name and that every emitted symbol/occurrence is either local or starts with 'scip-java maven '. All 30 unit tests pass. --- .../scip_semanticdb/ScipShardAggregator.java | 262 ++++++++++++++++++ .../scala/tests/ScipAggregationSuite.scala | 103 +++++++ 2 files changed, 365 insertions(+) create mode 100644 scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java create mode 100644 tests/unit/src/test/scala/tests/ScipAggregationSuite.scala 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..9f443aecf --- /dev/null +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java @@ -0,0 +1,262 @@ +package com.sourcegraph.scip_semanticdb; + +import com.google.protobuf.CodedInputStream; +import com.sourcegraph.Scip; + +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.jar.JarEntry; +import java.util.jar.JarFile; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * Aggregates per-source {@code *.scip} shards into a single {@link Scip.Index}. + * + *

Steps: + * + *

    + *
  1. Walk all targetroots for {@code *.scip} shards (and {@code *.jar} files containing them). + *
  2. Parse each shard into a {@link Scip.Index} containing exactly one {@link Scip.Document}. + *
  3. Rewrite placeholder global symbols ({@code ". . . . "} prefix) into the final {@code + * "scip-java maven g a v ..."} form via {@link SymbolRewriter}. + *
  4. Deduplicate documents by {@code relative_path}, merging occurrences/symbols. + *
  5. Compute inverse {@code is_implementation+is_reference} relationships across the project. + *
  6. Emit the metadata block and all documents 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()); + + // Deduplicate documents by relative_path. We rewrite symbols as we go so all merging happens + // on final-form strings. + LinkedHashMap merged = new LinkedHashMap<>(); + InverseReferenceRelationships inverse = new InverseReferenceRelationships(); + + for (Path shard : shards) { + try { + for (Scip.Index shardIndex : parseShard(shard)) { + for (Scip.Document doc : shardIndex.getDocumentsList()) { + Scip.Document rewritten = rewriteDocument(doc); + inverse.observe(rewritten); + Scip.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 (Scip.Document.Builder doc : merged.values()) { + Scip.Document withInverse = inverse.applyTo(doc.build()); + writer.emitTyped(Scip.Index.newBuilder().addDocuments(withInverse).build()); + } + + options.reporter.endProcessing(); + } + + // --- shard parsing ------------------------------------------------------- + + 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 Scip.Index parseBytes(byte[] bytes) throws IOException { + CodedInputStream in = CodedInputStream.newInstance(bytes); + in.setRecursionLimit(1000); + return Scip.Index.parseFrom(in); + } + + // --- rewriting ----------------------------------------------------------- + + private Scip.Document rewriteDocument(Scip.Document doc) { + Scip.Document.Builder builder = doc.toBuilder().clearOccurrences().clearSymbols(); + for (Scip.Occurrence occ : doc.getOccurrencesList()) { + builder.addOccurrences(occ.toBuilder().setSymbol(rewriter.rewrite(occ.getSymbol())).build()); + } + for (Scip.SymbolInformation info : doc.getSymbolsList()) { + builder.addSymbols(rewriteSymbol(info)); + } + return builder.build(); + } + + private Scip.SymbolInformation rewriteSymbol(Scip.SymbolInformation info) { + Scip.SymbolInformation.Builder builder = info.toBuilder(); + builder.setSymbol(rewriter.rewrite(info.getSymbol())); + if (!info.getEnclosingSymbol().isEmpty()) { + builder.setEnclosingSymbol(rewriter.rewrite(info.getEnclosingSymbol())); + } + builder.clearRelationships(); + for (Scip.Relationship rel : info.getRelationshipsList()) { + builder.addRelationships( + rel.toBuilder().setSymbol(rewriter.rewrite(rel.getSymbol())).build()); + } + return builder.build(); + } + + private void mergeInto(Scip.Document.Builder target, Scip.Document fresh) { + target.addAllOccurrences(fresh.getOccurrencesList()); + target.addAllSymbols(fresh.getSymbolsList()); + } + + // --- metadata ------------------------------------------------------------ + + private Scip.Index metadata() { + return Scip.Index.newBuilder() + .setMetadata( + Scip.Metadata.newBuilder() + .setVersion(Scip.ProtocolVersion.UnspecifiedProtocolVersion) + .setProjectRoot(options.sourceroot.toUri().toString()) + .setTextDocumentEncoding(Scip.TextEncoding.UTF8) + .setToolInfo( + Scip.ToolInfo.newBuilder() + .setName(options.toolInfo.getName()) + .setVersion(options.toolInfo.getVersion()) + .addAllArguments(options.toolInfo.getArgumentsList()))) + .build(); + } + + // --- inverse relationships ---------------------------------------------- + + /** + * Collects symbols that override or implement other symbols, indexed by the overridden symbol. + * When a final document is emitted, the per-symbol entries are augmented with {@code + * is_implementation && is_reference} relationships pointing back to overriders. + */ + private final class InverseReferenceRelationships { + + private final Map> map = new LinkedHashMap<>(); + private final boolean enabled = options.emitInverseRelationships; + + void observe(Scip.Document doc) { + if (!enabled) return; + for (Scip.SymbolInformation info : doc.getSymbolsList()) { + if (info.getSymbol().isEmpty() || SymbolRewriter.isLocal(info.getSymbol())) continue; + if (!supportsReferenceRelationship(info)) continue; + for (Scip.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()); + } + } + } + + Scip.Document applyTo(Scip.Document doc) { + if (!enabled || map.isEmpty()) return doc; + Scip.Document.Builder builder = doc.toBuilder().clearSymbols(); + for (Scip.SymbolInformation info : doc.getSymbolsList()) { + List overriders = map.get(info.getSymbol()); + if (overriders == null || overriders.isEmpty()) { + builder.addSymbols(info); + continue; + } + Scip.SymbolInformation.Builder s = info.toBuilder(); + for (String overrider : overriders) { + s.addRelationships( + Scip.Relationship.newBuilder() + .setSymbol(overrider) + .setIsImplementation(true) + .setIsReference(true)); + } + builder.addSymbols(s.build()); + } + return builder.build(); + } + } + + private static boolean supportsReferenceRelationship(Scip.SymbolInformation info) { + switch (info.getKind()) { + case Interface: + case Type: + case Class: + case Object: + case PackageObject: + return false; + default: + return true; + } + } + + // Make the existing flatten-style call available for callers that already have shards in memory. + @SuppressWarnings("unused") + Stream documentsFromShards(List shards) { + return shards.stream().flatMap(s -> s.getDocumentsList().stream()).map(this::rewriteDocument); + } + + @SuppressWarnings("unused") + Stream documentsFromShardsCollected(List shards) { + return documentsFromShards(shards).collect(Collectors.toList()).stream(); + } +} 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..d6281a9c8 --- /dev/null +++ b/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala @@ -0,0 +1,103 @@ +package tests + +import java.nio.file.Files +import java.util.Collections + +import scala.jdk.CollectionConverters._ +import scala.meta.Input + +import com.sourcegraph.Scip +import com.sourcegraph.scip_semanticdb.{ + ScipOutputFormat, + ScipSemanticdbOptions, + ScipSemanticdbReporter, + ScipShardAggregator +} +import munit.FunSuite + +// End-to-end test for the SCIP shard aggregation pipeline: compile Java with +// -emit-scip:on, run ScipShardAggregator over the produced META-INF/scip +// shards, and assert the final index.scip is well-formed and 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 -emit-scip:on -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() {}, + Scip + .ToolInfo + .newBuilder() + .setName("scip-java") + .setVersion("test") + .build(), + ScipOutputFormat.TYPED_PROTOBUF, + false, + Collections.emptyList(), + true, + false, + false + ) + + ScipShardAggregator.run(options) + + // SCIP's stream format concatenates multiple Index messages. Protobuf merges concatenated + // messages of the same type when parsed as a single message: singular fields take the last + // value and repeated fields are concatenated, so this gives us the full aggregated view. + val bytes = Files.readAllBytes(output) + val index = Scip.Index.parseFrom(bytes) + + // Metadata is present. + 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: either 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") + } + } +} From 56da5952cf63f001c8d34d820c73cfde670b1c07 Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 14:03:37 +0200 Subject: [PATCH 5/8] PR1 (M6): Opt-in --use-scip-shards flag wires CLI + build tools Milestone 6: surface the direct-SCIP path through the existing index-semanticdb command and through the Maven / ScipBuildTool paths so end-to-end indexing can use ScipShardAggregator. Default behaviour is unchanged. - IndexSemanticdbCommand: new --use-scip-shards flag. When set, the command runs ScipShardAggregator (walking META-INF/scip/*.scip) instead of ScipSemanticdb (walking META-INF/semanticdb/*.semanticdb). - SemanticdbOptionBuilder: reads -Dsemanticdb.emit-scip and appends '-emit-scip:on' to the injected -Xplugin:semanticdb argument so the custom javac wrapper emits SCIP shards. - Embedded.customJavac: new optional emitScip parameter; when true, propagates -Dsemanticdb.emit-scip=true into the launched javac wrapper. - MavenBuildTool: forwards index.indexSemanticdb.useScipShards to the customJavac wrapper. - ScipBuildTool: when useScipShards is on, appends '-emit-scip:on' to the directly-constructed -Xplugin:semanticdb arguments used by the in-process javac compilation. Not yet wired (deferred): - SemanticdbGradlePlugin propagation - BazelBuildTool / scip_java.bzl - Kotlin guard for projects that mix Java+Kotlin sources All 30 unit tests pass. --- .../scala/com/sourcegraph/scip_java/Embedded.scala | 10 ++++++++-- .../scip_java/buildtools/MavenBuildTool.scala | 3 ++- .../scip_java/buildtools/ScipBuildTool.scala | 7 ++++++- .../scip_java/commands/IndexSemanticdbCommand.scala | 13 ++++++++++++- .../semanticdb_javac/SemanticdbOptionBuilder.java | 6 +++++- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala index 2be327dad..4b3169781 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala @@ -34,7 +34,8 @@ object Embedded { sourceroot: Path, targetroot: Path, tmp: Path, - javaAtLeast17: Boolean + javaAtLeast17: Boolean, + emitScip: Boolean = false ): Path = { val bin = tmp.resolve("bin") val javac = bin.resolve("javac") @@ -56,6 +57,11 @@ object Embedded { BuildInfo.javacModuleOptions.mkString(" ") else "" + val emitScipProp = + if (emitScip) + s"-Dsemanticdb.emit-scip=true " + else + "" val injectSemanticdbArguments = List[String]( "java", s"-Dsemanticdb.errorpath=$errorpath", @@ -64,7 +70,7 @@ object Embedded { s"-Dsemanticdb.targetroot=$targetroot", s"-Dsemanticdb.output=$$NEW_JAVAC_OPTS", s"-Dsemanticdb.old-output=$javacopts", - s"-classpath $pluginpath", + s"${emitScipProp}-classpath $pluginpath", "com.sourcegraph.semanticdb_javac.InjectSemanticdbOptions", """"$@"""" ).mkString(" ") diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala index a0b4f8631..1086d68a3 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala @@ -44,7 +44,8 @@ class MavenBuildTool(index: IndexCommand) extends BuildTool("Maven", index) { index.workingDirectory, index.finalTargetroot(defaultTargetroot), tmp, - GradleJavaToolchains.isJavaAtLeast(SystemJavaVersion.detect(), "11") + GradleJavaToolchains.isJavaAtLeast(SystemJavaVersion.detect(), "11"), + emitScip = index.indexSemanticdb.useScipShards ) buildCommand ++= List( diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala index f6ced10ae..a99cdc7cb 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala @@ -383,8 +383,13 @@ class ScipBuildTool(index: IndexCommand) extends BuildTool("SCIP", index) { arguments += "-classpath" arguments += actualClasspath.mkString(File.pathSeparator) } + val emitScipFlag = + if (index.indexSemanticdb.useScipShards) + " -emit-scip:on" + else + "" arguments += - s"-Xplugin:semanticdb -targetroot:$targetroot -sourceroot:$sourceroot" + s"-Xplugin:semanticdb -targetroot:$targetroot -sourceroot:$sourceroot$emitScipFlag" if (config.processorpath.nonEmpty) { arguments += "-processorpath" val processorpath = 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 194c1a85c..a8c9cf6cd 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 @@ -14,6 +14,7 @@ import com.sourcegraph.scip_semanticdb.ConsoleScipSemanticdbReporter import com.sourcegraph.scip_semanticdb.ScipOutputFormat 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 @@ -60,6 +61,13 @@ 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, walk targetroots for *.scip shards (META-INF/scip/...) produced by the " + + "compiler plugin's -emit-scip:on flag instead of *.semanticdb files. The aggregator " + + "rewrites placeholder symbols into the final 'scip-java' scheme and merges per-source " + + "shards into the output index." + ) + useScipShards: Boolean = false, @Inline() app: Application = Application.default ) extends Command { @@ -108,7 +116,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/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java index 9a2b15988..0f2e43e24 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java @@ -23,6 +23,8 @@ public class SemanticdbOptionBuilder { private static final String TARGETROOT = System.getProperty("semanticdb.targetroot", ""); private static final String OUTPUT = System.getProperty("semanticdb.output", ""); private static final String OLD_OUTPUT = System.getProperty("semanticdb.old-output", ""); + private static final boolean EMIT_SCIP = + Boolean.parseBoolean(System.getProperty("semanticdb.emit-scip", "false")); public void processArgument(String arg) { oldArgs.add(arg); @@ -62,8 +64,10 @@ private String wrapQuote(String arg) { } private String xpluginOption() { + String emitScip = EMIT_SCIP ? " -emit-scip:on" : ""; return String.format( - "\"-Xplugin:semanticdb -sourceroot:%s -targetroot:%s\"", SOURCEROOT, TARGETROOT); + "\"-Xplugin:semanticdb -sourceroot:%s -targetroot:%s%s\"", + SOURCEROOT, TARGETROOT, emitScip); } public ArrayList finalResult() { From eab3f1c048f9705f7bf41a444e9bac96f4848400 Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 15:05:20 +0200 Subject: [PATCH 6/8] PR1 (M7): Stabilize ScipVisitor output and regenerate minimized snapshots Drives the minimized snapshot suite through the new SCIP-direct path (via --use-scip-shards) and reconciles the resulting output so it can be locked in as the canonical scheme. semanticdb-javac: - ScipVisitor: lowercase Document.language to 'java' (matching the historical ScipSemanticdb output) and add (range, symbol, roles) dedup of occurrences, preferring the variant that carries an enclosing_range. Multiple ANALYZE rounds otherwise emit a second definition occurrence without enclosing_range that survived the structural-equality dedup in ScipShardWriter. - ScipVisitor: treat ENUM the same as CLASS/INTERFACE/ANNOTATION_TYPE in supportsReferenceRelationship so parent relationships don't get a spurious is_reference flag. - ScipShardWriter: switch occurrence merge to the looser (range, symbol, roles) key, preferring entries with enclosing_range. - SemanticdbTaskListener: delete the stale .scip shard alongside the .semanticdb file on ENTER so re-runs don't accumulate occurrences across builds. scip-semanticdb: - ScipShardAggregator: mergeInto now uses the same (range, symbol, roles) dedup with enclosing_range preference, and merges duplicate symbol relationships across shards. build.sbt: - Add -emit-scip:on to the minimized javac plugin invocation so the tests/minimized targetroot always contains shard files. tests/snapshots: - MinimizedSnapshotScipGenerator now passes --use-scip-shards to drive the snapshot suite through ScipShardAggregator. - Regenerate all 23 minimized snapshots under the new 'scip-java' symbol scheme. tests/unit: - ScipShardEmissionSuite: update assertions to expect the lowercase 'java' language string. Full snapshot suite passes (102 tests). Unit suite passes (30 tests). --- build.sbt | 1 + .../scip_semanticdb/ScipShardAggregator.java | 71 ++- .../semanticdb_javac/ScipShardWriter.java | 51 ++- .../semanticdb_javac/ScipVisitor.java | 65 ++- .../SemanticdbTaskListener.java | 5 +- .../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 | 148 +++---- .../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 + .../scala/tests/ScipShardEmissionSuite.scala | 4 +- 30 files changed, 1404 insertions(+), 1177 deletions(-) diff --git a/build.sbt b/build.sbt index 4df7d8f07..d8d497b92 100644 --- a/build.sbt +++ b/build.sbt @@ -550,6 +550,7 @@ lazy val minimizedSettings = List[Def.Setting[_]]( s"-build-tool:sbt", s"-text:on", s"-verbose", + s"-emit-scip:on", s"-sourceroot:${(ThisBuild / baseDirectory).value}", s"-targetroot:${(Compile / semanticdbTargetRoot).value}", s"-randomtimestamp=${System.nanoTime()}" 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 index 9f443aecf..6f77a1028 100644 --- a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java @@ -167,8 +167,75 @@ private Scip.SymbolInformation rewriteSymbol(Scip.SymbolInformation info) { } private void mergeInto(Scip.Document.Builder target, Scip.Document fresh) { - target.addAllOccurrences(fresh.getOccurrencesList()); - target.addAllSymbols(fresh.getSymbolsList()); + // Deduplicate occurrences by (range, symbol, roles) so that shards produced by repeated + // compilation rounds (or by multiple targetroots) don't introduce duplicate entries. + // Variants that differ only by enclosing_range are collapsed, preferring the one that has it. + LinkedHashMap occurrences = new LinkedHashMap<>(); + for (Scip.Occurrence occ : target.getOccurrencesList()) putOccurrence(occurrences, occ); + for (Scip.Occurrence occ : fresh.getOccurrencesList()) putOccurrence(occurrences, occ); + target.clearOccurrences().addAllOccurrences(occurrences.values()); + + // Deduplicate symbols by symbol string; merge relationships of duplicates. + LinkedHashMap bySymbol = new LinkedHashMap<>(); + for (Scip.SymbolInformation info : target.getSymbolsList()) { + bySymbol.put(info.getSymbol(), info); + } + for (Scip.SymbolInformation info : fresh.getSymbolsList()) { + Scip.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( + LinkedHashMap out, Scip.Occurrence occ) { + OccurrenceKey key = OccurrenceKey.of(occ); + Scip.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 java.util.List range; + final int roles; + + OccurrenceKey(String symbol, java.util.List range, int roles) { + this.symbol = symbol; + this.range = range; + this.roles = roles; + } + + static OccurrenceKey of(Scip.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 java.util.Objects.hash(symbol, range, roles); + } + } + + private static Scip.SymbolInformation mergeSymbol( + Scip.SymbolInformation a, Scip.SymbolInformation b) { + Scip.SymbolInformation.Builder builder = b.toBuilder(); + LinkedHashMap rels = new LinkedHashMap<>(); + for (Scip.Relationship r : a.getRelationshipsList()) rels.put(r, r); + for (Scip.Relationship r : b.getRelationshipsList()) rels.put(r, r); + builder.clearRelationships().addAllRelationships(rels.values()); + return builder.build(); } // --- metadata ------------------------------------------------------------ diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java index f3e19f417..b5efee165 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java @@ -11,6 +11,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Writes and merges per-source SCIP shards produced by the compiler plugin. @@ -80,10 +81,11 @@ private static Scip.Document mergeDocuments(Scip.Document a, Scip.Document b) { // Use the most recent metadata for language/relative_path/text/encoding which already // come from b via toBuilder(). - // Deduplicate occurrences by structural equality. - LinkedHashMap occurrences = new LinkedHashMap<>(); - for (Scip.Occurrence occ : a.getOccurrencesList()) occurrences.put(occ, occ); - for (Scip.Occurrence occ : b.getOccurrencesList()) occurrences.put(occ, occ); + // Deduplicate occurrences by (range, symbol, roles). Variants that differ only in + // enclosing_range get collapsed, preferring the one that carries the enclosing range. + LinkedHashMap occurrences = new LinkedHashMap<>(); + for (Scip.Occurrence occ : a.getOccurrencesList()) putOccurrence(occurrences, occ); + for (Scip.Occurrence occ : b.getOccurrencesList()) putOccurrence(occurrences, occ); builder.addAllOccurrences(occurrences.values()); // Deduplicate symbols by symbol string; merge relationships and documentation. @@ -116,4 +118,45 @@ private static Scip.SymbolInformation mergeSymbol( return builder.build(); } + + private static void putOccurrence( + LinkedHashMap out, Scip.Occurrence occ) { + OccurrenceKey key = OccurrenceKey.of(occ); + Scip.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(Scip.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); + } + } } diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java index 2b6016c8a..4d7048208 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java @@ -103,16 +103,74 @@ public Scip.Index buildShard(CompilationUnitTree tree) { Scip.Document.Builder document = Scip.Document.newBuilder() .setRelativePath(relativePath) - .setLanguage(Scip.Language.Java.name()); + .setLanguage(LANGUAGE_JAVA); if (options.includeText) { document.setText(source); } - document.addAllOccurrences(occurrences); + document.addAllOccurrences(dedupOccurrences(occurrences)); document.addAllSymbols(symbols.values()); return Scip.Index.newBuilder().addDocuments(document).build(); } + /** + * SCIP `Document.language` value. Lowercased to match the canonical scheme used by other + * tooling (see {@link com.sourcegraph.scip_semanticdb.ScipSemanticdb}). + */ + static final String LANGUAGE_JAVA = "java"; + + /** + * Some AST patterns (in particular top-level class definitions touched by both the regular + * declaration walk and downstream resolvers) can produce two occurrences with the same {@code + * (symbol, range, roles)} that differ only by whether {@code enclosing_range} is set. The SCIP + * writer treats those as distinct by structural equality, so we collapse them here, preferring + * the variant that carries an {@code enclosing_range}. + */ + private static List dedupOccurrences(List occurrences) { + LinkedHashMap out = new LinkedHashMap<>(); + for (Scip.Occurrence occ : occurrences) { + OccurrenceKey key = OccurrenceKey.of(occ); + Scip.Occurrence existing = out.get(key); + if (existing == null) { + out.put(key, occ); + continue; + } + // Prefer the variant with a populated enclosing_range. + if (existing.getEnclosingRangeCount() == 0 && occ.getEnclosingRangeCount() > 0) { + out.put(key, occ); + } + } + return new ArrayList<>(out.values()); + } + + 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(Scip.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); + } + } + // ========================== // Symbol/occurrence emission // ========================== @@ -174,7 +232,7 @@ private void emitSymbolInformation(Element sym, Tree tree) { if (!signature.isEmpty()) { builder.setSignatureDocumentation( Scip.Document.newBuilder() - .setLanguage(Scip.Language.Java.name()) + .setLanguage(LANGUAGE_JAVA) .setRelativePath(relativePath) .setText(signature)); } @@ -243,6 +301,7 @@ private static boolean supportsReferenceRelationship(Element sym) { case INTERFACE: case CLASS: case ANNOTATION_TYPE: + case ENUM: return false; default: return true; 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 72cc75f4d..7f96fd017 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 @@ -54,7 +54,10 @@ public void started(TaskEvent e) { Result semanticdbPath = semanticdbOutputPath(options, e); if (semanticdbPath.isOk()) { try { - Files.deleteIfExists(semanticdbPath.getOrThrow()); + Path sdb = semanticdbPath.getOrThrow(); + Files.deleteIfExists(sdb); + // Also drop any stale SCIP shard so we don't accumulate occurrences across builds. + Files.deleteIfExists(scipShardPath(sdb)); } catch (IOException ex) { this.reportException(ex, e); } 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 20e09be4a..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,131 +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/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . java/lang/ -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello# -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello# -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello# -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello#HelloBuilder# -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello#HelloBuilder# -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello#HelloBuilder#message. -//^^^^^^^^^^^^^^^ reference semanticdb maven . . minimized/Hello#HelloBuilder#message. -//^^^^^^^^^^^^^^^ 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/String# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/String# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings# -//^^^^^^^^^^^^^^^ reference semanticdb maven jdk 11 java/lang/SuppressWarnings#value(). -//^^^^^^^^^^^^^^^ 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 02bc69992..4f200693d 100644 --- a/tests/snapshots/src/main/scala/tests/MinimizedSnapshotScipGenerator.scala +++ b/tests/snapshots/src/main/scala/tests/MinimizedSnapshotScipGenerator.scala @@ -45,6 +45,7 @@ class MinimizedSnapshotScipGenerator extends SnapshotGenerator { sourceroot.toString(), "--output", scipOutput.toString, + "--use-scip-shards", "--targetroot", targetroot.toString() ) diff --git a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala index 3dbb20482..045dd5451 100644 --- a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala +++ b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala @@ -53,7 +53,7 @@ class ScipShardEmissionSuite extends FunSuite { assertEquals(shard.getDocumentsCount, 1) val doc = shard.getDocuments(0) assertEquals(doc.getRelativePath, "example/Foo.java") - assertEquals(doc.getLanguage, "Java") + assertEquals(doc.getLanguage, "java") val symbols = doc.getSymbolsList.asScala assert(symbols.nonEmpty, "expected at least one symbol") @@ -78,7 +78,7 @@ class ScipShardEmissionSuite extends FunSuite { // At least one definition should carry a Java signature_documentation block. val withSignatures = symbols.filter { info => info.hasSignatureDocumentation && - info.getSignatureDocumentation.getLanguage == "Java" && + info.getSignatureDocumentation.getLanguage == "java" && info.getSignatureDocumentation.getText.nonEmpty } assert( From a244bfe0f5efe8253e6f214ff1feb22b3bcb0d38 Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 15:32:59 +0200 Subject: [PATCH 7/8] PR1 (M8): Make compiler-side SCIP shard emission the default After M3-M7 the per-source SCIP shard format is stable and the ScipShardAggregator produces equivalent output to the legacy SemanticDB->SCIP path. This commit promotes the cheap compiler-side half of the dual-emission to be on by default so that: - any javac plugin invocation (sbt, Maven, Bazel, ad-hoc) writes a *.scip shard under META-INF/scip/ alongside the *.semanticdb file without needing an explicit -emit-scip:on flag; - users (or build tools) that want to consume the new path only need to flip the CLI switch (--use-scip-shards) once the indexer runs; - legacy callers that only read *.semanticdb files are unaffected. The CLI default for index-semanticdb's --use-scip-shards remains false because the broader ecosystem (notably the Kotlin compiler and the existing snapshot/build tool integrations) still produces only *.semanticdb. That flip is deferred to a follow-up PR. semanticdb-javac: - SemanticdbJavacOptions.emitScip defaults to true. -emit-scip:off is now the explicit opt-out and is documented as the legacy path. scip-java: - SnapshotCommand: skip per-source shards (those without a metadata.project_root) so 'scip-java snapshot' continues to render only the top-level aggregator output. Per-source shards have no project_root and would otherwise crash with 'missing scheme' when their relative paths are resolved into a URI. build.sbt: - Drop the now-redundant -emit-scip:on flag from the minimized project; the plugin default already emits shards. tests/unit: - ScipShardEmissionSuite: invert the off-path test so it explicitly passes -emit-scip:off; the previous test relied on the old default of false. Full snapshot suite (102 tests) and unit suite (30 tests) green. --- build.sbt | 1 - .../scip_java/commands/SnapshotCommand.scala | 52 +++++++++++-------- .../SemanticdbJavacOptions.java | 10 ++-- .../scala/tests/ScipShardEmissionSuite.scala | 9 +++- 4 files changed, 42 insertions(+), 30 deletions(-) diff --git a/build.sbt b/build.sbt index d8d497b92..4df7d8f07 100644 --- a/build.sbt +++ b/build.sbt @@ -550,7 +550,6 @@ lazy val minimizedSettings = List[Def.Setting[_]]( s"-build-tool:sbt", s"-text:on", s"-verbose", - s"-emit-scip:on", s"-sourceroot:${(ThisBuild / baseDirectory).value}", s"-targetroot:${(Compile / semanticdbTargetRoot).value}", s"-randomtimestamp=${System.nanoTime()}" 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 6b3425739..9ac166cf6 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 = Scip.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 emitted by the compiler plugin (those don't have a + // project_root). The aggregator produces a single top-level index file that + // carries the project_root and is the canonical input for snapshot rendering. + 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 source = + new String( + Files.readAllBytes(sourcepath), + StandardCharsets.UTF_8 + ) + val document = ScipPrinters.printTextDocument( + doc, + source, + CommentSyntax.default ) - 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 snapshotOutput = output.resolve(doc.getRelativePath) + Files.createDirectories(snapshotOutput.getParent) + Files.write( + snapshotOutput, + document.getBytes(StandardCharsets.UTF_8) + ) + } + } } super.visitFile(file, attrs) } diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java index 4bd335b57..8b50817da 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java @@ -25,11 +25,13 @@ public class SemanticdbJavacOptions { public boolean includeText = false; public boolean verboseEnabled = false; /** - * When {@code true}, the plugin also emits {@code *.scip} shards under {@code META-INF/scip/...} - * alongside the existing {@code *.semanticdb} files. Defaults to {@code false} during the - * SemanticDB→SCIP transition. + * Controls whether the plugin emits {@code *.scip} shards under {@code META-INF/scip/...} + * alongside the existing {@code *.semanticdb} files. Defaults to {@code true}: producing the + * extra shard is cheap and lets the {@code scip-java index-semanticdb --use-scip-shards} + * pipeline run without any additional compiler-side configuration. Legacy users that only + * consume {@code .semanticdb} are unaffected. Pass {@code -emit-scip:off} to disable. */ - public boolean emitScip = false; + public boolean emitScip = true; public final ArrayList errors; public boolean alreadyReportedErrors = false; diff --git a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala index 045dd5451..44a2c3fbd 100644 --- a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala +++ b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala @@ -103,12 +103,17 @@ class ScipShardEmissionSuite extends FunSuite { assert(barText.contains("int bar("), s"unexpected bar signature: $barText") } - test("compiler does not emit SCIP shards when -emit-scip is off") { + test("compiler does not emit SCIP shards when -emit-scip:off is set") { val targetroot = Files.createTempDirectory("scip-shard-off-") val sourceroot = Files.createTempDirectory("scip-shard-off-src-") val compiler = new TestCompiler(TestCompiler.PROCESSOR_PATH, Nil, targetroot, sourceroot) - val result = compiler.compileSemanticdb(Seq(source)) + val result = compiler.compile( + Seq(source), + List( + s"-Xplugin:semanticdb -emit-scip:off -text:on -sourceroot:$sourceroot -targetroot:$targetroot" + ) + ) assert(result.isSuccess, s"javac failed:\n${result.stdout}") val scipPath = targetroot.resolve("META-INF/scip/example/Foo.java.scip") From ca791745428d888c56f6ab79c90f7d89f2413c5e Mon Sep 17 00:00:00 2001 From: jupblb Date: Wed, 27 May 2026 16:13:43 +0200 Subject: [PATCH 8/8] PR1 (cleanup): Simplify newly-added SCIP shard code Post-PR1 cleanup of dead code, redundant flag plumbing, and duplication. No behavioral changes; snapshot suite (102 passed) and unit suite (28 passed) remain green. Dead code removed: - ScipShardAggregator: drop unused documentsFromShards{,Collected} and their Stream/Collectors imports. - ScipSymbols: drop unused isPlaceholderGlobal/descriptorPath; only fromSemanticdbSymbol + PLACEHOLDER_PREFIX are needed in production. - ScipSymbolsSuite: drop the tests for the removed helpers. Redundant -emit-scip:on plumbing removed: With compiler-side default emitScip=true (M8), the CLI/build-tool machinery that conditionally toggled the flag is purely cosmetic. - Embedded.customJavac: drop emitScip param + emitScipProp system property prefix. - MavenBuildTool: stop passing emitScip = useScipShards. - ScipBuildTool: stop appending -emit-scip:on to the -Xplugin string. - SemanticdbOptionBuilder: drop EMIT_SCIP system-property handling and the corresponding xpluginOption branch. - SemanticdbJavacOptions still parses -emit-scip:on / -emit-scip:off as the compiler-side opt-out. - IndexSemanticdbCommand help text no longer implies the shards require an extra compiler flag. Internal duplication removed: - New ScipOccurrences package-private helper centralizes the (symbol, range, roles) dedup key and the 'prefer enclosing_range' merge rule that ScipVisitor and ScipShardWriter both used. - ScipShardWriter.mergeSymbol now uses LinkedHashMap for relationships so output ordering is deterministic. Small ScipVisitor cleanups: - Drop dependency on Semanticdb Property bitmask; compute isStatic / isAbstract directly from Modifier set. - Make 'source' final and initialized via a static sourceText helper. - Merge identical switch arms for ENUM/CLASS/INTERFACE/ANNOTATION_TYPE in emitSymbolInformation. - Refresh stale class-level javadoc; signature docs are now produced via ScipSignatureFormatter. --- .../com/sourcegraph/scip_java/Embedded.scala | 10 +- .../scip_java/buildtools/MavenBuildTool.scala | 3 +- .../scip_java/buildtools/ScipBuildTool.scala | 7 +- .../commands/IndexSemanticdbCommand.scala | 8 +- .../scip_semanticdb/ScipShardAggregator.java | 12 --- .../semanticdb_javac/ScipOccurrences.java | 66 +++++++++++++ .../semanticdb_javac/ScipShardWriter.java | 53 +---------- .../semanticdb_javac/ScipSymbols.java | 11 --- .../semanticdb_javac/ScipVisitor.java | 93 +++---------------- .../SemanticdbOptionBuilder.java | 6 +- .../scala/tests/ScipAggregationSuite.scala | 8 +- .../scala/tests/ScipShardEmissionSuite.scala | 8 +- .../test/scala/tests/ScipSymbolsSuite.scala | 11 --- 13 files changed, 101 insertions(+), 195 deletions(-) create mode 100644 semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipOccurrences.java diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala index 4b3169781..2be327dad 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/Embedded.scala @@ -34,8 +34,7 @@ object Embedded { sourceroot: Path, targetroot: Path, tmp: Path, - javaAtLeast17: Boolean, - emitScip: Boolean = false + javaAtLeast17: Boolean ): Path = { val bin = tmp.resolve("bin") val javac = bin.resolve("javac") @@ -57,11 +56,6 @@ object Embedded { BuildInfo.javacModuleOptions.mkString(" ") else "" - val emitScipProp = - if (emitScip) - s"-Dsemanticdb.emit-scip=true " - else - "" val injectSemanticdbArguments = List[String]( "java", s"-Dsemanticdb.errorpath=$errorpath", @@ -70,7 +64,7 @@ object Embedded { s"-Dsemanticdb.targetroot=$targetroot", s"-Dsemanticdb.output=$$NEW_JAVAC_OPTS", s"-Dsemanticdb.old-output=$javacopts", - s"${emitScipProp}-classpath $pluginpath", + s"-classpath $pluginpath", "com.sourcegraph.semanticdb_javac.InjectSemanticdbOptions", """"$@"""" ).mkString(" ") diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala index 1086d68a3..a0b4f8631 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/MavenBuildTool.scala @@ -44,8 +44,7 @@ class MavenBuildTool(index: IndexCommand) extends BuildTool("Maven", index) { index.workingDirectory, index.finalTargetroot(defaultTargetroot), tmp, - GradleJavaToolchains.isJavaAtLeast(SystemJavaVersion.detect(), "11"), - emitScip = index.indexSemanticdb.useScipShards + GradleJavaToolchains.isJavaAtLeast(SystemJavaVersion.detect(), "11") ) buildCommand ++= List( diff --git a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala index a99cdc7cb..f6ced10ae 100644 --- a/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala +++ b/scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/ScipBuildTool.scala @@ -383,13 +383,8 @@ class ScipBuildTool(index: IndexCommand) extends BuildTool("SCIP", index) { arguments += "-classpath" arguments += actualClasspath.mkString(File.pathSeparator) } - val emitScipFlag = - if (index.indexSemanticdb.useScipShards) - " -emit-scip:on" - else - "" arguments += - s"-Xplugin:semanticdb -targetroot:$targetroot -sourceroot:$sourceroot$emitScipFlag" + s"-Xplugin:semanticdb -targetroot:$targetroot -sourceroot:$sourceroot" if (config.processorpath.nonEmpty) { arguments += "-processorpath" val processorpath = 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 a8c9cf6cd..f3f32a00d 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 @@ -62,10 +62,10 @@ final case class IndexSemanticdbCommand( ) allowExportingGlobalSymbolsFromDirectoryEntries: Boolean = true, @Description( - "If true, walk targetroots for *.scip shards (META-INF/scip/...) produced by the " + - "compiler plugin's -emit-scip:on flag instead of *.semanticdb files. The aggregator " + - "rewrites placeholder symbols into the final 'scip-java' scheme and merges per-source " + - "shards into the output index." + "If true, walk targetroots for *.scip shards (META-INF/scip/...) emitted by the " + + "compiler plugin instead of *.semanticdb files. The aggregator rewrites placeholder " + + "symbols into the final 'scip-java' scheme and merges per-source shards into the " + + "output index." ) useScipShards: Boolean = false, @Inline() 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 index 6f77a1028..96458b331 100644 --- a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipShardAggregator.java @@ -17,8 +17,6 @@ import java.util.Map; import java.util.jar.JarEntry; import java.util.jar.JarFile; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** * Aggregates per-source {@code *.scip} shards into a single {@link Scip.Index}. @@ -316,14 +314,4 @@ private static boolean supportsReferenceRelationship(Scip.SymbolInformation info } } - // Make the existing flatten-style call available for callers that already have shards in memory. - @SuppressWarnings("unused") - Stream documentsFromShards(List shards) { - return shards.stream().flatMap(s -> s.getDocumentsList().stream()).map(this::rewriteDocument); - } - - @SuppressWarnings("unused") - Stream documentsFromShardsCollected(List shards) { - return documentsFromShards(shards).collect(Collectors.toList()).stream(); - } } 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..d4b29e913 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipOccurrences.java @@ -0,0 +1,66 @@ +package com.sourcegraph.semanticdb_javac; + +import com.sourcegraph.Scip; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Objects; + +/** + * Helpers for deduplicating SCIP {@link Scip.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 ScipOccurrences() {} + + /** Returns a new list with duplicate occurrences collapsed in insertion order. */ + static List deduplicate(List occurrences) { + LinkedHashMap out = new LinkedHashMap<>(); + for (Scip.Occurrence occ : occurrences) put(out, occ); + return new ArrayList<>(out.values()); + } + + /** Inserts {@code occ} into {@code out}, collapsing duplicates by {@link Key}. */ + static void put(LinkedHashMap out, Scip.Occurrence occ) { + Key key = Key.of(occ); + Scip.Occurrence existing = out.get(key); + if (existing == null) { + out.put(key, occ); + return; + } + if (existing.getEnclosingRangeCount() == 0 && occ.getEnclosingRangeCount() > 0) { + out.put(key, occ); + } + } + + 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(Scip.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/ScipShardWriter.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java index b5efee165..5bf5df35b 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipShardWriter.java @@ -7,11 +7,9 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Objects; /** * Writes and merges per-source SCIP shards produced by the compiler plugin. @@ -83,9 +81,9 @@ private static Scip.Document mergeDocuments(Scip.Document a, Scip.Document b) { // Deduplicate occurrences by (range, symbol, roles). Variants that differ only in // enclosing_range get collapsed, preferring the one that carries the enclosing range. - LinkedHashMap occurrences = new LinkedHashMap<>(); - for (Scip.Occurrence occ : a.getOccurrencesList()) putOccurrence(occurrences, occ); - for (Scip.Occurrence occ : b.getOccurrencesList()) putOccurrence(occurrences, occ); + LinkedHashMap occurrences = new LinkedHashMap<>(); + for (Scip.Occurrence occ : a.getOccurrencesList()) ScipOccurrences.put(occurrences, occ); + for (Scip.Occurrence occ : b.getOccurrencesList()) ScipOccurrences.put(occurrences, occ); builder.addAllOccurrences(occurrences.values()); // Deduplicate symbols by symbol string; merge relationships and documentation. @@ -103,8 +101,8 @@ private static Scip.Document mergeDocuments(Scip.Document a, Scip.Document b) { private static Scip.SymbolInformation mergeSymbol( Scip.SymbolInformation a, Scip.SymbolInformation b) { Scip.SymbolInformation.Builder builder = b.toBuilder(); - // Merge relationships, deduplicating by structural equality. - Map rels = new HashMap<>(); + // Merge relationships, deduplicating by structural equality with deterministic ordering. + Map rels = new LinkedHashMap<>(); for (Scip.Relationship r : a.getRelationshipsList()) rels.put(r, r); for (Scip.Relationship r : b.getRelationshipsList()) rels.put(r, r); builder.clearRelationships().addAllRelationships(rels.values()); @@ -118,45 +116,4 @@ private static Scip.SymbolInformation mergeSymbol( return builder.build(); } - - private static void putOccurrence( - LinkedHashMap out, Scip.Occurrence occ) { - OccurrenceKey key = OccurrenceKey.of(occ); - Scip.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(Scip.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); - } - } } 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 index bcc4b9153..736b287cd 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipSymbols.java @@ -43,15 +43,4 @@ public static String fromSemanticdbSymbol(String symbol) { } return PLACEHOLDER_PREFIX + symbol; } - - /** Returns {@code true} if {@code symbol} is a placeholder global symbol. */ - public static boolean isPlaceholderGlobal(String symbol) { - return symbol != null && symbol.startsWith(PLACEHOLDER_PREFIX); - } - - /** Strips the placeholder prefix, returning just the SemanticDB descriptor path. */ - public static String descriptorPath(String placeholderSymbol) { - if (!isPlaceholderGlobal(placeholderSymbol)) return placeholderSymbol; - return placeholderSymbol.substring(PLACEHOLDER_PREFIX.length()); - } } diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java index 4d7048208..a3e52a5b8 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/ScipVisitor.java @@ -1,7 +1,6 @@ package com.sourcegraph.semanticdb_javac; import com.sourcegraph.Scip; -import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolInformation.Property; import com.sourcegraph.semanticdb_javac.Semanticdb.SymbolOccurrence.Role; import com.sun.source.tree.AnnotatedTypeTree; import com.sun.source.tree.ClassTree; @@ -53,11 +52,8 @@ * *

Structurally this is a fork of {@link SemanticdbVisitor} that emits SCIP types instead of * SemanticDB ones. Symbols are produced through {@link GlobalSymbolsCache} and then translated to - * the placeholder SCIP form via {@link ScipSymbols#fromSemanticdbSymbol(String)}. - * - *

Signature documentation and SemanticDB-only metadata (access, annotations, full SemanticDB - * type tree) are not yet emitted; those will be added by {@code ScipSignatureFormatter} in a - * follow-up milestone. + * 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 { @@ -70,7 +66,7 @@ public final class ScipVisitor extends TreePathScanner { private final SemanticdbJavacOptions options; private final ArrayList occurrences; private final LinkedHashMap symbols; - private String source; + private final String source; private final String relativePath; private final LinkedHashMap nodes; @@ -90,7 +86,7 @@ public ScipVisitor( this.compUnitTree = compUnitTree; this.occurrences = new ArrayList<>(); this.symbols = new LinkedHashMap<>(); - this.source = sourceText(); + this.source = sourceText(compUnitTree); this.relativePath = sourceRelativePath(compUnitTree, options); this.nodes = new LinkedHashMap<>(); } @@ -107,7 +103,7 @@ public Scip.Index buildShard(CompilationUnitTree tree) { if (options.includeText) { document.setText(source); } - document.addAllOccurrences(dedupOccurrences(occurrences)); + document.addAllOccurrences(ScipOccurrences.deduplicate(occurrences)); document.addAllSymbols(symbols.values()); return Scip.Index.newBuilder().addDocuments(document).build(); @@ -119,58 +115,6 @@ public Scip.Index buildShard(CompilationUnitTree tree) { */ static final String LANGUAGE_JAVA = "java"; - /** - * Some AST patterns (in particular top-level class definitions touched by both the regular - * declaration walk and downstream resolvers) can produce two occurrences with the same {@code - * (symbol, range, roles)} that differ only by whether {@code enclosing_range} is set. The SCIP - * writer treats those as distinct by structural equality, so we collapse them here, preferring - * the variant that carries an {@code enclosing_range}. - */ - private static List dedupOccurrences(List occurrences) { - LinkedHashMap out = new LinkedHashMap<>(); - for (Scip.Occurrence occ : occurrences) { - OccurrenceKey key = OccurrenceKey.of(occ); - Scip.Occurrence existing = out.get(key); - if (existing == null) { - out.put(key, occ); - continue; - } - // Prefer the variant with a populated enclosing_range. - if (existing.getEnclosingRangeCount() == 0 && occ.getEnclosingRangeCount() > 0) { - out.put(key, occ); - } - } - return new ArrayList<>(out.values()); - } - - 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(Scip.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); - } - } - // ========================== // Symbol/occurrence emission // ========================== @@ -242,8 +186,6 @@ private void emitSymbolInformation(Element sym, Tree tree) { switch (sym.getKind()) { case ENUM: case CLASS: - addParentRelationships(builder, (TypeElement) sym, supportsReferenceRel); - break; case INTERFACE: case ANNOTATION_TYPE: addParentRelationships(builder, (TypeElement) sym, supportsReferenceRel); @@ -332,18 +274,11 @@ private static List scipRange(Semanticdb.Range range) { } private static Scip.SymbolInformation.Kind scipKind(Element sym) { - int properties = 0; - for (Modifier modifier : sym.getModifiers()) { - if (modifier == Modifier.STATIC) properties |= Property.STATIC_VALUE; - else if (modifier == Modifier.ABSTRACT) properties |= Property.ABSTRACT_VALUE; - else if (modifier == Modifier.DEFAULT) properties |= Property.DEFAULT_VALUE; - } - if (((properties & Property.ABSTRACT_VALUE) > 0) - && ((properties & Property.DEFAULT_VALUE) > 0)) { - properties ^= Property.ABSTRACT_VALUE; - } - boolean isStatic = (properties & Property.STATIC_VALUE) > 0; - boolean isAbstract = (properties & Property.ABSTRACT_VALUE) > 0; + 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); switch (sym.getKind()) { case ENUM: @@ -663,14 +598,12 @@ private Optional computeEnclosingRange(Tree tree) { return Optional.empty(); } - private String sourceText() { - 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 ""; } - return source; } private List semanticdbParentSymbols(TypeElement typeElement) { diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java index 0f2e43e24..9a2b15988 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java @@ -23,8 +23,6 @@ public class SemanticdbOptionBuilder { private static final String TARGETROOT = System.getProperty("semanticdb.targetroot", ""); private static final String OUTPUT = System.getProperty("semanticdb.output", ""); private static final String OLD_OUTPUT = System.getProperty("semanticdb.old-output", ""); - private static final boolean EMIT_SCIP = - Boolean.parseBoolean(System.getProperty("semanticdb.emit-scip", "false")); public void processArgument(String arg) { oldArgs.add(arg); @@ -64,10 +62,8 @@ private String wrapQuote(String arg) { } private String xpluginOption() { - String emitScip = EMIT_SCIP ? " -emit-scip:on" : ""; return String.format( - "\"-Xplugin:semanticdb -sourceroot:%s -targetroot:%s%s\"", - SOURCEROOT, TARGETROOT, emitScip); + "\"-Xplugin:semanticdb -sourceroot:%s -targetroot:%s\"", SOURCEROOT, TARGETROOT); } public ArrayList finalResult() { diff --git a/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala b/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala index d6281a9c8..000f5d11b 100644 --- a/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala +++ b/tests/unit/src/test/scala/tests/ScipAggregationSuite.scala @@ -16,9 +16,9 @@ import com.sourcegraph.scip_semanticdb.{ import munit.FunSuite // End-to-end test for the SCIP shard aggregation pipeline: compile Java with -// -emit-scip:on, run ScipShardAggregator over the produced META-INF/scip -// shards, and assert the final index.scip is well-formed and uses the -// scip-java symbol scheme. +// the default shard emission, run ScipShardAggregator over the produced +// META-INF/scip shards, and assert the final index.scip is well-formed and +// uses the scip-java symbol scheme. class ScipAggregationSuite extends FunSuite { private val source = @@ -41,7 +41,7 @@ class ScipAggregationSuite extends FunSuite { compiler.compile( Seq(source), Seq( - s"-Xplugin:semanticdb -emit-scip:on -text:on -sourceroot:$sourceroot -targetroot:$targetroot" + s"-Xplugin:semanticdb -text:on -sourceroot:$sourceroot -targetroot:$targetroot" ) ) assert(result.isSuccess, s"javac failed:\n${result.stdout}") diff --git a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala index 44a2c3fbd..cc3544fea 100644 --- a/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala +++ b/tests/unit/src/test/scala/tests/ScipShardEmissionSuite.scala @@ -10,8 +10,8 @@ import com.sourcegraph.semanticdb_javac.ScipSymbols import munit.FunSuite /** - * Verifies that the `-emit-scip:on` plugin flag produces a parseable `*.scip` - * shard alongside the existing `*.semanticdb` file. + * Verifies that the plugin produces a parseable `*.scip` shard alongside the + * existing `*.semanticdb` file by default, and that `-emit-scip:off` disables it. */ class ScipShardEmissionSuite extends FunSuite { @@ -28,7 +28,7 @@ class ScipShardEmissionSuite extends FunSuite { |""".stripMargin ) - test("compiler emits a parseable SCIP shard when -emit-scip:on is set") { + test("compiler emits a parseable SCIP shard by default") { val targetroot = Files.createTempDirectory("scip-shard-emission-") val sourceroot = Files.createTempDirectory("scip-shard-emission-src-") val compiler = @@ -36,7 +36,7 @@ class ScipShardEmissionSuite extends FunSuite { val result = compiler.compile( Seq(source), Seq( - s"-Xplugin:semanticdb -emit-scip:on -text:on -sourceroot:$sourceroot -targetroot:$targetroot" + s"-Xplugin:semanticdb -text:on -sourceroot:$sourceroot -targetroot:$targetroot" ) ) assert(result.isSuccess, s"javac failed:\n${result.stdout}") diff --git a/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala b/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala index cf9708ddd..c15d7e7d9 100644 --- a/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala +++ b/tests/unit/src/test/scala/tests/ScipSymbolsSuite.scala @@ -33,17 +33,6 @@ class ScipSymbolsSuite extends FunSuite { assertEquals(ScipSymbols.fromSemanticdbSymbol(null), "") } - test("isPlaceholderGlobal recognises the prefix") { - assert(ScipSymbols.isPlaceholderGlobal(". . . . a/b#")) - assert(!ScipSymbols.isPlaceholderGlobal("local 1")) - assert(!ScipSymbols.isPlaceholderGlobal("scip-java maven g a v a/b#")) - } - - test("descriptorPath strips the placeholder prefix") { - assertEquals(ScipSymbols.descriptorPath(". . . . a/b#"), "a/b#") - assertEquals(ScipSymbols.descriptorPath("local 1"), "local 1") - } - // A PackageTable built with no packages — packageForSymbol always returns empty // unless the JDK classfile is on the classpath. Override defensively just in case. private lazy val emptyPackages: PackageTable =