while
mid := (lo + hi) / 2
if mid == target:
- use Found
+ use .Found
if mid < target:
lo = mid
else
hi = mid
if hi - lo < 1:
lo = mid
- use GiveUp
+ use .GiveUp
use True
do pass
- case Found:
+ case .Found:
print "Yay, I found", target
- case GiveUp:
+ case .GiveUp:
print "Closest I found was", lo
###### output: sayhello,55,33,hello,True
func insert(list:@node; new:string):@node
p:=list
prev := @nil
- while ?p and then p@.this < new:
+ while ?p and then p.this < new:
prev = p
- p = p@.next
+ p = p.next
if ?prev:
- prev@.next = @new()
- prev@.next@.next = p
- prev@.next@.this = new
+ prev.next = @new()
+ prev.next.next = p
+ prev.next.this = new
else
list = @new()
- list@.next = p
- list@.this = new
+ list.next = p
+ list.this = new
use list
func printlist(list:@node)
func freelist(list:@node)
if list != @nil:
- freelist(list@.next)
+ freelist(list.next)
@free = list
func main(argv:[ac::]string)
b = b + 1
if 3 * 4 and not True: print "Weird"
+ d:number = .fred
+ (d + b) = 12
###### output: type_err1
.tmp.code:3:25: error: expected string found number
.tmp.code:3:28: error: expected string found number
.tmp.code:6:8: error: Cannot assign to a constant: b
.tmp.code:5:8: info: name was defined as a constant here
- .tmp.code:6:8: error: Cannot assign to a constant: b
- .tmp.code:5:8: info: name was defined as a constant here
.tmp.code:8:11: error: Arithmetic returns number but Boolean expected
+ .tmp.code:9:20: error: expected number found label
+ .tmp.code:9:8: info: variable 'd' was set as number here.
+ .tmp.code:10:8: error: cannot assign to an rval
oceani: type error in program - not running.
###### test: type_err2
.tmp.code:24:8: error: cannot assign value of type [5]number
.tmp.code:25:13: error: expected [5]number but variable 'a3' is [10]number
.tmp.code:23:36: info: this is where 'a3' was set to [10]number
+ .tmp.code:23:8: info: variable 'a1' was set as [5]number here.
.tmp.code:25:8: error: cannot assign value of type [5]number
.tmp.code:26:13: error: expected [5]number but variable 'a4' is [5]string
.tmp.code:23:51: info: this is where 'a4' was set to [5]string
+ .tmp.code:23:8: info: variable 'a1' was set as [5]number here.
.tmp.code:26:8: error: cannot assign value of type [5]number
.tmp.code:27:16: error: expected number found string
.tmp.code:28:16: error: expected string found Boolean
.tmp.code:29:12: error: have number but need string
.tmp.code:7:8: info: variable 'c' was set as string here.
.tmp.code:32:8: error: variable used but not declared: foo
- .tmp.code:32:8: error: field reference attempted on none, not a struct
+ .tmp.code:32:8: error: field reference on none is not supported
.tmp.code:32:16: error: expected none found number
- .tmp.code:33:14: error: field reference attempted on string, not a struct
+ .tmp.code:33:14: error: field reference on string is not supported
.tmp.code:34:14: error: cannot find requested field in foo
.tmp.code:35:17: error: have string but need number
- .tmp.code:38:29: error: expected number (labels not permitted) found Boolean
+ .tmp.code:38:29: error: expected number found Boolean
oceani: type error in program - not running.
###### test: type_err4
ref2:@string
num:number = @new()
print num@
- if num == @nil or ref == ref2 or ref == 2:
+ if num == @nil or ref == ref2 or ref == 2 or ref.foo:
@free = num
###### output: ref_err2
.tmp.code:7:33: error: expected @number but variable 'ref2' is @string
.tmp.code:4:8: info: this is where 'ref2' was set to @string
.tmp.code:7:48: error: expected @number found number
+ .tmp.code:7:53: error: field reference on number is not supported
+ .tmp.code:7:56: error: have none but need Boolean
.tmp.code:8:17: error: @free can only be assigned a reference, not number
.tmp.code:8:17: error: @free can only be assigned a reference, not number
oceani: type error in program - not running.