Skip to content

#caller_expression for $some: typeid #6352

@Ferinzz

Description

@Ferinzz

Context

  • Operating System & Odin Version: dev-2026-02:dc3c53b49
  • Please paste odin report output:
    Odin: dev-2026-02:dc3c53b49
    OS: Windows 11 Professional (version: 23H2), build 22631.6199
    CPU: 13th Gen Intel(R) Core(TM) i5-13600K
    RAM: 32540 MiB
    Backend: LLVM 20.1.0

Supporting this would reduce the need to get the type's name at runtime or force a type to become named.
I am logging this as a bug because this works without issue on other types such as int.

Expected Behavior

#caller_location should be able to take all fields of a procedure regardless of their type or if they are polymorphic

Current Behavior

Error
Error: '#caller_expression' expected a valid earlier parameter name
... roc($something: typeid, field:= #caller_expression(something)) {

Failure Information (for bugs)

When creating a procedure it is possible to get the value of a field for certain types. When the field is of a polymorphic typeid the #caller_expression is unable to acknowledge it as a field

Steps to Reproduce

  1. create the following code

parapolyfield :: proc($something: typeid, field:= #caller_expression(something)) {

}
Color :: [4]f32
main :: proc() {
    parapolyfield(Color)
}```
2. attempt to compile the above code
3. Error 
Error: '#caller_expression' expected a valid earlier parameter name 
        ... roc($something: typeid, field:= #caller_expression(something)) {

### Failure Logs

just error during compilation
Error: '#caller_expression' expected a valid earlier parameter name 
        ... roc($something: typeid, field:= #caller_expression(something)) {

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions