Skip to content

Better error when using & next to the function #23

@ArtemkaKun

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