You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A CliPlugin targeting constructor parameters of data classes fails to apply any transformation on such parameters. Such transformations include equivalent transformations too.
A use-case for such functionality is adding an additional annotation to the fields defined in the class constructor, e.g.,
data classTestMe(vals:String)
to transform to
data classTestMe(vals: @ASCII String)
where ASCII is an appropriately defined annotation.
To reproduce
Define a simple
valMeta.ConstructorParameterAnnotator:CliPlugin
get() ="Constructor Parameter Annotator" {
meta(
parameter(this, match = {
/** * Returns true if this parameter is a val/var parameter of a constructor.*/
hasValOrVar()
}) { ktParameter ->// Fails!Transform.replace(
replacing = ktParameter,
newDeclaration = ktParameter.scope()
)
}
)
}
Invocation of such a plugin leads to an exception java.lang.IllegalStateException: Unrecognized expression type from VALUE_PARAMETER
The exception points to at arrow.meta.internal.kastree.ast.psi.Converter.convertExpr(Converter.kt:385)
which contain a when expression which does not handle KtParameter.
Expected behavior
The parameter is expected to be replaced with the new declaration.
Environment (please complete the following information):
Kotlin version: 1.5.20
Arrow Meta version: 1.5.0-SNAPSHOT
I have not found any workaround so far, e.g., by converting the respective text representation into (just for example) an expression: ktParameter.text.expression.
The text was updated successfully, but these errors were encountered:
For those facing a similar problem, I ended up matching the full class and then process parameters of the constructor and do the full class reconstruction with the altered contructor.
A
CliPlugin
targeting constructor parameters of data classes fails to apply any transformation on such parameters. Such transformations include equivalent transformations too.A use-case for such functionality is adding an additional annotation to the fields defined in the class constructor, e.g.,
to transform to
where
ASCII
is an appropriately defined annotation.To reproduce
Define a simple
Invocation of such a plugin leads to an exception
java.lang.IllegalStateException: Unrecognized expression type from VALUE_PARAMETER
The exception points to
at arrow.meta.internal.kastree.ast.psi.Converter.convertExpr(Converter.kt:385)
which contain a
when
expression which does not handleKtParameter
.Expected behavior
The parameter is expected to be replaced with the new declaration.
Environment (please complete the following information):
I have not found any workaround so far, e.g., by converting the respective text representation into (just for example) an expression:
ktParameter.text.expression
.The text was updated successfully, but these errors were encountered: