+ 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:16:14: error: expected number found string
+ .tmp.code:16:22: error: expected string found number
+ .tmp.code:16:14: error: insufficient arguments to function.
+ .tmp.code:18:17: error: expected string found number
+ .tmp.code:19:14: error: too many 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 *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.
+
+###### test: func_err_redeclare
+
+ func test1(a:number; b:string; c:[3]Boolean)
+ print a, b, c[1]
+
+ func test1
+ do
+ pass
+
+ func test1
+ b:Boolean
+ do
+ pass
+
+###### output: func_err_redeclare
+ .tmp.code:5:5: error: function 'test1' redeclared
+ .tmp.code:2:5: info: this is where 'test1' was first declared
+ .tmp.code:9:5: error: function 'test1' redeclared
+ .tmp.code:2:5: info: this is where 'test1' was first declared