mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
compiler: make compiler an ordinary vlib/compiler module
* Move compiler/ under vlib/compiler/ . * Add a minimal compiler/main.v driver program. * Cleanup compiler/main.v . * Make most compiler tests pass again. * Apply the fix by @joe-conigliaro , so that the rest of the compiler tests are fixed too. * Thanks to @avitkauskas, now the vlib/vcompiler/tests/str_gen_test.v test does not need to be special cased anymore. * Reapply @joe-conigliaro fix for vgen.
This commit is contained in:
committed by
Alexander Medvednikov
parent
59d4535f84
commit
53c64abdeb
121
vlib/compiler/tests/fn_test.v
Normal file
121
vlib/compiler/tests/fn_test.v
Normal file
@@ -0,0 +1,121 @@
|
||||
// 1 line comment
|
||||
|
||||
/* 1 line comment */
|
||||
|
||||
/*
|
||||
multi line comment (1)
|
||||
multi line comment (2)
|
||||
multi line comment (3)
|
||||
*/
|
||||
|
||||
/*
|
||||
multi line comment (1)
|
||||
/*
|
||||
nested comment
|
||||
*/
|
||||
/*nested comment*/
|
||||
/*nested comment
|
||||
*/
|
||||
/* nested comment */
|
||||
/* /* nested comment */ */
|
||||
multi line comment (2)
|
||||
*/
|
||||
|
||||
type myfn fn (int) string
|
||||
|
||||
type myfn2 fn (a int, b int) int
|
||||
|
||||
type myfn3 fn (int, int)
|
||||
|
||||
fn myfn4(string)
|
||||
|
||||
fn foobar()
|
||||
|
||||
fn slopediv(num u32, den u32) int
|
||||
|
||||
type f1 fn ()
|
||||
|
||||
type f2 fn (voidptr)
|
||||
|
||||
type f3 fn (voidptr, voidptr)
|
||||
|
||||
type f4 fn (voidptr) int
|
||||
|
||||
type f5 fn (int, int) int
|
||||
|
||||
type f6 fn (int, int)
|
||||
|
||||
fn C.atoi(byteptr) int
|
||||
|
||||
fn foo() {
|
||||
}
|
||||
|
||||
type actionf_v fn ()
|
||||
|
||||
type actionf_p1 fn (voidptr)
|
||||
|
||||
type actionf_p2 fn (voidptr, voidptr)
|
||||
|
||||
// TODO
|
||||
fn modify_array(a mut []int) {
|
||||
a[0] = 10
|
||||
for i in 0..a.len {
|
||||
a[i] = a[i] * 2
|
||||
}
|
||||
//a << 888
|
||||
}
|
||||
|
||||
fn test_mut_array() {
|
||||
mut nums := [1, 2, 3]
|
||||
modify_array(mut nums)
|
||||
//assert nums.len == 4
|
||||
// println(nums)
|
||||
assert nums[0] == 20
|
||||
assert nums[1] == 4
|
||||
assert nums[2] == 6
|
||||
//assert nums[3] == 888
|
||||
// workaround for // [91, 32, -33686272] windows bug
|
||||
println(nums.clone())
|
||||
}
|
||||
|
||||
fn mod_struct(user mut User) {
|
||||
user.age++
|
||||
}
|
||||
|
||||
struct User {
|
||||
mut:
|
||||
age int
|
||||
}
|
||||
|
||||
fn test_mut_struct() {
|
||||
mut user := User{18}
|
||||
mod_struct(mut user)
|
||||
assert user.age == 19
|
||||
}
|
||||
|
||||
fn mod_ptr(buf mut byteptr) {
|
||||
buf[0] = 77
|
||||
}
|
||||
|
||||
fn test_mut_ptr() {
|
||||
buf := malloc(10)
|
||||
mod_ptr(mut buf)
|
||||
assert buf[0] == 77
|
||||
}
|
||||
|
||||
fn high_fn(f fn(int) int) {
|
||||
|
||||
}
|
||||
|
||||
fn high_fn_array(f fn(a []int) []int) {
|
||||
|
||||
}
|
||||
|
||||
fn high_fn_multi_return(a int, b fn (c []int, d []string) ([]int, []string)) {
|
||||
|
||||
}
|
||||
|
||||
fn test_fns() {
|
||||
// no asserts for now, just test function declarations above
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user