8#ifndef MIDEND_CONVERTERRORS_H_
9#define MIDEND_CONVERTERRORS_H_
13#include "frontends/p4/typeChecking/typeChecker.h"
14#include "frontends/p4/typeMap.h"
17#include "ir/pass_manager.h"
18#include "ir/visitor.h"
19#include "lib/cstring.h"
21#include "lib/safe_vector.h"
22#include "midend/convertEnums.h"
36 virtual bool convert(
const IR::Type_Error *type)
const = 0;
47 unsigned width)
const;
51 friend class ConvertErrors;
53 std::map<cstring, P4::EnumRepresentation *> repr;
59 : policy(policy), typeMap(typeMap) {
62 setName(
"DoConvertErrors");
64 const IR::Node *preorder(IR::Type_Error *type)
override;
65 const IR::Node *postorder(IR::Type_Name *type)
override;
66 const IR::Node *postorder(IR::Member *member)
override;
69class ConvertErrors :
public PassManager {
73 using ErrorMapping =
decltype(DoConvertErrors::repr);
77 if (typeChecking ==
nullptr) {
80 passes.push_back(typeChecking);
81 passes.push_back(convertErrors);
83 setName(
"ConvertErrors");
86 ErrorMapping getErrorMapping()
const {
return convertErrors->repr; }
Definition convertErrors.h:31
virtual unsigned errorSize(unsigned errorCount) const =0
virtual IR::IndexedVector< IR::SerEnumMember > * assignValues(IR::Type_Error *type, unsigned width) const
Definition convertErrors.cpp:74
virtual bool convert(const IR::Type_Error *type) const =0
If true this type has to be converted.
Definition typeChecker.h:32
Definition convertErrors.h:50
Definition indexed_vector.h:31
Definition typeChecker.h:55
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13
unsigned errorCount()
Definition lib/error.h:34