authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-16 14:29:27-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-16 14:29:27-07:00
logda54e7cd00d81be7eb77a83474a734e4ce39eb98
treef8d83b59cde13876984536561a558fe0cc606458
parent755c5580267b246983fc0b2b2fb8dccfc261b9a0

update clang.zig and translate-c for the clang C++ API changes


2 files changed, 13 insertions(+), 7 deletions(-)

src/clang.zig+11-4
......@@ -408,7 +408,7 @@ pub const Expr = opaque {
408408 extern fn ZigClangExpr_getBeginLoc(*const Expr) SourceLocation;
409409
410410 pub const EvaluateAsConstantExpr = ZigClangExpr_EvaluateAsConstantExpr;
411 extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstExprUsage, *const ASTContext) bool;
411 extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstantExprKind, *const ASTContext) bool;
412412};
413413
414414pub const FieldDecl = opaque {
......@@ -1250,6 +1250,8 @@ pub const CK = extern enum {
12501250 IntegralCast,
12511251 IntegralToBoolean,
12521252 IntegralToFloating,
1253 FloatingToFixedPoint,
1254 FixedPointToFloating,
12531255 FixedPointCast,
12541256 FixedPointToIntegral,
12551257 IntegralToFixedPoint,
......@@ -1356,6 +1358,7 @@ pub const DeclKind = extern enum {
13561358 MSGuid,
13571359 OMPDeclareMapper,
13581360 OMPDeclareReduction,
1361 TemplateParamObject,
13591362 UnresolvedUsingValue,
13601363 OMPAllocate,
13611364 OMPRequires,
......@@ -1466,6 +1469,8 @@ pub const BuiltinTypeKind = extern enum {
14661469 SveFloat64x4,
14671470 SveBFloat16x4,
14681471 SveBool,
1472 VectorQuad,
1473 VectorPair,
14691474 Void,
14701475 Bool,
14711476 Char_U,
......@@ -1619,9 +1624,11 @@ pub const PreprocessedEntity_EntityKind = extern enum {
16191624 InclusionDirectiveKind,
16201625};
16211626
1622pub const Expr_ConstExprUsage = extern enum {
1623 EvaluateForCodeGen,
1624 EvaluateForMangling,
1627pub const Expr_ConstantExprKind = extern enum {
1628 Normal,
1629 NonClassTemplateArgument,
1630 ClassTemplateArgument,
1631 ImmediateInvocation,
16251632};
16261633
16271634pub const UnaryExprOrTypeTrait_Kind = extern enum {
src/translate_c.zig+2-3
......@@ -2028,7 +2028,6 @@ fn transCCast(
20282028 // 1. If src_type is an enum, determine the underlying signed int type
20292029 // 2. Extend or truncate without changing signed-ness.
20302030 // 3. Bit-cast to correct signed-ness
2031
20322031 const src_type_is_signed = cIsSignedInteger(src_type) or cIsEnum(src_type);
20332032 const src_int_type = if (cIsInteger(src_type)) src_type else cIntTypeForEnum(src_type);
20342033 const src_int_expr = if (cIsInteger(src_type)) expr else try transEnumToInt(rp.c, expr);
......@@ -2859,7 +2858,7 @@ fn transDefault(
28592858
28602859fn transConstantExpr(rp: RestorePoint, scope: *Scope, expr: *const clang.Expr, used: ResultUsed) TransError!*ast.Node {
28612860 var result: clang.ExprEvalResult = undefined;
2862 if (!expr.EvaluateAsConstantExpr(&result, .EvaluateForCodeGen, rp.c.clang_context))
2861 if (!expr.EvaluateAsConstantExpr(&result, .Normal, rp.c.clang_context))
28632862 return revertAndWarn(rp, error.UnsupportedTranslation, expr.getBeginLoc(), "invalid constant expression", .{});
28642863
28652864 var val_node: ?*ast.Node = null;
......@@ -5881,7 +5880,7 @@ fn parseCPrimaryExprInner(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!*
58815880 return error.ParseError;
58825881 }
58835882
5884 const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{slice, m.slice()});
5883 const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{ slice, m.slice() });
58855884 const identifier = try c.arena.create(ast.Node.OneToken);
58865885 identifier.* = .{
58875886 .base = .{ .tag = .Identifier },