Skip to content

Commit 4e9abcc

Browse files
authored
Drop support for Zinc (#895)
1 parent 999b8ad commit 4e9abcc

7 files changed

Lines changed: 16 additions & 81 deletions

File tree

build.sbt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,10 +550,20 @@ lazy val minimizedSettings = List[Def.Setting[_]](
550550
(run / fork) := true,
551551
(Compile / unmanagedSourceDirectories) += minimizedSourceDirectory,
552552
libraryDependencies ++= List("org.projectlombok" % "lombok" % "1.18.22"),
553+
// Fork javac so it receives real file paths instead of sbt's `vf://` virtual-file URIs
554+
// (see the comment on `semanticdbKotlincMinimized` for the long story).
555+
javaHome := Some(file(System.getProperty("java.home"))),
556+
Compile / javacOptions ++=
557+
Seq(
558+
"-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
559+
"-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
560+
"-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
561+
"-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
562+
"-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"
563+
),
553564
javacOptions +=
554565
List(
555566
s"-Xplugin:semanticdb",
556-
s"-build-tool:sbt",
557567
s"-text:on",
558568
s"-verbose",
559569
s"-sourceroot:${(ThisBuild / baseDirectory).value}",

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

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

33
import javax.lang.model.element.Element;
4-
import javax.lang.model.element.ElementKind;
54
import javax.lang.model.element.ExecutableElement;
65
import javax.lang.model.element.TypeElement;
76
import javax.lang.model.element.PackageElement;
@@ -36,12 +35,8 @@ public String semanticdbSymbol(Element sym, LocalSymbolsCache locals) {
3635
return result;
3736
}
3837

39-
public boolean isNone(Element sym) {
40-
return sym == null;
41-
}
42-
4338
private String uncachedSemanticdbSymbol(Element sym, LocalSymbolsCache locals) {
44-
if (isNone(sym)) return SemanticdbSymbols.ROOT_PACKAGE;
39+
if (sym == null) return SemanticdbSymbols.ROOT_PACKAGE;
4540

4641
if (sym instanceof PackageElement) {
4742
if (((PackageElement) sym).isUnnamed()) return SemanticdbSymbols.ROOT_PACKAGE;

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

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

33
import java.util.NoSuchElementException;
4-
import java.util.Objects;
5-
import java.util.function.Function;
64

75
/**
86
* A Java implementation of Rust's <code>Result[T, E]</code> type, or Scala's <code>Either[A, B]
@@ -17,7 +15,7 @@ private enum Kind {
1715
Error;
1816
}
1917

20-
private Kind kind;
18+
private final Kind kind;
2119
private final T ok;
2220
private final E error;
2321

@@ -31,69 +29,23 @@ private Result(Kind kind, T ok, E error) {
3129
this.ok = ok;
3230
}
3331

34-
@Override
35-
public boolean equals(Object o) {
36-
if (this == o) return true;
37-
if (o == null || getClass() != o.getClass()) return false;
38-
Result<?, ?> result = (Result<?, ?>) o;
39-
return kind == result.kind
40-
&& Objects.equals(error, result.error)
41-
&& Objects.equals(ok, result.ok);
42-
}
43-
44-
@Override
45-
public int hashCode() {
46-
return Objects.hash(kind, error, ok);
47-
}
48-
49-
@Override
50-
public String toString() {
51-
switch (kind) {
52-
case Ok:
53-
return "Error(" + error + ")";
54-
case Error:
55-
return "Ok(" + ok + ")";
56-
default:
57-
return "Result{" + "kind=" + kind + ", error=" + error + ", ok=" + ok + '}';
58-
}
59-
}
60-
61-
public <C> C fold(Function<T, C> onOk, Function<E, C> onError) {
62-
switch (kind) {
63-
case Ok:
64-
return onOk.apply(ok);
65-
case Error:
66-
return onError.apply(error);
67-
default:
68-
throw new IllegalArgumentException(this.toString());
69-
}
70-
}
71-
72-
public <C> Result<C, E> map(Function<T, C> fn) {
73-
return this.fold(left -> Result.ok(fn.apply(left)), Result::error);
74-
}
75-
7632
public boolean isOk() {
7733
return kind == Kind.Ok;
7834
}
7935

80-
public boolean isError() {
81-
return kind == Kind.Error;
82-
}
83-
8436
public T getOrThrow() {
8537
if (kind == Kind.Ok) {
8638
return ok;
8739
} else {
88-
throw new NoSuchElementException("no left value on " + this.toString());
40+
throw new NoSuchElementException("no ok value on Result.Error(" + error + ")");
8941
}
9042
}
9143

9244
public E getErrorOrThrow() {
9345
if (kind == Kind.Error) {
9446
return error;
9547
} else {
96-
throw new NoSuchElementException("no left value on " + this.toString());
48+
throw new NoSuchElementException("no error value on Result.Ok(" + ok + ")");
9749
}
9850
}
9951

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ public static SemanticdbJavacOptions parse(String[] args, JavacTask task) {
5858
}
5959
} else if (arg.startsWith("-sourceroot:")) {
6060
result.sourceroot = Paths.get(arg.substring("-sourceroot:".length())).normalize();
61-
} else if (arg.equals("-build-tool:sbt")) {
62-
result.uriScheme = UriScheme.ZINC;
6361
} else if (arg.startsWith("-no-relative-path:")) {
6462
String value = arg.substring("-no-relative-path:".length());
6563
switch (value) {

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

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -208,16 +208,7 @@ private void appendSemanticdb(
208208

209209
public static Path absolutePathFromUri(SemanticdbJavacOptions options, JavaFileObject file) {
210210
URI uri = file.toUri();
211-
if ((options.uriScheme == UriScheme.SBT || options.uriScheme == UriScheme.ZINC)
212-
&& uri.getScheme().equals("vf")
213-
&& uri.toString().startsWith("vf://tmp/")) {
214-
String[] parts = uri.toString().split("/", 5);
215-
if (parts.length == 5) {
216-
return options.sourceroot.resolve(Paths.get(parts[4]));
217-
} else {
218-
throw new IllegalArgumentException("unsupported URI: " + uri);
219-
}
220-
} else if (options.uriScheme == UriScheme.BAZEL) {
211+
if (options.uriScheme == UriScheme.BAZEL) {
221212
String toString = file.toString().replace(":", "/");
222213
// This solution is hacky, and it would be very nice to use a dedicated API
223214
// instead.

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,5 @@
22

33
public enum UriScheme {
44
DEFAULT,
5-
/** @deprecated Use ZINC instead */
6-
@Deprecated
7-
SBT,
85
BAZEL,
9-
ZINC
106
}

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.sourcegraph.semanticdb_kotlinc
22

33
import java.nio.file.Path
44
import kotlin.contracts.ExperimentalContracts
5-
import kotlin.math.exp
65
import org.jetbrains.kotlin.*
76
import org.jetbrains.kotlin.com.intellij.lang.LighterASTNode
87
import org.jetbrains.kotlin.com.intellij.util.diff.FlyweightCapableTreeStructure
@@ -12,26 +11,20 @@ import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind
1211
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
1312
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.*
1413
import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers
15-
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirBasicExpressionChecker
16-
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirClassReferenceExpressionChecker
1714
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirQualifiedAccessExpressionChecker
1815
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirTypeOperatorCallChecker
1916
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
2017
import org.jetbrains.kotlin.fir.analysis.checkers.toClassLikeSymbol
2118
import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension
2219
import org.jetbrains.kotlin.fir.declarations.*
23-
import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression
2420
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
25-
import org.jetbrains.kotlin.fir.expressions.FirStatement
2621
import org.jetbrains.kotlin.fir.expressions.FirTypeOperatorCall
2722
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
2823
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticFunctionSymbol
2924
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
3025
import org.jetbrains.kotlin.fir.resolve.toClassLikeSymbol
3126
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
3227
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
33-
import org.jetbrains.kotlin.fir.types.coneType
34-
import org.jetbrains.kotlin.fir.types.resolvedType
3528
import org.jetbrains.kotlin.lexer.KtTokens
3629
import org.jetbrains.kotlin.name.ClassId
3730
import org.jetbrains.kotlin.name.FqName

0 commit comments

Comments
 (0)