-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[Frontend] Move some stats + outputs to end of pipeline #32403
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
@swift-ci please test |
@swift-ci please clean test macOS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having to tail-call this function manually makes me a bit nervous, but this looks great.
@CodaFi Hmm, how about we factor out a |
This better fits the model of an inverted pipeline and ensures we capture all the work performed.
Move both the loaded module trace output and "additional whole module outputs" to the end of the pipeline, ensuring to preserve the behaviour where we skip them if we encountered an error.
The use of `SWIFT_DEFER` previously meant that we may return `false` from `performCompile` even if an error was produced from `performEndOfPipelineActions`. To remedy this, introduce a lambda that both calls `performEndOfPipelineActions`, and checks to see if there was an error. Then, enforce that all exit paths call this lambda.
Previously we may have silently bailed if a private module interface path was specified, but the frontend action didn't support it. Instead, make sure we enforce the same restrictions that we enforce for public module interfaces.
e1770eb
to
0825fa5
Compare
@swift-ci please test |
Merging for now, will work on cleaning up the interface in a follow up. |
Move some stat collection and supplementary output logic to
performEndOfPipelineActions
to better fit the model of an inverted pipeline.