diff --git a/dana/programs-erroneous/bsort_error.dana b/dana/programs-erroneous/bsort_error.dana new file mode 100644 index 0000000..c0ef8c0 --- /dev/null +++ b/dana/programs-erroneous/bsort_error.dana @@ -0,0 +1,54 @@ +def main + + def bsort: n as int, x as int [] + + def swap: x y as ref int + var t is int + t := x + x := y + y := t + + var changed is byte + var i is int + + loop: + changed := false + i := 0 + loop: + if i < n-1: + if x[i] > x[i+1]: + swap: x[i], x[i+1] + changed := true + i := i+1 + else: break + if not changed: break + + def writeArray: msg as byte [], n as int, x as int [] + var i is int + + writeString: msg + i := 0 + loop: + if i < n: + if i > 0: writeString: ", " + writeInteger: x[i] + i := i+1 + else: break + writeString: "\n" + + var seed i is int + var x is int [16] + + seed := 65 + i := 0 + loop: + if i < 16: + seed := (seed * 137 + 220 + i) % 101 + x[i] := seed + i := i+1 + else: break + writeArray: "Initial array: ", 16, x + # according to the grammar, x here should be a proc-call of function `x` with no arguments + # error should be that x is a variable of type int[16], not a function. + bsort: 16 x + writeArray: "Sorted array: ", 16, x diff --git a/dana/programs/bsort.dana b/dana/programs/bsort.dana index caad852..98e008a 100644 --- a/dana/programs/bsort.dana +++ b/dana/programs/bsort.dana @@ -48,5 +48,5 @@ def main i := i+1 else: break writeArray: "Initial array: ", 16, x - bsort: 16 x + bsort: 16, x writeArray: "Sorted array: ", 16, x