ObjFW  Check-in [658caa441b]

Overview
Comment:Better workaround for Clang bug on Windows
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 658caa441b197e0d8ad4f1b2258d6f62fc1a8df136a9f8004641be0c8f22c487
User & Date: js on 2022-06-17 14:36:49
Other Links: manifest | tags
Context
2022-06-17
17:12
OFPlugin: Completely redesign API check-in: a74bff96c4 user: js tags: trunk
14:36
Better workaround for Clang bug on Windows check-in: 658caa441b user: js tags: trunk
2022-06-15
14:44
tests: Work around a Clang bug on Windows with ARC check-in: 91fd8bb4d2 user: js tags: trunk
Changes

Modified tests/Makefile from [c9143096e6] to [bb692e21b0].

206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
	rm -fr nds-data

${PROG_NOINST}.3dsx: ${PROG_NOINST}
	3dsxtool $< $@

CPPFLAGS += -I../src -I../src/exceptions -I../src/runtime -I.. -DSTDOUT
OBJCFLAGS_RuntimeARCTests.m = -fobjc-arc -fobjc-arc-exceptions
# Clang on Windows creates an invalid call into
# objc_retainAutoreleasedReturnValue() in init with any optimization level
# greater 0.
# TODO: Investigate further and file a bug against Clang
OBJCFLAGS_RuntimeARCTests.m += -O0
LIBS := ${TESTS_LIBS} ${LIBS}
LDFLAGS += ${MAP_LDFLAGS}
LD = ${OBJC}







<
<
<
<
<



206
207
208
209
210
211
212





213
214
215
	rm -fr nds-data

${PROG_NOINST}.3dsx: ${PROG_NOINST}
	3dsxtool $< $@

CPPFLAGS += -I../src -I../src/exceptions -I../src/runtime -I.. -DSTDOUT
OBJCFLAGS_RuntimeARCTests.m = -fobjc-arc -fobjc-arc-exceptions





LIBS := ${TESTS_LIBS} ${LIBS}
LDFLAGS += ${MAP_LDFLAGS}
LD = ${OBJC}

Modified tests/RuntimeARCTests.m from [c97e42ea4b] to [3a41eba7d4].

23
24
25
26
27
28
29








30

31
32
33
34
35
36
37
@end

@implementation RuntimeARCTest
- (instancetype)init
{
	self = [super init];









	@throw [OFException exception];


	return self;
}
@end

@implementation TestsAppDelegate (RuntimeARCTests)
- (void)runtimeARCTests







>
>
>
>
>
>
>
>

>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@end

@implementation RuntimeARCTest
- (instancetype)init
{
	self = [super init];

#ifdef OF_WINDOWS
	/*
	 * Clang has a bug on Windows where it creates an invalid call into
	 * objc_retainAutoreleasedReturnValue(). Work around it by not using an
	 * autoreleased exception.
	 */
	@throw [[OFException alloc] init];
#else
	@throw [OFException exception];
#endif

	return self;
}
@end

@implementation TestsAppDelegate (RuntimeARCTests)
- (void)runtimeARCTests