## valgrind test code
@[ -n "$$SKIP_COVERAGE_CHECK" ] || awk '/NOTEST/ { next } /^ *[1-9]/ {ran+=1} /^ *###/ {skip+=1} \
END {printf "coverage: %6.2f%%\n", ran * 100 / (ran + skip); \
- if (ran < (ran + skip) *0.968) exit(1) }' \
+ if (ran < (ran + skip) *0.972) exit(1) }' \
coverage/oceani.mdc.gcov
coverage_oceani: oceani.c
test(n-1, "."++s)
else
print "done"
+
+ func to_polar
+ x:number; y:number
+ return
+ rho:number
+ theta:number
+ do
+ rho = x + y
+ theta = x - y
+
func main()
for i:=0; then i = i + 1; while i < 5:
test(i, " ")
+ angular := to_polar(32, 23)
+ print angular.rho, angular.theta
###### output: functions
done
2 1 . done
3 2 . 1 .. done
4 3 . 2 .. 1 ... done
+ 55 9
###### test: func_ret_type
print foo
###### output: bad_main
- .tmp.code:??:??: error: expected argv but variable 'foo' is string
+ .tmp.code:??:??: error: expected []string but variable 'foo' is string
.tmp.code:??:??: info: this is where 'NOTVAR' was set to string
oceani: main has wrong type.
func test5(a:number):string
print a
+ struct foo
+ a: number
+ b:string = "hello"
+
+ func test6(a:number):foo
+ b:foo
+ b.a = a
+ use b
+
###### output: func_err_args
+ .tmp.code:34:5: error: function cannot return value of type foo
.tmp.code:28:14: error: expected string, found none
.tmp.code:25:8: error: expected string, found number
.tmp.code:15:14: error: insufficient arguments to function.
.tmp.code:20:14: error: attempt to call a non-function.
.tmp.code:20:32: error: expected string found number
.tmp.code:20:28: error: insufficient arguments to function.
- .tmp.code:21:20: error: expected func but variable 'test2' is func
- .tmp.code:??:??: info: this is where 'NOTVAR' was set to func
+ .tmp.code:21:20: error: expected *invalid*type* but variable 'test2' is *invalid*type*
+ .tmp.code:??:??: info: this is where 'NOTVAR' was set to *invalid*type*
.tmp.code:10:14: error: variable used but not declared: a
.tmp.code:10:17: error: variable used but not declared: z
oceani: type error in program - not running.