aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorTing-Yuan Huang <laszio@google.com>2021-10-15 21:20:15 -0700
committerlaszio <ting-yuan@users.noreply.github.com>2021-10-18 15:00:40 -0700
commita38ac896fa80a659907485c02bfa688b7d79ca25 (patch)
tree645e165302a85dff78d5293fcdefd02362d94ad7 /api
parentab1227711c16ade0bff8e6cc2810d97991bd56d1 (diff)
downloadksp-a38ac896fa80a659907485c02bfa688b7d79ca25.tar.gz
Add CodeGenerator.associateWithClasses
So that changes in unreachable classes can invalidate corresponding outputs and trigger re-processing correctly. The implementation creates an internal, virtual NoSourceFile for each class to propagate dirtyness.
Diffstat (limited to 'api')
-rw-r--r--api/src/main/kotlin/com/google/devtools/ksp/processing/CodeGenerator.kt19
1 files changed, 19 insertions, 0 deletions
diff --git a/api/src/main/kotlin/com/google/devtools/ksp/processing/CodeGenerator.kt b/api/src/main/kotlin/com/google/devtools/ksp/processing/CodeGenerator.kt
index d9312cf7..0e429c54 100644
--- a/api/src/main/kotlin/com/google/devtools/ksp/processing/CodeGenerator.kt
+++ b/api/src/main/kotlin/com/google/devtools/ksp/processing/CodeGenerator.kt
@@ -77,6 +77,25 @@ interface CodeGenerator {
*/
fun associate(sources: List<KSFile>, packageName: String, fileName: String, extensionName: String = "kt")
+ /**
+ * Associate [classes] to an output file.
+ *
+ * @param classes are [KSClassDeclaration]s from which this output is built. Only those that are obtained directly
+ * from [Resolver] are required.
+ * @param packageName corresponds to the relative path of the generated file; using either '.'or '/' as separator.
+ * @param fileName file name
+ * @param extensionName If "kt" or "java", this file will participate in subsequent compilation.
+ * Otherwise its creation is only considered in incremental processing.
+ * @return OutputStream for writing into files.
+ * @see [CodeGenerator] for more details.
+ */
+ fun associateWithClasses(
+ classes: List<KSClassDeclaration>,
+ packageName: String,
+ fileName: String,
+ extensionName: String = "kt"
+ )
+
val generatedFile: Collection<File>
}