diff --git a/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java index 5dee9b9f0996..72dac30c933b 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java @@ -586,14 +586,6 @@ private static List of(List body) { public static List of(Program p) { return of(p.getBody()); } - - public static List of(IFunction fn) { - Node body = fn.getBody(); - if (body instanceof BlockStatement) return of(((BlockStatement) body).getBody()); - // if the body of the function is missing or is an expression, then there are - // no hoisted functions - return Collections.emptyList(); - } } /** @@ -1096,8 +1088,6 @@ private void buildFunctionBody(IFunction nd) { if (nd.hasRest()) paramsAndDefaults.add((Expression) nd.getRest()); Node entry = getEntryNode(nd); - List fns = HoistedFunDecls.of(nd); - hoistedFns.addAll(fns); // if this is the constructor of a class without a superclass, we need to // initialise all fields before running the body of the constructor @@ -1117,7 +1107,7 @@ private void buildFunctionBody(IFunction nd) { if (firstField != null) fst = Collections.singleton(First.of(firstField)); fst = visitSequence( - nd instanceof FunctionDeclaration ? null : nd.getId(), paramsAndDefaults, fns, fst); + nd instanceof FunctionDeclaration ? null : nd.getId(), paramsAndDefaults, fst); writeSuccessors(entry, fst); this.ctxt.pop(); @@ -1255,9 +1245,12 @@ public Void visit(Literal nd, SuccessorInfo i) { @Override public Void visit(BlockStatement nd, SuccessorInfo i) { - if (nd.getBody().isEmpty()) writeSuccessors(nd, i.getAllSuccessors()); - else writeSuccessor(nd, First.of(nd.getBody().get(0))); - visitSequence(nd.getBody(), i.getAllSuccessors()); + // Hoist function declarations in a block statement to the top of the block. + // This reflects non-standard behaviour implemented by most engines. + // See also: ECMAScript "B.3.2 Block-Level Function Declarations Web Legacy Compatibility Semantics". + List hoisted = HoistedFunDecls.of(nd.getBody()); + hoistedFns.addAll(hoisted); + writeSuccessors(nd, visitSequence(hoisted, nd.getBody(), i.getAllSuccessors())); return null; } diff --git a/javascript/extractor/src/com/semmle/js/extractor/Main.java b/javascript/extractor/src/com/semmle/js/extractor/Main.java index 4fbfa1518188..56e4e42dc543 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/Main.java +++ b/javascript/extractor/src/com/semmle/js/extractor/Main.java @@ -42,7 +42,7 @@ public class Main { * A version identifier that should be updated every time the extractor changes in such a way that * it may produce different tuples for the same file under the same {@link ExtractorConfig}. */ - public static final String EXTRACTOR_VERSION = "2025-01-21"; + public static final String EXTRACTOR_VERSION = "2025-02-03"; public static final Pattern NEWLINE = Pattern.compile("\n"); diff --git a/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap b/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap index 4e7d7c4ea30c..097b06b4183f 100644 --- a/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap @@ -163,12 +163,12 @@ hasLocation(#20044,#20028) #20045=* exit_cfg_node(#20045,#20030) hasLocation(#20045,#20028) -successor(#20035,#20036) successor(#20036,#20038) successor(#20040,#20039) successor(#20039,#20037) successor(#20038,#20040) successor(#20037,#20045) +successor(#20035,#20036) successor(#20033,#20035) successor(#20044,#20033) successor(#20029,#20030) diff --git a/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap b/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap index db4c964d45eb..932c91d875c8 100644 --- a/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap @@ -184,12 +184,12 @@ hasLocation(#20050,#20034) #20051=* exit_cfg_node(#20051,#20036) hasLocation(#20051,#20034) -successor(#20041,#20042) successor(#20042,#20044) successor(#20046,#20045) successor(#20045,#20043) successor(#20044,#20046) successor(#20043,#20051) +successor(#20041,#20042) successor(#20039,#20041) successor(#20050,#20039) successor(#20035,#20036) diff --git a/javascript/extractor/tests/cfg/output/trap/fields.js.trap b/javascript/extractor/tests/cfg/output/trap/fields.js.trap index a1892dea8411..896fdccf2cd1 100644 --- a/javascript/extractor/tests/cfg/output/trap/fields.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/fields.js.trap @@ -671,7 +671,6 @@ exit_cfg_node(#20215,#20188) #20216=@"loc,{#10000},16,4,16,3" locations_default(#20216,#10000,16,4,16,3) hasLocation(#20215,#20216) -successor(#20192,#20194) successor(#20203,#20205) successor(#20205,#20215) successor(#20198,#20202) @@ -680,6 +679,7 @@ successor(#20207,#20203) successor(#20200,#20209) successor(#20194,#20196) successor(#20196,#20198) +successor(#20192,#20194) successor(#20213,#20192) successor(#20187,#20188) successor(#20185,#20180) @@ -729,9 +729,9 @@ exit_cfg_node(#20227,#20146) #20228=@"loc,{#10000},4,4,4,3" locations_default(#20228,#10000,4,4,4,3) hasLocation(#20227,#20228) -successor(#20150,#20152) successor(#20152,#20154) successor(#20154,#20227) +successor(#20150,#20152) successor(#20225,#20158) successor(#20145,#20146) successor(#20143,#20164) diff --git a/javascript/extractor/tests/cfg/output/trap/tst.js.trap b/javascript/extractor/tests/cfg/output/trap/tst.js.trap index 7f7fc1ea383e..1cb55a0238aa 100644 --- a/javascript/extractor/tests/cfg/output/trap/tst.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/tst.js.trap @@ -1425,30 +1425,30 @@ successor(#20455,#20457) successor(#20457,#20461) successor(#20432,#20434) successor(#20434,#20436) -successor(#20436,#20438) successor(#20438,#20442) successor(#20442,#20440) successor(#20440,#20443) +successor(#20436,#20438) successor(#20414,#20416) -successor(#20416,#20420) successor(#20420,#20418) successor(#20418,#20422) successor(#20418,#20432) successor(#20424,#20418) successor(#20422,#20424) +successor(#20416,#20420) successor(#20425,#20429) successor(#20430,#20432) successor(#20429,#20430) successor(#20392,#20394) successor(#20394,#20412) successor(#20396,#20400) -successor(#20401,#20403) successor(#20403,#20409) successor(#20411,#20407) successor(#20409,#20411) successor(#20407,#20412) successor(#20407,#20405) successor(#20405,#20412) +successor(#20401,#20403) successor(#20400,#20401) successor(#20412,#20414) successor(#20371,#20392) @@ -1462,7 +1462,6 @@ exit_cfg_node(#20468,#20371) #20469=@"loc,{#10000},18,2,18,1" locations_default(#20469,#10000,18,2,18,1) hasLocation(#20468,#20469) -successor(#20379,#20383) successor(#20383,#20381) successor(#20381,#20384) successor(#20381,#20468) @@ -1481,6 +1480,7 @@ successor(#20391,#20381) successor(#20384,#20387) successor(#20387,#20386) successor(#20386,#20388) +successor(#20379,#20383) successor(#20377,#20379) successor(#20466,#20377) successor(#20365,#20367) @@ -1504,7 +1504,6 @@ exit_cfg_node(#20475,#20322) #20476=@"loc,{#10000},10,2,10,1" locations_default(#20476,#10000,10,2,10,1) hasLocation(#20475,#20476) -successor(#20328,#20330) successor(#20356,#20358) successor(#20358,#20359) successor(#20359,#20361) @@ -1539,6 +1538,7 @@ successor(#20330,#20334) successor(#20335,#20332) successor(#20334,#20335) successor(#20332,#20336) +successor(#20328,#20330) successor(#20474,#20328) successor(#20373,#20322) successor(#20324,#20373) diff --git a/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap index 7f8c2257eeeb..9e5cd43ed625 100644 --- a/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap @@ -235,7 +235,6 @@ hasLocation(#20074,#20072) #20075=* exit_cfg_node(#20075,#20051) hasLocation(#20075,#20048) -successor(#20058,#20060) successor(#20070,#20068) successor(#20068,#20075) successor(#20060,#20067) @@ -243,6 +242,7 @@ successor(#20064,#20066) successor(#20066,#20062) successor(#20067,#20064) successor(#20062,#20070) +successor(#20058,#20060) successor(#20056,#20058) successor(#20074,#20056) successor(#20052,#20051) diff --git a/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap b/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap index 44fe9bba129b..1092dc9c31f5 100644 --- a/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap @@ -509,11 +509,11 @@ exit_cfg_node(#20163,#20143) #20164=@"loc,{#10000},3,40,3,39" locations_default(#20164,#10000,3,40,3,39) hasLocation(#20163,#20164) -successor(#20146,#20148) successor(#20148,#20152) successor(#20154,#20150) successor(#20152,#20154) successor(#20150,#20163) +successor(#20146,#20148) successor(#20161,#20146) successor(#20141,#20143) successor(#20139,#20160) diff --git a/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap b/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap index 5c5c137c72dc..278bb0c1d8a0 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap @@ -434,7 +434,6 @@ exit_cfg_node(#20134,#20101) #20135=@"loc,{#10000},7,4,7,3" locations_default(#20135,#10000,7,4,7,3) hasLocation(#20134,#20135) -successor(#20107,#20109) successor(#20109,#20115) successor(#20119,#20117) successor(#20117,#20111) @@ -442,6 +441,7 @@ successor(#20116,#20113) successor(#20115,#20116) successor(#20113,#20119) successor(#20111,#20134) +successor(#20107,#20109) successor(#20105,#20107) successor(#20132,#20105) successor(#20100,#20101) @@ -457,11 +457,11 @@ exit_cfg_node(#20138,#20086) #20139=@"loc,{#10000},4,4,4,3" locations_default(#20139,#10000,4,4,4,3) hasLocation(#20138,#20139) -successor(#20090,#20096) successor(#20097,#20094) successor(#20096,#20097) successor(#20094,#20092) successor(#20092,#20138) +successor(#20090,#20096) successor(#20136,#20090) successor(#20085,#20086) successor(#20083,#20100) diff --git a/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap b/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap index 6ee7194f2b32..c7d5fb315023 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap @@ -246,13 +246,13 @@ exit_cfg_node(#20076,#20054) #20077=@"loc,{#10000},4,4,4,3" locations_default(#20077,#10000,4,4,4,3) hasLocation(#20076,#20077) -successor(#20060,#20062) successor(#20062,#20068) successor(#20070,#20064) successor(#20069,#20066) successor(#20068,#20069) successor(#20066,#20070) successor(#20064,#20076) +successor(#20060,#20062) successor(#20058,#20060) successor(#20074,#20058) successor(#20053,#20054) diff --git a/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap b/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap index 8c15a5809550..ed10bdf317f9 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap @@ -159,12 +159,12 @@ hasLocation(#20042,#20026) #20043=* exit_cfg_node(#20043,#20028) hasLocation(#20043,#20026) -successor(#20033,#20034) successor(#20034,#20036) successor(#20038,#20037) successor(#20037,#20035) successor(#20036,#20038) successor(#20035,#20043) +successor(#20033,#20034) successor(#20031,#20033) successor(#20042,#20031) successor(#20027,#20028) diff --git a/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap b/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap index faa9e6abbec7..f61c4206ea33 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap @@ -261,12 +261,12 @@ hasLocation(#20075,#20059) #20076=* exit_cfg_node(#20076,#20061) hasLocation(#20076,#20059) -successor(#20066,#20067) successor(#20067,#20069) successor(#20071,#20070) successor(#20070,#20068) successor(#20069,#20071) successor(#20068,#20076) +successor(#20066,#20067) successor(#20064,#20066) successor(#20075,#20064) successor(#20060,#20061) diff --git a/javascript/extractor/tests/es2015/output/trap/class_method.js.trap b/javascript/extractor/tests/es2015/output/trap/class_method.js.trap index d0ccaee95080..18aec740ece8 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_method.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_method.js.trap @@ -253,11 +253,11 @@ exit_cfg_node(#20076,#20050) #20077=@"loc,{#10000},4,4,4,3" locations_default(#20077,#10000,4,4,4,3) hasLocation(#20076,#20077) -successor(#20054,#20060) successor(#20061,#20058) successor(#20060,#20061) successor(#20058,#20056) successor(#20056,#20076) +successor(#20054,#20060) successor(#20074,#20054) successor(#20049,#20050) successor(#20047,#20064) diff --git a/javascript/extractor/tests/es2015/output/trap/class_static.js.trap b/javascript/extractor/tests/es2015/output/trap/class_static.js.trap index 5c0d8f20d873..0be88f28c4d4 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_static.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_static.js.trap @@ -243,9 +243,9 @@ exit_cfg_node(#20073,#20048) #20074=@"loc,{#10000},4,4,4,3" locations_default(#20074,#10000,4,4,4,3) hasLocation(#20073,#20074) -successor(#20052,#20056) successor(#20056,#20054) successor(#20054,#20073) +successor(#20052,#20056) successor(#20071,#20052) successor(#20047,#20048) successor(#20045,#20061) diff --git a/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap b/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap index 6106dff7bdc4..9b306a40f43c 100644 --- a/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap @@ -171,11 +171,11 @@ hasLocation(#20054,#20052) #20055=* exit_cfg_node(#20055,#20037) hasLocation(#20055,#20034) -successor(#20041,#20043) successor(#20043,#20049) successor(#20049,#20047) successor(#20047,#20045) successor(#20045,#20055) +successor(#20041,#20043) successor(#20054,#20041) successor(#20038,#20037) successor(#20051,#20038) diff --git a/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap b/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap index 6f4bc769f198..4677b4ce45b9 100644 --- a/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap @@ -822,7 +822,6 @@ hasLocation(#20266,#20267) #20268=* exit_cfg_node(#20268,#20230) hasLocation(#20268,#20173) -successor(#20247,#20249) successor(#20262,#20260) successor(#20260,#20268) successor(#20249,#20259) @@ -832,6 +831,7 @@ successor(#20257,#20258) successor(#20255,#20251) successor(#20259,#20253) successor(#20251,#20262) +successor(#20247,#20249) successor(#20237,#20240) successor(#20245,#20242) successor(#20244,#20245) @@ -849,21 +849,20 @@ exit_cfg_node(#20270,#20177) #20271=@"loc,{#10000},8,2,8,1" locations_default(#20271,#10000,8,2,8,1) hasLocation(#20270,#20271) -successor(#20190,#20192) successor(#20203,#20205) -successor(#20205,#20209) successor(#20209,#20211) successor(#20212,#20207) successor(#20211,#20212) successor(#20207,#20213) +successor(#20205,#20209) successor(#20213,#20217) -successor(#20218,#20220) successor(#20220,#20226) successor(#20229,#20222) successor(#20228,#20224) successor(#20226,#20228) successor(#20224,#20229) successor(#20222,#20270) +successor(#20218,#20220) successor(#20217,#20218) successor(#20192,#20202) successor(#20196,#20198) @@ -872,6 +871,7 @@ successor(#20201,#20194) successor(#20198,#20199) successor(#20202,#20196) successor(#20194,#20203) +successor(#20190,#20192) successor(#20185,#20187) successor(#20188,#20190) successor(#20187,#20188) diff --git a/javascript/extractor/tests/es2015/output/trap/forof.js.trap b/javascript/extractor/tests/es2015/output/trap/forof.js.trap index 12ea8980cabf..f9e606176143 100644 --- a/javascript/extractor/tests/es2015/output/trap/forof.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/forof.js.trap @@ -436,7 +436,6 @@ exit_cfg_node(#20140,#20118) #20141=@"loc,{#10000},7,2,7,1" locations_default(#20141,#10000,7,2,7,1) hasLocation(#20140,#20141) -successor(#20124,#20128) successor(#20128,#20126) successor(#20126,#20130) successor(#20126,#20140) @@ -444,6 +443,7 @@ successor(#20134,#20126) successor(#20130,#20133) successor(#20133,#20132) successor(#20132,#20134) +successor(#20124,#20128) successor(#20138,#20124) successor(#20094,#20096) successor(#20098,#20092) @@ -451,13 +451,13 @@ successor(#20097,#20098) successor(#20096,#20097) successor(#20092,#20101) successor(#20092,#20118) -successor(#20105,#20109) successor(#20109,#20113) successor(#20117,#20114) successor(#20116,#20117) successor(#20114,#20111) successor(#20113,#20116) successor(#20111,#20092) +successor(#20105,#20109) successor(#20101,#20104) successor(#20104,#20103) successor(#20103,#20105) diff --git a/javascript/extractor/tests/es2015/output/trap/let.js.trap b/javascript/extractor/tests/es2015/output/trap/let.js.trap index d02c8e0bd8de..3fbdfba7303b 100644 --- a/javascript/extractor/tests/es2015/output/trap/let.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/let.js.trap @@ -673,8 +673,6 @@ hasLocation(#20210,#20211) #20212=* exit_cfg_node(#20212,#20001) hasLocation(#20212,#20135) -successor(#20137,#20140) -successor(#20146,#20150) successor(#20195,#20199) successor(#20200,#20197) successor(#20199,#20200) @@ -705,7 +703,6 @@ hasLocation(#20214,#20161) successor(#20214,#20195) successor(#20160,#20213) successor(#20160,#20214) -successor(#20173,#20177) successor(#20183,#20189) successor(#20192,#20185) successor(#20191,#20187) @@ -716,14 +713,17 @@ successor(#20177,#20181) successor(#20182,#20179) successor(#20181,#20182) successor(#20179,#20183) +successor(#20173,#20177) successor(#20150,#20154) successor(#20155,#20152) successor(#20154,#20155) successor(#20152,#20156) +successor(#20146,#20150) successor(#20140,#20144) successor(#20145,#20142) successor(#20144,#20145) successor(#20142,#20146) +successor(#20137,#20140) successor(#20210,#20137) numlines(#10000,12,12,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap b/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap index 8542482671d1..7de82196cf64 100644 --- a/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap @@ -352,13 +352,13 @@ hasLocation(#20107,#20033) successor(#20107,#20105) successor(#20080,#20106) successor(#20080,#20107) -successor(#20083,#20089) successor(#20097,#20101) successor(#20102,#20099) successor(#20101,#20102) successor(#20099,#20105) successor(#20089,#20094) successor(#20094,#20097) +successor(#20083,#20089) successor(#20071,#20078) successor(#20075,#20071) successor(#20103,#20075) diff --git a/javascript/extractor/tests/es2015/output/trap/new_target.js.trap b/javascript/extractor/tests/es2015/output/trap/new_target.js.trap index 4635fe2e09c2..f517fb8e8988 100644 --- a/javascript/extractor/tests/es2015/output/trap/new_target.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/new_target.js.trap @@ -167,11 +167,11 @@ hasLocation(#20054,#20052) #20055=* exit_cfg_node(#20055,#20037) hasLocation(#20055,#20034) -successor(#20041,#20049) successor(#20049,#20047) successor(#20047,#20045) successor(#20045,#20043) successor(#20043,#20055) +successor(#20041,#20049) successor(#20054,#20041) successor(#20038,#20037) successor(#20051,#20038) diff --git a/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap b/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap index 23711b8d6e39..7cc4e9be2216 100644 --- a/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap @@ -189,13 +189,13 @@ hasLocation(#20058,#20056) #20059=* exit_cfg_node(#20059,#20039) hasLocation(#20059,#20036) -successor(#20043,#20045) successor(#20048,#20052) successor(#20054,#20050) successor(#20052,#20054) successor(#20050,#20059) successor(#20045,#20047) successor(#20047,#20048) +successor(#20043,#20045) successor(#20058,#20043) successor(#20040,#20039) successor(#20055,#20040) diff --git a/javascript/extractor/tests/es2015/output/trap/properties.js.trap b/javascript/extractor/tests/es2015/output/trap/properties.js.trap index b59d331f28e8..98746bb399de 100644 --- a/javascript/extractor/tests/es2015/output/trap/properties.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/properties.js.trap @@ -403,9 +403,9 @@ exit_cfg_node(#20126,#20112) #20127=@"loc,{#10000},5,27,5,26" locations_default(#20127,#10000,5,27,5,26) hasLocation(#20126,#20127) -successor(#20116,#20120) successor(#20120,#20118) successor(#20118,#20126) +successor(#20116,#20120) successor(#20124,#20116) successor(#20111,#20112) successor(#20109,#20088) diff --git a/javascript/extractor/tests/es2015/output/trap/super_call.js.trap b/javascript/extractor/tests/es2015/output/trap/super_call.js.trap index e92324e4b756..dfcf41920444 100644 --- a/javascript/extractor/tests/es2015/output/trap/super_call.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/super_call.js.trap @@ -332,12 +332,12 @@ hasLocation(#20098,#20082) #20099=* exit_cfg_node(#20099,#20084) hasLocation(#20099,#20082) -successor(#20089,#20090) successor(#20090,#20092) successor(#20094,#20093) successor(#20093,#20091) successor(#20092,#20094) successor(#20091,#20099) +successor(#20089,#20090) successor(#20087,#20089) successor(#20098,#20087) successor(#20083,#20084) @@ -353,7 +353,6 @@ exit_cfg_node(#20102,#20064) #20103=@"loc,{#10000},4,4,4,3" locations_default(#20103,#10000,4,4,4,3) hasLocation(#20102,#20103) -successor(#20068,#20078) successor(#20080,#20072) successor(#20079,#20076) successor(#20078,#20079) @@ -361,6 +360,7 @@ successor(#20076,#20074) successor(#20074,#20080) successor(#20072,#20070) successor(#20070,#20102) +successor(#20068,#20078) successor(#20100,#20068) successor(#20063,#20064) successor(#20061,#20083) diff --git a/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap b/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap index e96ad048d604..f5d8013e555b 100644 --- a/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap @@ -233,11 +233,11 @@ exit_cfg_node(#20073,#20056) #20074=@"loc,{#10000},4,4,4,3" locations_default(#20074,#10000,4,4,4,3) hasLocation(#20073,#20074) -successor(#20060,#20062) successor(#20062,#20066) successor(#20067,#20064) successor(#20066,#20067) successor(#20064,#20073) +successor(#20060,#20062) successor(#20071,#20060) successor(#20055,#20056) successor(#20053,#20048) diff --git a/javascript/extractor/tests/es2015/output/trap/templates.js.trap b/javascript/extractor/tests/es2015/output/trap/templates.js.trap index 0ec4736720a7..01688946f3fb 100644 --- a/javascript/extractor/tests/es2015/output/trap/templates.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/templates.js.trap @@ -729,7 +729,6 @@ exit_cfg_node(#20221,#20157) #20222=@"loc,{#10000},3,2,3,1" locations_default(#20222,#10000,3,2,3,1) hasLocation(#20221,#20222) -successor(#20166,#20172) successor(#20179,#20173) successor(#20178,#20175) successor(#20177,#20178) @@ -738,6 +737,7 @@ successor(#20173,#20170) successor(#20172,#20177) successor(#20170,#20168) successor(#20168,#20221) +successor(#20166,#20172) successor(#20164,#20166) successor(#20162,#20164) successor(#20220,#20162) diff --git a/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap b/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap index 7599d6eb87e4..13db0f6a6fc1 100644 --- a/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap @@ -138,9 +138,9 @@ hasLocation(#20044,#20042) #20045=* exit_cfg_node(#20045,#20031) hasLocation(#20045,#20028) -successor(#20035,#20037) successor(#20037,#20039) successor(#20039,#20045) +successor(#20035,#20037) successor(#20044,#20035) successor(#20032,#20031) successor(#20041,#20032) diff --git a/javascript/extractor/tests/es2015/output/trap/yield.js.trap b/javascript/extractor/tests/es2015/output/trap/yield.js.trap index 6ebac9325d22..73886a34b3f2 100644 --- a/javascript/extractor/tests/es2015/output/trap/yield.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/yield.js.trap @@ -287,7 +287,6 @@ hasLocation(#20090,#20088) #20091=* exit_cfg_node(#20091,#20061) hasLocation(#20091,#20058) -successor(#20066,#20068) successor(#20074,#20078) successor(#20080,#20086) successor(#20086,#20084) @@ -309,6 +308,7 @@ successor(#20068,#20072) successor(#20073,#20070) successor(#20072,#20073) successor(#20070,#20074) +successor(#20066,#20068) successor(#20090,#20066) successor(#20062,#20061) successor(#20087,#20062) diff --git a/javascript/extractor/tests/es2015/output/trap/yield2.js.trap b/javascript/extractor/tests/es2015/output/trap/yield2.js.trap index 70a3c2464f1f..2bc654a7ee95 100644 --- a/javascript/extractor/tests/es2015/output/trap/yield2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/yield2.js.trap @@ -137,9 +137,9 @@ exit_cfg_node(#20043,#20029) #20044=@"loc,{#10000},3,2,3,1" locations_default(#20044,#10000,3,2,3,1) hasLocation(#20043,#20044) -successor(#20034,#20036) successor(#20036,#20038) successor(#20038,#20043) +successor(#20034,#20036) successor(#20042,#20034) successor(#20031,#20029) successor(#20039,#20031) diff --git a/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap b/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap index a1e1b27cd25b..0ec333d2cf7c 100644 --- a/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap +++ b/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap @@ -148,9 +148,9 @@ hasLocation(#20046,#20044) #20047=* exit_cfg_node(#20047,#20029) hasLocation(#20047,#20027) -successor(#20036,#20038) successor(#20038,#20040) successor(#20040,#20047) +successor(#20036,#20038) successor(#20033,#20036) successor(#20035,#20033) successor(#20046,#20035) diff --git a/javascript/extractor/tests/es2017/output/trap/async-await.js.trap b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap index 6330dce79400..28713055c6e4 100644 --- a/javascript/extractor/tests/es2017/output/trap/async-await.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap @@ -333,18 +333,18 @@ exit_cfg_node(#20107,#20073) #20108=@"loc,{#10000},7,2,7,1" locations_default(#20108,#10000,7,2,7,1) hasLocation(#20107,#20108) -successor(#20080,#20082) successor(#20082,#20084) -successor(#20084,#20086) successor(#20086,#20090) successor(#20090,#20088) successor(#20088,#20091) successor(#20088,#20107) +successor(#20084,#20086) successor(#20091,#20095) -successor(#20096,#20100) successor(#20100,#20098) successor(#20098,#20107) +successor(#20096,#20100) successor(#20095,#20096) +successor(#20080,#20082) successor(#20078,#20080) successor(#20105,#20078) successor(#20075,#20071) diff --git a/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap index 058ac988face..172c44374459 100644 --- a/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap @@ -303,7 +303,6 @@ exit_cfg_node(#20099,#20076) #20100=@"loc,{#10000},6,2,6,1" locations_default(#20100,#10000,6,2,6,1) hasLocation(#20099,#20100) -successor(#20082,#20088) successor(#20088,#20086) successor(#20086,#20084) successor(#20084,#20089) @@ -312,6 +311,7 @@ successor(#20093,#20084) successor(#20089,#20092) successor(#20092,#20091) successor(#20091,#20093) +successor(#20082,#20088) successor(#20097,#20082) successor(#20069,#20076) #20101=* diff --git a/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap b/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap index aa264fa302a9..28beb8736a27 100644 --- a/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap @@ -253,18 +253,18 @@ hasLocation(#20085,#20086) exit_cfg_node(#20087,#20001) hasLocation(#20087,#20054) successor(#20056,#20058) -successor(#20058,#20060) successor(#20060,#20062) successor(#20062,#20087) successor(#20064,#20067) successor(#20067,#20087) +successor(#20058,#20060) successor(#20069,#20072) -successor(#20072,#20074) successor(#20074,#20076) successor(#20076,#20083) successor(#20078,#20081) successor(#20081,#20083) successor(#20083,#20087) +successor(#20072,#20074) successor(#20085,#20056) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/fields.js.trap b/javascript/extractor/tests/esnext/output/trap/fields.js.trap index f73fd5fa6bad..b317e50f2686 100644 --- a/javascript/extractor/tests/esnext/output/trap/fields.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/fields.js.trap @@ -499,13 +499,13 @@ hasLocation(#20147,#20116) #20148=* exit_cfg_node(#20148,#20109) hasLocation(#20148,#20116) -successor(#20122,#20123) successor(#20123,#20125) successor(#20127,#20126) successor(#20126,#20124) successor(#20125,#20127) successor(#20107,#20148) successor(#20124,#20110) +successor(#20122,#20123) successor(#20120,#20122) successor(#20147,#20120) successor(#20117,#20109) diff --git a/javascript/extractor/tests/esnext/output/trap/for-await.js.trap b/javascript/extractor/tests/esnext/output/trap/for-await.js.trap index 6757b189ce92..5af93db3494c 100644 --- a/javascript/extractor/tests/esnext/output/trap/for-await.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/for-await.js.trap @@ -416,10 +416,10 @@ hasLocation(#20134,#20089) successor(#20118,#20116) successor(#20116,#20121) successor(#20116,#20134) -successor(#20125,#20127) successor(#20127,#20131) successor(#20131,#20129) successor(#20129,#20116) +successor(#20125,#20127) successor(#20121,#20124) successor(#20124,#20123) successor(#20123,#20125) @@ -432,17 +432,17 @@ exit_cfg_node(#20136,#20092) #20137=@"loc,{#10000},5,2,5,1" locations_default(#20137,#10000,5,2,5,1) hasLocation(#20136,#20137) -successor(#20097,#20101) successor(#20101,#20099) successor(#20099,#20105) successor(#20099,#20136) -successor(#20109,#20111) successor(#20111,#20115) successor(#20115,#20113) successor(#20113,#20099) +successor(#20109,#20111) successor(#20105,#20108) successor(#20108,#20107) successor(#20107,#20109) +successor(#20097,#20101) successor(#20135,#20097) successor(#20094,#20092) successor(#20132,#20094) diff --git a/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap b/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap index 1ae6f5313625..70fe3585215e 100644 --- a/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap @@ -1575,12 +1575,12 @@ successor(#20492,#20481) successor(#20471,#20491) successor(#20471,#20492) successor(#20473,#20481) -successor(#20476,#20478) successor(#20478,#20480) successor(#20480,#20488) -successor(#20481,#20483) +successor(#20476,#20478) successor(#20483,#20485) successor(#20485,#20488) +successor(#20481,#20483) successor(#20445,#20451) successor(#20452,#20449) successor(#20451,#20452) @@ -1596,12 +1596,12 @@ hasLocation(#20494,#20450) successor(#20494,#20458) successor(#20447,#20493) successor(#20447,#20494) -successor(#20453,#20455) successor(#20455,#20457) successor(#20457,#20463) -successor(#20458,#20460) +successor(#20453,#20455) successor(#20460,#20462) successor(#20462,#20463) +successor(#20458,#20460) successor(#20429,#20433) successor(#20434,#20431) successor(#20433,#20434) @@ -1616,12 +1616,12 @@ successor(#20496,#20440) successor(#20431,#20495) successor(#20431,#20496) successor(#20433,#20440) -successor(#20435,#20437) successor(#20437,#20439) successor(#20439,#20445) -successor(#20440,#20442) +successor(#20435,#20437) successor(#20442,#20444) successor(#20444,#20445) +successor(#20440,#20442) successor(#20404,#20415) successor(#20428,#20405) successor(#20427,#20409) diff --git a/javascript/extractor/tests/esnext/output/trap/yield-import.js.trap b/javascript/extractor/tests/esnext/output/trap/yield-import.js.trap index 4f2b64850424..8a2a95ffc208 100644 --- a/javascript/extractor/tests/esnext/output/trap/yield-import.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/yield-import.js.trap @@ -171,11 +171,11 @@ exit_cfg_node(#20054,#20035) #20055=@"loc,{#10000},3,2,3,1" locations_default(#20055,#10000,3,2,3,1) hasLocation(#20054,#20055) -successor(#20040,#20042) successor(#20042,#20047) successor(#20047,#20045) successor(#20045,#20044) successor(#20044,#20054) +successor(#20040,#20042) successor(#20053,#20040) successor(#20037,#20035) successor(#20050,#20037) diff --git a/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap b/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap index 0d12524a1683..eeeaf349ea49 100644 --- a/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap +++ b/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap @@ -666,12 +666,12 @@ exit_cfg_node(#20223,#20184) #20224=@"loc,{#10000},5,2,5,1" locations_default(#20224,#10000,5,2,5,1) hasLocation(#20223,#20224) -successor(#20188,#20190) successor(#20190,#20196) successor(#20198,#20194) successor(#20196,#20198) successor(#20194,#20192) successor(#20192,#20223) +successor(#20188,#20190) successor(#20221,#20188) successor(#20183,#20184) successor(#20181,#20200) diff --git a/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap b/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap index 9b4ae6666b53..b2681d328ff0 100644 --- a/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap +++ b/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap @@ -247,9 +247,9 @@ exit_cfg_node(#20079,#20062) #20080=@"loc,{#10000},4,4,4,3" locations_default(#20080,#10000,4,4,4,3) hasLocation(#20079,#20080) -successor(#20069,#20073) successor(#20073,#20071) successor(#20071,#20079) +successor(#20069,#20073) successor(#20066,#20069) successor(#20077,#20066) successor(#20061,#20062) diff --git a/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap b/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap index ab1e66273cd2..7fc6015201a9 100644 --- a/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap +++ b/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap @@ -226,11 +226,11 @@ exit_cfg_node(#20075,#20055) #20076=@"loc,{#10000},3,2,3,1" locations_default(#20076,#10000,3,2,3,1) hasLocation(#20075,#20076) -successor(#20063,#20065) successor(#20065,#20069) successor(#20070,#20067) successor(#20069,#20070) successor(#20067,#20075) +successor(#20063,#20065) successor(#20060,#20063) successor(#20074,#20060) successor(#20057,#20055) diff --git a/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap b/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap index 57e41fef6612..b43afc81579c 100644 --- a/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap +++ b/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap @@ -498,9 +498,9 @@ hasLocation(#20165,#20166) successor(#20148,#20165) successor(#20147,#20148) successor(#20163,#20147) -successor(#20136,#20140) successor(#20140,#20138) successor(#20138,#20158) +successor(#20136,#20140) successor(#20129,#20136) #20167=* entry_cfg_node(#20167,#20129) @@ -523,9 +523,9 @@ 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(#20124,#20128) successor(#20122,#20124) successor(#20171,#20122) successor(#20131,#20117) diff --git a/javascript/extractor/tests/flow/output/trap/tst.js.trap b/javascript/extractor/tests/flow/output/trap/tst.js.trap index dac8b56dea0b..05f0c5ce687b 100644 --- a/javascript/extractor/tests/flow/output/trap/tst.js.trap +++ b/javascript/extractor/tests/flow/output/trap/tst.js.trap @@ -684,12 +684,12 @@ exit_cfg_node(#20237,#20216) #20238=@"loc,{#10000},15,2,15,1" locations_default(#20238,#10000,15,2,15,1) hasLocation(#20237,#20238) -successor(#20221,#20223) successor(#20223,#20225) successor(#20225,#20227) successor(#20227,#20229) successor(#20229,#20231) successor(#20231,#20237) +successor(#20221,#20223) successor(#20235,#20221) successor(#20200,#20197) successor(#20199,#20210) diff --git a/javascript/extractor/tests/generatedcode/output/trap/tst.js.trap b/javascript/extractor/tests/generatedcode/output/trap/tst.js.trap index b9f05be663c0..cf70d72dc5f0 100644 --- a/javascript/extractor/tests/generatedcode/output/trap/tst.js.trap +++ b/javascript/extractor/tests/generatedcode/output/trap/tst.js.trap @@ -634,12 +634,10 @@ hasLocation(#20206,#20187) successor(#20206,#20196) successor(#20186,#20205) successor(#20186,#20206) -successor(#20190,#20192) -successor(#20192,#20194) successor(#20194,#20195) successor(#20195,#20196) -successor(#20175,#20177) -successor(#20177,#20179) +successor(#20192,#20194) +successor(#20190,#20192) successor(#20179,#20181) #20207=* guard_node(#20207,1,#20181) @@ -652,10 +650,12 @@ successor(#20208,#20184) successor(#20181,#20207) successor(#20181,#20208) successor(#20182,#20184) -successor(#20168,#20170) -successor(#20170,#20172) +successor(#20177,#20179) +successor(#20175,#20177) successor(#20172,#20173) successor(#20173,#20175) +successor(#20170,#20172) +successor(#20168,#20170) successor(#20159,#20162) successor(#20166,#20160) successor(#20164,#20166) diff --git a/javascript/extractor/tests/jsx/output/trap/repro1.jsx.trap b/javascript/extractor/tests/jsx/output/trap/repro1.jsx.trap index c1cb84747511..387b6e4d0ad8 100644 --- a/javascript/extractor/tests/jsx/output/trap/repro1.jsx.trap +++ b/javascript/extractor/tests/jsx/output/trap/repro1.jsx.trap @@ -351,7 +351,6 @@ exit_cfg_node(#20114,#20075) #20115=@"loc,{#10000},4,2,4,1" locations_default(#20115,#10000,4,2,4,1) hasLocation(#20114,#20115) -successor(#20080,#20084) successor(#20094,#20096) successor(#20096,#20097) successor(#20097,#20099) @@ -378,6 +377,7 @@ successor(#20091,#20089) successor(#20089,#20086) successor(#20088,#20091) successor(#20086,#20094) +successor(#20080,#20084) successor(#20113,#20080) successor(#20077,#20075) successor(#20110,#20077) diff --git a/javascript/extractor/tests/mozilla/output/trap/exprfns.js.trap b/javascript/extractor/tests/mozilla/output/trap/exprfns.js.trap index db738b83deb3..8d67fe56cd0d 100644 --- a/javascript/extractor/tests/mozilla/output/trap/exprfns.js.trap +++ b/javascript/extractor/tests/mozilla/output/trap/exprfns.js.trap @@ -363,7 +363,6 @@ exit_cfg_node(#20118,#20088) #20119=@"loc,{#10000},7,2,7,1" locations_default(#20119,#10000,7,2,7,1) hasLocation(#20118,#20119) -successor(#20094,#20096) successor(#20096,#20098) #20120=* guard_node(#20120,1,#20098) @@ -375,9 +374,7 @@ hasLocation(#20121,#20047) successor(#20121,#20118) successor(#20098,#20120) successor(#20098,#20121) -successor(#20099,#20101) -successor(#20101,#20103) -successor(#20103,#20118) +successor(#20101,#20118) #20122=* entry_cfg_node(#20122,#20101) #20123=@"loc,{#10000},5,5,5,4" @@ -392,6 +389,9 @@ successor(#20108,#20110) successor(#20110,#20124) successor(#20106,#20108) successor(#20122,#20106) +successor(#20103,#20101) +successor(#20099,#20103) +successor(#20094,#20096) successor(#20092,#20094) successor(#20116,#20092) successor(#20075,#20086) diff --git a/javascript/extractor/tests/mozilla/output/trap/foreach.js.trap b/javascript/extractor/tests/mozilla/output/trap/foreach.js.trap index 28f0598a9946..cecedc6e9b0a 100644 --- a/javascript/extractor/tests/mozilla/output/trap/foreach.js.trap +++ b/javascript/extractor/tests/mozilla/output/trap/foreach.js.trap @@ -516,11 +516,11 @@ successor(#20151,#20161) successor(#20136,#20134) successor(#20134,#20137) successor(#20134,#20149) -successor(#20141,#20143) successor(#20143,#20147) successor(#20148,#20145) successor(#20147,#20148) successor(#20145,#20134) +successor(#20141,#20143) successor(#20137,#20140) successor(#20140,#20139) successor(#20139,#20141) diff --git a/javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap b/javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap index 28200e7e0289..c4ff04cd2904 100644 --- a/javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap +++ b/javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap @@ -542,35 +542,35 @@ hasLocation(#20173,#20171) #20174=* exit_cfg_node(#20174,#20111) hasLocation(#20174,#20108) -successor(#20117,#20119) successor(#20119,#20121) -successor(#20121,#20123) successor(#20123,#20127) successor(#20127,#20125) successor(#20125,#20128) successor(#20125,#20174) +successor(#20121,#20123) successor(#20128,#20132) successor(#20136,#20133) successor(#20135,#20136) successor(#20133,#20138) successor(#20133,#20152) successor(#20132,#20135) -successor(#20138,#20140) successor(#20140,#20146) successor(#20149,#20142) successor(#20148,#20144) successor(#20146,#20148) successor(#20144,#20149) successor(#20142,#20174) +successor(#20138,#20140) successor(#20152,#20156) -successor(#20157,#20159) successor(#20159,#20165) successor(#20167,#20161) successor(#20166,#20163) successor(#20165,#20166) successor(#20163,#20167) successor(#20161,#20174) +successor(#20157,#20159) successor(#20156,#20157) +successor(#20117,#20119) successor(#20115,#20117) successor(#20173,#20115) successor(#20112,#20111) diff --git a/javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap b/javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap index 38bed9aeab6a..24050b29d6c7 100644 --- a/javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap +++ b/javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap @@ -489,7 +489,6 @@ successor(#20140,#20141) successor(#20138,#20144) successor(#20136,#20148) successor(#20107,#20114) -successor(#20120,#20122) successor(#20122,#20128) successor(#20134,#20131) successor(#20133,#20134) @@ -498,6 +497,7 @@ successor(#20130,#20126) successor(#20128,#20130) successor(#20126,#20133) successor(#20124,#20135) +successor(#20120,#20122) successor(#20119,#20116) successor(#20118,#20119) successor(#20116,#20120) diff --git a/javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap b/javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap index 23711b8d6e39..7cc4e9be2216 100644 --- a/javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap +++ b/javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap @@ -189,13 +189,13 @@ hasLocation(#20058,#20056) #20059=* exit_cfg_node(#20059,#20039) hasLocation(#20059,#20036) -successor(#20043,#20045) successor(#20048,#20052) successor(#20054,#20050) successor(#20052,#20054) successor(#20050,#20059) successor(#20045,#20047) successor(#20047,#20048) +successor(#20043,#20045) successor(#20058,#20043) successor(#20040,#20039) successor(#20055,#20040) diff --git a/javascript/extractor/tests/stmts/output/trap/functions.js.trap b/javascript/extractor/tests/stmts/output/trap/functions.js.trap index 7eb1f5a04c1f..f89ba7e8cc78 100644 --- a/javascript/extractor/tests/stmts/output/trap/functions.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/functions.js.trap @@ -565,8 +565,8 @@ exit_cfg_node(#20182,#20143) #20183=@"loc,{#10000},9,2,9,1" locations_default(#20183,#10000,9,2,9,1) hasLocation(#20182,#20183) -successor(#20147,#20149) successor(#20149,#20182) +successor(#20147,#20149) successor(#20180,#20147) successor(#20141,#20143) successor(#20140,#20151) @@ -592,11 +592,11 @@ exit_cfg_node(#20189,#20115) #20190=@"loc,{#10000},3,2,3,1" locations_default(#20190,#10000,3,2,3,1) hasLocation(#20189,#20190) -successor(#20124,#20130) successor(#20131,#20128) successor(#20130,#20131) successor(#20128,#20126) successor(#20126,#20189) +successor(#20124,#20130) successor(#20122,#20124) successor(#20120,#20122) successor(#20188,#20120) diff --git a/javascript/extractor/tests/stmts/output/trap/loops.js.trap b/javascript/extractor/tests/stmts/output/trap/loops.js.trap index 3b6519e9479d..2adac2bb41ce 100644 --- a/javascript/extractor/tests/stmts/output/trap/loops.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/loops.js.trap @@ -1009,8 +1009,8 @@ successor(#20281,#20279) successor(#20279,#20277) successor(#20292,#20281) successor(#20268,#20271) -successor(#20271,#20273) successor(#20273,#20270) +successor(#20271,#20273) #20317=* guard_node(#20317,1,#20270) hasLocation(#20317,#20136) @@ -1035,7 +1035,6 @@ successor(#20320,#20268) successor(#20242,#20319) successor(#20242,#20320) successor(#20244,#20242) -successor(#20248,#20250) successor(#20250,#20252) successor(#20252,#20254) #20321=* @@ -1062,6 +1061,7 @@ successor(#20261,#20323) successor(#20261,#20324) successor(#20263,#20268) successor(#20266,#20252) +successor(#20248,#20250) successor(#20233,#20235) successor(#20236,#20235) successor(#20235,#20236) diff --git a/javascript/extractor/tests/stmts/output/trap/switch.js.trap b/javascript/extractor/tests/stmts/output/trap/switch.js.trap index 7e6d831b38fd..ab4566ccb982 100644 --- a/javascript/extractor/tests/stmts/output/trap/switch.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/switch.js.trap @@ -548,7 +548,6 @@ exit_cfg_node(#20179,#20147) #20180=@"loc,{#10000},17,2,17,1" locations_default(#20180,#10000,17,2,17,1) hasLocation(#20179,#20180) -successor(#20152,#20154) successor(#20154,#20156) successor(#20156,#20157) successor(#20168,#20170) @@ -564,6 +563,7 @@ successor(#20159,#20162) successor(#20159,#20168) successor(#20162,#20160) successor(#20160,#20179) +successor(#20152,#20154) successor(#20177,#20152) successor(#20130,#20132) successor(#20132,#20138) diff --git a/javascript/extractor/tests/stmts/output/trap/switch2.js.trap b/javascript/extractor/tests/stmts/output/trap/switch2.js.trap index bd5de336d090..d753eebe3a9c 100644 --- a/javascript/extractor/tests/stmts/output/trap/switch2.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/switch2.js.trap @@ -321,7 +321,6 @@ exit_cfg_node(#20104,#20075) #20105=@"loc,{#10000},9,2,9,1" locations_default(#20105,#10000,9,2,9,1) hasLocation(#20104,#20105) -successor(#20080,#20082) successor(#20082,#20084) successor(#20084,#20086) successor(#20094,#20096) @@ -335,6 +334,7 @@ successor(#20091,#20104) successor(#20086,#20088) successor(#20088,#20089) successor(#20088,#20094) +successor(#20080,#20082) successor(#20103,#20080) successor(#20077,#20075) successor(#20100,#20077) diff --git a/javascript/extractor/tests/stmts/output/trap/try.js.trap b/javascript/extractor/tests/stmts/output/trap/try.js.trap index 607d91d6f641..f364be587d28 100644 --- a/javascript/extractor/tests/stmts/output/trap/try.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/try.js.trap @@ -345,15 +345,15 @@ successor(#20109,#20110) successor(#20112,#20116) successor(#20096,#20097) successor(#20097,#20099) -successor(#20099,#20101) successor(#20101,#20102) +successor(#20099,#20101) successor(#20079,#20081) -successor(#20081,#20085) successor(#20085,#20083) successor(#20083,#20088) +successor(#20081,#20085) successor(#20088,#20092) -successor(#20093,#20095) successor(#20095,#20096) +successor(#20093,#20095) successor(#20092,#20093) successor(#20114,#20079) numlines(#10000,5,5,0) diff --git a/javascript/extractor/tests/strictmode/output/trap/assignargs.js.trap b/javascript/extractor/tests/strictmode/output/trap/assignargs.js.trap index efc24fe55e5c..5f4e3f939b03 100644 --- a/javascript/extractor/tests/strictmode/output/trap/assignargs.js.trap +++ b/javascript/extractor/tests/strictmode/output/trap/assignargs.js.trap @@ -186,13 +186,13 @@ hasLocation(#20057,#20055) #20058=* exit_cfg_node(#20058,#20037) hasLocation(#20058,#20034) -successor(#20041,#20043) successor(#20048,#20052) successor(#20053,#20050) successor(#20052,#20053) successor(#20050,#20058) successor(#20043,#20045) successor(#20045,#20048) +successor(#20041,#20043) successor(#20057,#20041) successor(#20038,#20037) successor(#20054,#20038) diff --git a/javascript/extractor/tests/ts/output/trap/classes.ts.trap b/javascript/extractor/tests/ts/output/trap/classes.ts.trap index e91be374bf03..aec7713d4e39 100644 --- a/javascript/extractor/tests/ts/output/trap/classes.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/classes.ts.trap @@ -226,12 +226,12 @@ hasLocation(#20064,#20048) #20065=* exit_cfg_node(#20065,#20050) hasLocation(#20065,#20048) -successor(#20055,#20056) successor(#20056,#20058) successor(#20060,#20059) successor(#20059,#20057) successor(#20058,#20060) successor(#20057,#20065) +successor(#20055,#20056) successor(#20053,#20055) successor(#20064,#20053) successor(#20049,#20050) diff --git a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap index c8d26a9b9830..0751d283e6cc 100644 --- a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap @@ -10121,7 +10121,6 @@ exit_cfg_node(#23205,#22591) #23206=@"loc,{#10000},49,4,49,3" locations_default(#23206,#10000,49,4,49,3) hasLocation(#23205,#23206) -successor(#22613,#22617) successor(#22623,#22627) successor(#22628,#22625) successor(#22627,#22628) @@ -10130,6 +10129,7 @@ successor(#22617,#22621) successor(#22622,#22619) successor(#22621,#22622) successor(#22619,#22623) +successor(#22613,#22617) successor(#22599,#22613) successor(#22597,#22599) successor(#23203,#22597) @@ -10144,11 +10144,11 @@ exit_cfg_node(#23209,#22566) #23210=@"loc,{#10000},44,4,44,3" locations_default(#23210,#10000,44,4,44,3) hasLocation(#23209,#23210) -successor(#22583,#22585) successor(#22585,#22589) successor(#22590,#22587) successor(#22589,#22590) successor(#22587,#23209) +successor(#22583,#22585) successor(#22574,#22583) successor(#22572,#22574) successor(#23207,#22572) diff --git a/javascript/extractor/tests/ts/output/trap/decorators.ts.trap b/javascript/extractor/tests/ts/output/trap/decorators.ts.trap index de7745b6427c..4a29c482a694 100644 --- a/javascript/extractor/tests/ts/output/trap/decorators.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/decorators.ts.trap @@ -638,11 +638,11 @@ exit_cfg_node(#20194,#20132) #20195=@"loc,{#10000},4,41,4,40" locations_default(#20195,#10000,4,41,4,40) hasLocation(#20194,#20195) -successor(#20136,#20142) successor(#20143,#20140) successor(#20142,#20143) successor(#20140,#20138) successor(#20138,#20194) +successor(#20136,#20142) successor(#20192,#20136) successor(#20131,#20132) successor(#20125,#20155) diff --git a/javascript/extractor/tests/ts/output/trap/enum.ts.trap b/javascript/extractor/tests/ts/output/trap/enum.ts.trap index 146d34fb6ccb..c6a36ea1cc09 100644 --- a/javascript/extractor/tests/ts/output/trap/enum.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/enum.ts.trap @@ -1070,9 +1070,9 @@ exit_cfg_node(#20333,#20276) #20334=@"loc,{#10000},7,30,7,29" locations_default(#20334,#10000,7,30,7,29) hasLocation(#20333,#20334) -successor(#20282,#20286) successor(#20286,#20284) successor(#20284,#20333) +successor(#20282,#20286) successor(#20280,#20282) successor(#20331,#20280) successor(#20275,#20274) diff --git a/javascript/extractor/tests/ts/output/trap/exprs.ts.trap b/javascript/extractor/tests/ts/output/trap/exprs.ts.trap index fdd477046a59..02fe28fbb608 100644 --- a/javascript/extractor/tests/ts/output/trap/exprs.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/exprs.ts.trap @@ -324,7 +324,6 @@ hasLocation(#20098,#20096) #20099=* exit_cfg_node(#20099,#20063) hasLocation(#20099,#20060) -successor(#20069,#20074) successor(#20086,#20094) successor(#20090,#20092) successor(#20093,#20088) @@ -340,6 +339,7 @@ successor(#20079,#20078) successor(#20078,#20080) successor(#20077,#20076) successor(#20076,#20079) +successor(#20069,#20074) successor(#20067,#20069) successor(#20098,#20067) successor(#20064,#20063) diff --git a/javascript/extractor/tests/ts/output/trap/hello.ts.trap b/javascript/extractor/tests/ts/output/trap/hello.ts.trap index a1f36955b455..9639e17a662b 100644 --- a/javascript/extractor/tests/ts/output/trap/hello.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/hello.ts.trap @@ -316,13 +316,13 @@ exit_cfg_node(#20097,#20063) #20098=@"loc,{#10000},3,2,3,1" locations_default(#20098,#10000,3,2,3,1) hasLocation(#20097,#20098) -successor(#20071,#20079) successor(#20081,#20075) successor(#20080,#20077) successor(#20079,#20080) successor(#20077,#20081) successor(#20075,#20073) successor(#20073,#20097) +successor(#20071,#20079) successor(#20068,#20071) successor(#20096,#20068) successor(#20065,#20063) diff --git a/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap b/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap index abd1cbd3be54..53769c269119 100644 --- a/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap @@ -294,7 +294,6 @@ exit_cfg_node(#20094,#20063) #20095=@"loc,{#10000},4,2,4,1" locations_default(#20095,#10000,4,2,4,1) hasLocation(#20094,#20095) -successor(#20072,#20074) successor(#20082,#20084) successor(#20084,#20086) #20096=* @@ -341,6 +340,7 @@ successor(#20103,#20082) successor(#20079,#20102) successor(#20079,#20103) successor(#20080,#20082) +successor(#20072,#20074) successor(#20070,#20072) successor(#20068,#20070) successor(#20093,#20068) diff --git a/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap b/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap index 4ee94b2a3130..f199fee39549 100644 --- a/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap @@ -294,9 +294,9 @@ exit_cfg_node(#20092,#20065) #20093=@"loc,{#10000},2,23,2,22" locations_default(#20093,#10000,2,23,2,22) hasLocation(#20092,#20093) -successor(#20068,#20072) successor(#20072,#20070) successor(#20070,#20092) +successor(#20068,#20072) successor(#20090,#20068) successor(#20064,#20065) successor(#20062,#20075) diff --git a/javascript/extractor/tests/ts/output/trap/privateField.ts.trap b/javascript/extractor/tests/ts/output/trap/privateField.ts.trap index 334f1de6f834..55897164df68 100644 --- a/javascript/extractor/tests/ts/output/trap/privateField.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/privateField.ts.trap @@ -256,13 +256,13 @@ exit_cfg_node(#20079,#20054) #20080=@"loc,{#10000},5,3,5,2" locations_default(#20080,#10000,5,3,5,2) hasLocation(#20079,#20080) -successor(#20062,#20064) successor(#20064,#20070) successor(#20073,#20066) successor(#20071,#20068) successor(#20070,#20071) successor(#20068,#20073) successor(#20066,#20079) +successor(#20062,#20064) successor(#20077,#20055) successor(#20059,#20054) successor(#20057,#20048) diff --git a/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap b/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap index d3c660c7d6e6..de5d0a2d72c4 100644 --- a/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap @@ -267,16 +267,16 @@ exit_cfg_node(#20086,#20059) #20087=@"loc,{#10000},7,2,7,1" locations_default(#20087,#10000,7,2,7,1) hasLocation(#20086,#20087) -successor(#20065,#20067) successor(#20073,#20075) successor(#20075,#20077) -successor(#20077,#20081) successor(#20081,#20079) successor(#20079,#20086) +successor(#20077,#20081) successor(#20067,#20071) successor(#20072,#20069) successor(#20071,#20072) successor(#20069,#20073) +successor(#20065,#20067) successor(#20085,#20065) successor(#20061,#20059) successor(#20082,#20061) diff --git a/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap b/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap index ccedb72e42f5..694684672797 100644 --- a/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap @@ -4603,9 +4603,9 @@ exit_cfg_node(#21451,#21425) #21452=@"loc,{#10000},64,40,64,39" locations_default(#21452,#10000,64,40,64,39) hasLocation(#21451,#21452) -successor(#21432,#21436) successor(#21436,#21434) successor(#21434,#21451) +successor(#21432,#21436) successor(#21428,#21432) successor(#21449,#21428) successor(#21424,#21425) diff --git a/javascript/extractor/tests/variables/output/trap/finally.js.trap b/javascript/extractor/tests/variables/output/trap/finally.js.trap index 0b20c915634b..7d6511265298 100644 --- a/javascript/extractor/tests/variables/output/trap/finally.js.trap +++ b/javascript/extractor/tests/variables/output/trap/finally.js.trap @@ -298,7 +298,6 @@ exit_cfg_node(#20097,#20065) #20098=@"loc,{#10000},8,2,8,1" locations_default(#20098,#10000,8,2,8,1) hasLocation(#20097,#20098) -successor(#20073,#20075) successor(#20075,#20097) #20099=* entry_cfg_node(#20099,#20075) @@ -310,16 +309,17 @@ exit_cfg_node(#20101,#20075) #20102=@"loc,{#10000},7,4,7,3" locations_default(#20102,#10000,7,4,7,3) hasLocation(#20101,#20102) -successor(#20081,#20083) successor(#20083,#20085) successor(#20085,#20087) -successor(#20087,#20089) successor(#20089,#20092) successor(#20092,#20091) successor(#20091,#20101) +successor(#20087,#20089) +successor(#20081,#20083) successor(#20099,#20081) -successor(#20077,#20073) -successor(#20071,#20077) +successor(#20077,#20075) +successor(#20073,#20077) +successor(#20071,#20073) successor(#20096,#20071) successor(#20067,#20065) successor(#20093,#20067) diff --git a/javascript/extractor/tests/variables/output/trap/switch.js.trap b/javascript/extractor/tests/variables/output/trap/switch.js.trap index 9127e02831a8..7ea8d83f4ee1 100644 --- a/javascript/extractor/tests/variables/output/trap/switch.js.trap +++ b/javascript/extractor/tests/variables/output/trap/switch.js.trap @@ -224,13 +224,13 @@ exit_cfg_node(#20072,#20051) #20073=@"loc,{#10000},6,2,6,1" locations_default(#20073,#10000,6,2,6,1) hasLocation(#20072,#20073) -successor(#20057,#20059) successor(#20059,#20061) successor(#20061,#20062) successor(#20062,#20064) successor(#20064,#20067) successor(#20067,#20066) successor(#20066,#20072) +successor(#20057,#20059) successor(#20071,#20057) successor(#20053,#20051) successor(#20068,#20053) diff --git a/javascript/extractor/tests/variables/output/trap/try.js.trap b/javascript/extractor/tests/variables/output/trap/try.js.trap index 062b593b72d4..4ce7fe8bb584 100644 --- a/javascript/extractor/tests/variables/output/trap/try.js.trap +++ b/javascript/extractor/tests/variables/output/trap/try.js.trap @@ -202,13 +202,13 @@ hasLocation(#20065,#20063) #20066=* exit_cfg_node(#20066,#20045) hasLocation(#20066,#20042) -successor(#20050,#20052) successor(#20052,#20054) -successor(#20054,#20056) successor(#20056,#20059) successor(#20059,#20058) successor(#20058,#20060) +successor(#20054,#20056) successor(#20060,#20066) +successor(#20050,#20052) successor(#20065,#20050) successor(#20046,#20045) successor(#20062,#20046) diff --git a/javascript/extractor/tests/variables/output/trap/variables.js.trap b/javascript/extractor/tests/variables/output/trap/variables.js.trap index ebc1bc00e197..b0c3a1b7e71d 100644 --- a/javascript/extractor/tests/variables/output/trap/variables.js.trap +++ b/javascript/extractor/tests/variables/output/trap/variables.js.trap @@ -699,8 +699,6 @@ hasLocation(#20222,#20223) #20224=* exit_cfg_node(#20224,#20183) hasLocation(#20224,#20143) -successor(#20190,#20192) -successor(#20199,#20201) successor(#20208,#20211) successor(#20211,#20210) #20225=* @@ -717,8 +715,7 @@ successor(#20217,#20227) successor(#20215,#20217) successor(#20225,#20215) successor(#20210,#20224) -successor(#20201,#20203) -successor(#20203,#20208) +successor(#20201,#20208) #20229=* entry_cfg_node(#20229,#20201) #20230=@"loc,{#10000},16,3,16,2" @@ -731,11 +728,14 @@ locations_default(#20232,#10000,16,18,16,17) hasLocation(#20231,#20232) successor(#20206,#20231) successor(#20229,#20206) +successor(#20203,#20201) +successor(#20199,#20203) successor(#20195,#20198) successor(#20198,#20197) successor(#20197,#20199) successor(#20192,#20194) successor(#20194,#20195) +successor(#20190,#20192) successor(#20222,#20190) successor(#20168,#20183) #20233=* @@ -748,17 +748,17 @@ exit_cfg_node(#20235,#20168) #20236=@"loc,{#10000},11,2,11,1" locations_default(#20236,#10000,11,2,11,1) hasLocation(#20235,#20236) -successor(#20174,#20176) successor(#20180,#20182) successor(#20182,#20235) successor(#20176,#20179) successor(#20179,#20178) successor(#20178,#20180) +successor(#20174,#20176) successor(#20233,#20174) -successor(#20162,#20164) successor(#20164,#20167) successor(#20167,#20166) successor(#20166,#20168) +successor(#20162,#20164) successor(#20160,#20161) successor(#20161,#20162) successor(#20158,#20159) diff --git a/javascript/ql/src/change-notes/2025-02-06-hoist-in-block.md b/javascript/ql/src/change-notes/2025-02-06-hoist-in-block.md new file mode 100644 index 000000000000..9fa966e23ce3 --- /dev/null +++ b/javascript/ql/src/change-notes/2025-02-06-hoist-in-block.md @@ -0,0 +1,6 @@ +--- +category: fix +--- +* Fixed a rare issue that would occur when a function declaration inside a block statement was referenced before it was declared. + Such code is reliant on legacy web semantics, which is non-standard but nevertheless implemented by most engines. + CodeQL now takes legacy web semantics into account and resolves references to these functions correctly. diff --git a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/hoisted.js b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/hoisted.js new file mode 100644 index 000000000000..2cffe6581f11 --- /dev/null +++ b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/hoisted.js @@ -0,0 +1,25 @@ +function test1() { + /** name:hoist1 */ + function f() {} + + /** calls:hoist1 */ + f(); +} + +function test2() { + /** calls:hoist2 */ + f(); + + /** name:hoist2 */ + function f() {} +} + +function test3() { + { + /** calls:hoist3 */ + f(); + + /** name:hoist3 */ + function f() {} + } +} diff --git a/javascript/ql/test/library-tests/DefUse/DefUsePair.expected b/javascript/ql/test/library-tests/DefUse/DefUsePair.expected index caaf440a778c..f029dd71b6cd 100644 --- a/javascript/ql/test/library-tests/DefUse/DefUsePair.expected +++ b/javascript/ql/test/library-tests/DefUse/DefUsePair.expected @@ -11,8 +11,8 @@ | fundecls.js:12:12:12:12 | def@12:12 | fundecls.js:10:3:10:3 | f | | fundecls.js:18:12:18:12 | def@18:12 | fundecls.js:17:3:17:3 | f | | fundecls.js:23:12:23:12 | def@23:12 | fundecls.js:24:3:24:3 | f | -| fundecls.js:27:2:27:2 | implicitInit@27:2 | fundecls.js:28:3:28:3 | f | -| fundecls.js:34:12:34:12 | def@34:12 | fundecls.js:35:3:35:3 | f | +| fundecls.js:30:12:30:12 | def@30:12 | fundecls.js:28:3:28:3 | f | +| fundecls.js:36:12:36:12 | def@36:12 | fundecls.js:35:3:35:3 | f | | fundecls.js:39:11:39:11 | def@39:11 | fundecls.js:40:7:40:7 | x | | fundecls.js:45:3:45:3 | phi@45:3 | fundecls.js:45:3:45:3 | f | | fundecls.js:48:11:48:11 | def@48:11 | fundecls.js:50:7:50:7 | x |