Skip to content

Commit 3aa2f9f

Browse files
committed
Share LocalSymbolsCache and options POJO across plugins
1 parent a9bf7b2 commit 3aa2f9f

17 files changed

Lines changed: 101 additions & 81 deletions

File tree

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/GlobalSymbolsCache.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.sourcegraph.semanticdb_javac;
22

3+
import com.sourcegraph.semanticdb.LocalSymbolsCache;
34
import com.sourcegraph.semanticdb.SemanticdbSymbols;
45

56
import javax.lang.model.element.Element;
@@ -25,7 +26,7 @@ public GlobalSymbolsCache(SemanticdbJavacOptions options) {
2526
this.options = options;
2627
}
2728

28-
public String semanticdbSymbol(Element sym, LocalSymbolsCache locals) {
29+
public String semanticdbSymbol(Element sym, LocalSymbolsCache<Element, String> locals) {
2930
String result = globals.get(sym);
3031
if (result != null) return result;
3132
String localResult = locals.get(sym);
@@ -37,7 +38,7 @@ public String semanticdbSymbol(Element sym, LocalSymbolsCache locals) {
3738
return result;
3839
}
3940

40-
private String uncachedSemanticdbSymbol(Element sym, LocalSymbolsCache locals) {
41+
private String uncachedSemanticdbSymbol(Element sym, LocalSymbolsCache<Element, String> locals) {
4142
if (sym == null) return SemanticdbSymbols.ROOT_PACKAGE;
4243

4344
if (sym instanceof PackageElement) {

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/LocalSymbolsCache.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbJavacOptions.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package com.sourcegraph.semanticdb_javac;
22

3+
import com.sourcegraph.semanticdb.NoRelativePathMode;
4+
import com.sourcegraph.semanticdb.SemanticdbOptions;
5+
import com.sourcegraph.semanticdb.UriScheme;
6+
37
import java.io.ByteArrayOutputStream;
48
import java.io.PrintStream;
59
import java.lang.reflect.Method;
@@ -16,24 +20,13 @@
1620
import static javax.tools.StandardLocation.SOURCE_OUTPUT;
1721

1822
/** Settings that can be configured alongside the -Xplugin compiler option. */
19-
public class SemanticdbJavacOptions {
20-
21-
/** The directory to place META-INF and its .semanticdb files */
22-
public Path targetroot;
23+
public class SemanticdbJavacOptions extends SemanticdbOptions {
2324

24-
public Path sourceroot;
25-
public boolean includeText = false;
2625
public boolean verboseEnabled = false;
27-
public final ArrayList<String> errors;
26+
public final ArrayList<String> errors = new ArrayList<>();
2827
public boolean alreadyReportedErrors = false;
29-
public UriScheme uriScheme = UriScheme.DEFAULT;
30-
public NoRelativePathMode noRelativePath = NoRelativePathMode.INDEX_ANYWAY;
3128
public Path generatedTargetRoot;
3229

33-
public SemanticdbJavacOptions() {
34-
errors = new ArrayList<>();
35-
}
36-
3730
public static String missingRequiredDirectoryOption(String option) {
3831
return String.format(
3932
"missing argument '-%s'. To fix this problem, update the Java compiler option "

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSignatures.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.sourcegraph.semanticdb_javac;
22

3+
import com.sourcegraph.semanticdb.LocalSymbolsCache;
34
import com.sourcegraph.semanticdb.Semanticdb;
45

56
import com.sourcegraph.semanticdb.Semanticdb.*;
@@ -20,10 +21,11 @@
2021

2122
public final class SemanticdbSignatures {
2223
private final GlobalSymbolsCache cache;
23-
private final LocalSymbolsCache locals;
24+
private final LocalSymbolsCache<Element, String> locals;
2425
private final Types types;
2526

26-
public SemanticdbSignatures(GlobalSymbolsCache cache, LocalSymbolsCache locals, Types types) {
27+
public SemanticdbSignatures(
28+
GlobalSymbolsCache cache, LocalSymbolsCache<Element, String> locals, Types types) {
2729
this.cache = cache;
2830
this.locals = locals;
2931
this.types = types;

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.sourcegraph.semanticdb_javac;
22

3+
import com.sourcegraph.semanticdb.LocalSymbolsCache;
4+
import com.sourcegraph.semanticdb.NoRelativePathMode;
35
import com.sourcegraph.semanticdb.Semanticdb;
46
import com.sourcegraph.semanticdb.SemanticdbDocumentBuilder;
57
import com.sourcegraph.semanticdb.SemanticdbPaths;
8+
import com.sourcegraph.semanticdb.SemanticdbSymbols;
69
import com.sourcegraph.semanticdb.SemanticdbWriter;
10+
import com.sourcegraph.semanticdb.UriScheme;
711

812
import com.sun.source.util.JavacTask;
913
import com.sun.source.util.TaskEvent;
@@ -12,6 +16,7 @@
1216
import javax.lang.model.util.Elements;
1317
import javax.lang.model.util.Types;
1418

19+
import javax.lang.model.element.Element;
1520
import javax.tools.JavaFileObject;
1621
import java.io.ByteArrayOutputStream;
1722
import java.io.IOException;
@@ -21,6 +26,7 @@
2126
import java.nio.file.Path;
2227
import java.nio.file.Paths;
2328
import java.util.HashMap;
29+
import java.util.IdentityHashMap;
2430
import java.util.Map;
2531
import java.util.Optional;
2632

@@ -152,7 +158,8 @@ private void writeSemanticdb(TaskEvent event, Path output, Semanticdb.TextDocume
152158

153159
private static final class PerSourceState {
154160
final SemanticdbDocumentBuilder documentBuilder = new SemanticdbDocumentBuilder();
155-
final LocalSymbolsCache locals = new LocalSymbolsCache();
161+
final LocalSymbolsCache<Element, String> locals =
162+
new LocalSymbolsCache<>(new IdentityHashMap<>(), SemanticdbSymbols::local);
156163
}
157164

158165
public static Path absolutePathFromUri(SemanticdbJavacOptions options, JavaFileObject file) {

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTrees.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.sourcegraph.semanticdb_javac;
22

3+
import com.sourcegraph.semanticdb.LocalSymbolsCache;
34
import com.sourcegraph.semanticdb.Semanticdb;
45

56
import com.sun.source.tree.*;
@@ -22,7 +23,7 @@
2223
public class SemanticdbTrees {
2324
public SemanticdbTrees(
2425
GlobalSymbolsCache globals,
25-
LocalSymbolsCache locals,
26+
LocalSymbolsCache<Element, String> locals,
2627
String semanticdbUri,
2728
Types types,
2829
Trees trees,
@@ -37,7 +38,7 @@ public SemanticdbTrees(
3738
}
3839

3940
private final GlobalSymbolsCache globals;
40-
private final LocalSymbolsCache locals;
41+
private final LocalSymbolsCache<Element, String> locals;
4142
private final String semanticdbUri;
4243
private final Types types;
4344
private final Trees trees;

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTypeVisitor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.sourcegraph.semanticdb_javac;
22

3+
import com.sourcegraph.semanticdb.LocalSymbolsCache;
34
import com.sourcegraph.semanticdb.Semanticdb;
45

56
import javax.lang.model.element.Element;
@@ -25,10 +26,11 @@ class SemanticdbTypeVisitor extends SimpleTypeVisitor8<Semanticdb.Type, Void> {
2526
static final String ARRAY_SYMBOL = "scala/Array#";
2627

2728
private final GlobalSymbolsCache cache;
28-
private final LocalSymbolsCache locals;
29+
private final LocalSymbolsCache<Element, String> locals;
2930
private final Types types;
3031

31-
SemanticdbTypeVisitor(GlobalSymbolsCache cache, LocalSymbolsCache locals, Types types) {
32+
SemanticdbTypeVisitor(
33+
GlobalSymbolsCache cache, LocalSymbolsCache<Element, String> locals, Types types) {
3234
this.cache = cache;
3335
this.locals = locals;
3436
this.types = types;

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.sourcegraph.semanticdb_javac;
22

3+
import com.sourcegraph.semanticdb.LocalSymbolsCache;
34
import com.sourcegraph.semanticdb.Semanticdb;
45

56
import com.sourcegraph.semanticdb.SemanticdbDocumentBuilder;
@@ -64,7 +65,7 @@
6465
public class SemanticdbVisitor extends TreePathScanner<Void, Void> {
6566

6667
private final GlobalSymbolsCache globals;
67-
private final LocalSymbolsCache locals;
68+
private final LocalSymbolsCache<Element, String> locals;
6869
private final Types types;
6970
private final Trees trees;
7071
private final CompilationUnitTree compUnitTree;
@@ -78,7 +79,7 @@ public class SemanticdbVisitor extends TreePathScanner<Void, Void> {
7879

7980
public SemanticdbVisitor(
8081
GlobalSymbolsCache globals,
81-
LocalSymbolsCache locals,
82+
LocalSymbolsCache<Element, String> locals,
8283
CompilationUnitTree compUnitTree,
8384
SemanticdbJavacOptions options,
8485
Types types,
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package com.sourcegraph.semanticdb_kotlinc
22

3-
import java.nio.file.Path
3+
import com.sourcegraph.semanticdb.SemanticdbOptions
44
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
55

66
class AnalyzerFirExtensionRegistrar(
7-
private val sourceroot: Path,
7+
private val options: SemanticdbOptions,
88
) : FirExtensionRegistrar() {
99
override fun ExtensionRegistrarContext.configurePlugin() {
10-
+AnalyzerParamsProvider.getFactory(sourceroot)
10+
+AnalyzerParamsProvider.getFactory(options)
1111
+::AnalyzerCheckers
1212
}
1313
}

semanticdb-kotlinc/src/main/kotlin/com/sourcegraph/semanticdb_kotlinc/AnalyzerParamsProvider.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package com.sourcegraph.semanticdb_kotlinc
22

3+
import com.sourcegraph.semanticdb.SemanticdbOptions
34
import java.nio.file.Path
45
import org.jetbrains.kotlin.fir.FirSession
56
import org.jetbrains.kotlin.fir.extensions.FirExtensionSessionComponent
67
import org.jetbrains.kotlin.fir.extensions.FirExtensionSessionComponent.Factory
78

89
open class AnalyzerParamsProvider(
910
session: FirSession,
10-
val sourceroot: Path,
11+
val options: SemanticdbOptions,
1112
) : FirExtensionSessionComponent(session) {
13+
val sourceroot: Path get() = options.sourceroot
14+
1215
companion object {
13-
fun getFactory(sourceroot: Path): Factory {
14-
return Factory { AnalyzerParamsProvider(it, sourceroot) }
16+
fun getFactory(options: SemanticdbOptions): Factory {
17+
return Factory { AnalyzerParamsProvider(it, options) }
1518
}
1619
}
1720
}

0 commit comments

Comments
 (0)