Handle outer attributes properly for inline assembly
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 2.9k
- Forks
- 231
- Avg merge
- 19h 55m
- Merged PRs (30d)
- 67
Description
The current scaffolding for the InlineAsm AST node defines the attribute std::vector<Attribute> outer_attrs in order to avoid being an abstract class from ExprWithoutBlock
It would be great to handle this attribute without involving this hacky way?
See https://github.com/Rust-GCC/gccrs/pull/2982#discussion_r1636734395
The path for the involving file is gccrs/gcc/rust/ast/rust-expr.h
The preview of the code is
class InlineAsm : public ExprWithoutBlock
{
private:
location_t locus;
// TODO: Not sure how outer_attrs plays with InlineAsm, I put it here in order
// to override, very hacky.
std::vector<Attribute> outer_attrs;
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in gccrs/gcc/rust/ast/rust-expr.h and read the InlineAsm and ExprWithoutBlock definitions, then review the discussion in PR 2982. Trace how outer_attrs is handled for these AST nodes and determine what the intended non-hacky design should preserve. Done means InlineAsm no longer needs the temporary attribute member while remaining valid in the AST hierarchy.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, rust
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100