namespace clang {
-class ArrayType;
class ASTContext;
-class AttributedType;
-class AutoType;
-class BuiltinType;
template <typename> class CanQual;
-class ComplexType;
class CXXRecordDecl;
class DeclContext;
-class DeducedType;
class EnumDecl;
class Expr;
class ExtQualsTypeCommonBase;
class FunctionDecl;
-class FunctionNoProtoType;
-class FunctionProtoType;
class IdentifierInfo;
-class InjectedClassNameType;
class NamedDecl;
class ObjCInterfaceDecl;
-class ObjCObjectPointerType;
-class ObjCObjectType;
class ObjCProtocolDecl;
class ObjCTypeParamDecl;
-class ParenType;
struct PrintingPolicy;
class RecordDecl;
-class RecordType;
class Stmt;
class TagDecl;
class TemplateArgument;
class TemplateArgumentListInfo;
class TemplateArgumentLoc;
-class TemplateSpecializationType;
class TemplateTypeParmDecl;
class TypedefNameDecl;
-class TypedefType;
class UnresolvedUsingTypenameDecl;
using CanQualType = CanQual<Type>;
- // Provide forward declarations for all of the *Type classes
+// Provide forward declarations for all of the *Type classes.
#define TYPE(Class, Base) class Class##Type;
#include "clang/AST/TypeNodes.def"