Skip to content

Commit a7a887c

Browse files
author
Paolo Tranquilli
committed
Rust: separate attribute macro and macro call expansions
1 parent 2d32c36 commit a7a887c

File tree

90 files changed

+442
-244
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+442
-244
lines changed

rust/extractor/src/generated/.generated.list

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/extractor/src/generated/top.rs

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/extractor/src/translate/base.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,11 @@ impl<'a> Translator<'a> {
328328
let expand_to = ra_ap_hir_expand::ExpandTo::from_call_site(mcall);
329329
let kind = expanded.kind();
330330
if let Some(value) = self.emit_expanded_as(expand_to, expanded) {
331-
generated::Item::emit_expanded(label.into(), value, &mut self.trap.writer);
331+
generated::MacroCall::emit_macro_call_expansion(
332+
label,
333+
value,
334+
&mut self.trap.writer,
335+
);
332336
} else {
333337
let range = self.text_range_for_node(mcall);
334338
self.emit_parse_error(mcall, &SyntaxError::new(
@@ -655,8 +659,9 @@ impl<'a> Translator<'a> {
655659
} = semantics.expand_attr_macro(node)?;
656660
// TODO emit err?
657661
self.emit_macro_expansion_parse_errors(node, &expanded);
658-
let expanded = self.emit_expanded_as(ExpandTo::Items, expanded)?;
659-
generated::Item::emit_expanded(label, expanded, &mut self.trap.writer);
662+
let macro_items = ast::MacroItems::cast(expanded)?;
663+
let expanded = self.emit_macro_items(&macro_items)?;
664+
generated::Item::emit_attribute_macro_expansion(label, expanded, &mut self.trap.writer);
660665
Some(())
661666
})();
662667
}

rust/ql/.generated.list

Lines changed: 45 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/ql/.gitattributes

Lines changed: 18 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ final class MacroCallCfgNode extends Nodes::MacroCallCfgNode {
217217

218218
/** Gets the CFG node for the expansion of this macro call, if it exists. */
219219
CfgNode getExpandedNode() {
220-
any(ChildMapping mapping).hasCfgChild(node, node.getExpanded(), this, result)
220+
any(ChildMapping mapping).hasCfgChild(node, node.getMacroCallExpansion(), this, result)
221221
}
222222
}
223223

rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class StructPatChildMapping extends ParentAstNode, StructPat {
7575
}
7676

7777
class MacroCallChildMapping extends ParentAstNode, MacroCall {
78-
override predicate relevantChild(AstNode child) { child = this.getExpanded() }
78+
override predicate relevantChild(AstNode child) { child = this.getMacroCallExpansion() }
7979
}
8080

8181
class FormatArgsExprChildMapping extends ParentAstNode, CfgImpl::ExprTrees::FormatArgsExprTree {

rust/ql/lib/codeql/rust/controlflow/internal/Completion.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ private predicate guaranteedMatchPosition(Pat pat) {
160160
parent.(OrPat).getLastPat() = pat
161161
or
162162
// for macro patterns we propagate to the expanded pattern
163-
parent.(MacroPat).getMacroCall().getExpanded() = pat
163+
parent.(MacroPat).getMacroCall().getMacroCallExpansion() = pat
164164
)
165165
}
166166

rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class LetStmtTree extends PreOrderTree, LetStmt {
143143
}
144144

145145
class MacroCallTree extends StandardPostOrderTree, MacroCall {
146-
override AstNode getChildNode(int i) { i = 0 and result = this.getExpanded() }
146+
override AstNode getChildNode(int i) { i = 0 and result = this.getMacroCallExpansion() }
147147
}
148148

149149
class MacroStmtsTree extends StandardPreOrderTree, MacroStmts {
@@ -685,7 +685,7 @@ module PatternTrees {
685685
}
686686

687687
class MacroPatTree extends PreOrderPatTree, MacroPat {
688-
override Pat getPat(int i) { i = 0 and result = this.getMacroCall().getExpanded() }
688+
override Pat getPat(int i) { i = 0 and result = this.getMacroCall().getMacroCallExpansion() }
689689
}
690690

691691
class OrPatTree extends PostOrderPatTree instanceof OrPat {

rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)