#10000=@"/predicate-function-annotation.js;sourcefile" files(#10000,"/predicate-function-annotation.js") #10001=@"/;folder" folders(#10001,"/") containerparent(#10001,#10000) #10002=@"loc,{#10000},0,0,0,0" locations_default(#10002,#10000,0,0,0,0) hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" #20002=* lines(#20002,#20001,"function f(a): boolean %checks {"," ") #20003=@"loc,{#10000},1,1,1,32" locations_default(#20003,#10000,1,1,1,32) hasLocation(#20002,#20003) #20004=* lines(#20004,#20001," return a;"," ") #20005=@"loc,{#10000},2,1,2,13" locations_default(#20005,#10000,2,1,2,13) hasLocation(#20004,#20005) indentation(#10000,2," ",4) #20006=* lines(#20006,#20001,"}"," ") #20007=@"loc,{#10000},3,1,3,1" locations_default(#20007,#10000,3,1,3,1) hasLocation(#20006,#20007) #20008=* lines(#20008,#20001,"function g(): %checks {} {"," ") #20009=@"loc,{#10000},4,1,4,26" locations_default(#20009,#10000,4,1,4,26) hasLocation(#20008,#20009) #20010=* lines(#20010,#20001," return b;"," ") #20011=@"loc,{#10000},5,1,5,13" locations_default(#20011,#10000,5,1,5,13) hasLocation(#20010,#20011) indentation(#10000,5," ",4) #20012=* lines(#20012,#20001,"}"," ") #20013=@"loc,{#10000},6,1,6,1" locations_default(#20013,#10000,6,1,6,1) hasLocation(#20012,#20013) #20014=* lines(#20014,#20001,""," ") #20015=@"loc,{#10000},7,1,7,0" locations_default(#20015,#10000,7,1,7,0) hasLocation(#20014,#20015) #20016=* lines(#20016,#20001,"(c): boolean %checks => c;"," ") #20017=@"loc,{#10000},8,1,8,26" locations_default(#20017,#10000,8,1,8,26) hasLocation(#20016,#20017) #20018=* lines(#20018,#20001,"(d): %checks => d;"," ") #20019=@"loc,{#10000},9,1,9,18" locations_default(#20019,#10000,9,1,9,18) hasLocation(#20018,#20019) numlines(#20001,9,8,0) #20020=* tokeninfo(#20020,7,#20001,0,"function") #20021=@"loc,{#10000},1,1,1,8" locations_default(#20021,#10000,1,1,1,8) hasLocation(#20020,#20021) #20022=* tokeninfo(#20022,6,#20001,1,"f") #20023=@"loc,{#10000},1,10,1,10" locations_default(#20023,#10000,1,10,1,10) hasLocation(#20022,#20023) #20024=* tokeninfo(#20024,8,#20001,2,"(") #20025=@"loc,{#10000},1,11,1,11" locations_default(#20025,#10000,1,11,1,11) hasLocation(#20024,#20025) #20026=* tokeninfo(#20026,6,#20001,3,"a") #20027=@"loc,{#10000},1,12,1,12" locations_default(#20027,#10000,1,12,1,12) hasLocation(#20026,#20027) #20028=* tokeninfo(#20028,8,#20001,4,")") #20029=@"loc,{#10000},1,13,1,13" locations_default(#20029,#10000,1,13,1,13) hasLocation(#20028,#20029) #20030=* tokeninfo(#20030,8,#20001,5,":") #20031=@"loc,{#10000},1,14,1,14" locations_default(#20031,#10000,1,14,1,14) hasLocation(#20030,#20031) #20032=* tokeninfo(#20032,6,#20001,6,"boolean") #20033=@"loc,{#10000},1,16,1,22" locations_default(#20033,#10000,1,16,1,22) hasLocation(#20032,#20033) #20034=* tokeninfo(#20034,8,#20001,7,"%") #20035=@"loc,{#10000},1,24,1,24" locations_default(#20035,#10000,1,24,1,24) hasLocation(#20034,#20035) #20036=* tokeninfo(#20036,6,#20001,8,"checks") #20037=@"loc,{#10000},1,25,1,30" locations_default(#20037,#10000,1,25,1,30) hasLocation(#20036,#20037) #20038=* tokeninfo(#20038,8,#20001,9,"{") #20039=@"loc,{#10000},1,32,1,32" locations_default(#20039,#10000,1,32,1,32) hasLocation(#20038,#20039) #20040=* tokeninfo(#20040,7,#20001,10,"return") #20041=@"loc,{#10000},2,5,2,10" locations_default(#20041,#10000,2,5,2,10) hasLocation(#20040,#20041) #20042=* tokeninfo(#20042,6,#20001,11,"a") #20043=@"loc,{#10000},2,12,2,12" locations_default(#20043,#10000,2,12,2,12) hasLocation(#20042,#20043) #20044=* tokeninfo(#20044,8,#20001,12,";") #20045=@"loc,{#10000},2,13,2,13" locations_default(#20045,#10000,2,13,2,13) hasLocation(#20044,#20045) #20046=* tokeninfo(#20046,8,#20001,13,"}") hasLocation(#20046,#20007) #20047=* tokeninfo(#20047,7,#20001,14,"function") #20048=@"loc,{#10000},4,1,4,8" locations_default(#20048,#10000,4,1,4,8) hasLocation(#20047,#20048) #20049=* tokeninfo(#20049,6,#20001,15,"g") #20050=@"loc,{#10000},4,10,4,10" locations_default(#20050,#10000,4,10,4,10) hasLocation(#20049,#20050) #20051=* tokeninfo(#20051,8,#20001,16,"(") #20052=@"loc,{#10000},4,11,4,11" locations_default(#20052,#10000,4,11,4,11) hasLocation(#20051,#20052) #20053=* tokeninfo(#20053,8,#20001,17,")") #20054=@"loc,{#10000},4,12,4,12" locations_default(#20054,#10000,4,12,4,12) hasLocation(#20053,#20054) #20055=* tokeninfo(#20055,8,#20001,18,":") #20056=@"loc,{#10000},4,13,4,13" locations_default(#20056,#10000,4,13,4,13) hasLocation(#20055,#20056) #20057=* tokeninfo(#20057,8,#20001,19,"%") #20058=@"loc,{#10000},4,15,4,15" locations_default(#20058,#10000,4,15,4,15) hasLocation(#20057,#20058) #20059=* tokeninfo(#20059,6,#20001,20,"checks") #20060=@"loc,{#10000},4,16,4,21" locations_default(#20060,#10000,4,16,4,21) hasLocation(#20059,#20060) #20061=* tokeninfo(#20061,8,#20001,21,"{") #20062=@"loc,{#10000},4,23,4,23" locations_default(#20062,#10000,4,23,4,23) hasLocation(#20061,#20062) #20063=* tokeninfo(#20063,8,#20001,22,"}") #20064=@"loc,{#10000},4,24,4,24" locations_default(#20064,#10000,4,24,4,24) hasLocation(#20063,#20064) #20065=* tokeninfo(#20065,8,#20001,23,"{") #20066=@"loc,{#10000},4,26,4,26" locations_default(#20066,#10000,4,26,4,26) hasLocation(#20065,#20066) #20067=* tokeninfo(#20067,7,#20001,24,"return") #20068=@"loc,{#10000},5,5,5,10" locations_default(#20068,#10000,5,5,5,10) hasLocation(#20067,#20068) #20069=* tokeninfo(#20069,6,#20001,25,"b") #20070=@"loc,{#10000},5,12,5,12" locations_default(#20070,#10000,5,12,5,12) hasLocation(#20069,#20070) #20071=* tokeninfo(#20071,8,#20001,26,";") #20072=@"loc,{#10000},5,13,5,13" locations_default(#20072,#10000,5,13,5,13) hasLocation(#20071,#20072) #20073=* tokeninfo(#20073,8,#20001,27,"}") hasLocation(#20073,#20013) #20074=* tokeninfo(#20074,8,#20001,28,"(") #20075=@"loc,{#10000},8,1,8,1" locations_default(#20075,#10000,8,1,8,1) hasLocation(#20074,#20075) #20076=* tokeninfo(#20076,6,#20001,29,"c") #20077=@"loc,{#10000},8,2,8,2" locations_default(#20077,#10000,8,2,8,2) hasLocation(#20076,#20077) #20078=* tokeninfo(#20078,8,#20001,30,")") #20079=@"loc,{#10000},8,3,8,3" locations_default(#20079,#10000,8,3,8,3) hasLocation(#20078,#20079) #20080=* tokeninfo(#20080,8,#20001,31,":") #20081=@"loc,{#10000},8,4,8,4" locations_default(#20081,#10000,8,4,8,4) hasLocation(#20080,#20081) #20082=* tokeninfo(#20082,6,#20001,32,"boolean") #20083=@"loc,{#10000},8,6,8,12" locations_default(#20083,#10000,8,6,8,12) hasLocation(#20082,#20083) #20084=* tokeninfo(#20084,8,#20001,33,"%") #20085=@"loc,{#10000},8,14,8,14" locations_default(#20085,#10000,8,14,8,14) hasLocation(#20084,#20085) #20086=* tokeninfo(#20086,6,#20001,34,"checks") #20087=@"loc,{#10000},8,15,8,20" locations_default(#20087,#10000,8,15,8,20) hasLocation(#20086,#20087) #20088=* tokeninfo(#20088,8,#20001,35,"=>") #20089=@"loc,{#10000},8,22,8,23" locations_default(#20089,#10000,8,22,8,23) hasLocation(#20088,#20089) #20090=* tokeninfo(#20090,6,#20001,36,"c") #20091=@"loc,{#10000},8,25,8,25" locations_default(#20091,#10000,8,25,8,25) hasLocation(#20090,#20091) #20092=* tokeninfo(#20092,8,#20001,37,";") #20093=@"loc,{#10000},8,26,8,26" locations_default(#20093,#10000,8,26,8,26) hasLocation(#20092,#20093) #20094=* tokeninfo(#20094,8,#20001,38,"(") #20095=@"loc,{#10000},9,1,9,1" locations_default(#20095,#10000,9,1,9,1) hasLocation(#20094,#20095) #20096=* tokeninfo(#20096,6,#20001,39,"d") #20097=@"loc,{#10000},9,2,9,2" locations_default(#20097,#10000,9,2,9,2) hasLocation(#20096,#20097) #20098=* tokeninfo(#20098,8,#20001,40,")") #20099=@"loc,{#10000},9,3,9,3" locations_default(#20099,#10000,9,3,9,3) hasLocation(#20098,#20099) #20100=* tokeninfo(#20100,8,#20001,41,":") #20101=@"loc,{#10000},9,4,9,4" locations_default(#20101,#10000,9,4,9,4) hasLocation(#20100,#20101) #20102=* tokeninfo(#20102,8,#20001,42,"%") #20103=@"loc,{#10000},9,6,9,6" locations_default(#20103,#10000,9,6,9,6) hasLocation(#20102,#20103) #20104=* tokeninfo(#20104,6,#20001,43,"checks") #20105=@"loc,{#10000},9,7,9,12" locations_default(#20105,#10000,9,7,9,12) hasLocation(#20104,#20105) #20106=* tokeninfo(#20106,8,#20001,44,"=>") #20107=@"loc,{#10000},9,14,9,15" locations_default(#20107,#10000,9,14,9,15) hasLocation(#20106,#20107) #20108=* tokeninfo(#20108,6,#20001,45,"d") #20109=@"loc,{#10000},9,17,9,17" locations_default(#20109,#10000,9,17,9,17) hasLocation(#20108,#20109) #20110=* tokeninfo(#20110,8,#20001,46,";") #20111=@"loc,{#10000},9,18,9,18" locations_default(#20111,#10000,9,18,9,18) hasLocation(#20110,#20111) #20112=* tokeninfo(#20112,0,#20001,47,"") #20113=@"loc,{#10000},10,1,10,0" locations_default(#20113,#10000,10,1,10,0) hasLocation(#20112,#20113) toplevels(#20001,0) #20114=@"loc,{#10000},1,1,10,0" locations_default(#20114,#10000,1,1,10,0) hasLocation(#20001,#20114) #20115=@"var;{f};{#20000}" variables(#20115,"f",#20000) #20116=@"var;{g};{#20000}" variables(#20116,"g",#20000) #20117=* stmts(#20117,17,#20001,0,"functio ... rn a;\n}") #20118=@"loc,{#10000},1,1,3,1" locations_default(#20118,#10000,1,1,3,1) hasLocation(#20117,#20118) stmt_containers(#20117,#20001) #20119=* exprs(#20119,78,#20117,-1,"f") hasLocation(#20119,#20023) expr_containers(#20119,#20117) literals("f","f",#20119) decl(#20119,#20115) #20120=* scopes(#20120,1) scopenodes(#20117,#20120) scopenesting(#20120,#20000) #20121=@"var;{a};{#20120}" variables(#20121,"a",#20120) #20122=* exprs(#20122,78,#20117,0,"a") hasLocation(#20122,#20027) expr_containers(#20122,#20117) literals("a","a",#20122) decl(#20122,#20121) #20123=@"var;{arguments};{#20120}" variables(#20123,"arguments",#20120) is_arguments_object(#20123) #20124=* stmts(#20124,1,#20117,-2,"{\n return a;\n}") #20125=@"loc,{#10000},1,32,3,1" locations_default(#20125,#10000,1,32,3,1) hasLocation(#20124,#20125) stmt_containers(#20124,#20117) #20126=* stmts(#20126,9,#20124,0,"return a;") #20127=@"loc,{#10000},2,5,2,13" locations_default(#20127,#10000,2,5,2,13) hasLocation(#20126,#20127) stmt_containers(#20126,#20117) #20128=* exprs(#20128,79,#20126,0,"a") hasLocation(#20128,#20043) enclosing_stmt(#20128,#20126) expr_containers(#20128,#20117) literals("a","a",#20128) bind(#20128,#20121) #20129=* stmts(#20129,17,#20001,1,"functio ... ecks {}") #20130=@"loc,{#10000},4,1,4,24" locations_default(#20130,#10000,4,1,4,24) hasLocation(#20129,#20130) stmt_containers(#20129,#20001) #20131=* exprs(#20131,78,#20129,-1,"g") hasLocation(#20131,#20050) expr_containers(#20131,#20129) literals("g","g",#20131) decl(#20131,#20116) #20132=* scopes(#20132,1) scopenodes(#20129,#20132) scopenesting(#20132,#20000) #20133=@"var;{arguments};{#20132}" variables(#20133,"arguments",#20132) is_arguments_object(#20133) #20134=* stmts(#20134,1,#20129,-2,"{}") #20135=@"loc,{#10000},4,23,4,24" locations_default(#20135,#10000,4,23,4,24) hasLocation(#20134,#20135) stmt_containers(#20134,#20129) #20136=* stmts(#20136,1,#20001,2,"{\n return b;\n}") #20137=@"loc,{#10000},4,26,6,1" locations_default(#20137,#10000,4,26,6,1) hasLocation(#20136,#20137) stmt_containers(#20136,#20001) #20138=* stmts(#20138,9,#20136,0,"return b;") #20139=@"loc,{#10000},5,5,5,13" locations_default(#20139,#10000,5,5,5,13) hasLocation(#20138,#20139) stmt_containers(#20138,#20001) #20140=* exprs(#20140,79,#20138,0,"b") hasLocation(#20140,#20070) enclosing_stmt(#20140,#20138) expr_containers(#20140,#20001) literals("b","b",#20140) #20141=@"var;{b};{#20000}" variables(#20141,"b",#20000) bind(#20140,#20141) #20142=* stmts(#20142,2,#20001,3,"(c): bo ... s => c;") hasLocation(#20142,#20017) stmt_containers(#20142,#20001) #20143=* exprs(#20143,65,#20142,0,"(c): bo ... ks => c") #20144=@"loc,{#10000},8,1,8,25" locations_default(#20144,#10000,8,1,8,25) hasLocation(#20143,#20144) enclosing_stmt(#20143,#20142) expr_containers(#20143,#20001) #20145=* scopes(#20145,1) scopenodes(#20143,#20145) scopenesting(#20145,#20000) #20146=@"var;{c};{#20145}" variables(#20146,"c",#20145) #20147=* exprs(#20147,78,#20143,0,"c") hasLocation(#20147,#20077) expr_containers(#20147,#20143) literals("c","c",#20147) decl(#20147,#20146) #20148=* exprs(#20148,79,#20143,-2,"c") hasLocation(#20148,#20091) expr_containers(#20148,#20143) literals("c","c",#20148) bind(#20148,#20146) #20149=* stmts(#20149,2,#20001,4,"(d): %checks => d;") hasLocation(#20149,#20019) stmt_containers(#20149,#20001) #20150=* exprs(#20150,65,#20149,0,"(d): %checks => d") #20151=@"loc,{#10000},9,1,9,17" locations_default(#20151,#10000,9,1,9,17) hasLocation(#20150,#20151) enclosing_stmt(#20150,#20149) expr_containers(#20150,#20001) #20152=* scopes(#20152,1) scopenodes(#20150,#20152) scopenesting(#20152,#20000) #20153=@"var;{d};{#20152}" variables(#20153,"d",#20152) #20154=* exprs(#20154,78,#20150,0,"d") hasLocation(#20154,#20097) expr_containers(#20154,#20150) literals("d","d",#20154) decl(#20154,#20153) #20155=* exprs(#20155,79,#20150,-2,"d") hasLocation(#20155,#20109) expr_containers(#20155,#20150) literals("d","d",#20155) bind(#20155,#20153) #20156=* entry_cfg_node(#20156,#20001) #20157=@"loc,{#10000},1,1,1,0" locations_default(#20157,#10000,1,1,1,0) hasLocation(#20156,#20157) #20158=* exit_cfg_node(#20158,#20001) hasLocation(#20158,#20113) successor(#20149,#20150) successor(#20150,#20158) #20159=* entry_cfg_node(#20159,#20150) #20160=@"loc,{#10000},9,1,9,0" locations_default(#20160,#10000,9,1,9,0) hasLocation(#20159,#20160) #20161=* exit_cfg_node(#20161,#20150) #20162=@"loc,{#10000},9,18,9,17" locations_default(#20162,#10000,9,18,9,17) hasLocation(#20161,#20162) successor(#20155,#20161) successor(#20154,#20155) successor(#20159,#20154) successor(#20142,#20143) successor(#20143,#20149) #20163=* entry_cfg_node(#20163,#20143) #20164=@"loc,{#10000},8,1,8,0" locations_default(#20164,#10000,8,1,8,0) hasLocation(#20163,#20164) #20165=* exit_cfg_node(#20165,#20143) #20166=@"loc,{#10000},8,26,8,25" locations_default(#20166,#10000,8,26,8,25) hasLocation(#20165,#20166) successor(#20148,#20165) successor(#20147,#20148) successor(#20163,#20147) successor(#20136,#20140) successor(#20140,#20138) successor(#20138,#20158) successor(#20129,#20136) #20167=* entry_cfg_node(#20167,#20129) #20168=@"loc,{#10000},4,1,4,0" locations_default(#20168,#10000,4,1,4,0) hasLocation(#20167,#20168) #20169=* exit_cfg_node(#20169,#20129) #20170=@"loc,{#10000},4,25,4,24" locations_default(#20170,#10000,4,25,4,24) hasLocation(#20169,#20170) successor(#20134,#20169) successor(#20167,#20134) successor(#20117,#20129) #20171=* entry_cfg_node(#20171,#20117) hasLocation(#20171,#20157) #20172=* exit_cfg_node(#20172,#20117) #20173=@"loc,{#10000},3,2,3,1" locations_default(#20173,#10000,3,2,3,1) hasLocation(#20172,#20173) successor(#20124,#20128) successor(#20128,#20126) successor(#20126,#20172) successor(#20122,#20124) successor(#20171,#20122) successor(#20131,#20117) successor(#20119,#20131) successor(#20156,#20119) numlines(#10000,9,8,0) filetype(#10000,"javascript")