Add script config refinement before compilation into API
This commit is contained in:
@@ -90,13 +90,18 @@ val ScriptCompilationConfigurationKeys.compilerOptions by PropertiesCollection.k
|
||||
/**
|
||||
* The callback that will be called on the script compilation before parsing the script
|
||||
*/
|
||||
val ScriptCompilationConfigurationKeys.refineConfigurationBeforeParsing by PropertiesCollection.key<RefineConfigurationBeforeParsingData>()
|
||||
val ScriptCompilationConfigurationKeys.refineConfigurationBeforeParsing by PropertiesCollection.key<RefineConfigurationUnconditionallyData>()
|
||||
|
||||
/**
|
||||
* The callback that will be called on the script compilation after parsing script file annotations
|
||||
*/
|
||||
val ScriptCompilationConfigurationKeys.refineConfigurationOnAnnotations by PropertiesCollection.key<RefineConfigurationOnAnnotationsData>()
|
||||
|
||||
/**
|
||||
* The callback that will be called on the script compilation immediately before starting the compilation
|
||||
*/
|
||||
val ScriptCompilationConfigurationKeys.refineConfigurationBeforeCompiling by PropertiesCollection.key<RefineConfigurationUnconditionallyData>()
|
||||
|
||||
/**
|
||||
* The list of script fragments that should be compiled intead of the whole text
|
||||
* (for use primary with the refinement callbacks)
|
||||
@@ -116,7 +121,7 @@ class RefineConfigurationBuilder : PropertiesCollection.Builder() {
|
||||
* @param handler the callback that will be called
|
||||
*/
|
||||
fun beforeParsing(handler: RefineScriptCompilationConfigurationHandler) {
|
||||
set(ScriptCompilationConfiguration.refineConfigurationBeforeParsing, RefineConfigurationBeforeParsingData(handler))
|
||||
set(ScriptCompilationConfiguration.refineConfigurationBeforeParsing, RefineConfigurationUnconditionallyData(handler))
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,6 +130,7 @@ class RefineConfigurationBuilder : PropertiesCollection.Builder() {
|
||||
* @param handler the callback that will be called
|
||||
*/
|
||||
fun onAnnotations(annotations: List<KotlinType>, handler: RefineScriptCompilationConfigurationHandler) {
|
||||
// TODO: implement handlers composition
|
||||
set(ScriptCompilationConfiguration.refineConfigurationOnAnnotations, RefineConfigurationOnAnnotationsData(annotations, handler))
|
||||
}
|
||||
|
||||
@@ -139,7 +145,7 @@ class RefineConfigurationBuilder : PropertiesCollection.Builder() {
|
||||
|
||||
/**
|
||||
* The callback that will be called on the script compilation after parsing script file annotations
|
||||
* @param annotations the list of annotations to trigger the callback on
|
||||
* @param T the annotation to trigger the callback on
|
||||
* @param handler the callback that will be called
|
||||
*/
|
||||
inline fun <reified T : Annotation> onAnnotations(noinline handler: RefineScriptCompilationConfigurationHandler) {
|
||||
@@ -163,6 +169,14 @@ class RefineConfigurationBuilder : PropertiesCollection.Builder() {
|
||||
fun onAnnotations(annotations: Iterable<KClass<out Annotation>>, handler: RefineScriptCompilationConfigurationHandler) {
|
||||
onAnnotations(annotations.map { KotlinType(it) }, handler)
|
||||
}
|
||||
|
||||
/**
|
||||
* The callback that will be called on the script compilation immediately before starting the compilation
|
||||
* @param handler the callback that will be called
|
||||
*/
|
||||
fun beforeCompiling(handler: RefineScriptCompilationConfigurationHandler) {
|
||||
set(ScriptCompilationConfiguration.refineConfigurationBeforeCompiling, RefineConfigurationUnconditionallyData(handler))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -171,7 +185,7 @@ class RefineConfigurationBuilder : PropertiesCollection.Builder() {
|
||||
typealias RefineScriptCompilationConfigurationHandler =
|
||||
(ScriptConfigurationRefinementContext) -> ResultWithDiagnostics<ScriptCompilationConfiguration>
|
||||
|
||||
class RefineConfigurationBeforeParsingData(
|
||||
class RefineConfigurationUnconditionallyData(
|
||||
val handler: RefineScriptCompilationConfigurationHandler
|
||||
) : Serializable
|
||||
|
||||
|
||||
Reference in New Issue
Block a user