(forwarded_json, code)
| 157 | |
| 158 | |
| 159 | def apply_static_code_hooks(forwarded_json, code): |
| 160 | def inject_code_hooks(name): |
| 161 | nonlocal code |
| 162 | hook_code = forwarded_json[name] |
| 163 | if hook_code: |
| 164 | hook_code = f'// Begin {name} hooks\n {hook_code}\n // End {name} hooks' |
| 165 | else: |
| 166 | hook_code = f'// No {name} hooks' |
| 167 | code = code.replace(f'<<< {name} >>>', hook_code) |
| 168 | |
| 169 | inject_code_hooks('ATMODULES') |
| 170 | inject_code_hooks('ATPRERUNS') |
| 171 | inject_code_hooks('ATINITS') |
| 172 | inject_code_hooks('ATPOSTCTORS') |
| 173 | if settings.HAS_MAIN: |
| 174 | inject_code_hooks('ATMAINS') |
| 175 | if not settings.MINIMAL_RUNTIME or settings.HAS_MAIN: |
| 176 | inject_code_hooks('ATPOSTRUNS') |
| 177 | if settings.EXIT_RUNTIME: |
| 178 | inject_code_hooks('ATEXITS') |
| 179 | |
| 180 | return code |
| 181 | |
| 182 | |
| 183 | @ToolchainProfiler.profile() |
no test coverage detected