Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 08e2e5b3 authored by Thierry Martinez's avatar Thierry Martinez
Browse files

Update for ClangML release!

parent 1e2bb567
No related branches found
No related tags found
No related merge requests found
Pipeline #86759 failed
......@@ -14,11 +14,15 @@ let fresh_var_name () =
fresh_var_counter := index + 1;
Printf.sprintf "__tmp_%d" index
let identifier_name name : Clang.Ast.ident_ref =
{ nested_name_specifier = None;
name = IdentifierName name }
let declare_tmp qual_type =
let tmp = fresh_var_name () in
let decl_tmp = Clang.Ast.node ~qual_type (Clang.Ast.Decl [
Clang.Ast.node ~qual_type (Clang.Ast.Var (Clang.Ast.var tmp qual_type))]) in
let tmp_var = Clang.Ast.node ~qual_type (Clang.Ast.DeclRef (Ident tmp)) in
let tmp_var = Clang.Ast.node ~qual_type (Clang.Ast.DeclRef (identifier_name tmp)) in
tmp_var, decl_tmp
let assign_to_tmp ?qual_type expr =
......@@ -87,17 +91,17 @@ let close_node ((stmt, _stmts) as node) =
let rec name_anonymous_fields (decl : Clang.Ast.decl list) =
match decl with
| [] -> []
| { desc = RecordDecl { keyword; name = ""; fields; bases; final }; _} as record ::
| { desc = RecordDecl ({ keyword; name = ""; _ } as record_decl); _} as record ::
({ desc = Field { name; qual_type = { desc =
Elaborated { keyword = keyword';
named_type = { desc = Record (Ident ""); _ } as named_type}; _}
Elaborated ({ keyword = keyword';
named_type = { desc = Record { name = IdentifierName ""; _ }; _ } as named_type; _ } as elaborated); _}
as qual_type; bitwidth; init }; _} as field)
:: tail when keyword = keyword' ->
{ record with
desc = Clang.Ast.RecordDecl { keyword; name = "anon"; fields; bases; final }} ::
desc = Clang.Ast.RecordDecl { record_decl with name = "anon" }} ::
{ field with desc = Field { name; bitwidth; init;
qual_type = { qual_type with desc = Elaborated {
keyword; named_type = { named_type with desc = Record (Ident "anon") }}}}} ::
qual_type = { qual_type with desc = Elaborated { elaborated with
named_type = { named_type with desc = Record (identifier_name "anon") }}}}} ::
name_anonymous_fields tail
| hd :: tl -> hd :: name_anonymous_fields tl
......@@ -173,7 +177,7 @@ let transform = object (self)
Expr { stmt with desc = BinaryOperator {
lhs =
Clang.Ast.node ~qual_type:var_type
(Clang.Ast.DeclRef (Ident var_name));
(Clang.Ast.DeclRef (identifier_name var_name));
kind = Assign; rhs = init }}} in
close_stmts init_stmts [decl; init]
| { desc = Do { body; cond; _ }; _} ->
......@@ -302,7 +306,7 @@ let transform = object (self)
method! visit_Call env callee args =
match callee, args with
| { desc = DeclRef (Ident "assert"); _ }, [cond] ->
| { desc = DeclRef { name = IdentifierName "assert"; _ }; _ }, [cond] ->
let cond, cond_stmts =
self#visit_expr { env with in_condition = true } cond in
Call { callee; args = [cond] }, cond_stmts
......
......@@ -52,6 +52,10 @@
Clang__.Clang__bindings.clang_ext_lambdacapturedefault [@opaque] [@@rewrite] [@@remove]
type clang_ext_predefinedexpr_identkind =
Clang__.Clang__bindings.clang_ext_predefinedexpr_identkind [@opaque] [@@rewrite] [@@remove]
type clang_ext_stringkind =
Clang__.Clang__bindings.clang_ext_stringkind [@opaque] [@@rewrite] [@@remove]
type clang_ext_overloadedoperatorkind =
Clang__.Clang__bindings.clang_ext_overloadedoperatorkind [@opaque] [@@rewrite] [@@remove]
end
module%import Clang__types = struct
type language = language [@opaque] [@@rewrite] [@@remove]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment