-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Refactor the decl scope loop to consolidate modifier handling. #3463
Conversation
86a3927
to
2d8d266
Compare
Specifically using these abbreviations: * InitRepr: "initializing representation" * ObjectRepr: "object representation" * ValueRepr: "value representation" As discussed in [#toolchain discord](https://discord.com/channels/655572317891461132/655578254970716160/1182086098470572143) and now documented in the [list of abbreviations](https://docs.google.com/document/d/1RRYMm42osyqhI2LyjrjockYCutQ5dOf8Abu50kTrkX0/edit?resourcekey=0-kHyqOESbOHmzZphUbtLrTw#heading=h.pph7i5m5un7q).
2d8d266
to
b2fb136
Compare
Per their documentation, the `llvm::Initialize*` functions are only supposed to be called by the main program, not by a library like toolchain/codegen. Fixes a hang due to a data race in multithreaded autoupdate. Add a utility class `Carbon::InitLLVM` to do the common LLVM initialization shared by all Carbon tools, optionally including initializing the LLVM targets. Because the LLVM targets add a lot of binary size, only initialize them for binaries that opt in by depending on a new target `//common:all_llvm_targets`. Also fix `//explorer:file_test` and `//explorer:file_test.trace` to share a binary rather than linking an identical binary twice. --------- Co-authored-by: Jon Ross-Perkins <[email protected]>
…nds of parse nodes that represent names. (carbon-language#3453) Factor out common checking handling for the different kinds of unqualified names
…ack to an error type if that fails. (carbon-language#3454) As requested in [review of carbon-language#3450](carbon-language#3450 (comment)).
…arbon-language#3468) The criteria being enforced is not correct since `final` and `default` functions in interfaces have definitions.
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.
Thanks!
// `base` may be followed by: | ||
// - a colon | ||
// => assume it is an introducer, as in `extend base: BaseType;`. | ||
// - a modifier or an introducer | ||
// => assume it is a modifier, as in `base class`; which is handled | ||
// by falling through to the next case. | ||
// Anything else is an error. |
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.
I think this comment is out of date (at least the modifier part and "falling through")
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.
Cleaning up the comment.
Co-authored-by: Richard Smith <[email protected]>
Thanks, I'd totally overlooked the ability to shift the |
Building on #3462, trying to make the flow easier to see, also making a little more use of macros for boilerplate modifier handling.