Skip to content

Commit 4f24ad5

Browse files
committed
Fix Expressions arity issue
1 parent 3a7b90f commit 4f24ad5

File tree

1 file changed

+7
-5
lines changed
  • core/src/main/scala/org/locationtech/rasterframes/expressions

1 file changed

+7
-5
lines changed

core/src/main/scala/org/locationtech/rasterframes/expressions/package.scala

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ import org.locationtech.rasterframes.expressions.transformers._
3939
import shapeless.HList
4040
import shapeless.ops.function.FnToProduct
4141
import shapeless.ops.traversable.FromTraversable
42+
import shapeless.syntax.std.function._
43+
import shapeless.syntax.std.traversable._
4244

4345
import scala.reflect.ClassTag
4446
import scala.reflect.runtime.universe._
@@ -81,17 +83,17 @@ package object expressions {
8183
}
8284

8385
/** Converts (expr1: Expression, ..., exprn: Expression) => R into a Seq[Expression] => R function */
84-
implicit def expressionArgumentsSequencer[F, I <: HList, R](f: F)(implicit ftp: FnToProduct.Aux[F, I => R], ft: FromTraversable[I]): Seq[Expression] => R = { list: Seq[Expression] =>
85-
ft(list) match {
86-
case Some(l) => ftp(f)(l)
87-
case None => throw new IllegalArgumentException(s"registerFunction application failed: arity mismatch: $list.")
86+
implicit def expressionArgumentsSequencer[F, L <: HList, R](f: F)(implicit ftp: FnToProduct.Aux[F, L => R], ft: FromTraversable[L]): Seq[Expression] => R = { list: Seq[Expression] =>
87+
list.toHList match {
88+
case Some(l) => f.toProduct(l)
89+
case None => throw new IllegalArgumentException(s"registerFunction application failed; arity mismatch: $list.")
8890
}
8991
}
9092

9193
registerFunction[Add](name = "rf_local_add")(Add.apply)
9294
registerFunction[Subtract](name = "rf_local_subtract")(Subtract.apply)
9395
registerFunction[ExplodeTiles](name = "rf_explode_tiles")(ExplodeTiles(1.0, None, _))
94-
registerFunction[TileAssembler](name = "rf_assemble_tile")(TileAssembler.apply)
96+
registerFunction[TileAssembler](name = "rf_assemble_tile")(TileAssembler(_: Expression, _: Expression, _: Expression, _: Expression, _: Expression))
9597
registerFunction[GetCellType](name = "rf_cell_type")(GetCellType.apply)
9698
registerFunction[SetCellType](name = "rf_convert_cell_type")(SetCellType.apply)
9799
registerFunction[InterpretAs](name = "rf_interpret_cell_type_as")(InterpretAs.apply)

0 commit comments

Comments
 (0)