-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[test] Reenable the stdlib ABI checker in PR tests #41045
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The asserts test currently requires array_cow_checks, but that feature isn't enabled by default during PR tests. rdar://88153292
@swift-ci test |
Looking good:
|
Can For the
|
We definitely have CI configurations that run the I don't know about -with-array-cow-checks; I added that test as a fallback in case that condition gets (re)enabled by default, to protect against the ABI checks getting accidentally disabled again when that happens. The critical test is
I don't think so -- I don't expect the extra CoW checks to be enabled in no-assert builds of the stdlib, and if they do get enabled, the test failure will be a good signal.
Huh, good catch. It enables verbose output in the build logs. I don't think the difference matters, but it'd probably be a good idea to keep it consistent.
(Heh, of course I was misunderstanding -- I somehow reversed the polarity of the diff while reading it. Yep, that change looks like the right move! One could even argue that unavailable-but-public declarations shouldn't be ignored even in source compat mode -- client modules are able to refer to them in declarations that are themselves unavailable:) // module A
@available(*, unavailable)
public func secret() { print("Psst") }
// module B
import A
@available(*, unavailable)
func sneaky() {
secret() // OK, results in strong linkage to A.secret() even though it's unavailable
} False positives aren't that bad in this case -- it's usually easy enough to review them & add them to these exception lists. It's far more important that we don't have any false negatives; the consequences of shipping hidden ABI breaks would be terrible. So we need the ABI checker to have excellent sensitivity, but (within reason) we don't care that much about specificity. |
Weirdly, #40609 indicates that the -without-asserts tests are in fact running in the current configuration, despite I don't know what's going on; perhaps it's a lit parsing issue with the original REQUIRES line below?
That space after the comma is unusual. |
No, it's not a good idea, but that's what is currently happening AFAIK. The proposed change would only ignore obsoleted/unavailable declarations on the non- |
I can open another PR, but it's difficult for others to review, even if the baseline is changed over several commits.
Is the double-ampersand in If the baseline is only for macOS and x86_64, there's also an issue that |
Lit supports both variants, I suspect |
Ah, the mystery is solved -- and it indeed was a very silly oversight. I accidentally committed a change to #40609 that turns
So all is well, this PR looks like the right move; the real problem was between my chair and keyboard, as usual. 🙈 |
The asserts test currently requires
array_cow_checks
, but that feature isn't enabled by default during PR tests.rdar://88153292