#include "rust-ast-collector.h"
#include "rust-ast.h"
#include "rust-diagnostics.h"
+#include "rust-expr.h"
#include "rust-item.h"
#include "rust-keyword-values.h"
#include "rust-token.h"
visit (expr.get_block_expr ());
}
+void
+TokenCollector::visit (InlineAsm &expr)
+{}
+
// rust-item.h
void
void visit (MatchExpr &expr);
void visit (AwaitExpr &expr);
void visit (AsyncBlockExpr &expr);
-
+ void visit (InlineAsm &expr);
// rust-item.h
void visit (TypeParam ¶m);
void visit (LifetimeWhereClauseItem &item);
visit (expr.get_block_expr ());
}
+void
+DefaultASTVisitor::visit (AST::InlineAsm &expr)
+{
+ rust_unreachable ();
+}
+
void
DefaultASTVisitor::visit (AST::TypeParam ¶m)
{
// full include not required - only forward decls
#include "rust-ast-full-decls.h"
#include "rust-ast.h"
-#include "rust-expr.h"
#include "rust-item.h"
#include "rust-system.h"
virtual void visit (MatchExpr &expr) = 0;
virtual void visit (AwaitExpr &expr) = 0;
virtual void visit (AsyncBlockExpr &expr) = 0;
- virtual void visit (InlineAsm &expr) { rust_unreachable (); }
+ virtual void visit (InlineAsm &expr) = 0;
// rust-item.h
virtual void visit (TypeParam ¶m) = 0;
virtual void visit (AST::MatchExpr &expr) override;
virtual void visit (AST::AwaitExpr &expr) override;
virtual void visit (AST::AsyncBlockExpr &expr) override;
+ virtual void visit (InlineAsm &expr) override;
+
virtual void visit (AST::TypeParam ¶m) override;
virtual void visit (AST::LifetimeWhereClauseItem &item) override;
virtual void visit (AST::TypeBoundWhereClauseItem &item) override;
void visit (HIR::MatchExpr &expr) override { rust_unreachable (); }
void visit (HIR::AwaitExpr &expr) override { rust_unreachable (); }
void visit (HIR::AsyncBlockExpr &expr) override { rust_unreachable (); }
+ void visit (HIR::InlineAsm &expr) override { rust_unreachable (); }
void visit (HIR::TypeParam ¶m) override { rust_unreachable (); }
void visit (HIR::ConstGenericParam ¶m) override { rust_unreachable (); }
void visit (HIR::LifetimeWhereClauseItem &item) override
void visit (HIR::MatchExpr &expr) override {}
void visit (HIR::AwaitExpr &expr) override {}
void visit (HIR::AsyncBlockExpr &expr) override {}
+ void visit (HIR::InlineAsm &expr) override {}
void visit (HIR::TypeParam ¶m) override {}
void visit (HIR::ConstGenericParam ¶m) override {}
void visit (HIR::LifetimeWhereClauseItem &item) override {}
// TODO: Visit block expression
}
+void
+ConstChecker::visit (InlineAsm &)
+{}
+
void
ConstChecker::visit (TypeParam &)
{}
virtual void visit (MatchExpr &expr) override;
virtual void visit (AwaitExpr &expr) override;
virtual void visit (AsyncBlockExpr &expr) override;
+ virtual void visit (InlineAsm &expr) override;
+
virtual void visit (TypeParam ¶m) override;
virtual void visit (ConstGenericParam ¶m) override;
virtual void visit (LifetimeWhereClauseItem &item) override;
virtual void visit (MatchExpr &expr) override final{};
virtual void visit (AwaitExpr &expr) override final{};
virtual void visit (AsyncBlockExpr &expr) override final{};
+ virtual void visit (InlineAsm &expr) override final{};
virtual void visit (TypeParam ¶m) override final{};
virtual void visit (LifetimeWhereClauseItem &item) override final{};
virtual void visit (TypeBoundWhereClauseItem &item) override final{};
}
else if (!is_global_asm && check_identifier (parser, "out"))
{
- rust_unreachable ();
- return tl::nullopt;
+ rust_debug ("Enter parse_reg_operand out");
+
+ auto reg = parse_reg (parser, last_token_id, inline_asm_ctx);
+
+ auto expr = parse_format_string (parser, last_token_id, inline_asm_ctx);
+ reg_operand.register_type = AST::InlineAsmOperand::RegisterType::Out;
+
+ // Since reg is of type optional<T>, we need to check if it is not
+ // optional first.
+ // TODO: We don't throw any errors since we should have throw any
+ // encountered parsing error in parse_reg
+ if (reg)
+ {
+ reg_operand.in.reg = reg.value ();
+ }
+
+ return reg_operand;
}
else if (!is_global_asm && check_identifier (parser, "lateout"))
{
#include "rust-hir.h"
#include <string>
#include "rust-attribute-values.h"
+#include "tree/rust-hir-expr.h"
namespace Rust {
namespace HIR {
end ("AsyncBlockExpr");
}
+void
+Dump::visit (InlineAsm &e)
+{}
+
void
Dump::visit (TypeParam &e)
{
virtual void visit (MatchExpr &) override;
virtual void visit (AwaitExpr &) override;
virtual void visit (AsyncBlockExpr &) override;
+ virtual void visit (InlineAsm &) override;
virtual void visit (TypeParam &) override;
virtual void visit (ConstGenericParam &) override;
virtual void visit (MatchExpr &expr) = 0;
virtual void visit (AwaitExpr &expr) = 0;
virtual void visit (AsyncBlockExpr &expr) = 0;
- virtual void visit (InlineAsm &expr) {}
+ virtual void visit (InlineAsm &expr) = 0;
virtual void visit (TypeParam ¶m) = 0;
virtual void visit (ConstGenericParam ¶m) = 0;
virtual void visit (LifetimeWhereClauseItem &item) = 0;
virtual void visit (MatchExpr &) override {}
virtual void visit (AwaitExpr &) override {}
virtual void visit (AsyncBlockExpr &) override {}
+ virtual void visit (InlineAsm &) override {}
virtual void visit (TypeParam &) override {}
virtual void visit (ConstGenericParam &) override {}
ResolverBase::visit (AST::AsyncBlockExpr &)
{}
+void
+ResolverBase::visit (AST::InlineAsm &)
+{}
+
void
ResolverBase::visit (AST::TypeParam &)
{}
void visit (AST::MatchExpr &);
void visit (AST::AwaitExpr &);
void visit (AST::AsyncBlockExpr &);
+ void visit (AST::InlineAsm &);
void visit (AST::TypeParam &);