Skip to content

Commit

Permalink
Introduce SymbolProcessorEnvironment.kspVersion
Browse files Browse the repository at this point in the history
To be consistent with apiVersion, only major.minor is used. patch is
ignored.

TODO: automatically update after KSP 1 is deprecated.
  • Loading branch information
ting-yuan committed Feb 1, 2024
1 parent cd59900 commit 1566128
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 3 deletions.
10 changes: 10 additions & 0 deletions api/api.base
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,13 @@ package com.google.devtools.ksp.processing {
property @NonNull public final com.google.devtools.ksp.processing.Dependencies ALL_FILES;
}

public enum ExitCode {
method @NonNull public static com.google.devtools.ksp.processing.ExitCode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
method @NonNull public static com.google.devtools.ksp.processing.ExitCode[] values();
enum_constant public static final com.google.devtools.ksp.processing.ExitCode OK;
enum_constant public static final com.google.devtools.ksp.processing.ExitCode PROCESSING_ERROR;
}

public interface JsPlatformInfo extends com.google.devtools.ksp.processing.PlatformInfo {
}

Expand Down Expand Up @@ -187,17 +194,20 @@ package com.google.devtools.ksp.processing {
public final class SymbolProcessorEnvironment {
ctor public SymbolProcessorEnvironment(@NonNull java.util.Map<java.lang.String,java.lang.String> options, @NonNull kotlin.KotlinVersion kotlinVersion, @NonNull com.google.devtools.ksp.processing.CodeGenerator codeGenerator, @NonNull com.google.devtools.ksp.processing.KSPLogger logger);
ctor public SymbolProcessorEnvironment(@NonNull java.util.Map<java.lang.String,java.lang.String> options, @NonNull kotlin.KotlinVersion kotlinVersion, @NonNull com.google.devtools.ksp.processing.CodeGenerator codeGenerator, @NonNull com.google.devtools.ksp.processing.KSPLogger logger, @NonNull kotlin.KotlinVersion apiVersion, @NonNull kotlin.KotlinVersion compilerVersion, @NonNull java.util.List<? extends com.google.devtools.ksp.processing.PlatformInfo> platforms);
ctor public SymbolProcessorEnvironment(@NonNull java.util.Map<java.lang.String,java.lang.String> options, @NonNull kotlin.KotlinVersion kotlinVersion, @NonNull com.google.devtools.ksp.processing.CodeGenerator codeGenerator, @NonNull com.google.devtools.ksp.processing.KSPLogger logger, @NonNull kotlin.KotlinVersion apiVersion, @NonNull kotlin.KotlinVersion compilerVersion, @NonNull java.util.List<? extends com.google.devtools.ksp.processing.PlatformInfo> platforms, @NonNull kotlin.KotlinVersion kspVersion);
method @NonNull public kotlin.KotlinVersion getApiVersion();
method @NonNull public com.google.devtools.ksp.processing.CodeGenerator getCodeGenerator();
method @NonNull public kotlin.KotlinVersion getCompilerVersion();
method @NonNull public kotlin.KotlinVersion getKotlinVersion();
method @NonNull public kotlin.KotlinVersion getKspVersion();
method @NonNull public com.google.devtools.ksp.processing.KSPLogger getLogger();
method @NonNull public java.util.Map<java.lang.String,java.lang.String> getOptions();
method @NonNull public java.util.List<com.google.devtools.ksp.processing.PlatformInfo> getPlatforms();
property @NonNull public final kotlin.KotlinVersion apiVersion;
property @NonNull public final com.google.devtools.ksp.processing.CodeGenerator codeGenerator;
property @NonNull public final kotlin.KotlinVersion compilerVersion;
property @NonNull public final kotlin.KotlinVersion kotlinVersion;
property @NonNull public final kotlin.KotlinVersion kspVersion;
property @NonNull public final com.google.devtools.ksp.processing.KSPLogger logger;
property @NonNull public final java.util.Map<java.lang.String,java.lang.String> options;
property @NonNull public final java.util.List<com.google.devtools.ksp.processing.PlatformInfo> platforms;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ class SymbolProcessorEnvironment(
* There can be multiple platforms in a metadata compilation.
*/
val platforms: List<PlatformInfo>,

/**
* KSP version
*/
val kspVersion: KotlinVersion,
) {
// For compatibility with KSP 1.0.2 and earlier
constructor(
Expand All @@ -68,6 +73,26 @@ class SymbolProcessorEnvironment(
logger,
kotlinVersion,
kotlinVersion,
emptyList()
emptyList(),
KotlinVersion(1, 0)
)

constructor(
options: Map<String, String>,
kotlinVersion: KotlinVersion,
codeGenerator: CodeGenerator,
logger: KSPLogger,
apiVersion: KotlinVersion,
compilerVersion: KotlinVersion,
platforms: List<PlatformInfo>,
) : this(
options,
kotlinVersion,
codeGenerator,
logger,
apiVersion,
compilerVersion,
platforms,
KotlinVersion(1, 0)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,8 @@ abstract class AbstractKotlinSymbolProcessingExtension(
logger,
options.apiVersion,
options.compilerVersion,
findTargetInfos(options.languageVersionSettings, module)
findTargetInfos(options.languageVersionSettings, module),
KotlinVersion(1, 0),
)
)
}?.let { analysisResult ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,8 @@ class PlaygroundIT(val useKSP2: Boolean) {
// In case KSP 1 and KSP 2 uses different compiler versions, ignore this test for KSP 2 for now.
Assert.assertTrue(result.output.contains("compiler version: $kotlinVersion"))
}
val expectedKspVersion = if (useKSP2) "2.0" else "1.0"
Assert.assertTrue(result.output.contains("ksp version: $expectedKspVersion"))
}
project.restore(buildFile.path)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ class TestProcessorProvider2 : SymbolProcessorProvider {
env.logger.warn("language version: ${env.kotlinVersion}")
env.logger.warn("api version: ${env.apiVersion}")
env.logger.warn("compiler version: ${env.compilerVersion}")
env.logger.warn("ksp version: ${env.kspVersion}")
env.platforms.filterIsInstance<JvmPlatformInfo>().single().let {
env.logger.warn("platform: $it")
env.logger.warn("jvm default mode: ${it.jvmDefaultMode}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,8 @@ class KotlinSymbolProcessing(
logger,
kspConfig.apiVersion.toKotlinVersion(),
KotlinCompilerVersion.getVersion().toKotlinVersion(),
targetPlatform.getPlatformInfo(kspConfig)
targetPlatform.getPlatformInfo(kspConfig),
KotlinVersion(2, 0)
)

// Load and instantiate processsors
Expand Down

0 comments on commit 1566128

Please sign in to comment.