fn ii() int { return 42 } fn ss() string { return ii().str() } @[manualfree] fn ffff() { mut my_array_of_strings := []string{cap: 10} my_array_of_strings << 'start' mystring := ss() if mystring.len > 0 { my_array_of_strings << mystring } sa := my_array_of_strings.join(',') println(sa) unsafe { sa.free() mystring.free() // The following SHOULD NOT generate the general `array_free(&my_array_of_strings);` . // Instead, it SHOULD generate the more specific `Array_string_free(&my_array_of_strings);` ! // That more specific version, makes sure, that all the element strings are freed, // before the array itself is also freed. my_array_of_strings.free() } } fn main() { ffff() }