Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce SymbolProcessorEnvironment.kspVersion #1708

Merged
merged 1 commit into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 10 additions & 0 deletions api/api.base
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
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)
)
}
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
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
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
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