From 739712eacb73f25ed9eee3007bac1dfcf7dcb9a3 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Fri, 11 Mar 2022 13:09:59 +0100 Subject: [PATCH] [kernel] Fix identification of enums in ast diff same issue as with compinfo --- src/kernel_services/ast_queries/ast_diff.ml | 10 +++++----- tests/syntax/ast_diff_1.i | 4 +++- tests/syntax/ast_diff_2.i | 4 +++- tests/syntax/oracle/ast_diff_1.res.oracle | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/kernel_services/ast_queries/ast_diff.ml b/src/kernel_services/ast_queries/ast_diff.ml index be7053cfa7f..e8173fb6c8e 100644 --- a/src/kernel_services/ast_queries/ast_diff.ml +++ b/src/kernel_services/ast_queries/ast_diff.ml @@ -362,12 +362,12 @@ let find_candidate_compinfo ?loc:_loc ci = let find_candidate_enuminfo ?loc:_loc ei = if Globals.Types.mem_type Logic_typing.Enum ei.ename then begin - match Globals.Types.global Logic_typing.Enum ei.ename with - | GEnumTag(ei,_) | GEnumTagDecl(ei,_) -> Some ei - | g -> + match Globals.Types.find_type Logic_typing.Enum ei.ename with + | TEnum(ei,_) -> Some ei + | t -> Kernel.fatal - "Expected enumeration definition instead of %a" - Cil_datatype.Global.pretty g + "Expected enuminfo instead of %a" + Printer.pp_typ t end else None let find_candidate_varinfo ?loc:_loc vi where = diff --git a/tests/syntax/ast_diff_1.i b/tests/syntax/ast_diff_1.i index 80d699482c5..aada6a5b26a 100644 --- a/tests/syntax/ast_diff_1.i +++ b/tests/syntax/ast_diff_1.i @@ -77,4 +77,6 @@ struct s; extern struct s s; -struct s* use_s() { return &s; } +enum e; + +struct s* use_s() { enum e* x; return &s; } diff --git a/tests/syntax/ast_diff_2.i b/tests/syntax/ast_diff_2.i index bd8d7e8f1f8..c0935612c3d 100644 --- a/tests/syntax/ast_diff_2.i +++ b/tests/syntax/ast_diff_2.i @@ -70,4 +70,6 @@ void local_var_use(int w, int q[][w]) { extern struct s s; -struct s* use_s() { return &s; } +enum e; + +struct s* use_s() { enum e* x; return &s; } diff --git a/tests/syntax/oracle/ast_diff_1.res.oracle b/tests/syntax/oracle/ast_diff_1.res.oracle index 1286ff511f9..d0b45c4af63 100644 --- a/tests/syntax/oracle/ast_diff_1.res.oracle +++ b/tests/syntax/oracle/ast_diff_1.res.oracle @@ -9,6 +9,7 @@ [AST diff test] Variable y: => t [AST diff test] Variable s: => s [AST diff test] Variable use_s: => use_s +[AST diff test] Variable x: => x [AST diff test] Variable has_static_local_x: => has_static_local_y [AST diff test] Variable X: => X [AST diff test] Variable Y: N/A -- GitLab