#1579·auto

AutoBuilder will not build Kotlin data class with Duration

Author: wesalvaroCreated Aug 17, 2023Updated Nov 23, 2023
LabelsComponent: valuetype=documentationStatus: acceptedP3

I have a Kotlin data class with a nested @AutoBuilder.
If I change one of my Kotlin data class constructor arguments from a Long to a Kotlin Duration, I get the follow error:

[AutoBuilderNoVisible] No visible constructor for REDACTED
    public static abstract interface Builder {
                           ^

	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at com.google.devtools.kotlin.compiler.plugin.codegen.concurrent.KtCodegenExecutor.afterExecute(KtCodegenExecutor.kt:39)
	at com.google.devtools.kotlin.compiler.plugin.codegen.syncer.KtCodegenFloorExecutor.afterExecute(KtCodegenFloorExecutor.kt:27)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1623)
Caused by: error: [AutoBuilderNoVisible] No visible constructor for REDACTED
    public static abstract interface Builder {
                           ^

	at com.google.devtools.kotlin.compiler.plugin.codegen.compilation.KtCodegenPluginCompilerApp.compilePlugin(KtCodegenPluginCompilerApp.kt:151)
	at com.google.devtools.kotlin.compiler.plugin.codegen.KtCodegenCompiler.processKtCodegenFloor$lambda$6(KtCodegenCompiler.kt:294)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	... 2 more

Perhaps because Duration is an inline class?

kotlin
public inline class Duration internal constructor(private val rawValue: Long) : Comparable<Duration> {