зеркало из https://github.com/github/codeql.git
added support for ES2021 assignment operators
This commit is contained in:
Родитель
d867172d27
Коммит
87d4e13584
|
@ -531,9 +531,14 @@ public class Parser {
|
||||||
int next2 = charAt(this.pos + 2);
|
int next2 = charAt(this.pos + 2);
|
||||||
if (this.options.esnext()) {
|
if (this.options.esnext()) {
|
||||||
if (next == '.' && !('0' <= next2 && next2 <= '9')) // '?.', but not '?.X' where X is a digit
|
if (next == '.' && !('0' <= next2 && next2 <= '9')) // '?.', but not '?.X' where X is a digit
|
||||||
return this.finishOp(TokenType.questiondot, 2);
|
return this.finishOp(TokenType.questiondot, 2);
|
||||||
if (next == '?') // '??'
|
if (next == '?') { // '??'
|
||||||
return this.finishOp(TokenType.questionquestion, 2);
|
if (next2 == '=') { // ??=
|
||||||
|
return this.finishOp(TokenType.assign, 3);
|
||||||
|
}
|
||||||
|
return this.finishOp(TokenType.questionquestion, 2);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return this.finishOp(TokenType.question, 1);
|
return this.finishOp(TokenType.question, 1);
|
||||||
}
|
}
|
||||||
|
@ -566,8 +571,11 @@ public class Parser {
|
||||||
|
|
||||||
private Token readToken_pipe_amp(int code) { // '|&'
|
private Token readToken_pipe_amp(int code) { // '|&'
|
||||||
int next = charAt(this.pos + 1);
|
int next = charAt(this.pos + 1);
|
||||||
if (next == code)
|
int next2 = charAt(this.pos + 2);
|
||||||
|
if (next == code) { // && ||
|
||||||
|
if (next2 == 61) return this.finishOp(TokenType.assign, 3); // &&= ||=
|
||||||
return this.finishOp(code == 124 ? TokenType.logicalOR : TokenType.logicalAND, 2);
|
return this.finishOp(code == 124 ? TokenType.logicalOR : TokenType.logicalAND, 2);
|
||||||
|
}
|
||||||
if (next == 61) return this.finishOp(TokenType.assign, 2);
|
if (next == 61) return this.finishOp(TokenType.assign, 2);
|
||||||
return this.finishOp(code == 124 ? TokenType.bitwiseOR : TokenType.bitwiseAND, 1);
|
return this.finishOp(code == 124 ? TokenType.bitwiseOR : TokenType.bitwiseAND, 1);
|
||||||
}
|
}
|
||||||
|
@ -709,8 +717,8 @@ public class Parser {
|
||||||
case 42: // '%*'
|
case 42: // '%*'
|
||||||
return this.readToken_mult_modulo_exp(code);
|
return this.readToken_mult_modulo_exp(code);
|
||||||
|
|
||||||
case 124:
|
case 124: // '|'
|
||||||
case 38: // '|&'
|
case 38: // '&'
|
||||||
return this.readToken_pipe_amp(code);
|
return this.readToken_pipe_amp(code);
|
||||||
|
|
||||||
case 94: // '^'
|
case 94: // '^'
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
var x = 1;
|
||||||
|
var y = 2;
|
||||||
|
var foo = x && y;
|
||||||
|
var bar = x &&= y;
|
||||||
|
console.log(x); // 2
|
||||||
|
|
||||||
|
x &&= y;
|
||||||
|
x ||= y;
|
||||||
|
x ??= y;
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"experimental": true
|
||||||
|
}
|
|
@ -0,0 +1,633 @@
|
||||||
|
#10000=@"/assign.js;sourcefile"
|
||||||
|
files(#10000,"/assign.js","assign","js",0)
|
||||||
|
#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=*
|
||||||
|
comments(#20002,0,#20001," 2","// 2")
|
||||||
|
#20003=@"loc,{#10000},5,17,5,20"
|
||||||
|
locations_default(#20003,#10000,5,17,5,20)
|
||||||
|
hasLocation(#20002,#20003)
|
||||||
|
#20004=*
|
||||||
|
lines(#20004,#20001,"var x = 1;","
|
||||||
|
")
|
||||||
|
#20005=@"loc,{#10000},1,1,1,10"
|
||||||
|
locations_default(#20005,#10000,1,1,1,10)
|
||||||
|
hasLocation(#20004,#20005)
|
||||||
|
#20006=*
|
||||||
|
lines(#20006,#20001,"var y = 2;","
|
||||||
|
")
|
||||||
|
#20007=@"loc,{#10000},2,1,2,10"
|
||||||
|
locations_default(#20007,#10000,2,1,2,10)
|
||||||
|
hasLocation(#20006,#20007)
|
||||||
|
#20008=*
|
||||||
|
lines(#20008,#20001,"var foo = x && y;","
|
||||||
|
")
|
||||||
|
#20009=@"loc,{#10000},3,1,3,17"
|
||||||
|
locations_default(#20009,#10000,3,1,3,17)
|
||||||
|
hasLocation(#20008,#20009)
|
||||||
|
#20010=*
|
||||||
|
lines(#20010,#20001,"var bar = x &&= y;","
|
||||||
|
")
|
||||||
|
#20011=@"loc,{#10000},4,1,4,18"
|
||||||
|
locations_default(#20011,#10000,4,1,4,18)
|
||||||
|
hasLocation(#20010,#20011)
|
||||||
|
#20012=*
|
||||||
|
lines(#20012,#20001,"console.log(x); // 2","
|
||||||
|
")
|
||||||
|
#20013=@"loc,{#10000},5,1,5,20"
|
||||||
|
locations_default(#20013,#10000,5,1,5,20)
|
||||||
|
hasLocation(#20012,#20013)
|
||||||
|
#20014=*
|
||||||
|
lines(#20014,#20001,"","
|
||||||
|
")
|
||||||
|
#20015=@"loc,{#10000},6,1,6,0"
|
||||||
|
locations_default(#20015,#10000,6,1,6,0)
|
||||||
|
hasLocation(#20014,#20015)
|
||||||
|
#20016=*
|
||||||
|
lines(#20016,#20001,"x &&= y;","
|
||||||
|
")
|
||||||
|
#20017=@"loc,{#10000},7,1,7,8"
|
||||||
|
locations_default(#20017,#10000,7,1,7,8)
|
||||||
|
hasLocation(#20016,#20017)
|
||||||
|
#20018=*
|
||||||
|
lines(#20018,#20001,"x ||= y;","
|
||||||
|
")
|
||||||
|
#20019=@"loc,{#10000},8,1,8,8"
|
||||||
|
locations_default(#20019,#10000,8,1,8,8)
|
||||||
|
hasLocation(#20018,#20019)
|
||||||
|
#20020=*
|
||||||
|
lines(#20020,#20001,"x ??= y;","
|
||||||
|
")
|
||||||
|
#20021=@"loc,{#10000},9,1,9,8"
|
||||||
|
locations_default(#20021,#10000,9,1,9,8)
|
||||||
|
hasLocation(#20020,#20021)
|
||||||
|
numlines(#20001,9,8,1)
|
||||||
|
#20022=*
|
||||||
|
tokeninfo(#20022,7,#20001,0,"var")
|
||||||
|
#20023=@"loc,{#10000},1,1,1,3"
|
||||||
|
locations_default(#20023,#10000,1,1,1,3)
|
||||||
|
hasLocation(#20022,#20023)
|
||||||
|
#20024=*
|
||||||
|
tokeninfo(#20024,6,#20001,1,"x")
|
||||||
|
#20025=@"loc,{#10000},1,5,1,5"
|
||||||
|
locations_default(#20025,#10000,1,5,1,5)
|
||||||
|
hasLocation(#20024,#20025)
|
||||||
|
#20026=*
|
||||||
|
tokeninfo(#20026,8,#20001,2,"=")
|
||||||
|
#20027=@"loc,{#10000},1,7,1,7"
|
||||||
|
locations_default(#20027,#10000,1,7,1,7)
|
||||||
|
hasLocation(#20026,#20027)
|
||||||
|
#20028=*
|
||||||
|
tokeninfo(#20028,3,#20001,3,"1")
|
||||||
|
#20029=@"loc,{#10000},1,9,1,9"
|
||||||
|
locations_default(#20029,#10000,1,9,1,9)
|
||||||
|
hasLocation(#20028,#20029)
|
||||||
|
#20030=*
|
||||||
|
tokeninfo(#20030,8,#20001,4,";")
|
||||||
|
#20031=@"loc,{#10000},1,10,1,10"
|
||||||
|
locations_default(#20031,#10000,1,10,1,10)
|
||||||
|
hasLocation(#20030,#20031)
|
||||||
|
#20032=*
|
||||||
|
tokeninfo(#20032,7,#20001,5,"var")
|
||||||
|
#20033=@"loc,{#10000},2,1,2,3"
|
||||||
|
locations_default(#20033,#10000,2,1,2,3)
|
||||||
|
hasLocation(#20032,#20033)
|
||||||
|
#20034=*
|
||||||
|
tokeninfo(#20034,6,#20001,6,"y")
|
||||||
|
#20035=@"loc,{#10000},2,5,2,5"
|
||||||
|
locations_default(#20035,#10000,2,5,2,5)
|
||||||
|
hasLocation(#20034,#20035)
|
||||||
|
#20036=*
|
||||||
|
tokeninfo(#20036,8,#20001,7,"=")
|
||||||
|
#20037=@"loc,{#10000},2,7,2,7"
|
||||||
|
locations_default(#20037,#10000,2,7,2,7)
|
||||||
|
hasLocation(#20036,#20037)
|
||||||
|
#20038=*
|
||||||
|
tokeninfo(#20038,3,#20001,8,"2")
|
||||||
|
#20039=@"loc,{#10000},2,9,2,9"
|
||||||
|
locations_default(#20039,#10000,2,9,2,9)
|
||||||
|
hasLocation(#20038,#20039)
|
||||||
|
#20040=*
|
||||||
|
tokeninfo(#20040,8,#20001,9,";")
|
||||||
|
#20041=@"loc,{#10000},2,10,2,10"
|
||||||
|
locations_default(#20041,#10000,2,10,2,10)
|
||||||
|
hasLocation(#20040,#20041)
|
||||||
|
#20042=*
|
||||||
|
tokeninfo(#20042,7,#20001,10,"var")
|
||||||
|
#20043=@"loc,{#10000},3,1,3,3"
|
||||||
|
locations_default(#20043,#10000,3,1,3,3)
|
||||||
|
hasLocation(#20042,#20043)
|
||||||
|
#20044=*
|
||||||
|
tokeninfo(#20044,6,#20001,11,"foo")
|
||||||
|
#20045=@"loc,{#10000},3,5,3,7"
|
||||||
|
locations_default(#20045,#10000,3,5,3,7)
|
||||||
|
hasLocation(#20044,#20045)
|
||||||
|
#20046=*
|
||||||
|
tokeninfo(#20046,8,#20001,12,"=")
|
||||||
|
#20047=@"loc,{#10000},3,9,3,9"
|
||||||
|
locations_default(#20047,#10000,3,9,3,9)
|
||||||
|
hasLocation(#20046,#20047)
|
||||||
|
#20048=*
|
||||||
|
tokeninfo(#20048,6,#20001,13,"x")
|
||||||
|
#20049=@"loc,{#10000},3,11,3,11"
|
||||||
|
locations_default(#20049,#10000,3,11,3,11)
|
||||||
|
hasLocation(#20048,#20049)
|
||||||
|
#20050=*
|
||||||
|
tokeninfo(#20050,8,#20001,14,"&&")
|
||||||
|
#20051=@"loc,{#10000},3,13,3,14"
|
||||||
|
locations_default(#20051,#10000,3,13,3,14)
|
||||||
|
hasLocation(#20050,#20051)
|
||||||
|
#20052=*
|
||||||
|
tokeninfo(#20052,6,#20001,15,"y")
|
||||||
|
#20053=@"loc,{#10000},3,16,3,16"
|
||||||
|
locations_default(#20053,#10000,3,16,3,16)
|
||||||
|
hasLocation(#20052,#20053)
|
||||||
|
#20054=*
|
||||||
|
tokeninfo(#20054,8,#20001,16,";")
|
||||||
|
#20055=@"loc,{#10000},3,17,3,17"
|
||||||
|
locations_default(#20055,#10000,3,17,3,17)
|
||||||
|
hasLocation(#20054,#20055)
|
||||||
|
#20056=*
|
||||||
|
tokeninfo(#20056,7,#20001,17,"var")
|
||||||
|
#20057=@"loc,{#10000},4,1,4,3"
|
||||||
|
locations_default(#20057,#10000,4,1,4,3)
|
||||||
|
hasLocation(#20056,#20057)
|
||||||
|
#20058=*
|
||||||
|
tokeninfo(#20058,6,#20001,18,"bar")
|
||||||
|
#20059=@"loc,{#10000},4,5,4,7"
|
||||||
|
locations_default(#20059,#10000,4,5,4,7)
|
||||||
|
hasLocation(#20058,#20059)
|
||||||
|
#20060=*
|
||||||
|
tokeninfo(#20060,8,#20001,19,"=")
|
||||||
|
#20061=@"loc,{#10000},4,9,4,9"
|
||||||
|
locations_default(#20061,#10000,4,9,4,9)
|
||||||
|
hasLocation(#20060,#20061)
|
||||||
|
#20062=*
|
||||||
|
tokeninfo(#20062,6,#20001,20,"x")
|
||||||
|
#20063=@"loc,{#10000},4,11,4,11"
|
||||||
|
locations_default(#20063,#10000,4,11,4,11)
|
||||||
|
hasLocation(#20062,#20063)
|
||||||
|
#20064=*
|
||||||
|
tokeninfo(#20064,8,#20001,21,"&&=")
|
||||||
|
#20065=@"loc,{#10000},4,13,4,15"
|
||||||
|
locations_default(#20065,#10000,4,13,4,15)
|
||||||
|
hasLocation(#20064,#20065)
|
||||||
|
#20066=*
|
||||||
|
tokeninfo(#20066,6,#20001,22,"y")
|
||||||
|
#20067=@"loc,{#10000},4,17,4,17"
|
||||||
|
locations_default(#20067,#10000,4,17,4,17)
|
||||||
|
hasLocation(#20066,#20067)
|
||||||
|
#20068=*
|
||||||
|
tokeninfo(#20068,8,#20001,23,";")
|
||||||
|
#20069=@"loc,{#10000},4,18,4,18"
|
||||||
|
locations_default(#20069,#10000,4,18,4,18)
|
||||||
|
hasLocation(#20068,#20069)
|
||||||
|
#20070=*
|
||||||
|
tokeninfo(#20070,6,#20001,24,"console")
|
||||||
|
#20071=@"loc,{#10000},5,1,5,7"
|
||||||
|
locations_default(#20071,#10000,5,1,5,7)
|
||||||
|
hasLocation(#20070,#20071)
|
||||||
|
#20072=*
|
||||||
|
tokeninfo(#20072,8,#20001,25,".")
|
||||||
|
#20073=@"loc,{#10000},5,8,5,8"
|
||||||
|
locations_default(#20073,#10000,5,8,5,8)
|
||||||
|
hasLocation(#20072,#20073)
|
||||||
|
#20074=*
|
||||||
|
tokeninfo(#20074,6,#20001,26,"log")
|
||||||
|
#20075=@"loc,{#10000},5,9,5,11"
|
||||||
|
locations_default(#20075,#10000,5,9,5,11)
|
||||||
|
hasLocation(#20074,#20075)
|
||||||
|
#20076=*
|
||||||
|
tokeninfo(#20076,8,#20001,27,"(")
|
||||||
|
#20077=@"loc,{#10000},5,12,5,12"
|
||||||
|
locations_default(#20077,#10000,5,12,5,12)
|
||||||
|
hasLocation(#20076,#20077)
|
||||||
|
#20078=*
|
||||||
|
tokeninfo(#20078,6,#20001,28,"x")
|
||||||
|
#20079=@"loc,{#10000},5,13,5,13"
|
||||||
|
locations_default(#20079,#10000,5,13,5,13)
|
||||||
|
hasLocation(#20078,#20079)
|
||||||
|
#20080=*
|
||||||
|
tokeninfo(#20080,8,#20001,29,")")
|
||||||
|
#20081=@"loc,{#10000},5,14,5,14"
|
||||||
|
locations_default(#20081,#10000,5,14,5,14)
|
||||||
|
hasLocation(#20080,#20081)
|
||||||
|
#20082=*
|
||||||
|
tokeninfo(#20082,8,#20001,30,";")
|
||||||
|
#20083=@"loc,{#10000},5,15,5,15"
|
||||||
|
locations_default(#20083,#10000,5,15,5,15)
|
||||||
|
hasLocation(#20082,#20083)
|
||||||
|
#20084=*
|
||||||
|
tokeninfo(#20084,6,#20001,31,"x")
|
||||||
|
#20085=@"loc,{#10000},7,1,7,1"
|
||||||
|
locations_default(#20085,#10000,7,1,7,1)
|
||||||
|
hasLocation(#20084,#20085)
|
||||||
|
next_token(#20002,#20084)
|
||||||
|
#20086=*
|
||||||
|
tokeninfo(#20086,8,#20001,32,"&&=")
|
||||||
|
#20087=@"loc,{#10000},7,3,7,5"
|
||||||
|
locations_default(#20087,#10000,7,3,7,5)
|
||||||
|
hasLocation(#20086,#20087)
|
||||||
|
#20088=*
|
||||||
|
tokeninfo(#20088,6,#20001,33,"y")
|
||||||
|
#20089=@"loc,{#10000},7,7,7,7"
|
||||||
|
locations_default(#20089,#10000,7,7,7,7)
|
||||||
|
hasLocation(#20088,#20089)
|
||||||
|
#20090=*
|
||||||
|
tokeninfo(#20090,8,#20001,34,";")
|
||||||
|
#20091=@"loc,{#10000},7,8,7,8"
|
||||||
|
locations_default(#20091,#10000,7,8,7,8)
|
||||||
|
hasLocation(#20090,#20091)
|
||||||
|
#20092=*
|
||||||
|
tokeninfo(#20092,6,#20001,35,"x")
|
||||||
|
#20093=@"loc,{#10000},8,1,8,1"
|
||||||
|
locations_default(#20093,#10000,8,1,8,1)
|
||||||
|
hasLocation(#20092,#20093)
|
||||||
|
#20094=*
|
||||||
|
tokeninfo(#20094,8,#20001,36,"||=")
|
||||||
|
#20095=@"loc,{#10000},8,3,8,5"
|
||||||
|
locations_default(#20095,#10000,8,3,8,5)
|
||||||
|
hasLocation(#20094,#20095)
|
||||||
|
#20096=*
|
||||||
|
tokeninfo(#20096,6,#20001,37,"y")
|
||||||
|
#20097=@"loc,{#10000},8,7,8,7"
|
||||||
|
locations_default(#20097,#10000,8,7,8,7)
|
||||||
|
hasLocation(#20096,#20097)
|
||||||
|
#20098=*
|
||||||
|
tokeninfo(#20098,8,#20001,38,";")
|
||||||
|
#20099=@"loc,{#10000},8,8,8,8"
|
||||||
|
locations_default(#20099,#10000,8,8,8,8)
|
||||||
|
hasLocation(#20098,#20099)
|
||||||
|
#20100=*
|
||||||
|
tokeninfo(#20100,6,#20001,39,"x")
|
||||||
|
#20101=@"loc,{#10000},9,1,9,1"
|
||||||
|
locations_default(#20101,#10000,9,1,9,1)
|
||||||
|
hasLocation(#20100,#20101)
|
||||||
|
#20102=*
|
||||||
|
tokeninfo(#20102,8,#20001,40,"??=")
|
||||||
|
#20103=@"loc,{#10000},9,3,9,5"
|
||||||
|
locations_default(#20103,#10000,9,3,9,5)
|
||||||
|
hasLocation(#20102,#20103)
|
||||||
|
#20104=*
|
||||||
|
tokeninfo(#20104,6,#20001,41,"y")
|
||||||
|
#20105=@"loc,{#10000},9,7,9,7"
|
||||||
|
locations_default(#20105,#10000,9,7,9,7)
|
||||||
|
hasLocation(#20104,#20105)
|
||||||
|
#20106=*
|
||||||
|
tokeninfo(#20106,8,#20001,42,";")
|
||||||
|
#20107=@"loc,{#10000},9,8,9,8"
|
||||||
|
locations_default(#20107,#10000,9,8,9,8)
|
||||||
|
hasLocation(#20106,#20107)
|
||||||
|
#20108=*
|
||||||
|
tokeninfo(#20108,0,#20001,43,"")
|
||||||
|
#20109=@"loc,{#10000},10,1,10,0"
|
||||||
|
locations_default(#20109,#10000,10,1,10,0)
|
||||||
|
hasLocation(#20108,#20109)
|
||||||
|
toplevels(#20001,0)
|
||||||
|
#20110=@"loc,{#10000},1,1,10,0"
|
||||||
|
locations_default(#20110,#10000,1,1,10,0)
|
||||||
|
hasLocation(#20001,#20110)
|
||||||
|
#20111=@"var;{x};{#20000}"
|
||||||
|
variables(#20111,"x",#20000)
|
||||||
|
#20112=@"var;{y};{#20000}"
|
||||||
|
variables(#20112,"y",#20000)
|
||||||
|
#20113=@"var;{foo};{#20000}"
|
||||||
|
variables(#20113,"foo",#20000)
|
||||||
|
#20114=@"var;{bar};{#20000}"
|
||||||
|
variables(#20114,"bar",#20000)
|
||||||
|
#20115=*
|
||||||
|
stmts(#20115,18,#20001,0,"var x = 1;")
|
||||||
|
hasLocation(#20115,#20005)
|
||||||
|
stmt_containers(#20115,#20001)
|
||||||
|
#20116=*
|
||||||
|
exprs(#20116,64,#20115,0,"x = 1")
|
||||||
|
#20117=@"loc,{#10000},1,5,1,9"
|
||||||
|
locations_default(#20117,#10000,1,5,1,9)
|
||||||
|
hasLocation(#20116,#20117)
|
||||||
|
enclosing_stmt(#20116,#20115)
|
||||||
|
expr_containers(#20116,#20001)
|
||||||
|
#20118=*
|
||||||
|
exprs(#20118,78,#20116,0,"x")
|
||||||
|
hasLocation(#20118,#20025)
|
||||||
|
enclosing_stmt(#20118,#20115)
|
||||||
|
expr_containers(#20118,#20001)
|
||||||
|
literals("x","x",#20118)
|
||||||
|
decl(#20118,#20111)
|
||||||
|
#20119=*
|
||||||
|
exprs(#20119,3,#20116,1,"1")
|
||||||
|
hasLocation(#20119,#20029)
|
||||||
|
enclosing_stmt(#20119,#20115)
|
||||||
|
expr_containers(#20119,#20001)
|
||||||
|
literals("1","1",#20119)
|
||||||
|
#20120=*
|
||||||
|
stmts(#20120,18,#20001,1,"var y = 2;")
|
||||||
|
hasLocation(#20120,#20007)
|
||||||
|
stmt_containers(#20120,#20001)
|
||||||
|
#20121=*
|
||||||
|
exprs(#20121,64,#20120,0,"y = 2")
|
||||||
|
#20122=@"loc,{#10000},2,5,2,9"
|
||||||
|
locations_default(#20122,#10000,2,5,2,9)
|
||||||
|
hasLocation(#20121,#20122)
|
||||||
|
enclosing_stmt(#20121,#20120)
|
||||||
|
expr_containers(#20121,#20001)
|
||||||
|
#20123=*
|
||||||
|
exprs(#20123,78,#20121,0,"y")
|
||||||
|
hasLocation(#20123,#20035)
|
||||||
|
enclosing_stmt(#20123,#20120)
|
||||||
|
expr_containers(#20123,#20001)
|
||||||
|
literals("y","y",#20123)
|
||||||
|
decl(#20123,#20112)
|
||||||
|
#20124=*
|
||||||
|
exprs(#20124,3,#20121,1,"2")
|
||||||
|
hasLocation(#20124,#20039)
|
||||||
|
enclosing_stmt(#20124,#20120)
|
||||||
|
expr_containers(#20124,#20001)
|
||||||
|
literals("2","2",#20124)
|
||||||
|
#20125=*
|
||||||
|
stmts(#20125,18,#20001,2,"var foo = x && y;")
|
||||||
|
hasLocation(#20125,#20009)
|
||||||
|
stmt_containers(#20125,#20001)
|
||||||
|
#20126=*
|
||||||
|
exprs(#20126,64,#20125,0,"foo = x && y")
|
||||||
|
#20127=@"loc,{#10000},3,5,3,16"
|
||||||
|
locations_default(#20127,#10000,3,5,3,16)
|
||||||
|
hasLocation(#20126,#20127)
|
||||||
|
enclosing_stmt(#20126,#20125)
|
||||||
|
expr_containers(#20126,#20001)
|
||||||
|
#20128=*
|
||||||
|
exprs(#20128,78,#20126,0,"foo")
|
||||||
|
hasLocation(#20128,#20045)
|
||||||
|
enclosing_stmt(#20128,#20125)
|
||||||
|
expr_containers(#20128,#20001)
|
||||||
|
literals("foo","foo",#20128)
|
||||||
|
decl(#20128,#20113)
|
||||||
|
#20129=*
|
||||||
|
exprs(#20129,44,#20126,1,"x && y")
|
||||||
|
#20130=@"loc,{#10000},3,11,3,16"
|
||||||
|
locations_default(#20130,#10000,3,11,3,16)
|
||||||
|
hasLocation(#20129,#20130)
|
||||||
|
enclosing_stmt(#20129,#20125)
|
||||||
|
expr_containers(#20129,#20001)
|
||||||
|
#20131=*
|
||||||
|
exprs(#20131,79,#20129,0,"x")
|
||||||
|
hasLocation(#20131,#20049)
|
||||||
|
enclosing_stmt(#20131,#20125)
|
||||||
|
expr_containers(#20131,#20001)
|
||||||
|
literals("x","x",#20131)
|
||||||
|
bind(#20131,#20111)
|
||||||
|
#20132=*
|
||||||
|
exprs(#20132,79,#20129,1,"y")
|
||||||
|
hasLocation(#20132,#20053)
|
||||||
|
enclosing_stmt(#20132,#20125)
|
||||||
|
expr_containers(#20132,#20001)
|
||||||
|
literals("y","y",#20132)
|
||||||
|
bind(#20132,#20112)
|
||||||
|
#20133=*
|
||||||
|
stmts(#20133,18,#20001,3,"var bar = x &&= y;")
|
||||||
|
hasLocation(#20133,#20011)
|
||||||
|
stmt_containers(#20133,#20001)
|
||||||
|
#20134=*
|
||||||
|
exprs(#20134,64,#20133,0,"bar = x &&= y")
|
||||||
|
#20135=@"loc,{#10000},4,5,4,17"
|
||||||
|
locations_default(#20135,#10000,4,5,4,17)
|
||||||
|
hasLocation(#20134,#20135)
|
||||||
|
enclosing_stmt(#20134,#20133)
|
||||||
|
expr_containers(#20134,#20001)
|
||||||
|
#20136=*
|
||||||
|
exprs(#20136,78,#20134,0,"bar")
|
||||||
|
hasLocation(#20136,#20059)
|
||||||
|
enclosing_stmt(#20136,#20133)
|
||||||
|
expr_containers(#20136,#20001)
|
||||||
|
literals("bar","bar",#20136)
|
||||||
|
decl(#20136,#20114)
|
||||||
|
#20137=*
|
||||||
|
exprs(#20137,116,#20134,1,"x &&= y")
|
||||||
|
#20138=@"loc,{#10000},4,11,4,17"
|
||||||
|
locations_default(#20138,#10000,4,11,4,17)
|
||||||
|
hasLocation(#20137,#20138)
|
||||||
|
enclosing_stmt(#20137,#20133)
|
||||||
|
expr_containers(#20137,#20001)
|
||||||
|
#20139=*
|
||||||
|
exprs(#20139,79,#20137,0,"x")
|
||||||
|
hasLocation(#20139,#20063)
|
||||||
|
enclosing_stmt(#20139,#20133)
|
||||||
|
expr_containers(#20139,#20001)
|
||||||
|
literals("x","x",#20139)
|
||||||
|
bind(#20139,#20111)
|
||||||
|
#20140=*
|
||||||
|
exprs(#20140,79,#20137,1,"y")
|
||||||
|
hasLocation(#20140,#20067)
|
||||||
|
enclosing_stmt(#20140,#20133)
|
||||||
|
expr_containers(#20140,#20001)
|
||||||
|
literals("y","y",#20140)
|
||||||
|
bind(#20140,#20112)
|
||||||
|
#20141=*
|
||||||
|
stmts(#20141,2,#20001,4,"console.log(x);")
|
||||||
|
#20142=@"loc,{#10000},5,1,5,15"
|
||||||
|
locations_default(#20142,#10000,5,1,5,15)
|
||||||
|
hasLocation(#20141,#20142)
|
||||||
|
stmt_containers(#20141,#20001)
|
||||||
|
#20143=*
|
||||||
|
exprs(#20143,13,#20141,0,"console.log(x)")
|
||||||
|
#20144=@"loc,{#10000},5,1,5,14"
|
||||||
|
locations_default(#20144,#10000,5,1,5,14)
|
||||||
|
hasLocation(#20143,#20144)
|
||||||
|
enclosing_stmt(#20143,#20141)
|
||||||
|
expr_containers(#20143,#20001)
|
||||||
|
#20145=*
|
||||||
|
exprs(#20145,14,#20143,-1,"console.log")
|
||||||
|
#20146=@"loc,{#10000},5,1,5,11"
|
||||||
|
locations_default(#20146,#10000,5,1,5,11)
|
||||||
|
hasLocation(#20145,#20146)
|
||||||
|
enclosing_stmt(#20145,#20141)
|
||||||
|
expr_containers(#20145,#20001)
|
||||||
|
#20147=*
|
||||||
|
exprs(#20147,79,#20145,0,"console")
|
||||||
|
hasLocation(#20147,#20071)
|
||||||
|
enclosing_stmt(#20147,#20141)
|
||||||
|
expr_containers(#20147,#20001)
|
||||||
|
literals("console","console",#20147)
|
||||||
|
#20148=@"var;{console};{#20000}"
|
||||||
|
variables(#20148,"console",#20000)
|
||||||
|
bind(#20147,#20148)
|
||||||
|
#20149=*
|
||||||
|
exprs(#20149,0,#20145,1,"log")
|
||||||
|
hasLocation(#20149,#20075)
|
||||||
|
enclosing_stmt(#20149,#20141)
|
||||||
|
expr_containers(#20149,#20001)
|
||||||
|
literals("log","log",#20149)
|
||||||
|
#20150=*
|
||||||
|
exprs(#20150,79,#20143,0,"x")
|
||||||
|
hasLocation(#20150,#20079)
|
||||||
|
enclosing_stmt(#20150,#20141)
|
||||||
|
expr_containers(#20150,#20001)
|
||||||
|
literals("x","x",#20150)
|
||||||
|
bind(#20150,#20111)
|
||||||
|
#20151=*
|
||||||
|
stmts(#20151,2,#20001,5,"x &&= y;")
|
||||||
|
hasLocation(#20151,#20017)
|
||||||
|
stmt_containers(#20151,#20001)
|
||||||
|
#20152=*
|
||||||
|
exprs(#20152,116,#20151,0,"x &&= y")
|
||||||
|
#20153=@"loc,{#10000},7,1,7,7"
|
||||||
|
locations_default(#20153,#10000,7,1,7,7)
|
||||||
|
hasLocation(#20152,#20153)
|
||||||
|
enclosing_stmt(#20152,#20151)
|
||||||
|
expr_containers(#20152,#20001)
|
||||||
|
#20154=*
|
||||||
|
exprs(#20154,79,#20152,0,"x")
|
||||||
|
hasLocation(#20154,#20085)
|
||||||
|
enclosing_stmt(#20154,#20151)
|
||||||
|
expr_containers(#20154,#20001)
|
||||||
|
literals("x","x",#20154)
|
||||||
|
bind(#20154,#20111)
|
||||||
|
#20155=*
|
||||||
|
exprs(#20155,79,#20152,1,"y")
|
||||||
|
hasLocation(#20155,#20089)
|
||||||
|
enclosing_stmt(#20155,#20151)
|
||||||
|
expr_containers(#20155,#20001)
|
||||||
|
literals("y","y",#20155)
|
||||||
|
bind(#20155,#20112)
|
||||||
|
#20156=*
|
||||||
|
stmts(#20156,2,#20001,6,"x ||= y;")
|
||||||
|
hasLocation(#20156,#20019)
|
||||||
|
stmt_containers(#20156,#20001)
|
||||||
|
#20157=*
|
||||||
|
exprs(#20157,117,#20156,0,"x ||= y")
|
||||||
|
#20158=@"loc,{#10000},8,1,8,7"
|
||||||
|
locations_default(#20158,#10000,8,1,8,7)
|
||||||
|
hasLocation(#20157,#20158)
|
||||||
|
enclosing_stmt(#20157,#20156)
|
||||||
|
expr_containers(#20157,#20001)
|
||||||
|
#20159=*
|
||||||
|
exprs(#20159,79,#20157,0,"x")
|
||||||
|
hasLocation(#20159,#20093)
|
||||||
|
enclosing_stmt(#20159,#20156)
|
||||||
|
expr_containers(#20159,#20001)
|
||||||
|
literals("x","x",#20159)
|
||||||
|
bind(#20159,#20111)
|
||||||
|
#20160=*
|
||||||
|
exprs(#20160,79,#20157,1,"y")
|
||||||
|
hasLocation(#20160,#20097)
|
||||||
|
enclosing_stmt(#20160,#20156)
|
||||||
|
expr_containers(#20160,#20001)
|
||||||
|
literals("y","y",#20160)
|
||||||
|
bind(#20160,#20112)
|
||||||
|
#20161=*
|
||||||
|
stmts(#20161,2,#20001,7,"x ??= y;")
|
||||||
|
hasLocation(#20161,#20021)
|
||||||
|
stmt_containers(#20161,#20001)
|
||||||
|
#20162=*
|
||||||
|
exprs(#20162,118,#20161,0,"x ??= y")
|
||||||
|
#20163=@"loc,{#10000},9,1,9,7"
|
||||||
|
locations_default(#20163,#10000,9,1,9,7)
|
||||||
|
hasLocation(#20162,#20163)
|
||||||
|
enclosing_stmt(#20162,#20161)
|
||||||
|
expr_containers(#20162,#20001)
|
||||||
|
#20164=*
|
||||||
|
exprs(#20164,79,#20162,0,"x")
|
||||||
|
hasLocation(#20164,#20101)
|
||||||
|
enclosing_stmt(#20164,#20161)
|
||||||
|
expr_containers(#20164,#20001)
|
||||||
|
literals("x","x",#20164)
|
||||||
|
bind(#20164,#20111)
|
||||||
|
#20165=*
|
||||||
|
exprs(#20165,79,#20162,1,"y")
|
||||||
|
hasLocation(#20165,#20105)
|
||||||
|
enclosing_stmt(#20165,#20161)
|
||||||
|
expr_containers(#20165,#20001)
|
||||||
|
literals("y","y",#20165)
|
||||||
|
bind(#20165,#20112)
|
||||||
|
#20166=*
|
||||||
|
entry_cfg_node(#20166,#20001)
|
||||||
|
#20167=@"loc,{#10000},1,1,1,0"
|
||||||
|
locations_default(#20167,#10000,1,1,1,0)
|
||||||
|
hasLocation(#20166,#20167)
|
||||||
|
#20168=*
|
||||||
|
exit_cfg_node(#20168,#20001)
|
||||||
|
hasLocation(#20168,#20109)
|
||||||
|
successor(#20161,#20164)
|
||||||
|
successor(#20164,#20165)
|
||||||
|
successor(#20164,#20168)
|
||||||
|
successor(#20165,#20164)
|
||||||
|
successor(#20162,#20168)
|
||||||
|
successor(#20156,#20159)
|
||||||
|
#20169=*
|
||||||
|
guard_node(#20169,1,#20159)
|
||||||
|
hasLocation(#20169,#20093)
|
||||||
|
successor(#20169,#20161)
|
||||||
|
#20170=*
|
||||||
|
guard_node(#20170,0,#20159)
|
||||||
|
hasLocation(#20170,#20093)
|
||||||
|
successor(#20170,#20160)
|
||||||
|
successor(#20159,#20169)
|
||||||
|
successor(#20159,#20170)
|
||||||
|
successor(#20160,#20159)
|
||||||
|
successor(#20157,#20161)
|
||||||
|
successor(#20151,#20154)
|
||||||
|
#20171=*
|
||||||
|
guard_node(#20171,1,#20154)
|
||||||
|
hasLocation(#20171,#20085)
|
||||||
|
successor(#20171,#20155)
|
||||||
|
#20172=*
|
||||||
|
guard_node(#20172,0,#20154)
|
||||||
|
hasLocation(#20172,#20085)
|
||||||
|
successor(#20172,#20156)
|
||||||
|
successor(#20154,#20171)
|
||||||
|
successor(#20154,#20172)
|
||||||
|
successor(#20155,#20154)
|
||||||
|
successor(#20152,#20156)
|
||||||
|
successor(#20141,#20147)
|
||||||
|
successor(#20150,#20143)
|
||||||
|
successor(#20149,#20145)
|
||||||
|
successor(#20147,#20149)
|
||||||
|
successor(#20145,#20150)
|
||||||
|
successor(#20143,#20151)
|
||||||
|
successor(#20133,#20136)
|
||||||
|
#20173=*
|
||||||
|
guard_node(#20173,1,#20139)
|
||||||
|
hasLocation(#20173,#20063)
|
||||||
|
successor(#20173,#20140)
|
||||||
|
#20174=*
|
||||||
|
guard_node(#20174,0,#20139)
|
||||||
|
hasLocation(#20174,#20063)
|
||||||
|
successor(#20174,#20134)
|
||||||
|
successor(#20139,#20173)
|
||||||
|
successor(#20139,#20174)
|
||||||
|
successor(#20140,#20139)
|
||||||
|
successor(#20137,#20134)
|
||||||
|
successor(#20136,#20139)
|
||||||
|
successor(#20134,#20141)
|
||||||
|
successor(#20125,#20128)
|
||||||
|
successor(#20129,#20131)
|
||||||
|
#20175=*
|
||||||
|
guard_node(#20175,1,#20131)
|
||||||
|
hasLocation(#20175,#20049)
|
||||||
|
successor(#20175,#20132)
|
||||||
|
#20176=*
|
||||||
|
guard_node(#20176,0,#20131)
|
||||||
|
hasLocation(#20176,#20049)
|
||||||
|
successor(#20176,#20126)
|
||||||
|
successor(#20131,#20175)
|
||||||
|
successor(#20131,#20176)
|
||||||
|
successor(#20132,#20126)
|
||||||
|
successor(#20128,#20129)
|
||||||
|
successor(#20126,#20133)
|
||||||
|
successor(#20120,#20123)
|
||||||
|
successor(#20124,#20121)
|
||||||
|
successor(#20123,#20124)
|
||||||
|
successor(#20121,#20125)
|
||||||
|
successor(#20115,#20118)
|
||||||
|
successor(#20119,#20116)
|
||||||
|
successor(#20118,#20119)
|
||||||
|
successor(#20116,#20120)
|
||||||
|
successor(#20166,#20115)
|
||||||
|
numlines(#10000,9,8,1)
|
||||||
|
filetype(#10000,"javascript")
|
Загрузка…
Ссылка в новой задаче