Skip to content

Commit b99a425

Browse files
committed
simplified code generation and moved it under kotlinGen
1 parent f6c0ef2 commit b99a425

26 files changed

+60
-69
lines changed

build.gradle.kts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212
id("elect86.magik") version "0.3.3"
1313
`maven-publish`
1414
signing
15-
// id("com.github.johnrengelman.shadow") version "8.1.1"
15+
// id("com.github.johnrengelman.shadow") version "8.1.1"
1616
}
1717

1818
repositories {
@@ -27,12 +27,7 @@ dependencies {
2727
kotlin.jvmToolchain { languageVersion.set(JavaLanguageVersion.of(8)) }
2828

2929
tasks {
30-
withType<KotlinCompile<*>>().all {
31-
kotlinOptions {
32-
languageVersion = "1.8"
33-
freeCompilerArgs += listOf("-opt-in=kotlin.RequiresOptIn")
34-
}
35-
}
30+
withType<KotlinCompile<*>>().all { kotlinOptions { freeCompilerArgs += listOf("-opt-in=kotlin.RequiresOptIn") } }
3631
val generateCode by registering(GenerateCode::class)
3732
kotlin.sourceSets { main { kotlin.srcDir(generateCode) } }
3833
test { useJUnitPlatform() }

buildSrc/src/main/kotlin/kool/buffersJvm.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import kool.gen.Generator
44
import kool.gen.generate
55
import java.io.File
66

7-
fun buffersJvm(target: File) {
7+
fun buffersJvm() {
88

9-
generate(target, "kool/buffersJvm.kt") {
10-
11-
`package` = "kool"
9+
generate( "buffersJvm") {
1210

1311
suppressInlineWarning = true
1412
experimentals += Generator.Experimentals.TypeInference

buildSrc/src/main/kotlin/kool/builders.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import kool.gen.Generator
44
import kool.gen.generate
55
import java.io.File
66

7-
fun builders(target: File) {
7+
fun builders() {
88

9-
generate(target, "kool/builders.kt") {
10-
11-
`package` = "kool"
9+
generate("builders") {
1210

1311
experimentals += Generator.Experimentals.TypeInference
1412
// suppressInlineWarning = true

buildSrc/src/main/kotlin/kool/conversions.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import kool.gen.Generator
44
import kool.gen.generate
55
import java.io.File
66

7-
fun conversions(target: File) {
7+
fun conversions() {
88

9-
generate(target, "kool/conversions.kt") {
10-
11-
`package` = "kool"
9+
generate("conversions") {
1210

1311
experimentals += Generator.Experimentals.UnsignedTypes
1412
// suppressInlineWarning = true

buildSrc/src/main/kotlin/kool/extensions.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import kool.gen.Generator
44
import kool.gen.generate
55
import java.io.File
66

7-
fun extensions(target: File) {
7+
fun extensions() {
88

9-
generate(target, "kool/extensions.kt") {
10-
11-
`package` = "kool"
9+
generate("extensions") {
1210

1311
// suppressInlineWarning = true
1412

buildSrc/src/main/kotlin/kool/gen/GenerateCode.kt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import org.gradle.api.DefaultTask
55
import org.gradle.api.file.Directory
66
import org.gradle.api.file.FileSystemOperations
77
import org.gradle.api.file.ProjectLayout
8-
import org.gradle.api.provider.Provider
98
import org.gradle.api.tasks.OutputDirectory
109
import org.gradle.api.tasks.TaskAction
1110
import java.io.File
@@ -24,44 +23,45 @@ abstract class GenerateCode: DefaultTask() {
2423
@get:Inject
2524
abstract val files: FileSystemOperations
2625

27-
@get:OutputDirectory
28-
val targetDir: Directory = layout.projectDirectory.dir("src/mainGen/kotlin")
26+
@OutputDirectory
27+
val targetDir: Directory = layout.projectDirectory.dir("src/main/kotlinGen")
2928

3029
@TaskAction
3130
fun generate() {
3231
files.delete { delete(targetDir) }
33-
val target = targetDir.asFile
32+
Generator.targetDir = targetDir.asFile
3433

35-
ubuffers(target)
34+
ubuffers()
3635

37-
buffersJvm(target)
36+
buffersJvm()
3837

39-
iterators(target)
38+
iterators()
4039

41-
extensions(target)
40+
extensions()
4241

43-
builders(target)
42+
builders()
4443

45-
conversions(target)
44+
conversions()
4645

47-
pointers(target)
46+
pointers()
4847

49-
stackExts(target)
48+
stackExts()
5049

51-
stack(target)
50+
stack()
5251

53-
unsafe(target)
52+
unsafe()
5453
}
5554
}
5655

57-
fun generate(targetDir: File, file: String, block: Generator.() -> Unit) {
58-
Generator(targetDir).apply {
56+
fun generate(file: String, block: Generator.() -> Unit) {
57+
Generator().apply {
5958
builder.append('\n')
6059
block()
6160
for (import in imports)
6261
builder.insert(0, "import $import\n")
63-
if (`package`.isNotEmpty())
64-
builder.insert(0, "package $`package`\n")
62+
val f = file.replace('/', '.').substringBefore('.', "")
63+
val pack = if (f.isEmpty()) "kool" else "kool.$f"
64+
builder.insert(0, "package $pack\n\n")
6565
if (experimentals.isNotEmpty()) {
6666
val list = experimentals.joinToString { "${it.pkg}.Experimental${it.name}::class" }
6767
builder.insert(0, "@file:OptIn($list)\n")

buildSrc/src/main/kotlin/kool/gen/Generator.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ import java.util.*
55
import kotlin.collections.ArrayList
66
import kotlin.collections.HashSet
77

8-
class Generator(val targetDir: File) {
8+
class Generator {
99

1010
val builder = StringBuilder()
1111
var indentation = ""
1212

13-
var `package` = ""
1413
var imports = HashSet<String>()
1514
val experimentals = ArrayList<Experimentals>()
1615
var disableNameShadowing = false
@@ -108,8 +107,8 @@ class Generator(val targetDir: File) {
108107
}
109108
}
110109

111-
fun write(kt: String) {
112-
File(targetDir, kt).apply {
110+
fun write(path: String) {
111+
File(targetDir, "kool/$path.kt").apply {
113112
parentFile.mkdirs()
114113
writeText(builder.toString())
115114
}
@@ -150,4 +149,8 @@ class Generator(val targetDir: File) {
150149

151150
// dont change order (+ and - first, then * and /). Quat operator generation relies on this
152151
val operators = listOf("+" to "plus", "-" to "minus", "*" to "times", "/" to "div")
152+
153+
companion object {
154+
lateinit var targetDir: File
155+
}
153156
}

buildSrc/src/main/kotlin/kool/iterators.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ package kool
33
import kool.gen.generate
44
import java.io.File
55

6-
fun iterators(target: File) {
6+
fun iterators() {
77

8-
generate(target, "kool/iterators.kt") {
9-
10-
`package` = "kool"
8+
generate("iterators") {
119

1210
// suppressInlineWarning = true
1311

buildSrc/src/main/kotlin/kool/pointers.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import kool.gen.generate
44
import kool.gen.Generator
55
import java.io.File
66

7-
fun pointers(target: File) {
7+
fun pointers() {
88

9-
generate(target, "kool/pointers.kt") {
10-
11-
`package` = "kool"
9+
generate("pointers") {
1210

1311
experimentals += Generator.Experimentals.TypeInference
1412
suppressInlineWarning = true

buildSrc/src/main/kotlin/kool/stack.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ import kool.gen.generate
55
import org.gradle.configurationcache.extensions.capitalized
66
import java.io.File
77

8-
fun stack(target: File) {
8+
fun stack() {
99

10-
generate(target, "kool/stack.kt") {
11-
12-
`package` = "kool"
10+
generate("stack") {
1311

1412
experimentals += Generator.Experimentals.Contracts
1513
// suppressInlineWarning = true

0 commit comments

Comments
 (0)