Correctly block @Suite and @Test on XCTest.XCTest and XCTestSuite.
#1456
+120
−56
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR ensures that we diagnose if
@Suiteor@Testis applied to a class (or method on such class) that subclassesXCTest.XCTestorXCTestSuite, not justXCTestCase.This change also suppresses the emitted call to the helper function
__invokeXCTest[Case]Method()if the suite type is known not to subclassXCTest.XCTest(e.g. because it's astruct.) This slightly improves the performance of non-class suite types (although probably not measurably so).Finally, this change improves the emitted diagnostic when
@Testis used on a method in anXCTest.XCTestsubclass such that it explicitly states the reason why the attribute can't be used:Checklist: