namespace varlength_static { // variable length. not allowed! var count len; int#[len]^ arr; // ERROR } count runtimevalue(count v) { return v; } () f() { count length = runtimevalue(1); count size = runtimevalue(2); // compile-time length var int#[1] ca1; var int#[10] cb1; var int#[1] ca2; // compile-time length, pointer int#[1]^ pca1; int#[10] var^ pcb1; int#[1]^ pca2; // runtime length on stack. not allowed! int#[length] bad; // ERROR // runtime length, pointer int#[length] var^ ra1; int#[length]^ ra2; int#[size]^ rb1; // variable length. not allowed! var count varlength = 1; int#[varlength]^ bad2; // ERROR int#[varlength+1]^ bad3; // ERROR int#[compl varlength]^ bad4; // ERROR /* ERRORS with compile-time lengths */ ca1 = cb1; pcb1 = pca1; ca1 = pcb1^; cb1 = @pca1; pcb1 = @pcb1; /* ERRORS with runtime lengths */ ra1 = rb1; }