Commit b260bf42d3

Andrew Kelley <andrew@ziglang.org>
2023-01-26 21:12:34
update clang API to 16
1 parent 740a0d8
src/clang.zig
@@ -662,8 +662,8 @@ pub const MacroQualifiedType = opaque {
 };
 
 pub const TypeOfType = opaque {
-    pub const getUnderlyingType = ZigClangTypeOfType_getUnderlyingType;
-    extern fn ZigClangTypeOfType_getUnderlyingType(*const TypeOfType) QualType;
+    pub const getUnmodifiedType = ZigClangTypeOfType_getUnmodifiedType;
+    extern fn ZigClangTypeOfType_getUnmodifiedType(*const TypeOfType) QualType;
 };
 
 pub const TypeOfExprType = opaque {
@@ -1199,6 +1199,7 @@ const StmtClass = enum(c_int) {
     OMPCriticalDirectiveClass,
     OMPDepobjDirectiveClass,
     OMPDispatchDirectiveClass,
+    OMPErrorDirectiveClass,
     OMPFlushDirectiveClass,
     OMPInteropDirectiveClass,
     OMPDistributeDirectiveClass,
@@ -1303,6 +1304,7 @@ const StmtClass = enum(c_int) {
     CXXNewExprClass,
     CXXNoexceptExprClass,
     CXXNullPtrLiteralExprClass,
+    CXXParenListInitExprClass,
     CXXPseudoDestructorExprClass,
     CXXRewrittenBinaryOperatorClass,
     CXXScalarValueInitExprClass,
@@ -1484,11 +1486,13 @@ pub const DeclKind = enum(c_int) {
     FileScopeAsm,
     Friend,
     FriendTemplate,
+    ImplicitConceptSpecialization,
     Import,
     LifetimeExtendedTemporary,
     LinkageSpec,
     Using,
     UsingEnum,
+    HLSLBuffer,
     Label,
     Namespace,
     NamespaceAlias,
@@ -1557,6 +1561,7 @@ pub const DeclKind = enum(c_int) {
     PragmaDetectMismatch,
     RequiresExprBody,
     StaticAssert,
+    TopLevelStmt,
     TranslationUnit,
 };
 
src/translate_c.zig
@@ -4825,7 +4825,7 @@ fn transType(c: *Context, scope: *Scope, ty: *const clang.Type, source_loc: clan
         },
         .TypeOf => {
             const typeof_ty = @ptrCast(*const clang.TypeOfType, ty);
-            return transQualType(c, scope, typeof_ty.getUnderlyingType(), source_loc);
+            return transQualType(c, scope, typeof_ty.getUnmodifiedType(), source_loc);
         },
         .TypeOfExpr => {
             const typeofexpr_ty = @ptrCast(*const clang.TypeOfExprType, ty);
src/zig_clang.cpp
@@ -425,6 +425,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
         case clang::Stmt::OMPCriticalDirectiveClass:
         case clang::Stmt::OMPDepobjDirectiveClass:
         case clang::Stmt::OMPDispatchDirectiveClass:
+        case clang::Stmt::OMPErrorDirectiveClass:
         case clang::Stmt::OMPFlushDirectiveClass:
         case clang::Stmt::OMPInteropDirectiveClass:
         case clang::Stmt::OMPDistributeDirectiveClass:
@@ -529,6 +530,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
         case clang::Stmt::CXXNewExprClass:
         case clang::Stmt::CXXNoexceptExprClass:
         case clang::Stmt::CXXNullPtrLiteralExprClass:
+        case clang::Stmt::CXXParenListInitExprClass:
         case clang::Stmt::CXXPseudoDestructorExprClass:
         case clang::Stmt::CXXRewrittenBinaryOperatorClass:
         case clang::Stmt::CXXScalarValueInitExprClass:
@@ -661,6 +663,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancellationPointDirective
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCriticalDirectiveClass == clang::Stmt::OMPCriticalDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDepobjDirectiveClass == clang::Stmt::OMPDepobjDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDispatchDirectiveClass == clang::Stmt::OMPDispatchDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPErrorDirectiveClass == clang::Stmt::OMPErrorDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPFlushDirectiveClass == clang::Stmt::OMPFlushDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPInteropDirectiveClass == clang::Stmt::OMPInteropDirectiveClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeDirectiveClass == clang::Stmt::OMPDistributeDirectiveClass, "");
@@ -765,6 +768,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXInheritedCtorInitExprClass
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNewExprClass == clang::Stmt::CXXNewExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNoexceptExprClass == clang::Stmt::CXXNoexceptExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNullPtrLiteralExprClass == clang::Stmt::CXXNullPtrLiteralExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXParenListInitExprClass == clang::Stmt::CXXParenListInitExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXPseudoDestructorExprClass == clang::Stmt::CXXPseudoDestructorExprClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXRewrittenBinaryOperatorClass == clang::Stmt::CXXRewrittenBinaryOperatorClass, "");
 static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXScalarValueInitExprClass == clang::Stmt::CXXScalarValueInitExprClass, "");
@@ -915,11 +919,13 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
         case clang::Decl::FileScopeAsm:
         case clang::Decl::Friend:
         case clang::Decl::FriendTemplate:
+        case clang::Decl::ImplicitConceptSpecialization:
         case clang::Decl::Import:
         case clang::Decl::LifetimeExtendedTemporary:
         case clang::Decl::LinkageSpec:
         case clang::Decl::Using:
         case clang::Decl::UsingEnum:
+        case clang::Decl::HLSLBuffer:
         case clang::Decl::Label:
         case clang::Decl::Namespace:
         case clang::Decl::NamespaceAlias:
@@ -988,6 +994,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
         case clang::Decl::PragmaDetectMismatch:
         case clang::Decl::RequiresExprBody:
         case clang::Decl::StaticAssert:
+        case clang::Decl::TopLevelStmt:
         case clang::Decl::TranslationUnit:
             break;
     }
@@ -1003,11 +1010,13 @@ static_assert((clang::Decl::Kind)ZigClangDeclExternCContext == clang::Decl::Exte
 static_assert((clang::Decl::Kind)ZigClangDeclFileScopeAsm == clang::Decl::FileScopeAsm, "");
 static_assert((clang::Decl::Kind)ZigClangDeclFriend == clang::Decl::Friend, "");
 static_assert((clang::Decl::Kind)ZigClangDeclFriendTemplate == clang::Decl::FriendTemplate, "");
+static_assert((clang::Decl::Kind)ZigClangDeclImplicitConceptSpecialization == clang::Decl::ImplicitConceptSpecialization, "");
 static_assert((clang::Decl::Kind)ZigClangDeclImport == clang::Decl::Import, "");
 static_assert((clang::Decl::Kind)ZigClangDeclLifetimeExtendedTemporary == clang::Decl::LifetimeExtendedTemporary, "");
 static_assert((clang::Decl::Kind)ZigClangDeclLinkageSpec == clang::Decl::LinkageSpec, "");
 static_assert((clang::Decl::Kind)ZigClangDeclUsing == clang::Decl::Using, "");
 static_assert((clang::Decl::Kind)ZigClangDeclUsingEnum == clang::Decl::UsingEnum, "");
+static_assert((clang::Decl::Kind)ZigClangDeclHLSLBuffer == clang::Decl::HLSLBuffer, "");
 static_assert((clang::Decl::Kind)ZigClangDeclLabel == clang::Decl::Label, "");
 static_assert((clang::Decl::Kind)ZigClangDeclNamespace == clang::Decl::Namespace, "");
 static_assert((clang::Decl::Kind)ZigClangDeclNamespaceAlias == clang::Decl::NamespaceAlias, "");
@@ -1076,6 +1085,7 @@ static_assert((clang::Decl::Kind)ZigClangDeclPragmaComment == clang::Decl::Pragm
 static_assert((clang::Decl::Kind)ZigClangDeclPragmaDetectMismatch == clang::Decl::PragmaDetectMismatch, "");
 static_assert((clang::Decl::Kind)ZigClangDeclRequiresExprBody == clang::Decl::RequiresExprBody, "");
 static_assert((clang::Decl::Kind)ZigClangDeclStaticAssert == clang::Decl::StaticAssert, "");
+static_assert((clang::Decl::Kind)ZigClangDeclTopLevelStmt == clang::Decl::TopLevelStmt, "");
 static_assert((clang::Decl::Kind)ZigClangDeclTranslationUnit == clang::Decl::TranslationUnit, "");
 
 void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
@@ -2496,14 +2506,32 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char
     bool single_file_parse = false;
     bool for_serialization = false;
     bool retain_excluded_conditional_blocks = false;
+    clang::ArrayRef<clang::ASTUnit::RemappedFile> remapped_files = std::nullopt;
     std::unique_ptr<clang::ASTUnit> err_unit;
+    llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr;
+    std::optional<llvm::StringRef> ModuleFormat = std::nullopt;
     clang::ASTUnit *ast_unit = clang::ASTUnit::LoadFromCommandLine(
-            args_begin, args_end,
-            pch_container_ops, diags, resources_path,
-            only_local_decls, clang::CaptureDiagsKind::All, clang::None, true, 0, clang::TU_Complete,
-            false, false, allow_pch_with_compiler_errors, clang::SkipFunctionBodiesScope::None,
-            single_file_parse, user_files_are_volatile, for_serialization, retain_excluded_conditional_blocks,
-            clang::None, &err_unit, nullptr);
+        args_begin, args_end,
+        pch_container_ops,
+        diags,
+        resources_path,
+        only_local_decls,
+        clang::CaptureDiagsKind::All,
+        remapped_files,
+        true, // remapped files keep original name
+        0, // precompiled preable after n parses
+        clang::TU_Complete,
+        false, // cache code completion results
+        false, // include brief comments in code completion
+        allow_pch_with_compiler_errors,
+        clang::SkipFunctionBodiesScope::None,
+        single_file_parse,
+        user_files_are_volatile,
+        for_serialization,
+        retain_excluded_conditional_blocks,
+        ModuleFormat,
+        &err_unit,
+        VFS);
 
     *errors_len = 0;
 
@@ -2836,9 +2864,9 @@ struct ZigClangQualType ZigClangMacroQualifiedType_getModifiedType(const struct
     return bitcast(casted->getModifiedType());
 }
 
-struct ZigClangQualType ZigClangTypeOfType_getUnderlyingType(const struct ZigClangTypeOfType *self) {
+struct ZigClangQualType ZigClangTypeOfType_getUnmodifiedType(const struct ZigClangTypeOfType *self) {
     auto casted = reinterpret_cast<const clang::TypeOfType *>(self);
-    return bitcast(casted->getUnderlyingType());
+    return bitcast(casted->getUnmodifiedType());
 }
 
 const struct ZigClangExpr *ZigClangTypeOfExprType_getUnderlyingExpr(const struct ZigClangTypeOfExprType *self) {
src/zig_clang.h
@@ -329,6 +329,7 @@ enum ZigClangStmtClass {
     ZigClangStmt_OMPCriticalDirectiveClass,
     ZigClangStmt_OMPDepobjDirectiveClass,
     ZigClangStmt_OMPDispatchDirectiveClass,
+    ZigClangStmt_OMPErrorDirectiveClass,
     ZigClangStmt_OMPFlushDirectiveClass,
     ZigClangStmt_OMPInteropDirectiveClass,
     ZigClangStmt_OMPDistributeDirectiveClass,
@@ -433,6 +434,7 @@ enum ZigClangStmtClass {
     ZigClangStmt_CXXNewExprClass,
     ZigClangStmt_CXXNoexceptExprClass,
     ZigClangStmt_CXXNullPtrLiteralExprClass,
+    ZigClangStmt_CXXParenListInitExprClass,
     ZigClangStmt_CXXPseudoDestructorExprClass,
     ZigClangStmt_CXXRewrittenBinaryOperatorClass,
     ZigClangStmt_CXXScalarValueInitExprClass,
@@ -614,11 +616,13 @@ enum ZigClangDeclKind {
     ZigClangDeclFileScopeAsm,
     ZigClangDeclFriend,
     ZigClangDeclFriendTemplate,
+    ZigClangDeclImplicitConceptSpecialization,
     ZigClangDeclImport,
     ZigClangDeclLifetimeExtendedTemporary,
     ZigClangDeclLinkageSpec,
     ZigClangDeclUsing,
     ZigClangDeclUsingEnum,
+    ZigClangDeclHLSLBuffer,
     ZigClangDeclLabel,
     ZigClangDeclNamespace,
     ZigClangDeclNamespaceAlias,
@@ -687,6 +691,7 @@ enum ZigClangDeclKind {
     ZigClangDeclPragmaDetectMismatch,
     ZigClangDeclRequiresExprBody,
     ZigClangDeclStaticAssert,
+    ZigClangDeclTopLevelStmt,
     ZigClangDeclTranslationUnit,
 };
 
@@ -1301,7 +1306,7 @@ ZIG_EXTERN_C struct ZigClangQualType ZigClangAttributedType_getEquivalentType(co
 
 ZIG_EXTERN_C struct ZigClangQualType ZigClangMacroQualifiedType_getModifiedType(const struct ZigClangMacroQualifiedType *);
 
-ZIG_EXTERN_C struct ZigClangQualType ZigClangTypeOfType_getUnderlyingType(const struct ZigClangTypeOfType *);
+ZIG_EXTERN_C struct ZigClangQualType ZigClangTypeOfType_getUnmodifiedType(const struct ZigClangTypeOfType *);
 
 ZIG_EXTERN_C const struct ZigClangExpr *ZigClangTypeOfExprType_getUnderlyingExpr(const struct ZigClangTypeOfExprType *);