diff --git a/ivette/api/generated/kernel/ast/index.ts b/ivette/api/generated/kernel/ast/index.ts index 36a793feea8921569f688581b3a3f6dedcbe9fd8..319a69f78ed8167bb05221dfa84694d8be113315 100644 --- a/ivette/api/generated/kernel/ast/index.ts +++ b/ivette/api/generated/kernel/ast/index.ts @@ -280,6 +280,8 @@ export interface functionsData { name: string; /** Signature */ signature: string; + /** Is the function the main entry point */ + main: boolean; /** Is the function defined? */ defined: boolean; /** Is the function from the Frama-C stdlib? */ @@ -297,6 +299,7 @@ export const jFunctionsData: Json.Loose<functionsData> = '#functions expected'), name: Json.jFail(Json.jString,'String expected'), signature: Json.jFail(Json.jString,'String expected'), + main: Json.jFail(Json.jBoolean,'Boolean expected'), defined: Json.jFail(Json.jBoolean,'Boolean expected'), stdlib: Json.jFail(Json.jBoolean,'Boolean expected'), builtin: Json.jFail(Json.jBoolean,'Boolean expected'), @@ -311,11 +314,12 @@ export const jFunctionsDataSafe: Json.Safe<functionsData> = export const byFunctionsData: Compare.Order<functionsData> = Compare.byFields <{ key: Json.key<'#functions'>, name: string, signature: string, - defined: boolean, stdlib: boolean, builtin: boolean, + main: boolean, defined: boolean, stdlib: boolean, builtin: boolean, eva_analyzed?: boolean }>({ key: Compare.string, name: Compare.alpha, signature: Compare.string, + main: Compare.boolean, defined: Compare.boolean, stdlib: Compare.boolean, builtin: Compare.boolean, diff --git a/ivette/src/renderer/Globals.tsx b/ivette/src/renderer/Globals.tsx index 24f734a46be5da77e9c4a3595103259ed3a5288e..6c20dab7b6e7df3eacc7910b1f63fd2d73b231ff 100644 --- a/ivette/src/renderer/Globals.tsx +++ b/ivette/src/renderer/Globals.tsx @@ -119,8 +119,7 @@ export default () => { // Items const current: undefined | string = selection?.current?.function; const makeFctItem = (fct: functionsData) => { - const { name, signature } = fct; - const isMain = 0 < signature.indexOf('/* main */'); + const { name, signature, main: isMain } = fct; return ( <Item className={isMain ? 'fct-main' : undefined} diff --git a/src/plugins/server/kernel_ast.ml b/src/plugins/server/kernel_ast.ml index c69abdd308a30cb482e4b0e01f27fbed3fc043f4..cb1c70324132e281a16cb32f20cf01fa9100fcb5 100644 --- a/src/plugins/server/kernel_ast.ml +++ b/src/plugins/server/kernel_ast.ml @@ -393,6 +393,11 @@ struct ~descr:(Md.plain "Signature") ~data:(module Data.Jstring) ~get:signature ; + States.column model + ~name:"main" + ~descr:(Md.plain "Is the function the main entry point") + ~data:(module Data.Jbool) + ~get:Kernel_function.is_entry_point; States.column model ~name:"defined" ~descr:(Md.plain "Is the function defined?")