cgen: fix comptime if attributes for `test_` functions (#14756)
							parent
							
								
									5efa67906c
								
							
						
					
					
						commit
						67716b5b59
					
				| 
						 | 
					@ -210,6 +210,7 @@ mut:
 | 
				
			||||||
	generated_free_methods map[int]bool
 | 
						generated_free_methods map[int]bool
 | 
				
			||||||
	autofree_scope_stmts   []string
 | 
						autofree_scope_stmts   []string
 | 
				
			||||||
	use_segfault_handler   bool = true
 | 
						use_segfault_handler   bool = true
 | 
				
			||||||
 | 
						test_function_names    []string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// global or const variable definition string
 | 
					// global or const variable definition string
 | 
				
			||||||
| 
						 | 
					@ -368,6 +369,7 @@ pub fn gen(files []&ast.File, table &ast.Table, pref &pref.Preferences) string {
 | 
				
			||||||
			global_g.pcs << g.pcs
 | 
								global_g.pcs << g.pcs
 | 
				
			||||||
			global_g.json_types << g.json_types
 | 
								global_g.json_types << g.json_types
 | 
				
			||||||
			global_g.hotcode_fn_names << g.hotcode_fn_names
 | 
								global_g.hotcode_fn_names << g.hotcode_fn_names
 | 
				
			||||||
 | 
								global_g.test_function_names << g.test_function_names
 | 
				
			||||||
			unsafe { g.free_builders() }
 | 
								unsafe { g.free_builders() }
 | 
				
			||||||
			for k, v in g.autofree_methods {
 | 
								for k, v in g.autofree_methods {
 | 
				
			||||||
				global_g.autofree_methods[k] = v
 | 
									global_g.autofree_methods[k] = v
 | 
				
			||||||
| 
						 | 
					@ -5538,24 +5540,21 @@ fn (mut g Gen) type_default(typ_ ast.Type) string {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn (g &Gen) get_all_test_function_names() []string {
 | 
					fn (g Gen) get_all_test_function_names() []string {
 | 
				
			||||||
	mut tfuncs := []string{}
 | 
						mut tfuncs := []string{}
 | 
				
			||||||
	mut tsuite_begin := ''
 | 
						mut tsuite_begin := ''
 | 
				
			||||||
	mut tsuite_end := ''
 | 
						mut tsuite_end := ''
 | 
				
			||||||
	for _, f in g.table.fns {
 | 
						for name in g.test_function_names {
 | 
				
			||||||
		if !f.is_test {
 | 
							if name.ends_with('.testsuite_begin') {
 | 
				
			||||||
 | 
								tsuite_begin = name
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if f.name.ends_with('.testsuite_begin') {
 | 
							if name.contains('.test_') {
 | 
				
			||||||
			tsuite_begin = f.name
 | 
								tfuncs << name
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if f.name.contains('.test_') {
 | 
							if name.ends_with('.testsuite_end') {
 | 
				
			||||||
			tfuncs << f.name
 | 
								tsuite_end = name
 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if f.name.ends_with('.testsuite_end') {
 | 
					 | 
				
			||||||
			tsuite_end = f.name
 | 
					 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,9 @@ fn (mut g Gen) fn_decl(node ast.FnDecl) {
 | 
				
			||||||
	if node.should_be_skipped {
 | 
						if node.should_be_skipped {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if node.is_test {
 | 
				
			||||||
 | 
							g.test_function_names << node.name
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if node.ninstances == 0 && node.generic_names.len > 0 {
 | 
						if node.ninstances == 0 && node.generic_names.len > 0 {
 | 
				
			||||||
		$if trace_generics ? {
 | 
							$if trace_generics ? {
 | 
				
			||||||
			eprintln('skipping generic fn with no concrete instances: $node.mod $node.name')
 | 
								eprintln('skipping generic fn with no concrete instances: $node.mod $node.name')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					[if customflag ?]
 | 
				
			||||||
 | 
					fn test_abcdef() {
 | 
				
			||||||
 | 
						println('this should not be in the c code')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					println(_SLIT("this should be in the c code"));
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					// vtest vflags: -d customflag
 | 
				
			||||||
 | 
					[if customflag ?]
 | 
				
			||||||
 | 
					fn test_abcdef() {
 | 
				
			||||||
 | 
						println('this should be in the c code')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue