diff options
| author | gingerBill <bill@gingerbill.org> | 2023-02-15 11:31:51 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-02-15 11:31:51 +0000 |
| commit | 94c1331c071d4816bec44345393dfd07f75c97dc (patch) | |
| tree | fa049dc71063ad5d743a766a8108d0daf2a28fb1 /src/check_decl.cpp | |
| parent | 48685e8bf15dada1734ad6463fafb7d00c86b2b0 (diff) | |
Implement `@(fini)` (opposite of `@(init)`)
Diffstat (limited to 'src/check_decl.cpp')
| -rw-r--r-- | src/check_decl.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/check_decl.cpp b/src/check_decl.cpp index f0059424e..63e6514e0 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -816,9 +816,14 @@ gb_internal void check_proc_decl(CheckerContext *ctx, Entity *e, DeclInfo *d) { if (ac.test) { e->flags |= EntityFlag_Test; } - if (ac.init) { + if (ac.init && ac.fini) { + error(e->token, "A procedure cannot be both declared as @(init) and @(fini)"); + } else if (ac.init) { e->flags |= EntityFlag_Init; + } else if (ac.fini) { + e->flags |= EntityFlag_Fini; } + if (ac.set_cold) { e->flags |= EntityFlag_Cold; } |