Skip to content

Commit b3259ea

Browse files
committed
Make string_set_dispose method a part of public API.
It is not a distinct result returned by `swiftscan_compiler_supported_arguments_query` and `swiftscan_compiler_supported_features_query`, not owned by any other type, so it must be disposed of by the clients.
1 parent 0bfff6b commit b3259ea

File tree

4 files changed

+13
-8
lines changed

4 files changed

+13
-8
lines changed

include/swift-c/DependencyScan/DependencyScan.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,9 @@ swiftscan_scan_invocation_get_argv(swiftscan_scan_invocation_t invocation);
274274

275275
//=== Cleanup Functions ---------------------------------------------------===//
276276

277+
SWIFTSCAN_PUBLIC void
278+
swiftscan_string_set_dispose(swiftscan_string_set_t *set);
279+
277280
SWIFTSCAN_PUBLIC void
278281
swiftscan_dependency_graph_dispose(swiftscan_dependency_graph_t result);
279282

tools/libSwiftScan/libSwiftScan.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,6 @@ void swiftscan_string_dispose(swiftscan_string_ref_t string) {
3232
free(const_cast<void *>(string.data));
3333
}
3434

35-
/// Free the given string set.
36-
void swiftscan_string_set_dispose(swiftscan_string_set_t *set) {
37-
for (unsigned SI = 0, SE = set->count; SI < SE; ++SI)
38-
swiftscan_string_dispose(set->strings[SI]);
39-
delete[] set->strings;
40-
delete set;
41-
}
42-
4335
void swiftscan_dependency_info_details_dispose(
4436
swiftscan_module_details_t details) {
4537
swiftscan_module_details_s *details_impl = details;
@@ -423,6 +415,13 @@ swiftscan_scan_invocation_get_argv(swiftscan_scan_invocation_t invocation) {
423415

424416
//=== Public Cleanup Functions --------------------------------------------===//
425417

418+
void swiftscan_string_set_dispose(swiftscan_string_set_t *set) {
419+
for (unsigned SI = 0, SE = set->count; SI < SE; ++SI)
420+
swiftscan_string_dispose(set->strings[SI]);
421+
delete[] set->strings;
422+
delete set;
423+
}
424+
426425
void swiftscan_dependency_graph_dispose(swiftscan_dependency_graph_t result) {
427426
swiftscan_string_dispose(result->main_module_name);
428427
swiftscan_dependency_set_dispose(result->dependencies);

tools/libSwiftScan/libSwiftScan.exports

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ swiftscan_dependency_graph_create
4444
swiftscan_batch_scan_result_create
4545
swiftscan_import_set_create
4646
swiftscan_scanner_create
47+
swiftscan_string_set_dispose
4748
swiftscan_scan_invocation_dispose
4849
swiftscan_batch_scan_input_dispose
4950
swiftscan_batch_scan_entry_dispose

unittests/DependencyScan/Features.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ TEST_F(ScanTest, TestHasArgumentQuery) {
4444
const char* data = static_cast<const char*>(option.data);
4545
optionSet.insert(std::string(data, option.length));
4646
}
47+
swiftscan_string_set_dispose(supported_args_set);
4748
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
4849
HELPTEXT, METAVAR, VALUES) \
4950
testHasOption(*table, swift::options::OPT_##ID, optionSet);
@@ -59,6 +60,7 @@ TEST_F(ScanTest, TestDoesNotHaveArgumentQuery) {
5960
const char* data = static_cast<const char*>(option.data);
6061
optionSet.insert(std::string(data, option.length));
6162
}
63+
swiftscan_string_set_dispose(supported_args_set);
6264
bool hasOption;
6365
hasOption = optionSet.find("-clearly-not-a-compiler-flag") != optionSet.end();
6466
EXPECT_EQ(hasOption, false);

0 commit comments

Comments
 (0)