Skip to content

fix: refactor module layout generation to use explicit project name maps - #486

Merged
cdsap merged 1 commit into
mainfrom
issue/485-hermes-refactor-module-layout-generation-to-a1
Sep 22, 2026
Merged

cdsap merged 1 commit into
mainfrom
issue/485-hermes-refactor-module-layout-generation-to-a1

Conversation

@cdsap

@cdsap cdsap commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Summary

Problem

GeneratedModuleLayout reads mutable global state from NameMappings, while ProjectGenerator configures that singleton before generation. This couples module layout infrastructure to process-wide state and is unsafe when generations overlap; see ProjectGenerator.kt, NameMappings.kt, ModulesWriter.kt, and GeneratedModuleLayout.kt.

Why this matters

Concurrent or independently tested generations can observe another request's layer/module names, producing incorrect paths and package locations without a local failure.

Proposed change

Pass immutable ProjectNameMaps from ProjectWriter through AndroidModulesWriter/JvmModulesWriter and ModulesWrite into GeneratedModuleLayout.of, replacing its direct NameMappings lookups. Preserve the existing singleton for untouched generators as a follow-up boundary, without changing generated output.

Notes

This is an incremental clean-architecture boundary: immutable naming context crosses into infrastructure explicitly, while the larger singleton migration remains outside this issue.

Fixes #485

Changes

  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/GeneratedModuleLayout.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/classes/ClassGeneratorAndroid.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/resources/ResourceGenerator.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/generator/test/TestGeneratorAndroid.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/writer/AndroidModulesWriter.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/writer/JvmModulesWriter.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/writer/ModulesWriter.kt
  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/writer/ProjectWriter.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/ProjectGeneratorTest.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/generator/GeneratedModuleLayoutTest.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/writer/ModulesWriterTest.kt

Verification

  • ./gradlew :project-generator:unitTest
  • ./gradlew :cli:test
  • ./gradlew ktlintCheck

@cdsap
cdsap merged commit c87c436 into main Sep 22, 2026
14 checks passed
@cdsap
cdsap deleted the issue/485-hermes-refactor-module-layout-generation-to-a1 branch September 22, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor module layout generation to use explicit project name maps

1 participant