]> ocean-lang.org Git - ocean/blobdiff - csrc/oceani-tests.mdc
oceani: add simple return type
[ocean] / csrc / oceani-tests.mdc
index 2314ce3ea4d9ec070c7cf23867f04f3072fd71b3..396b13e8aa69b24f95a3797c7018f2d2c6c2dfa1 100644 (file)
@@ -616,7 +616,7 @@ Time to test if structure declarations and accesses work correctly.
 Test functions.  They don't return anything, so we need to get them to print
 
 ###### test list
-       oceani_tests += functions
+       oceani_tests += functions func_ret_type
 
 ###### test: functions
 
@@ -630,6 +630,14 @@ Test functions.  They don't return anything, so we need to get them to print
        do
                pass
 
+       func twoarg
+               a:number
+               b:string
+       do
+               while a > 0:
+                       print b
+                       a = a - 1
+
        func test(n:number; s:string)
                if n >= 1:
                        print n,s,
@@ -647,6 +655,34 @@ Test functions.  They don't return anything, so we need to get them to print
        3  2 . 1 .. done
        4  3 . 2 .. 1 ... done
 
+###### test: func_ret_type
+
+       func double(n:number):number
+               use n+n
+
+       func answer
+               prefix:string
+               suffix:string
+       return string
+       do
+               use prefix ++ suffix
+
+       func noarg_returns
+       return Boolean
+       do
+               use 22/7 == 3.14159
+
+       func main()
+               for j:=10; then j = j - 3; while j > -5:
+                       print answer("dou","ble"), j, "is", double(j)
+
+###### output: func_ret_type
+       double 10 is 20
+       double 7 is 14
+       double 4 is 8
+       double 1 is 2
+       double -2 is -4
+
 ## Test code with syntax errors
 
 Syntax errors aren't handled well yet - the result is almost always a
@@ -815,7 +851,6 @@ various places that `type_err()` are called.
                print c.foo
                print bar.c
                print bar.b + 42
-               
 
                // trigger 'labels not permitted' error message
                while 1 if True else False:
@@ -852,7 +887,7 @@ various places that `type_err()` are called.
        .tmp.code:33:14: error: field reference attempted on string, not a struct
        .tmp.code:34:14: error: cannot find requested field in foo
        .tmp.code:35:17: error: have string but need number
-       .tmp.code:39:29: error: expected number (labels not permitted) found Boolean
+       .tmp.code:38:29: error: expected number (labels not permitted) found Boolean
        oceani: type error in program - not running.
 
 ###### test: type_err4
@@ -936,6 +971,10 @@ Test for type errors with functions
        func test2(a:number; b:string; c:[3]Boolean)
                print a, b, c[1]
 
+       func test3()
+               # use undefined names
+               print a, z
+
        func main()
                truth:[3]Boolean
                truth[1] = True
@@ -948,18 +987,28 @@ Test for type errors with functions
                if test1 == test2:
                        pass
 
+       func test4(a:number):string
+               use a * a
+
+       func test5(a:number):string
+               print a
+
 ###### output: func_err_args
-       .tmp.code:11:14: error: insufficient arguments to function.
-       .tmp.code:12:14: error: expected number found string
-       .tmp.code:12:22: error: expected string found number
-       .tmp.code:12:14: error: insufficient arguments to function.
-       .tmp.code:14:17: error: expected string found number
-       .tmp.code:15:14: error: too many arguments to function.
-       .tmp.code:16:14: error: attempt to call a non-function.
-       .tmp.code:16:32: error: expected string found number
-       .tmp.code:16:28: error: insufficient arguments to function.
-       .tmp.code:17:20: error: expected  func but variable 'test2' is  func
+       .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  func but variable 'test2' is  func
        .tmp.code:??:??: info: this is where 'NOTVAR' was set to  func
+       .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