Skip to content

Better error when using & next to the function #23

Description

@ArtemkaKun
pub fn subdivide(node OctreeNode) -> OctreeNode {
    mut new_children := [8]?&OctreeNode{}

    for child_id in 0 .. 8 {
        new_children[child_id] = opt(&calculate_new_child(node, child_id))
    }

    return OctreeNode{
        center: node.center
        size: node.size
        positions: node.positions
        children: new_children
    }
}

fn calculate_new_child(node OctreeNode, child_id i32) -> OctreeNode {
    quarter_size := node.size / 4

    offset_x := if child_id & 1 == 0 { -quarter_size } else { quarter_size }
    offset_y := if child_id & 2 == 0 { -quarter_size } else { quarter_size }
    offset_z := if child_id & 4 == 0 { -quarter_size } else { quarter_size }

    return OctreeNode{
        center: tellusim.TSVector3f{
            x: node.center.x + offset_x
            y: node.center.y + offset_y
            z: node.center.z + offset_z
        }
        size: node.size / 2
    }
}
All stages before C compile finished in 92.546ms
C compiler output:
/home/yuart/Projects/spawn/out.c: In function ‘octree___subdivide’:
/home/yuart/Projects/spawn/out.c:442:33: error: lvalue required as unary ‘&’ operand
  442 |                         .data = &octree___calculate_new_child(node, child_id),
      |                                 ^

error: C compiler failed

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions