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

Conversation

EstebanMarin
Copy link
Contributor

For some reason found the error message was not clear on the actionable and made explicit how to change the method to take away the compiler error.

@EstebanMarin EstebanMarin changed the title improve error message for easier understanding improve error message Sep 28, 2023
Comment on lines 20 to 21
@deprecated("use toTraceValue", "0.3.0")
@deprecated("use .viaTraceableValue(TraceableValue)", "0.3.0")
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.

Co-authored-by: Arman Bilge <armanbilge@gmail.com>
@armanbilge armanbilge merged commit 71c29f0 into typelevel:main Oct 4, 2023
11 checks passed
@EstebanMarin EstebanMarin deleted the improve-error-message-typeclass branch October 8, 2023 13:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants