Skip to content

Commit

Permalink
fixes and forcing uppercase for new files
Browse files Browse the repository at this point in the history
  • Loading branch information
InsanusMokrassar committed Feb 13, 2025
1 parent af286d3 commit f7a9f2e
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 3 deletions.
9 changes: 8 additions & 1 deletion ksp/generator/src/main/kotlin/FilesWorkaround.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,22 @@ fun KSDeclaration.writeFile(
suffix: String = "",
relatedPath: String = "",
force: Boolean = false,
forceUppercase: Boolean = true,
fileSpecBuilder: () -> FileSpec
) {
val containingFile = containingFile!!
val simpleName = if (forceUppercase) {
val rawSimpleName = simpleName.asString()
rawSimpleName.replaceFirst(rawSimpleName.first().toString(), rawSimpleName.first().uppercase())
} else {
simpleName.asString()
}
File(
File(
File(containingFile.filePath).parent,
relatedPath
),
"$prefix${simpleName.asString()}$suffix.kt"
"$prefix${simpleName}$suffix.kt"
).takeIf { force || !it.exists() } ?.apply {
parentFile.mkdirs()
val fileSpec = fileSpecBuilder()
Expand Down
22 changes: 20 additions & 2 deletions ksp/variations/generator/src/main/kotlin/Processor.kt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ class Processor(
if (it.isVararg) {
addModifiers(KModifier.VARARG)
}
it.annotations.forEach {
if (it.shortName.asString() == GenerationVariant::class.simpleName) return@forEach

addAnnotation(it.toAnnotationSpec(omitDefaultValues = false))
}
}
.build() to it.hasDefault
}
Expand All @@ -92,11 +97,16 @@ class Processor(
val funSpec = FunSpec.builder(ksFunctionDeclaration.simpleName.asString()).apply {
modifiers.addAll(ksFunctionDeclaration.modifiers.mapNotNull { it.toKModifier() })
ksFunctionDeclaration.annotations.forEach {
if (it.shortName.asString() == GenerateVariations::class.simpleName) return@forEach

addAnnotation(it.toAnnotationSpec(omitDefaultValues = false))
}
ksFunctionDeclaration.extensionReceiver ?.let {
receiver(it.toTypeName())
}
ksFunctionDeclaration.returnType ?.let {
returns(it.toTypeName())
}
}
baseFunctionParameters.forEach { (parameter, hasDefault) ->
if (hasDefault) {
Expand Down Expand Up @@ -138,6 +148,7 @@ class Processor(
accumulatedGeneration.receiverType ?.let {
receiver(it)
}
returns(accumulatedGeneration.returnType)
accumulatedGeneration.parameters.forEach {
val actualName = if (variation.argName.isEmpty()) it.name else variation.argName
parameters.add(
Expand Down Expand Up @@ -169,8 +180,15 @@ class Processor(
defaults[it.name] = defaultValueString
}
} else {
it.toBuilder()
it.toBuilder().apply {
defaults[it.name] = it.name
}
})
.apply {
it.annotations.forEach {
addAnnotation(it)
}
}
.build()
)
}
Expand Down Expand Up @@ -206,7 +224,7 @@ class Processor(
it.writeFile(prefix = prefix, suffix = "GeneratedVariation") {
FileSpec.builder(
it.packageName.asString(),
"${it.simpleName.getShortName()}GeneratedVariation"
"${it.simpleName.getShortName().let { it.replaceFirst(it.first().toString(), it.first().uppercase()) }}GeneratedVariation"
).apply {
addFileComment(
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,15 @@ public suspend fun SimpleType.sample2(
): Unit = sample2(
arg1 = arg1, arg2 = with(arg22) {toInt()}, arg3 = arg3
)

public suspend fun SimpleType.sample2(arg12: Int, arg22: String): Unit = sample2(
arg12 = arg12, arg2 = with(arg22) {toInt()}
)

public suspend fun SimpleType.sample2(
arg12: Int,
arg22: String,
arg3: Boolean,
): Unit = sample2(
arg12 = arg12, arg2 = with(arg22) {toInt()}, arg3 = arg3
)

0 comments on commit f7a9f2e

Please sign in to comment.