mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
freestanding: ptr_str, string concat, struct declaration
* compiler: extract c_common_macros from c_headers, and use it in bare_c_headers too. Support for ptr_str and string concatenation in -freestanding mode. * Add tests for structs and string concatenation in -freestanding mode . * Move check_string_add_works to string/string.v .
This commit is contained in:
committed by
Alexander Medvednikov
parent
dadf147382
commit
b7c477cc18
4
vlib/builtin/bare/.checks/.gitignore
vendored
4
vlib/builtin/bare/.checks/.gitignore
vendored
@@ -1 +1,5 @@
|
||||
checks
|
||||
linuxsys/linuxsys
|
||||
string/string
|
||||
consts/consts
|
||||
structs/structs
|
||||
|
||||
@@ -26,6 +26,7 @@ fn main() {
|
||||
vcheck("linuxsys")
|
||||
vcheck("string")
|
||||
vcheck("consts")
|
||||
vcheck("structs")
|
||||
exit(0)
|
||||
}
|
||||
|
||||
|
||||
@@ -39,12 +39,24 @@ fn check_str_clone() {
|
||||
assert c == "-6789"
|
||||
}
|
||||
|
||||
fn check_string_add_works(){
|
||||
abc := 'abc'
|
||||
combined := 'a' + 'b' + 'c'
|
||||
assert abc.len == combined.len
|
||||
assert abc[0] == combined[0]
|
||||
assert abc[1] == combined[1]
|
||||
assert abc[2] == combined[2]
|
||||
assert abc[0] == `a`
|
||||
assert abc == combined
|
||||
}
|
||||
|
||||
fn main () {
|
||||
mut fails := 0
|
||||
fails += forkedtest.normal_run(check_string_eq, "check_string_eq")
|
||||
fails += forkedtest.normal_run(check_i64_tos, "check_i64_tos")
|
||||
fails += forkedtest.normal_run(check_i64_str, "check_i64_str")
|
||||
fails += forkedtest.normal_run(check_str_clone, "check_str_clone")
|
||||
fails += forkedtest.normal_run(check_string_add_works, "check_string_add_works")
|
||||
assert fails == 0
|
||||
sys_exit(0)
|
||||
}
|
||||
|
||||
42
vlib/builtin/bare/.checks/structs/structs.v
Normal file
42
vlib/builtin/bare/.checks/structs/structs.v
Normal file
@@ -0,0 +1,42 @@
|
||||
module main
|
||||
import forkedtest
|
||||
|
||||
struct SimpleEmptyStruct{
|
||||
}
|
||||
|
||||
struct NonEmptyStruct{
|
||||
x int
|
||||
y int
|
||||
z int
|
||||
}
|
||||
|
||||
fn check_simple_empty_struct(){
|
||||
s := SimpleEmptyStruct{}
|
||||
addr_s := &s
|
||||
str_addr_s := ptr_str( addr_s )
|
||||
assert !isnil(addr_s)
|
||||
assert str_addr_s.len > 3
|
||||
println(str_addr_s)
|
||||
}
|
||||
|
||||
fn check_non_empty_struct(){
|
||||
a := NonEmptyStruct{1,2,3}
|
||||
b := NonEmptyStruct{4,5,6}
|
||||
assert sizeof(NonEmptyStruct) > 0
|
||||
assert sizeof(SimpleEmptyStruct) < sizeof(NonEmptyStruct)
|
||||
assert a.x == 1
|
||||
assert a.y == 2
|
||||
assert a.z == 3
|
||||
assert b.x + b.y + b.z == 15
|
||||
assert ptr_str(&a) != ptr_str(&b)
|
||||
println('sizeof SimpleEmptyStruct:' + i64_str( sizeof(SimpleEmptyStruct) , 10 ))
|
||||
println('sizeof NonEmptyStruct:' + i64_str( sizeof(NonEmptyStruct) , 10 ))
|
||||
}
|
||||
|
||||
fn main(){
|
||||
mut fails := 0
|
||||
fails += forkedtest.normal_run(check_simple_empty_struct, "check_simple_empty_struct")
|
||||
fails += forkedtest.normal_run(check_non_empty_struct, "check_non_empty_struct")
|
||||
assert fails == 0
|
||||
sys_exit(0)
|
||||
}
|
||||
Reference in New Issue
Block a user