On polymorphic args, suggest pointer when sensible#5818
Open
duchainer wants to merge 1 commit intoodin-lang:masterfrom
Open
On polymorphic args, suggest pointer when sensible#5818duchainer wants to merge 1 commit intoodin-lang:masterfrom
duchainer wants to merge 1 commit intoodin-lang:masterfrom
Conversation
When the polymorphic type is explicitly a pointer and our input is not,
then we suggest using a pointer.
This might not work if you use indirect types to a pointer, but should
cover most cases of new odin user not figuring out why the append_elem, etc calls won't work.
TODO MAYBE:
- resolve the poly_type to the concrete/direct type, if able/efficient
NOTE:
- We don't add that error_line for the `if(!is_operand_value(operand))`
case, because pointers to invalid types won't make it more valid, so
the if-then-suggestion would never happen there:
- Invalid argument types being:
```
enum AddressingMode : u8 {
Addressing_Invalid = 0, // invalid addressing mode
Addressing_NoValue = 1, // no value (void in C)
[...]
Addressing_Type = 6, // type
Addressing_Builtin = 7, // built-in procedure
Addressing_ProcGroup = 8, // procedure group (overloaded procedure)
[...]
}
```
duchainer
added a commit
to duchainer/Odin
that referenced
this pull request
Oct 16, 2025
Like other PRS: - odin-lang#5817 - odin-lang#5818 But for the non-proc-group, non-polymorphic proc-calls.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related to #5817, but independent, as this targets error messages for polymorphic procs, not proc_groups. But the "why" is the same, help new odin users more quickly figure out when they forgot/missed a pass-by-pointer.
When the polymorphic type is explicitly a pointer and our input is not, then we suggest using a pointer.

This might not work if you use indirect types to a pointer, but should cover most cases of new odin user not figuring out why the append_elem, etc calls won't work.
TODO MAYBE:
NOTE:
if(!is_operand_value(operand))case, because pointers to invalid types won't make it more valid, so the if-then-suggestion would never happen there:Addressing_Invalid = 0, // invalid addressing mode
Addressing_NoValue = 1, // no value (void in C)
[...]
Addressing_Type = 6, // type
Addressing_Builtin = 7, // built-in procedure
Addressing_ProcGroup = 8, // procedure group (overloaded procedure)
[...]
}