All checks were successful
Eighty-five comments cited section numbers -- 1.1, 2.2.6, 3.6 -- from a numbering the file had already abandoned before the move to the tracker. They label completed work, so the pointer was the only wrong part. The citation is removed and the sentence kept, which is what issue #27 recommended: these are labels, not references, and a label carrying a version-dependent pointer goes stale again at the next reorganisation. Where a pointer earns its place it names what actually holds the content now -- UPGRADING.md for the confirmed defects, libakerror #15 for the target namespacing, issue #7 for the mutation survivors. README.md and akstdlib.h sent readers to TODO.md for 'what is still open'; they name the tracker. Verified: cmake --build build && ctest --test-dir build, 19/19. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-Authored-By: Andrew Kesterson <andrew@aklabs.net>
27 lines
877 B
C
27 lines
877 B
C
/*
|
|
* NEGATIVE COMPILE TEST.
|
|
*
|
|
* This file must NOT compile. It is built by the CTest entry
|
|
* `negative_format_mismatch` with -Werror, and that test is marked WILL_FAIL.
|
|
*
|
|
* What it asserts: the format attributes on the variadic wrappers are attached
|
|
* and effective. Going through a wrapper is exactly how a caller loses the
|
|
* compile-time format checking it would have had calling printf(3) directly --
|
|
* printf("%d", "str") is caught and an unattributed wrapper's equivalent is not.
|
|
* AKSL_PRINTF_FORMAT is what restores it, and this is what proves it is there.
|
|
*/
|
|
|
|
#include <akstdlib.h>
|
|
|
|
int main(void)
|
|
{
|
|
char buf[64];
|
|
int count = 0;
|
|
akerr_ErrorContext *raised = NULL;
|
|
|
|
/* %d against a string. This is the line that must not build. */
|
|
raised = aksl_snprintf(&count, buf, sizeof(buf), "%d", "not an int");
|
|
|
|
return raised == NULL ? 0 : 1;
|
|
}
|