Skip to content

Fix location wherever it was wrongly defined #405

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ See also the [CHANGELOG](https://github.com/cucumber/cucumber-jvm/blob/master/CH

### Changed

- [Internal] Fix `getLocation` wherever it was wrongly defined. ([#404](https://github.com/cucumber/cucumber-jvm-scala/issues/404))

### Deprecated

### Removed
Expand All @@ -24,6 +26,7 @@ See also the [CHANGELOG](https://github.com/cucumber/cucumber-jvm/blob/master/CH
### Changed

- [Internal] Implement `HookDefinition.getHookType` and unimplement `Location.getLocation`. No impact expected for users.
([#401](https://github.com/cucumber/cucumber-jvm-scala/issues/401))

## [8.29.0] (2025-07-15)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ trait AbstractGlueDefinition extends Located {

val location: StackTraceElement

lazy val sourceReference: SourceReference =
private lazy val sourceReference: SourceReference =
SourceReference.fromStackTraceElement(location)

override def getLocation(): String = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package io.cucumber.scala

import scala.reflect.ClassTag

private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
private[scala] trait DataTableTypeDsl extends BaseScalaDsl { self =>

/** Register a data table type.
*/
Expand All @@ -27,7 +27,12 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
body: DataTableEntryDefinitionBody[T]
)(implicit ev: ClassTag[T]): Unit = {
registry.registerDataTableType(
ScalaDataTableEntryTypeDetails[T](replaceWithEmptyString, body, ev)
ScalaDataTableEntryTypeDetails[T](
replaceWithEmptyString,
body,
ev,
Utils.frame(self)
)
)
}

Expand All @@ -38,7 +43,8 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
ScalaDataTableOptionalEntryTypeDetails[T](
replaceWithEmptyString,
body,
ev
ev,
Utils.frame(self)
)
)
}
Expand All @@ -47,7 +53,12 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
body: DataTableRowDefinitionBody[T]
)(implicit ev: ClassTag[T]): Unit = {
registry.registerDataTableType(
ScalaDataTableRowTypeDetails[T](replaceWithEmptyString, body, ev)
ScalaDataTableRowTypeDetails[T](
replaceWithEmptyString,
body,
ev,
Utils.frame(self)
)
)
}

Expand All @@ -58,7 +69,8 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
ScalaDataTableOptionalRowTypeDetails[T](
replaceWithEmptyString,
body,
ev
ev,
Utils.frame(self)
)
)
}
Expand All @@ -67,7 +79,12 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
body: DataTableCellDefinitionBody[T]
)(implicit ev: ClassTag[T]): Unit = {
registry.registerDataTableType(
ScalaDataTableCellTypeDetails[T](replaceWithEmptyString, body, ev)
ScalaDataTableCellTypeDetails[T](
replaceWithEmptyString,
body,
ev,
Utils.frame(self)
)
)
}

Expand All @@ -78,7 +95,8 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
ScalaDataTableOptionalCellTypeDetails[T](
replaceWithEmptyString,
body,
ev
ev,
Utils.frame(self)
)
)
}
Expand All @@ -87,7 +105,12 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
body: DataTableDefinitionBody[T]
)(implicit ev: ClassTag[T]): Unit = {
registry.registerDataTableType(
ScalaDataTableTableTypeDetails[T](replaceWithEmptyString, body, ev)
ScalaDataTableTableTypeDetails[T](
replaceWithEmptyString,
body,
ev,
Utils.frame(self)
)
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import io.cucumber.scala.Aliases.{
DefaultParameterTransformerBody
}

private[scala] trait DefaultTransformerDsl extends BaseScalaDsl {
private[scala] trait DefaultTransformerDsl extends BaseScalaDsl { self =>

/** Register default parameter type transformer.
*
Expand All @@ -17,7 +17,7 @@ private[scala] trait DefaultTransformerDsl extends BaseScalaDsl {
body: DefaultParameterTransformerBody
): Unit = {
registry.registerDefaultParameterTransformer(
ScalaDefaultParameterTransformerDetails(body)
ScalaDefaultParameterTransformerDetails(body, Utils.frame(self))
)
}

Expand Down Expand Up @@ -52,7 +52,11 @@ private[scala] trait DefaultTransformerDsl extends BaseScalaDsl {
replaceWithEmptyString: Seq[String]
)(body: DefaultDataTableCellTransformerBody): Unit = {
registry.registerDefaultDataTableCellTransformer(
ScalaDefaultDataTableCellTransformerDetails(replaceWithEmptyString, body)
ScalaDefaultDataTableCellTransformerDetails(
replaceWithEmptyString,
body,
Utils.frame(self)
)
)
}

Expand Down Expand Up @@ -89,7 +93,11 @@ private[scala] trait DefaultTransformerDsl extends BaseScalaDsl {
replaceWithEmptyString: Seq[String]
)(body: DefaultDataTableEntryTransformerBody): Unit = {
registry.registerDefaultDataTableEntryTransformer(
ScalaDefaultDataTableEntryTransformerDetails(replaceWithEmptyString, body)
ScalaDefaultDataTableEntryTransformerDetails(
replaceWithEmptyString,
body,
Utils.frame(self)
)
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package io.cucumber.scala

import io.cucumber.scala.Aliases.DocStringDefinitionBody

private[scala] trait DocStringTypeDsl extends BaseScalaDsl {
private[scala] trait DocStringTypeDsl extends BaseScalaDsl { self =>

/** Register doc string type.
*
Expand All @@ -18,7 +18,12 @@ private[scala] trait DocStringTypeDsl extends BaseScalaDsl {
contentType: String
)(body: DocStringDefinitionBody[T])(implicit ev: Stepable[T]): Unit = {
registry.registerDocStringType(
ScalaDocStringTypeDetails[T](contentType, body, ev.asJavaType)
ScalaDocStringTypeDetails[T](
contentType,
body,
ev.asJavaType,
Utils.frame(self)
)
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package io.cucumber.scala

import scala.reflect.ClassTag

private[scala] trait ParameterTypeDsl extends BaseScalaDsl {
private[scala] trait ParameterTypeDsl extends BaseScalaDsl { self =>

/** Register parameter type.
*
Expand Down Expand Up @@ -748,7 +748,7 @@ private[scala] trait ParameterTypeDsl extends BaseScalaDsl {
pf: PartialFunction[List[String], R]
)(implicit tag: ClassTag[R]): Unit = {
registry.registerParameterType(
ScalaParameterTypeDetails[R](name, regex, pf, tag)
ScalaParameterTypeDetails[R](name, regex, pf, tag, Utils.frame(self))
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ import scala.annotation.nowarn

trait ScalaDataTableCellDefinition[T] extends ScalaDataTableTypeDefinition {

val details: ScalaDataTableCellTypeDetails[T]

override val emptyPatterns: Seq[String] = details.emptyPatterns

override val location: StackTraceElement = new Exception().getStackTrace()(3)
override val details: ScalaDataTableCellTypeDetails[T]

private val transformer: TableCellTransformer[T] = (cell: String) => {
details.body.transform(replaceEmptyPatternsWithEmptyString(cell))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ import scala.annotation.nowarn

trait ScalaDataTableDefinition[T] extends ScalaDataTableTypeDefinition {

val details: ScalaDataTableTableTypeDetails[T]

override val emptyPatterns: Seq[String] = details.emptyPatterns

override val location: StackTraceElement = new Exception().getStackTrace()(3)
override val details: ScalaDataTableTableTypeDetails[T]

private val transformer: TableTransformer[T] = (table: DataTable) => {
details.body.transform(replaceEmptyPatternsWithEmptyString(table))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ import scala.jdk.CollectionConverters._

trait ScalaDataTableEntryDefinition[T] extends ScalaDataTableTypeDefinition {

val details: ScalaDataTableEntryTypeDetails[T]

override val emptyPatterns: Seq[String] = details.emptyPatterns

override val location: StackTraceElement = new Exception().getStackTrace()(3)
override val details: ScalaDataTableEntryTypeDetails[T]

private val transformer: TableEntryTransformer[T] =
(entry: JavaMap[String, String]) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@ import scala.annotation.nowarn
trait ScalaDataTableOptionalCellDefinition[T]
extends ScalaDataTableTypeDefinition {

val details: ScalaDataTableOptionalCellTypeDetails[T]

override val emptyPatterns: Seq[String] = details.emptyPatterns

override val location: StackTraceElement = new Exception().getStackTrace()(3)
override val details: ScalaDataTableOptionalCellTypeDetails[T]

private val transformer: TableCellTransformer[T] = (cell: String) => {
details.body.transform(Option(replaceEmptyPatternsWithEmptyString(cell)))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@ import scala.jdk.CollectionConverters._
trait ScalaDataTableOptionalEntryDefinition[T]
extends ScalaDataTableTypeDefinition {

val details: ScalaDataTableOptionalEntryTypeDetails[T]

override val emptyPatterns: Seq[String] = details.emptyPatterns

override val location: StackTraceElement = new Exception().getStackTrace()(3)
override val details: ScalaDataTableOptionalEntryTypeDetails[T]

private val transformer: TableEntryTransformer[T] =
(entry: JavaMap[String, String]) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@ import scala.jdk.CollectionConverters._
trait ScalaDataTableOptionalRowDefinition[T]
extends ScalaDataTableTypeDefinition {

val details: ScalaDataTableOptionalRowTypeDetails[T]

override val emptyPatterns: Seq[String] = details.emptyPatterns

override val location: StackTraceElement = new Exception().getStackTrace()(3)
override val details: ScalaDataTableOptionalRowTypeDetails[T]

private val transformer: TableRowTransformer[T] = (row: JavaList[String]) => {
details.body.transform(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ import scala.jdk.CollectionConverters._

trait ScalaDataTableRowDefinition[T] extends ScalaDataTableTypeDefinition {

val details: ScalaDataTableRowTypeDetails[T]

override val emptyPatterns: Seq[String] = details.emptyPatterns

override val location: StackTraceElement = new Exception().getStackTrace()(3)
override val details: ScalaDataTableRowTypeDetails[T]

private val transformer: TableRowTransformer[T] = (row: JavaList[String]) => {
details.body.transform(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,15 @@ import io.cucumber.core.backend.DataTableTypeDefinition

trait ScalaDataTableTypeDefinition
extends DataTableTypeDefinition
with AbstractDatatableElementTransformerDefinition {}
with AbstractDatatableElementTransformerDefinition {

val details: ScalaDataTableTypeDetails[_]

override val location: StackTraceElement = details.stackTraceElement

override val emptyPatterns: Seq[String] = details.emptyPatterns

}

object ScalaDataTableTypeDefinition {

Expand All @@ -13,45 +21,45 @@ object ScalaDataTableTypeDefinition {
scenarioScoped: Boolean
): ScalaDataTableTypeDefinition = {
details match {
case entryDetails @ ScalaDataTableEntryTypeDetails(_, _, _) =>
case entryDetails: ScalaDataTableEntryTypeDetails[_] =>
if (scenarioScoped) {
new ScalaScenarioScopedDataTableEntryDefinition[T](entryDetails)
} else {
new ScalaGlobalDataTableEntryDefinition[T](entryDetails)
}
case entryDetails @ ScalaDataTableOptionalEntryTypeDetails(_, _, _) =>
case entryDetails: ScalaDataTableOptionalEntryTypeDetails[_] =>
if (scenarioScoped) {
new ScalaScenarioScopedDataTableOptionalEntryDefinition[T](
entryDetails
)
} else {
new ScalaGlobalDataTableOptionalEntryDefinition[T](entryDetails)
}
case rowDetails @ ScalaDataTableRowTypeDetails(_, _, _) =>
case rowDetails: ScalaDataTableRowTypeDetails[_] =>
if (scenarioScoped) {
new ScalaScenarioScopedDataTableRowDefinition[T](rowDetails)
} else {
new ScalaGlobalDataTableRowDefinition[T](rowDetails)
}
case rowDetails @ ScalaDataTableOptionalRowTypeDetails(_, _, _) =>
case rowDetails: ScalaDataTableOptionalRowTypeDetails[_] =>
if (scenarioScoped) {
new ScalaScenarioScopedDataTableOptionalRowDefinition[T](rowDetails)
} else {
new ScalaGlobalDataTableOptionalRowDefinition[T](rowDetails)
}
case cellDetails @ ScalaDataTableCellTypeDetails(_, _, _) =>
case cellDetails: ScalaDataTableCellTypeDetails[_] =>
if (scenarioScoped) {
new ScalaScenarioScopedDataTableCellDefinition[T](cellDetails)
} else {
new ScalaGlobalDataTableCellDefinition[T](cellDetails)
}
case cellDetails @ ScalaDataTableOptionalCellTypeDetails(_, _, _) =>
case cellDetails: ScalaDataTableOptionalCellTypeDetails[_] =>
if (scenarioScoped) {
new ScalaScenarioScopedDataTableOptionalCellDefinition[T](cellDetails)
} else {
new ScalaGlobalDataTableOptionalCellDefinition[T](cellDetails)
}
case rowDetails @ ScalaDataTableTableTypeDetails(_, _, _) =>
case rowDetails: ScalaDataTableTableTypeDetails[_] =>
if (scenarioScoped) {
new ScalaScenarioScopedDataTableDefinition[T](rowDetails)
} else {
Expand Down
Loading
Loading