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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions