52 void container(
const IR::IContainer *type);
54 void distinctParameters(
const IR::TypeParameters *typeParams,
const IR::ParameterList *apply,
55 const IR::ParameterList *constr);
59 void postorder(
const IR::Annotations *annotations)
override;
60 void postorder(
const IR::P4Program *program)
override;
61 void postorder(
const IR::Constant *c)
override;
62 void postorder(
const IR::SwitchStatement *statement)
override;
63 void postorder(
const IR::Method *t)
override;
64 void postorder(
const IR::StructField *f)
override;
65 void postorder(
const IR::ParserState *s)
override;
66 void postorder(
const IR::P4Table *t)
override;
67 void postorder(
const IR::Type_Bits *type)
override;
68 void postorder(
const IR::Type_Varbits *type)
override;
69 void postorder(
const IR::ConstructorCallExpression *expression)
override;
70 void postorder(
const IR::Declaration_Variable *decl)
override;
71 void postorder(
const IR::Declaration_Instance *inst)
override;
72 void postorder(
const IR::Declaration_Constant *decl)
override;
73 void postorder(
const IR::EntriesList *l)
override;
74 void postorder(
const IR::ReturnStatement *statement)
override;
75 void postorder(
const IR::ExitStatement *statement)
override;
76 void postorder(
const IR::Type_Package *package)
override { container(package); }
77 void postorder(
const IR::P4Control *control)
override {
79 distinctParameters(control->getTypeParameters(), control->getApplyParameters(),
80 control->getConstructorParameters());
82 void postorder(
const IR::P4Parser *parser)
override {
83 auto start = parser->states.getDeclaration(
"start");
85 ::error(ErrorType::ERR_INVALID,
"Parser %1% has no 'start' state", parser);
88 distinctParameters(parser->getTypeParameters(), parser->getApplyParameters(),
89 parser->getConstructorParameters());
91 void postorder(
const IR::Dots *dots)
override;