Open
Description
Given API with type parameter bound to something:
interface Geo {
val geometry: Geometry
}
internal class GeoDataFrame<T : Geo>(val df: DataFrame<T>) {
fun update(f: DataFrame<T>.() -> DataFrame<T>): DataFrame<T> = TODO()
}
Two things can go wrong in combination with compiler plugin
geo.update { remove { geometry } }
- type of DataFrame after remove is not subtype of Geo. So
org.jetbrains.kotlinx.dataframe.plugin.extensions.FunctionCallTransformer#intercept
must somehow figure out that this supertype is needed. Note that incercept happens before call completion - even if type is preserved, there will be no longer such column. An additional checker should be there to report that column is missing
related to Geo extensions for DataFrame #875