Commit da54e7cd00

Andrew Kelley <andrew@ziglang.org>
2020-12-16 22:29:27
update clang.zig and translate-c for the clang C++ API changes
1 parent 755c558
Changed files (2)
src/clang.zig
@@ -408,7 +408,7 @@ pub const Expr = opaque {
     extern fn ZigClangExpr_getBeginLoc(*const Expr) SourceLocation;
 
     pub const EvaluateAsConstantExpr = ZigClangExpr_EvaluateAsConstantExpr;
-    extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstExprUsage, *const ASTContext) bool;
+    extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstantExprKind, *const ASTContext) bool;
 };
 
 pub const FieldDecl = opaque {
@@ -1250,6 +1250,8 @@ pub const CK = extern enum {
     IntegralCast,
     IntegralToBoolean,
     IntegralToFloating,
+    FloatingToFixedPoint,
+    FixedPointToFloating,
     FixedPointCast,
     FixedPointToIntegral,
     IntegralToFixedPoint,
@@ -1356,6 +1358,7 @@ pub const DeclKind = extern enum {
     MSGuid,
     OMPDeclareMapper,
     OMPDeclareReduction,
+    TemplateParamObject,
     UnresolvedUsingValue,
     OMPAllocate,
     OMPRequires,
@@ -1466,6 +1469,8 @@ pub const BuiltinTypeKind = extern enum {
     SveFloat64x4,
     SveBFloat16x4,
     SveBool,
+    VectorQuad,
+    VectorPair,
     Void,
     Bool,
     Char_U,
@@ -1619,9 +1624,11 @@ pub const PreprocessedEntity_EntityKind = extern enum {
     InclusionDirectiveKind,
 };
 
-pub const Expr_ConstExprUsage = extern enum {
-    EvaluateForCodeGen,
-    EvaluateForMangling,
+pub const Expr_ConstantExprKind = extern enum {
+    Normal,
+    NonClassTemplateArgument,
+    ClassTemplateArgument,
+    ImmediateInvocation,
 };
 
 pub const UnaryExprOrTypeTrait_Kind = extern enum {
src/translate_c.zig
@@ -2028,7 +2028,6 @@ fn transCCast(
         // 1. If src_type is an enum, determine the underlying signed int type
         // 2. Extend or truncate without changing signed-ness.
         // 3. Bit-cast to correct signed-ness
-
         const src_type_is_signed = cIsSignedInteger(src_type) or cIsEnum(src_type);
         const src_int_type = if (cIsInteger(src_type)) src_type else cIntTypeForEnum(src_type);
         const src_int_expr = if (cIsInteger(src_type)) expr else try transEnumToInt(rp.c, expr);
@@ -2859,7 +2858,7 @@ fn transDefault(
 
 fn transConstantExpr(rp: RestorePoint, scope: *Scope, expr: *const clang.Expr, used: ResultUsed) TransError!*ast.Node {
     var result: clang.ExprEvalResult = undefined;
-    if (!expr.EvaluateAsConstantExpr(&result, .EvaluateForCodeGen, rp.c.clang_context))
+    if (!expr.EvaluateAsConstantExpr(&result, .Normal, rp.c.clang_context))
         return revertAndWarn(rp, error.UnsupportedTranslation, expr.getBeginLoc(), "invalid constant expression", .{});
 
     var val_node: ?*ast.Node = null;
@@ -5881,7 +5880,7 @@ fn parseCPrimaryExprInner(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!*
                 return error.ParseError;
             }
 
-            const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{slice, m.slice()});
+            const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{ slice, m.slice() });
             const identifier = try c.arena.create(ast.Node.OneToken);
             identifier.* = .{
                 .base = .{ .tag = .Identifier },