Browse Source

@(init), @(fini) and @(export) procedures are classified as used.

For the purposes of `-vet-unused-procedures`, exported procedures and `@(init)` and `@(fini)` are now disregarded.
Jeroen van Rijn 3 months ago
parent
commit
7c80df4830
1 changed files with 7 additions and 2 deletions
  1. 7 2
      src/checker.cpp

+ 7 - 2
src/checker.cpp

@@ -728,12 +728,17 @@ gb_internal void check_scope_usage_internal(Checker *c, Scope *scope, u64 vet_fl
 		bool is_unused = false;
 		bool is_unused = false;
 		if (vet_unused && check_vet_unused(c, e, &ve_unused)) {
 		if (vet_unused && check_vet_unused(c, e, &ve_unused)) {
 			is_unused = true;
 			is_unused = true;
-		} else if (vet_unused_procedures &&
-		           e->kind == Entity_Procedure) {
+		} else if (vet_unused_procedures && e->kind == Entity_Procedure) {
 			if (e->flags&EntityFlag_Used) {
 			if (e->flags&EntityFlag_Used) {
 				is_unused = false;
 				is_unused = false;
 			} else if (e->flags & EntityFlag_Require) {
 			} else if (e->flags & EntityFlag_Require) {
 				is_unused = false;
 				is_unused = false;
+			} else if (e->flags & EntityFlag_Init) {
+				is_unused = false;
+			} else if (e->flags & EntityFlag_Fini) {
+				is_unused = false;
+			} else if (e->Procedure.is_export) {
+				is_unused = false;
 			} else if (e->pkg && e->pkg->kind == Package_Init && e->token.string == "main") {
 			} else if (e->pkg && e->pkg->kind == Package_Init && e->token.string == "main") {
 				is_unused = false;
 				is_unused = false;
 			} else {
 			} else {