Skip to content
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

improve error message #889

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 6 additions & 6 deletions modules/core/shared/src/main/scala/TraceValue.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@ object TraceValue {
implicit def viaTraceableValue[A: TraceableValue](a: A): TraceValue =
TraceableValue[A].toTraceValue(a)

@deprecated("use toTraceValue", "0.3.0")
@deprecated("use .viaTraceableValue(TraceableValue)", "0.3.0")
EstebanMarin marked this conversation as resolved.
Show resolved Hide resolved
def stringToTraceValue(value: String): TraceValue = StringValue(value)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR. viaTraceableValue looks like an implicit conversion so it doesn't seem like its intended to be called explicitly, so something still doesn't seem right. Would you be able to share the code you were having trouble with?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I cannot share the code unfortunately. Roughly is something like this

//> package natchez


/** A tracing effect, which always has a current span. */
trait Trace[F[_]] {

  /** Puts a sequence of fields into the current span. */
  def put(fields: (String, TraceValue)*): F[Unit]
somewhere in the code
Trace[F].put(", TraceValue.viaTraceableValue("string"))

Using something like TraceableValue() is not available.

However, when encountering the error I assumed there was a new .toTraceValue method in the object, but there isn't. The only available toTraceValue comes from this typeclass . After several rounds of compiler tetris I got this

TraceValue.viaTraceableValue(traceValue)

To get my migration working from < 0.3.0 to 0.3.3.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the explanation, much appreciated. I took a closer look and I agree this deprecation message is more suitable.

However, it looks like the viaTraceableValue implicit conversion should be applied automatically, and if it's not then that's a bug that we should fix. So if you could share an example that was working before and not working after the upgrade, that would be very helpful.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@armanbilge I agree. that implicit conversions should be applied automatically. I would love to work on that, let me set the code to replicate the issue. I will work on this.

@deprecated("use toTraceValue", "0.3.0")
@deprecated("use .viaTraceableValue(TraceableValue)", "0.3.0")
def boolToTraceValue(value: Boolean): TraceValue = BooleanValue(value)
@deprecated("use toTraceValue", "0.3.0")
@deprecated("use .viaTraceableValue(TraceableValue)", "0.3.0")
def intToTraceValue(value: Int): TraceValue = NumberValue(value)
@deprecated("use toTraceValue", "0.3.0")
@deprecated("use .viaTraceableValue(TraceableValue)", "0.3.0")
def longToTraceValue(value: Long): TraceValue = NumberValue(value)
@deprecated("use toTraceValue", "0.3.0")
@deprecated("use .viaTraceableValue(TraceableValue)", "0.3.0")
def floatToTraceValue(value: Float): TraceValue = NumberValue(value)
@deprecated("use toTraceValue", "0.3.0")
@deprecated("use .viaTraceableValue(TraceableValue)", "0.3.0")
def doubleToTraceValue(value: Double): TraceValue = NumberValue(value)
}

Expand Down