From 3d0d4411eb95ab42eb4ec7bcb06fdd30b583d568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Correnson?= <loic.correnson@cea.fr> Date: Wed, 18 Sep 2024 14:42:30 +0000 Subject: [PATCH] [dev] suggested changes --- doc/developer/advance.tex | 2 +- src/kernel_internals/parsing/logic_lexer.mll | 5 ++++- src/kernel_internals/parsing/logic_parser.mly | 6 ++++++ src/kernel_services/ast_queries/ast_diff.ml | 2 ++ src/kernel_services/ast_queries/cil_const.ml | 5 ----- src/kernel_services/ast_queries/logic_typing.mli | 2 +- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/doc/developer/advance.tex b/doc/developer/advance.tex index b2d55d76a2..6474f804b2 100644 --- a/doc/developer/advance.tex +++ b/doc/developer/advance.tex @@ -4139,7 +4139,7 @@ The syntax is similar to the general ACSL \verb+import+ annotation, except that module name is prefixed with the name of the loader extension. For instance: \begin{lstlisting}[style=c] -//@ \import Foo: foo::bar::Jazz ; +//@ import Foo: foo::bar::Jazz ; \end{lstlisting} Here, \verb+Foo:+ specifies the name of the \acsl extension responsible for diff --git a/src/kernel_internals/parsing/logic_lexer.mll b/src/kernel_internals/parsing/logic_lexer.mll index 61e3a74536..23eec9c8a0 100644 --- a/src/kernel_internals/parsing/logic_lexer.mll +++ b/src/kernel_internals/parsing/logic_lexer.mll @@ -114,7 +114,10 @@ "assert", (fun _ -> ASSERT); "assigns", (fun _ -> ASSIGNS); "assumes", (fun _ -> ASSUMES); - "at", (fun _ -> EXT_SPEC_AT); + "at", + (fun _ -> + if !ext_acsl_spec then EXT_SPEC_AT + else IDENTIFIER "at"); "axiom", (fun _ -> AXIOM); "axiomatic", (fun _ -> AXIOMATIC); "behavior", (fun _ -> BEHAVIOR); diff --git a/src/kernel_internals/parsing/logic_parser.mly b/src/kernel_internals/parsing/logic_parser.mly index 83b6fdab5f..ce9c3e2bed 100644 --- a/src/kernel_internals/parsing/logic_parser.mly +++ b/src/kernel_internals/parsing/logic_parser.mly @@ -567,6 +567,12 @@ lexpr_inner: | INTER LPAR lexpr_list RPAR { info $sloc (PLinter $3) } | LBRACE RBRACE { info $sloc (PLset []) } +/* because LONGIDENT can be both a type name or a plain identifier, + we can't have a full lexpr here, as there would be an ambiguity + in { x | a::b * ...: should a::b be considered as a type (hence + we are parsing a comprehension with a binder), or an identifier + (hence, we are still parsing an lexpr). +*/ | LBRACE lexpr_inner RBRACE { info $sloc (PLset [$2]) } | LBRACE lexpr_inner COMMA lexpr_list RBRACE diff --git a/src/kernel_services/ast_queries/ast_diff.ml b/src/kernel_services/ast_queries/ast_diff.ml index 7fe9adc6ec..7a92019e1c 100644 --- a/src/kernel_services/ast_queries/ast_diff.ml +++ b/src/kernel_services/ast_queries/ast_diff.ml @@ -1519,6 +1519,8 @@ let rec gannot_correspondence = | Daxiomatic(_,l,_,_) | Dmodule(_,l,_,_,_) -> List.iter gannot_correspondence l + (* TODO: for modules, we should check the driver if it exists. But like + for lemmas, we don't have an appropriate structure to store the info *) | Dtype (ti,loc) -> ignore (logic_type_correspondence ~loc ti empty_env) | Dlemma _ -> () (* TODO: we currently do not have any appropriate structure for diff --git a/src/kernel_services/ast_queries/cil_const.ml b/src/kernel_services/ast_queries/cil_const.ml index 7bde413189..20033aed2b 100644 --- a/src/kernel_services/ast_queries/cil_const.ml +++ b/src/kernel_services/ast_queries/cil_const.ml @@ -193,8 +193,3 @@ let make_logic_type name = { lt_attr = [] ; } -(* -Local Variables: -compile-command: "make -C ../../.." -End: -*) diff --git a/src/kernel_services/ast_queries/logic_typing.mli b/src/kernel_services/ast_queries/logic_typing.mli index 41a8bbb82b..aa049e08e0 100644 --- a/src/kernel_services/ast_queries/logic_typing.mli +++ b/src/kernel_services/ast_queries/logic_typing.mli @@ -91,7 +91,7 @@ type logic_infos = (** Functions that can be called when type-checking an extension of ACSL. - @before Frama-C+dev The following fields have been removed: + @before Frama-C+dev The following fields were present: {[ remove_logic_function : string -> unit; -- GitLab