cgen: fix the tests

pull/4092/head
Alexander Medvednikov 2020-03-21 11:47:23 +01:00
parent b2d1f55702
commit 7ad1441c81
6 changed files with 39 additions and 6 deletions

View File

@ -43,7 +43,7 @@ pub fn cgen(files []ast.File, table &table.Table) string {
g.stmts(file.stmts)
}
g.write_variadic_types()
g.write_str_definitions()
// g.write_str_definitions()
g.write_init_function()
return g.typedefs.str() + g.definitions.str() + g.out.str()
}
@ -57,6 +57,7 @@ pub fn (g mut Gen) init() {
g.definitions.writeln('\nstring _STR_TMP(const char*, ...);\n')
g.write_builtin_types()
g.write_typedef_types()
g.write_str_definitions()
g.write_sorted_types()
g.write_multi_return_types()
g.definitions.writeln('// end of definitions #endif')
@ -1591,13 +1592,12 @@ string _STR_TMP(const char *fmt, ...) {
//puts(g_str_buf);
#endif
return tos2(g_str_buf);
}
} // endof _STR_TMP
')
}
const (
// TODO all builtin types must be lowercase
builtins = ['string', 'array', 'KeyValue', 'DenseArray', 'map', 'Option']
)
@ -1625,7 +1625,6 @@ fn (g mut Gen) write_sorted_types() {
types_sorted := g.sort_structs(types)
// Generate C code
g.definitions.writeln('// builtin types:')
// g.write_types(builtin_types)
g.definitions.writeln('//------------------ #endbuiltin')
g.write_types(types_sorted)
}

View File

@ -23,7 +23,14 @@ fn test_c_files() {
ctext = ctext // unused warn
mut b := builder.new_builder(pref.Preferences{})
b.module_search_paths = ['$vroot/vlib/v/gen/tests/']
res := b.gen_c([path]).after('#endbuiltin')
mut res := b.gen_c([path]).after('#endbuiltin')
if res.contains('string _STR') {
pos := res.index('string _STR') or {
-1
}
end := res.index_after('endof _STR_TMP', pos)
res = res[..pos] + res[end + 15..]
}
if compare_texts(res, ctext, path) {
println('${term_ok} ${i}')
}
@ -47,6 +54,15 @@ fn compare_texts(a, b, path string) bool {
*/
for i, line_a in lines_a {
// mut j := 0
// for i := 0; i < lines_a.len; i++ {
// line_a := lines_a[i]
// if line_a.contains('string _STR') {
// println(' SKIPPING!!')
// for !lines_a[i].contains('}') {
// i++
// }
// }
if i >= lines_b.len {
println(line_a)
return false

View File

@ -304,6 +304,7 @@ typedef array array_u64;
typedef map map_int;
typedef map map_string;
typedef byte array_fixed_byte_300 [300];
typedef byte array_fixed_byte_400 [400];
#ifndef bool
typedef int bool;
#define true 1

View File

@ -76,7 +76,13 @@ void end() {
int main(int argc, char** argv) {
_init();
os__args = os__init_os_args(argc, (byteptr*)argv);
return 0;
}
void _init() {
}

View File

@ -63,6 +63,8 @@ void handle_expr(Expr e) {
}
int main(int argc, char** argv) {
_init();
os__args = os__init_os_args(argc, (byteptr*)argv);
User user = (User){
0};
user.age = 10;
@ -74,3 +76,7 @@ int main(int argc, char** argv) {
0});
return 0;
}
void _init() {
}

View File

@ -22,7 +22,9 @@ int Foo_testa(Foo* f);
int Foo_testb(Foo* f);
int Bar_testa(Bar* b);
int main() {
int main(int argc, char** argv) {
_init();
os__args = os__init_os_args(argc, (byteptr*)argv);
Bar b = (Bar){
.a = 122,
};
@ -91,3 +93,6 @@ int Foo_testb(Foo* f) {
int Bar_testa(Bar* b) {
return 4;
}
void _init() {
}