diff --git a/src/clang.zig b/src/clang.zig index a3a364c0ec..04261f06f0 100644 --- a/src/clang.zig +++ b/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, }; diff --git a/src/translate_c.zig b/src/translate_c.zig index 47a21f5b5c..410e3277ee 100644 --- a/src/translate_c.zig +++ b/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); diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp index bd06ead4b0..ccc4453cdf 100644 --- a/src/zig_clang.cpp +++ b/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 remapped_files = std::nullopt; std::unique_ptr err_unit; + llvm::IntrusiveRefCntPtr VFS = nullptr; + std::optional 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(self); - return bitcast(casted->getUnderlyingType()); + return bitcast(casted->getUnmodifiedType()); } const struct ZigClangExpr *ZigClangTypeOfExprType_getUnderlyingExpr(const struct ZigClangTypeOfExprType *self) { diff --git a/src/zig_clang.h b/src/zig_clang.h index fab5b83b2d..2fd91163f7 100644 --- a/src/zig_clang.h +++ b/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 *);