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

Make null param error more informative (#809) #2143

Closed

Conversation

ulfryk
Copy link
Contributor

@ulfryk ulfryk commented Nov 20, 2024

Same as #2141 but with more information.

The error message string is created only in if (a == null) branch ( to solve issue spotted here #2141 (comment) )

case None => unsafeSetNull(ps, n)
}

private def unsafeSetWhatShouldNotBeNull(ps: PreparedStatement, n: Int, a: A, message: Int => String): Unit =
Copy link
Collaborator

Choose a reason for hiding this comment

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

I believe this will still allocate the anonymous function (unless JIT is able to elide the allocation?)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's actually a good point, but is it so if it's an axisting method passed as an argument? How is it compiled to bytecode?

Copy link
Collaborator

Choose a reason for hiding this comment

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

https://godbolt.org/z/5sz68x4cE

When I use an anonymous function it seems to extract it into a static method, so there are probably no allocation either way in this case.
I know next to nothing about JVM bytecode though so 😄

Copy link
Contributor Author

Choose a reason for hiding this comment

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

:D

So it seems (but not without a doubt) that it is not affecting performance too much.

Your call then @jatcwang - should we go with it for sake of Developer Experience or is the simpler (already merged) version enough 🙌

Copy link
Collaborator

Choose a reason for hiding this comment

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

Will keep it simple for now as I feel the merged version already have enough information for people to find the source of null :)

@ulfryk ulfryk force-pushed the fix/uninformative-null-error-fancy branch from e81f52e to a15794f Compare November 22, 2024 10:11
@jatcwang jatcwang closed this Nov 22, 2024
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.

2 participants