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
According to DslMarker documentation, DSL marker is used to annotate interfaces/classes to limit visibility of their members in cases when there are multiple annotated receivers in scope.
But currently in Arrow @RaiseDSL annotation is not present on the Raise interface, only on its methods and extensions. Consequently, this code compiles and runs:
importarrow.core.raise.*funmain() {
either<Int, Int> {
withError<Int, String, _>(String::length) {
raise("23423") // correctly resolves to this@withError.raise
raise(42) // error type does not match inner Raise, but the call still resolves to this@either.raise
}
}.also(::println)
// prints Either.Left(5)
}
The text was updated successfully, but these errors were encountered:
This is intentional behaviour. We want you to be able to set up multiple Raise instances, and be able to raise to any of them easily. This allows for easy error handling for multiple types
As mentioned by @kyay10, this is by design. Especially in accumulate environments, we want to still give the option to call the outer raise, to signal that accumulation has to stop.
What version are you currently using? 1.2.4
What would you like to see?
According to DslMarker documentation, DSL marker is used to annotate interfaces/classes to limit visibility of their members in cases when there are multiple annotated receivers in scope.
But currently in Arrow
@RaiseDSL
annotation is not present on theRaise
interface, only on its methods and extensions. Consequently, this code compiles and runs:The text was updated successfully, but these errors were encountered: