1 //===--- SemaConsumer.h - Abstract interface for AST semantics --*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file defines the SemaConsumer class, a subclass of
10 // ASTConsumer that is used by AST clients that also require
11 // additional semantic analysis.
13 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_CLANG_SEMA_SEMACONSUMER_H
15 #define LLVM_CLANG_SEMA_SEMACONSUMER_H
17 #include "clang/AST/ASTConsumer.h"
22 /// An abstract interface that should be implemented by
23 /// clients that read ASTs and then require further semantic
24 /// analysis of the entities in those ASTs.
25 class SemaConsumer : public ASTConsumer {
26 virtual void anchor();
29 ASTConsumer::SemaConsumer = true;
32 /// Initialize the semantic consumer with the Sema instance
33 /// being used to perform semantic analysis on the abstract syntax
35 virtual void InitializeSema(Sema &S) {}
37 /// Inform the semantic consumer that Sema is no longer available.
38 virtual void ForgetSema() {}
40 // isa/cast/dyn_cast support
41 static bool classof(const ASTConsumer *Consumer) {
42 return Consumer->SemaConsumer;