This reverts commit
a1f940d193c6cdb13483690a4f4a7d501ad7040e. It is easier
and cleaner to store exported macros' NodeIds into our mappings rather than
create a new HIR kind of node.
gcc/rust/ChangeLog:
* backend/rust-compile-item.h: Revert
1c946687239b86a92839d57dfbc928ad7ce35eae.
* backend/rust-compile-stmt.h: Likewise.
* checks/errors/privacy/rust-privacy-reporter.cc
(PrivacyReporter::visit): Likewise.
* checks/errors/privacy/rust-privacy-reporter.h: Likewise.
* checks/errors/privacy/rust-pub-restricted-visitor.cc
(PubRestrictedVisitor::visit): Likewise.
* checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise.
* checks/errors/privacy/rust-reachability.cc
(ReachabilityVisitor::visit): Likewise.
* checks/errors/privacy/rust-reachability.h: Likewise.
* checks/errors/privacy/rust-visibility-resolver.cc
(VisibilityResolver::visit): Likewise.
* checks/errors/privacy/rust-visibility-resolver.h: Likewise.
* checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
* checks/errors/rust-const-checker.h: Likewise.
* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
* checks/errors/rust-unsafe-checker.h: Likewise.
* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
* hir/rust-ast-lower-item.h: Likewise.
* hir/rust-hir-dump.cc (Dump::visit): Likewise.
* hir/rust-hir-dump.h: Likewise.
* hir/tree/rust-hir-full-decls.h (class ExportedMacro): Likewise.
* hir/tree/rust-hir-item.h (class ExportedMacro): Likewise.
* hir/tree/rust-hir-visitor.h: Likewise.
* hir/tree/rust-hir.cc (ExportedMacro::accept_vis): Likewise.
(ExportedMacro::get_locus): Likewise.
(ExportedMacro::get_item_kind): Likewise.
(ExportedMacro::clone_item_impl): Likewise.
* hir/tree/rust-hir.h: Likewise.
* metadata/rust-export-metadata.cc: Likewise.
* typecheck/rust-hir-type-check-item.h: Likewise.
* typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
* typecheck/rust-hir-type-check-stmt.h: Likewise.
* typecheck/rust-tycheck-dump.h: Likewise.
* util/rust-attributes.cc: Likewise.
void visit (HIR::LetStmt &) override {}
void visit (HIR::ExprStmtWithoutBlock &) override {}
void visit (HIR::ExprStmtWithBlock &) override {}
- void visit (HIR::ExportedMacro &) override {}
protected:
CompileItem (Context *ctx, TyTy::BaseType *concrete, Location ref_locus)
void visit (HIR::ImplBlock &) override {}
void visit (HIR::ExternBlock &) override {}
void visit (HIR::EmptyStmt &) override {}
- void visit (HIR::ExportedMacro &) override {}
private:
CompileStmt (Context *ctx);
stmt.get_expr ()->accept_vis (*this);
}
-void
-PrivacyReporter::visit (HIR::ExportedMacro &)
-{}
-
} // namespace Privacy
} // namespace Rust
virtual void visit (HIR::LetStmt &stmt);
virtual void visit (HIR::ExprStmtWithoutBlock &stmt);
virtual void visit (HIR::ExprStmtWithBlock &stmt);
- virtual void visit (HIR::ExportedMacro ¯o);
Analysis::Mappings &mappings;
Rust::Resolver::Resolver &resolver;
block.get_locus ());
}
-void
-PubRestrictedVisitor::visit (HIR::ExportedMacro ¯o)
-{
- is_restriction_valid (macro.get_mappings ().get_nodeid (),
- macro.get_locus ());
-}
-
} // namespace Privacy
} // namespace Rust
virtual void visit (HIR::Trait &trait);
virtual void visit (HIR::ImplBlock &impl);
virtual void visit (HIR::ExternBlock &block);
- virtual void visit (HIR::ExportedMacro ¯o);
private:
/* Stack of ancestor modules visited by this visitor */
ReachabilityVisitor::visit (HIR::ExternBlock &)
{}
-void
-ReachabilityVisitor::visit (HIR::ExportedMacro ¯o)
-{}
-
// FIXME: How can we visit Blocks in the current configuration? Have a full
// visitor?
} // namespace Privacy
virtual void visit (HIR::Trait &trait);
virtual void visit (HIR::ImplBlock &impl);
virtual void visit (HIR::ExternBlock &block);
- virtual void visit (HIR::ExportedMacro ¯o);
private:
ReachLevel current_level;
VisibilityResolver::visit (HIR::ExternBlock &)
{}
-void
-VisibilityResolver::visit (HIR::ExportedMacro ¯o)
-{
- resolve_and_update (¯o);
-}
-
} // namespace Privacy
} // namespace Rust
virtual void visit (HIR::Trait &trait);
virtual void visit (HIR::ImplBlock &impl);
virtual void visit (HIR::ExternBlock &block);
- virtual void visit (HIR::ExportedMacro ¯o);
private:
Analysis::Mappings &mappings;
ConstChecker::visit (BareFunctionType &)
{}
-void
-ConstChecker::visit (ExportedMacro &)
-{}
-
} // namespace HIR
} // namespace Rust
virtual void visit (SliceType &type) override;
virtual void visit (InferredType &type) override;
virtual void visit (BareFunctionType &type) override;
- virtual void visit (ExportedMacro ¯o) override;
};
} // namespace HIR
UnsafeChecker::visit (BareFunctionType &)
{}
-void
-UnsafeChecker::visit (ExportedMacro &)
-{}
-
} // namespace HIR
} // namespace Rust
virtual void visit (SliceType &type) override;
virtual void visit (InferredType &type) override;
virtual void visit (BareFunctionType &type) override;
- virtual void visit (ExportedMacro ¯o) override;
};
} // namespace HIR
translated = lower_extern_block (extern_block);
}
-void
-ASTLoweringItem::visit (AST::MacroRulesDefinition &def)
-{
- bool is_export = false;
- for (const auto &attr : def.get_outer_attrs ())
- if (attr.get_path ().as_string () == "macro_export")
- is_export = true;
-
- if (is_export)
- {
- auto crate_num = mappings->get_current_crate ();
- Analysis::NodeMapping mapping (crate_num, def.get_node_id (),
- mappings->get_next_hir_id (crate_num),
- mappings->get_next_localdef_id (
- crate_num));
- auto locus = def.get_locus ();
-
- translated
- = new HIR::ExportedMacro (mapping, def.get_outer_attrs (), locus);
- }
-}
-
HIR::SimplePath
ASTLoweringSimplePath::translate (const AST::SimplePath &path)
{
void visit (AST::Trait &trait) override;
void visit (AST::TraitImpl &impl_block) override;
void visit (AST::ExternBlock &extern_block) override;
- void visit (AST::MacroRulesDefinition ¯o) override;
private:
ASTLoweringItem () : translated (nullptr) {}
void
Dump::visit (BareFunctionType &)
{}
-void
-Dump::visit (ExportedMacro &)
-{}
} // namespace HIR
} // namespace Rust
virtual void visit (SliceType &) override;
virtual void visit (InferredType &) override;
virtual void visit (BareFunctionType &) override;
- virtual void visit (ExportedMacro &) override;
};
} // namespace HIR
class GenericParam;
class LifetimeParam;
-// FIXME: ARTHUR: Move this somewhere else
-class ExportedMacro;
-
class TraitItem;
class ImplItem;
struct Crate;
}*/
};
-class ExportedMacro : public VisItem
-{
- Location locus;
-
-public:
- ExportedMacro (Analysis::NodeMapping mapping, AST::AttrVec outer_attrs,
- Location locus)
- : VisItem (mapping, Visibility (Visibility::PUBLIC),
- std::move (outer_attrs)),
- locus (locus)
- {}
-
- virtual Location get_locus () const override;
- virtual ItemKind get_item_kind () const override;
- virtual ExportedMacro *clone_item_impl () const override;
-
- void accept_vis (HIRFullVisitor &vis) override;
- void accept_vis (HIRStmtVisitor &vis) override;
- void accept_vis (HIRVisItemVisitor &vis) override;
-};
-
} // namespace HIR
} // namespace Rust
virtual void visit (SliceType &type) = 0;
virtual void visit (InferredType &type) = 0;
virtual void visit (BareFunctionType &type) = 0;
- virtual void visit (ExportedMacro ¯o) = 0;
};
class HIRFullVisitorBase : public HIRFullVisitor
virtual void visit (SliceType &) override {}
virtual void visit (InferredType &) override {}
virtual void visit (BareFunctionType &) override {}
- virtual void visit (ExportedMacro &) override {}
};
class HIRExternalItemVisitor
virtual void visit (Trait &trait) = 0;
virtual void visit (ImplBlock &impl) = 0;
virtual void visit (ExternBlock &block) = 0;
- virtual void visit (ExportedMacro ¯o) = 0;
};
class HIRImplVisitor
virtual void visit (LetStmt &stmt) = 0;
virtual void visit (ExprStmtWithoutBlock &stmt) = 0;
virtual void visit (ExprStmtWithBlock &stmt) = 0;
- virtual void visit (ExportedMacro ¯o) = 0;
};
class HIRExpressionVisitor
ConstGenericParam::accept_vis (HIRFullVisitor &)
{}
-void
-ExportedMacro::accept_vis (HIRVisItemVisitor &vis)
-{
- vis.visit (*this);
-}
-
-void
-ExportedMacro::accept_vis (HIRFullVisitor &vis)
-{
- vis.visit (*this);
-}
-
-void
-ExportedMacro::accept_vis (HIRStmtVisitor &vis)
-{
- vis.visit (*this);
-}
-
-Location
-ExportedMacro::get_locus () const
-{
- return locus;
-}
-
-Item::ItemKind
-ExportedMacro::get_item_kind () const
-{
- return ItemKind::MacroExport;
-}
-
-ExportedMacro *
-ExportedMacro::clone_item_impl () const
-{
- return new ExportedMacro (*this);
-}
-
} // namespace HIR
} // namespace Rust
Trait,
Impl,
Module,
- MacroExport,
};
virtual ItemKind get_item_kind () const = 0;
void visit (HIR::StaticItem &) override {}
void visit (HIR::ImplBlock &) override {}
void visit (HIR::ExternBlock &) override {}
- void visit (HIR::ExportedMacro &) override {}
void visit (HIR::Trait &trait) override { ctx.emit_trait (trait); }
// nothing to do
void visit (HIR::ExternCrate &) override {}
void visit (HIR::UseDeclaration &) override {}
- void visit (HIR::ExportedMacro &) override {}
protected:
std::vector<TyTy::SubstitutionParamMapping>
infered = TypeCheckType::Resolve (&path);
}
-void
-TypeCheckStmt::visit (HIR::ExportedMacro &path)
-{}
-
void
TypeCheckStmt::visit (HIR::TupleStruct &struct_decl)
{
void visit (HIR::ImplBlock &impl) override;
void visit (HIR::TypePath &path) override;
void visit (HIR::QualifiedPathInType &path) override;
- void visit (HIR::ExportedMacro &path) override;
// FIXME
// this seems like it should not be part of this visitor
dump += "ctor: " + type_string (expr.get_mappings ());
}
- void visit (HIR::ExportedMacro &) override {}
-
protected:
std::string type_string (const Analysis::NodeMapping &mappings)
{
{"repr", CODE_GENERATION},
{"path", EXPANSION},
{"macro_use", NAME_RESOLUTION},
- {"macro_export", CODE_GENERATION}, // FIXME: And NAME_RESOLUTION as well
// FIXME: This is not implemented yet, see
// https://github.com/Rust-GCC/gccrs/issues/1475
{"target_feature", CODE_GENERATION},