void visit (HIR::MatchExpr &) override {}
void visit (HIR::AwaitExpr &) override {}
void visit (HIR::AsyncBlockExpr &) override {}
+ void visit (HIR::InlineAsm &) override {}
private:
CompileConditionalBlocks (Context *ctx, Bvariable *result)
void visit (HIR::MatchExpr &) override {}
void visit (HIR::AwaitExpr &) override {}
void visit (HIR::AsyncBlockExpr &) override {}
+ void visit (HIR::InlineAsm &) override {}
private:
CompileExprWithBlock (Context *ctx, Bvariable *result)
ctx->add_statement (stmt);
}
+void
+CompileExpr::visit (HIR::InlineAsm &expr)
+{}
+
void
CompileExpr::visit (HIR::IfExprConseqElse &expr)
{
void visit (HIR::RangeFullExpr &expr) override;
void visit (HIR::RangeFromToInclExpr &expr) override;
void visit (HIR::ClosureExpr &expr) override;
+ void visit (HIR::InlineAsm &expr) override;
// TODO
void visit (HIR::ErrorPropagationExpr &) override {}
#include "rust-bir-builder-lazyboolexpr.h"
#include "rust-bir-builder-pattern.h"
#include "rust-bir-builder-struct.h"
+#include "rust-hir-expr.h"
namespace Rust {
namespace BIR {
expr.get_locus (), true);
}
+void
+ExprStmtBuilder::visit (HIR::InlineAsm &expr)
+{}
+
void
ExprStmtBuilder::visit (HIR::MethodCallExpr &expr)
{}
void visit (HIR::WhileLetLoopExpr &expr) override;
void visit (HIR::IfExpr &expr) override;
void visit (HIR::IfExprConseqElse &expr) override;
+ void visit (HIR::InlineAsm &expr) override;
void visit (HIR::IfLetExpr &expr) override;
void visit (HIR::IfLetExprConseqElse &expr) override;
return_place (ExprStmtBuilder (ctx).build (expr), expr.get_locus ());
}
+ void visit (HIR::InlineAsm &expr) override {}
+
protected: // Illegal at this position.
void visit (HIR::StructExprFieldIdentifier &field) override
{
// FIXME: Do we need to do anything for this?
}
+void
+PrivacyReporter::visit (HIR::InlineAsm &)
+{
+ return;
+}
+
void
PrivacyReporter::visit (HIR::TypePath &path)
{
virtual void visit (HIR::MatchExpr &expr);
virtual void visit (HIR::AwaitExpr &expr);
virtual void visit (HIR::AsyncBlockExpr &expr);
+ virtual void visit (HIR::InlineAsm &expr);
virtual void visit (HIR::EnumItemTuple &);
virtual void visit (HIR::EnumItemStruct &);
options (std::move (options))
{}
+
+ // This function checks if the assembly macro is "simple" or not, according to
+ // the tree defition (tree.h) of the
+ bool is_simple ()
+ {
+ return operands.size () == 0 && clobber_abi.size () == 0
+ && options.size () == 0;
+ }
+
+ bool is_inline_asm () { return !is_global_asm; }
};
} // namespace HIR
} // namespace Rust
virtual void visit (IfExprConseqElse &expr) = 0;
virtual void visit (IfLetExpr &expr) = 0;
virtual void visit (IfLetExprConseqElse &expr) = 0;
+ virtual void visit (InlineAsm &expr) = 0;
virtual void visit (MatchExpr &expr) = 0;
virtual void visit (AwaitExpr &expr) = 0;
virtual void visit (AsyncBlockExpr &expr) = 0;
infered = SubstMapperInternal::Resolve (adt, subst);
}
+void
+TypeCheckExpr::visit (HIR::InlineAsm &expr)
+{
+ return;
+}
+
void
TypeCheckExpr::visit (HIR::RangeFullExpr &expr)
{
void visit (HIR::RangeFromToInclExpr &expr) override;
void visit (HIR::WhileLoopExpr &expr) override;
void visit (HIR::ClosureExpr &expr) override;
+ void visit (HIR::InlineAsm &expr) override;
// TODO
void visit (HIR::ErrorPropagationExpr &) override {}