P4C
The P4 Compiler
Loading...
Searching...
No Matches
checkCoreMethods.h
1/*
2 * Copyright 2021 VMware, Inc.
3 * SPDX-FileCopyrightText: 2021 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef FRONTENDS_P4_CHECKCOREMETHODS_H_
9#define FRONTENDS_P4_CHECKCOREMETHODS_H_
10
11#include "frontends/common/resolveReferences/resolveReferences.h"
12#include "frontends/p4/methodInstance.h"
13#include "frontends/p4/typeChecking/typeChecker.h"
14#include "ir/ir.h"
15
16namespace P4 {
17
19class DoCheckCoreMethods : public Inspector, public ResolutionContext {
20 TypeMap *typeMap;
21
22 void checkEmitType(const IR::Expression *emit, const IR::Type *type) const;
23 void checkCorelibMethods(const ExternMethod *em) const;
24
25 public:
26 explicit DoCheckCoreMethods(TypeMap *typeMap) : typeMap(typeMap) {
27 CHECK_NULL(typeMap);
28 setName("DoCheckCoreMethods");
29 }
30
31 void postorder(const IR::MethodCallExpression *expr) override;
32};
33
34class CheckCoreMethods : public PassManager {
35 public:
36 explicit CheckCoreMethods(TypeMap *typeMap) {
37 passes.push_back(new TypeChecking(nullptr, typeMap));
38 passes.push_back(new DoCheckCoreMethods(typeMap));
39 setName("CheckCoreMethods");
40 }
41};
42
43} // namespace P4
44
45#endif /* FRONTENDS_P4_CHECKCOREMETHODS_H_ */
Check types for arguments of core.p4 methods.
Definition checkCoreMethods.h:19
Definition methodInstance.h:168
Definition visitor.h:418
Definition typeChecker.h:55
Definition typeMap.h:32
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13