Frama-C-discuss mailing list archives
This page gathers the archives of the old Frama-C-discuss archives, that was hosted by Inria's gforge before its demise at the end of 2020. To search for mails newer than September 2020, please visit the page of the new mailing list on Renater.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- Subject: [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- From: virgile.prevosto at cea.fr (Virgile Prevosto)
- Date: Fri, 28 Oct 2011 17:37:34 +0200
- In-reply-to: <569C6D7D26484241A530B87F45ADE1F87E5E5B@AOFRWMBXRSC004.resources.atosorigin.local>
- References: <569C6D7D26484241A530B87F45ADE1F87E5E5B@AOFRWMBXRSC004.resources.atosorigin.local>
Hello St?phane, On 28/10/2011 17:04, DUPRAT Stephane wrote: > Hello, > > I'm working on a new Frama-C project built by the cmd > "File.create_project_from_visitor" and I lose the ACSL contract if a > make a change to a global function. > > For example, if have a copy visitor like this: > > inherit Visitor.frama_c_copy prj method vglob_aux g = match g with | > GFun (_) -> Cil.ChangeTo [g] > > All functions have lost their contract in the copy project. Is there > a way to keep contracts of the original function ? Perhaps throw the > kernel_functions, but they are not handle by the visitor. > As a rule of thumb, whenever you use SkipChildren or ChangeTo in a visitor, the visit stop there. In particular, since a function contract is considered somehow as a child of the global it belongs to, the contract will not be visited, (and not copied in the new project when you have a copy visitor). By the way, the use of ChangeTo in your code snippet is incorrect: the function (and in particular its statements, the varinfos of formals and globals, etc.) are shared between original and new projects. In fact, ChangeTo g should only be used in a copy visitor if g has been built from scratch by the visitor (that must also add to the action queue the registration of the new contract if needed). Developer's manual suggests to use ChangeDoChildrenPost(g,fun x -> x) instead, to ensure that all the nodes will be visited and copied. Best regards, -- E tutto per oggi, a la prossima volta Virgile
- Follow-Ups:
- [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- From: stephane.duprat at atos.net (DUPRAT Stephane)
- [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- References:
- [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- From: stephane.duprat at atos.net (DUPRAT Stephane)
- [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- Prev by Date: [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- Next by Date: [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- Previous by thread: [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- Next by thread: [Frama-c-discuss] ACSL contracts lost during GFun modification in Ast Copy
- Index(es):