mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Ensure interface extends valid expr.
This commit is contained in:
@@ -69,4 +69,9 @@ public class MemberExpression extends Expression
|
||||
public void setSymbol(int symbol) {
|
||||
this.symbol = symbol;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidExpression() {
|
||||
return object instanceof ITypeExpression || object instanceof DynamicImport;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,4 +10,6 @@ import com.semmle.js.ast.Literal;
|
||||
* however, some expressions such as {@link Literal} type may occur in a type annotation because the
|
||||
* TypeScript AST does not distinguish <code>null</code> literals from the <code>null</code> type.
|
||||
*/
|
||||
public interface ITypeExpression extends INode, ITypedAstNode {}
|
||||
public interface ITypeExpression extends INode, ITypedAstNode {
|
||||
public default boolean isValidExpression() { return true; }
|
||||
}
|
||||
|
||||
@@ -1907,7 +1907,7 @@ public class TypeScriptASTConverter {
|
||||
}
|
||||
|
||||
private ITypeExpression asType(Node node) {
|
||||
return node instanceof ITypeExpression ? (ITypeExpression) node : null;
|
||||
return node instanceof ITypeExpression && ((ITypeExpression)node).isValidExpression() ? (ITypeExpression) node : null;
|
||||
}
|
||||
|
||||
private List<ITypeExpression> convertChildrenAsTypes(JsonObject node, String child)
|
||||
|
||||
6
javascript/extractor/tests/ts/input/invalidExtends.ts
Normal file
6
javascript/extractor/tests/ts/input/invalidExtends.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
interface Invalid extends (foo.bar) {}
|
||||
interface Invalid extends (foo).bar {}
|
||||
interface Invalid extends foo[bar] {}
|
||||
interface Invalid extends foo?.bar {}
|
||||
interface Invalid extends foo!.bar {}
|
||||
interface Invalid extends foo() {}
|
||||
451
javascript/extractor/tests/ts/output/trap/invalidExtends.ts.trap
Normal file
451
javascript/extractor/tests/ts/output/trap/invalidExtends.ts.trap
Normal file
@@ -0,0 +1,451 @@
|
||||
#10000=@"/invalidExtends.ts;sourcefile"
|
||||
files(#10000,"/invalidExtends.ts")
|
||||
#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,"interface Invalid extends (foo.bar) {}","
|
||||
")
|
||||
#20003=@"loc,{#10000},1,1,1,38"
|
||||
locations_default(#20003,#10000,1,1,1,38)
|
||||
hasLocation(#20002,#20003)
|
||||
#20004=*
|
||||
lines(#20004,#20001,"interface Invalid extends (foo).bar {}","
|
||||
")
|
||||
#20005=@"loc,{#10000},2,1,2,38"
|
||||
locations_default(#20005,#10000,2,1,2,38)
|
||||
hasLocation(#20004,#20005)
|
||||
#20006=*
|
||||
lines(#20006,#20001,"interface Invalid extends foo[bar] {}","
|
||||
")
|
||||
#20007=@"loc,{#10000},3,1,3,37"
|
||||
locations_default(#20007,#10000,3,1,3,37)
|
||||
hasLocation(#20006,#20007)
|
||||
#20008=*
|
||||
lines(#20008,#20001,"interface Invalid extends foo?.bar {}","
|
||||
")
|
||||
#20009=@"loc,{#10000},4,1,4,37"
|
||||
locations_default(#20009,#10000,4,1,4,37)
|
||||
hasLocation(#20008,#20009)
|
||||
#20010=*
|
||||
lines(#20010,#20001,"interface Invalid extends foo!.bar {}","
|
||||
")
|
||||
#20011=@"loc,{#10000},5,1,5,37"
|
||||
locations_default(#20011,#10000,5,1,5,37)
|
||||
hasLocation(#20010,#20011)
|
||||
#20012=*
|
||||
lines(#20012,#20001,"interface Invalid extends foo() {}","
|
||||
")
|
||||
#20013=@"loc,{#10000},6,1,6,34"
|
||||
locations_default(#20013,#10000,6,1,6,34)
|
||||
hasLocation(#20012,#20013)
|
||||
numlines(#20001,6,6,0)
|
||||
#20014=*
|
||||
tokeninfo(#20014,7,#20001,0,"interface")
|
||||
#20015=@"loc,{#10000},1,1,1,9"
|
||||
locations_default(#20015,#10000,1,1,1,9)
|
||||
hasLocation(#20014,#20015)
|
||||
#20016=*
|
||||
tokeninfo(#20016,6,#20001,1,"Invalid")
|
||||
#20017=@"loc,{#10000},1,11,1,17"
|
||||
locations_default(#20017,#10000,1,11,1,17)
|
||||
hasLocation(#20016,#20017)
|
||||
#20018=*
|
||||
tokeninfo(#20018,7,#20001,2,"extends")
|
||||
#20019=@"loc,{#10000},1,19,1,25"
|
||||
locations_default(#20019,#10000,1,19,1,25)
|
||||
hasLocation(#20018,#20019)
|
||||
#20020=*
|
||||
tokeninfo(#20020,8,#20001,3,"(")
|
||||
#20021=@"loc,{#10000},1,27,1,27"
|
||||
locations_default(#20021,#10000,1,27,1,27)
|
||||
hasLocation(#20020,#20021)
|
||||
#20022=*
|
||||
tokeninfo(#20022,6,#20001,4,"foo")
|
||||
#20023=@"loc,{#10000},1,28,1,30"
|
||||
locations_default(#20023,#10000,1,28,1,30)
|
||||
hasLocation(#20022,#20023)
|
||||
#20024=*
|
||||
tokeninfo(#20024,8,#20001,5,".")
|
||||
#20025=@"loc,{#10000},1,31,1,31"
|
||||
locations_default(#20025,#10000,1,31,1,31)
|
||||
hasLocation(#20024,#20025)
|
||||
#20026=*
|
||||
tokeninfo(#20026,6,#20001,6,"bar")
|
||||
#20027=@"loc,{#10000},1,32,1,34"
|
||||
locations_default(#20027,#10000,1,32,1,34)
|
||||
hasLocation(#20026,#20027)
|
||||
#20028=*
|
||||
tokeninfo(#20028,8,#20001,7,")")
|
||||
#20029=@"loc,{#10000},1,35,1,35"
|
||||
locations_default(#20029,#10000,1,35,1,35)
|
||||
hasLocation(#20028,#20029)
|
||||
#20030=*
|
||||
tokeninfo(#20030,8,#20001,8,"{")
|
||||
#20031=@"loc,{#10000},1,37,1,37"
|
||||
locations_default(#20031,#10000,1,37,1,37)
|
||||
hasLocation(#20030,#20031)
|
||||
#20032=*
|
||||
tokeninfo(#20032,8,#20001,9,"}")
|
||||
#20033=@"loc,{#10000},1,38,1,38"
|
||||
locations_default(#20033,#10000,1,38,1,38)
|
||||
hasLocation(#20032,#20033)
|
||||
#20034=*
|
||||
tokeninfo(#20034,7,#20001,10,"interface")
|
||||
#20035=@"loc,{#10000},2,1,2,9"
|
||||
locations_default(#20035,#10000,2,1,2,9)
|
||||
hasLocation(#20034,#20035)
|
||||
#20036=*
|
||||
tokeninfo(#20036,6,#20001,11,"Invalid")
|
||||
#20037=@"loc,{#10000},2,11,2,17"
|
||||
locations_default(#20037,#10000,2,11,2,17)
|
||||
hasLocation(#20036,#20037)
|
||||
#20038=*
|
||||
tokeninfo(#20038,7,#20001,12,"extends")
|
||||
#20039=@"loc,{#10000},2,19,2,25"
|
||||
locations_default(#20039,#10000,2,19,2,25)
|
||||
hasLocation(#20038,#20039)
|
||||
#20040=*
|
||||
tokeninfo(#20040,8,#20001,13,"(")
|
||||
#20041=@"loc,{#10000},2,27,2,27"
|
||||
locations_default(#20041,#10000,2,27,2,27)
|
||||
hasLocation(#20040,#20041)
|
||||
#20042=*
|
||||
tokeninfo(#20042,6,#20001,14,"foo")
|
||||
#20043=@"loc,{#10000},2,28,2,30"
|
||||
locations_default(#20043,#10000,2,28,2,30)
|
||||
hasLocation(#20042,#20043)
|
||||
#20044=*
|
||||
tokeninfo(#20044,8,#20001,15,")")
|
||||
#20045=@"loc,{#10000},2,31,2,31"
|
||||
locations_default(#20045,#10000,2,31,2,31)
|
||||
hasLocation(#20044,#20045)
|
||||
#20046=*
|
||||
tokeninfo(#20046,8,#20001,16,".")
|
||||
#20047=@"loc,{#10000},2,32,2,32"
|
||||
locations_default(#20047,#10000,2,32,2,32)
|
||||
hasLocation(#20046,#20047)
|
||||
#20048=*
|
||||
tokeninfo(#20048,6,#20001,17,"bar")
|
||||
#20049=@"loc,{#10000},2,33,2,35"
|
||||
locations_default(#20049,#10000,2,33,2,35)
|
||||
hasLocation(#20048,#20049)
|
||||
#20050=*
|
||||
tokeninfo(#20050,8,#20001,18,"{")
|
||||
#20051=@"loc,{#10000},2,37,2,37"
|
||||
locations_default(#20051,#10000,2,37,2,37)
|
||||
hasLocation(#20050,#20051)
|
||||
#20052=*
|
||||
tokeninfo(#20052,8,#20001,19,"}")
|
||||
#20053=@"loc,{#10000},2,38,2,38"
|
||||
locations_default(#20053,#10000,2,38,2,38)
|
||||
hasLocation(#20052,#20053)
|
||||
#20054=*
|
||||
tokeninfo(#20054,7,#20001,20,"interface")
|
||||
#20055=@"loc,{#10000},3,1,3,9"
|
||||
locations_default(#20055,#10000,3,1,3,9)
|
||||
hasLocation(#20054,#20055)
|
||||
#20056=*
|
||||
tokeninfo(#20056,6,#20001,21,"Invalid")
|
||||
#20057=@"loc,{#10000},3,11,3,17"
|
||||
locations_default(#20057,#10000,3,11,3,17)
|
||||
hasLocation(#20056,#20057)
|
||||
#20058=*
|
||||
tokeninfo(#20058,7,#20001,22,"extends")
|
||||
#20059=@"loc,{#10000},3,19,3,25"
|
||||
locations_default(#20059,#10000,3,19,3,25)
|
||||
hasLocation(#20058,#20059)
|
||||
#20060=*
|
||||
tokeninfo(#20060,6,#20001,23,"foo")
|
||||
#20061=@"loc,{#10000},3,27,3,29"
|
||||
locations_default(#20061,#10000,3,27,3,29)
|
||||
hasLocation(#20060,#20061)
|
||||
#20062=*
|
||||
tokeninfo(#20062,8,#20001,24,"[")
|
||||
#20063=@"loc,{#10000},3,30,3,30"
|
||||
locations_default(#20063,#10000,3,30,3,30)
|
||||
hasLocation(#20062,#20063)
|
||||
#20064=*
|
||||
tokeninfo(#20064,6,#20001,25,"bar")
|
||||
#20065=@"loc,{#10000},3,31,3,33"
|
||||
locations_default(#20065,#10000,3,31,3,33)
|
||||
hasLocation(#20064,#20065)
|
||||
#20066=*
|
||||
tokeninfo(#20066,8,#20001,26,"]")
|
||||
#20067=@"loc,{#10000},3,34,3,34"
|
||||
locations_default(#20067,#10000,3,34,3,34)
|
||||
hasLocation(#20066,#20067)
|
||||
#20068=*
|
||||
tokeninfo(#20068,8,#20001,27,"{")
|
||||
#20069=@"loc,{#10000},3,36,3,36"
|
||||
locations_default(#20069,#10000,3,36,3,36)
|
||||
hasLocation(#20068,#20069)
|
||||
#20070=*
|
||||
tokeninfo(#20070,8,#20001,28,"}")
|
||||
#20071=@"loc,{#10000},3,37,3,37"
|
||||
locations_default(#20071,#10000,3,37,3,37)
|
||||
hasLocation(#20070,#20071)
|
||||
#20072=*
|
||||
tokeninfo(#20072,7,#20001,29,"interface")
|
||||
#20073=@"loc,{#10000},4,1,4,9"
|
||||
locations_default(#20073,#10000,4,1,4,9)
|
||||
hasLocation(#20072,#20073)
|
||||
#20074=*
|
||||
tokeninfo(#20074,6,#20001,30,"Invalid")
|
||||
#20075=@"loc,{#10000},4,11,4,17"
|
||||
locations_default(#20075,#10000,4,11,4,17)
|
||||
hasLocation(#20074,#20075)
|
||||
#20076=*
|
||||
tokeninfo(#20076,7,#20001,31,"extends")
|
||||
#20077=@"loc,{#10000},4,19,4,25"
|
||||
locations_default(#20077,#10000,4,19,4,25)
|
||||
hasLocation(#20076,#20077)
|
||||
#20078=*
|
||||
tokeninfo(#20078,6,#20001,32,"foo")
|
||||
#20079=@"loc,{#10000},4,27,4,29"
|
||||
locations_default(#20079,#10000,4,27,4,29)
|
||||
hasLocation(#20078,#20079)
|
||||
#20080=*
|
||||
tokeninfo(#20080,8,#20001,33,"?.")
|
||||
#20081=@"loc,{#10000},4,30,4,31"
|
||||
locations_default(#20081,#10000,4,30,4,31)
|
||||
hasLocation(#20080,#20081)
|
||||
#20082=*
|
||||
tokeninfo(#20082,6,#20001,34,"bar")
|
||||
#20083=@"loc,{#10000},4,32,4,34"
|
||||
locations_default(#20083,#10000,4,32,4,34)
|
||||
hasLocation(#20082,#20083)
|
||||
#20084=*
|
||||
tokeninfo(#20084,8,#20001,35,"{")
|
||||
#20085=@"loc,{#10000},4,36,4,36"
|
||||
locations_default(#20085,#10000,4,36,4,36)
|
||||
hasLocation(#20084,#20085)
|
||||
#20086=*
|
||||
tokeninfo(#20086,8,#20001,36,"}")
|
||||
#20087=@"loc,{#10000},4,37,4,37"
|
||||
locations_default(#20087,#10000,4,37,4,37)
|
||||
hasLocation(#20086,#20087)
|
||||
#20088=*
|
||||
tokeninfo(#20088,7,#20001,37,"interface")
|
||||
#20089=@"loc,{#10000},5,1,5,9"
|
||||
locations_default(#20089,#10000,5,1,5,9)
|
||||
hasLocation(#20088,#20089)
|
||||
#20090=*
|
||||
tokeninfo(#20090,6,#20001,38,"Invalid")
|
||||
#20091=@"loc,{#10000},5,11,5,17"
|
||||
locations_default(#20091,#10000,5,11,5,17)
|
||||
hasLocation(#20090,#20091)
|
||||
#20092=*
|
||||
tokeninfo(#20092,7,#20001,39,"extends")
|
||||
#20093=@"loc,{#10000},5,19,5,25"
|
||||
locations_default(#20093,#10000,5,19,5,25)
|
||||
hasLocation(#20092,#20093)
|
||||
#20094=*
|
||||
tokeninfo(#20094,6,#20001,40,"foo")
|
||||
#20095=@"loc,{#10000},5,27,5,29"
|
||||
locations_default(#20095,#10000,5,27,5,29)
|
||||
hasLocation(#20094,#20095)
|
||||
#20096=*
|
||||
tokeninfo(#20096,8,#20001,41,"!")
|
||||
#20097=@"loc,{#10000},5,30,5,30"
|
||||
locations_default(#20097,#10000,5,30,5,30)
|
||||
hasLocation(#20096,#20097)
|
||||
#20098=*
|
||||
tokeninfo(#20098,8,#20001,42,".")
|
||||
#20099=@"loc,{#10000},5,31,5,31"
|
||||
locations_default(#20099,#10000,5,31,5,31)
|
||||
hasLocation(#20098,#20099)
|
||||
#20100=*
|
||||
tokeninfo(#20100,6,#20001,43,"bar")
|
||||
#20101=@"loc,{#10000},5,32,5,34"
|
||||
locations_default(#20101,#10000,5,32,5,34)
|
||||
hasLocation(#20100,#20101)
|
||||
#20102=*
|
||||
tokeninfo(#20102,8,#20001,44,"{")
|
||||
#20103=@"loc,{#10000},5,36,5,36"
|
||||
locations_default(#20103,#10000,5,36,5,36)
|
||||
hasLocation(#20102,#20103)
|
||||
#20104=*
|
||||
tokeninfo(#20104,8,#20001,45,"}")
|
||||
#20105=@"loc,{#10000},5,37,5,37"
|
||||
locations_default(#20105,#10000,5,37,5,37)
|
||||
hasLocation(#20104,#20105)
|
||||
#20106=*
|
||||
tokeninfo(#20106,7,#20001,46,"interface")
|
||||
#20107=@"loc,{#10000},6,1,6,9"
|
||||
locations_default(#20107,#10000,6,1,6,9)
|
||||
hasLocation(#20106,#20107)
|
||||
#20108=*
|
||||
tokeninfo(#20108,6,#20001,47,"Invalid")
|
||||
#20109=@"loc,{#10000},6,11,6,17"
|
||||
locations_default(#20109,#10000,6,11,6,17)
|
||||
hasLocation(#20108,#20109)
|
||||
#20110=*
|
||||
tokeninfo(#20110,7,#20001,48,"extends")
|
||||
#20111=@"loc,{#10000},6,19,6,25"
|
||||
locations_default(#20111,#10000,6,19,6,25)
|
||||
hasLocation(#20110,#20111)
|
||||
#20112=*
|
||||
tokeninfo(#20112,6,#20001,49,"foo")
|
||||
#20113=@"loc,{#10000},6,27,6,29"
|
||||
locations_default(#20113,#10000,6,27,6,29)
|
||||
hasLocation(#20112,#20113)
|
||||
#20114=*
|
||||
tokeninfo(#20114,8,#20001,50,"(")
|
||||
#20115=@"loc,{#10000},6,30,6,30"
|
||||
locations_default(#20115,#10000,6,30,6,30)
|
||||
hasLocation(#20114,#20115)
|
||||
#20116=*
|
||||
tokeninfo(#20116,8,#20001,51,")")
|
||||
#20117=@"loc,{#10000},6,31,6,31"
|
||||
locations_default(#20117,#10000,6,31,6,31)
|
||||
hasLocation(#20116,#20117)
|
||||
#20118=*
|
||||
tokeninfo(#20118,8,#20001,52,"{")
|
||||
#20119=@"loc,{#10000},6,33,6,33"
|
||||
locations_default(#20119,#10000,6,33,6,33)
|
||||
hasLocation(#20118,#20119)
|
||||
#20120=*
|
||||
tokeninfo(#20120,8,#20001,53,"}")
|
||||
#20121=@"loc,{#10000},6,34,6,34"
|
||||
locations_default(#20121,#10000,6,34,6,34)
|
||||
hasLocation(#20120,#20121)
|
||||
#20122=*
|
||||
tokeninfo(#20122,0,#20001,54,"")
|
||||
#20123=@"loc,{#10000},7,1,7,0"
|
||||
locations_default(#20123,#10000,7,1,7,0)
|
||||
hasLocation(#20122,#20123)
|
||||
toplevels(#20001,0)
|
||||
#20124=@"loc,{#10000},1,1,7,0"
|
||||
locations_default(#20124,#10000,1,1,7,0)
|
||||
hasLocation(#20001,#20124)
|
||||
#20125=@"local_type_name;{Invalid};{#20000}"
|
||||
local_type_names(#20125,"Invalid",#20000)
|
||||
#20126=*
|
||||
stmts(#20126,34,#20001,0,"interfa ... bar) {}")
|
||||
hasLocation(#20126,#20003)
|
||||
stmt_containers(#20126,#20001)
|
||||
#20127=*
|
||||
typeexprs(#20127,1,#20126,0,"Invalid")
|
||||
hasLocation(#20127,#20017)
|
||||
enclosing_stmt(#20127,#20126)
|
||||
expr_containers(#20127,#20001)
|
||||
literals("Invalid","Invalid",#20127)
|
||||
typedecl(#20127,#20125)
|
||||
#20128=*
|
||||
stmts(#20128,34,#20001,1,"interfa ... .bar {}")
|
||||
hasLocation(#20128,#20005)
|
||||
stmt_containers(#20128,#20001)
|
||||
#20129=*
|
||||
typeexprs(#20129,1,#20128,0,"Invalid")
|
||||
hasLocation(#20129,#20037)
|
||||
enclosing_stmt(#20129,#20128)
|
||||
expr_containers(#20129,#20001)
|
||||
literals("Invalid","Invalid",#20129)
|
||||
typedecl(#20129,#20125)
|
||||
#20130=*
|
||||
stmts(#20130,34,#20001,2,"interfa ... bar] {}")
|
||||
hasLocation(#20130,#20007)
|
||||
stmt_containers(#20130,#20001)
|
||||
#20131=*
|
||||
typeexprs(#20131,13,#20130,-1,"foo[bar]")
|
||||
#20132=@"loc,{#10000},3,27,3,34"
|
||||
locations_default(#20132,#10000,3,27,3,34)
|
||||
hasLocation(#20131,#20132)
|
||||
enclosing_stmt(#20131,#20130)
|
||||
expr_containers(#20131,#20001)
|
||||
#20133=*
|
||||
typeexprs(#20133,25,#20131,0,"foo")
|
||||
hasLocation(#20133,#20061)
|
||||
enclosing_stmt(#20133,#20130)
|
||||
expr_containers(#20133,#20001)
|
||||
literals("foo","foo",#20133)
|
||||
#20134=*
|
||||
typeexprs(#20134,15,#20131,1,"bar")
|
||||
hasLocation(#20134,#20065)
|
||||
enclosing_stmt(#20134,#20130)
|
||||
expr_containers(#20134,#20001)
|
||||
literals("bar","bar",#20134)
|
||||
#20135=*
|
||||
typeexprs(#20135,1,#20130,0,"Invalid")
|
||||
hasLocation(#20135,#20057)
|
||||
enclosing_stmt(#20135,#20130)
|
||||
expr_containers(#20135,#20001)
|
||||
literals("Invalid","Invalid",#20135)
|
||||
typedecl(#20135,#20125)
|
||||
#20136=*
|
||||
stmts(#20136,34,#20001,3,"interfa ... .bar {}")
|
||||
hasLocation(#20136,#20009)
|
||||
stmt_containers(#20136,#20001)
|
||||
#20137=*
|
||||
typeexprs(#20137,13,#20136,-1,"foo?.bar")
|
||||
#20138=@"loc,{#10000},4,27,4,34"
|
||||
locations_default(#20138,#10000,4,27,4,34)
|
||||
hasLocation(#20137,#20138)
|
||||
enclosing_stmt(#20137,#20136)
|
||||
expr_containers(#20137,#20001)
|
||||
#20139=*
|
||||
typeexprs(#20139,25,#20137,0,"foo")
|
||||
hasLocation(#20139,#20079)
|
||||
enclosing_stmt(#20139,#20136)
|
||||
expr_containers(#20139,#20001)
|
||||
literals("foo","foo",#20139)
|
||||
#20140=*
|
||||
typeexprs(#20140,15,#20137,1,"bar")
|
||||
hasLocation(#20140,#20083)
|
||||
enclosing_stmt(#20140,#20136)
|
||||
expr_containers(#20140,#20001)
|
||||
literals("bar","bar",#20140)
|
||||
isOptionalChaining(#20137)
|
||||
#20141=*
|
||||
typeexprs(#20141,1,#20136,0,"Invalid")
|
||||
hasLocation(#20141,#20075)
|
||||
enclosing_stmt(#20141,#20136)
|
||||
expr_containers(#20141,#20001)
|
||||
literals("Invalid","Invalid",#20141)
|
||||
typedecl(#20141,#20125)
|
||||
#20142=*
|
||||
stmts(#20142,34,#20001,4,"interfa ... .bar {}")
|
||||
hasLocation(#20142,#20011)
|
||||
stmt_containers(#20142,#20001)
|
||||
#20143=*
|
||||
typeexprs(#20143,1,#20142,0,"Invalid")
|
||||
hasLocation(#20143,#20091)
|
||||
enclosing_stmt(#20143,#20142)
|
||||
expr_containers(#20143,#20001)
|
||||
literals("Invalid","Invalid",#20143)
|
||||
typedecl(#20143,#20125)
|
||||
#20144=*
|
||||
stmts(#20144,34,#20001,5,"interfa ... oo() {}")
|
||||
hasLocation(#20144,#20013)
|
||||
stmt_containers(#20144,#20001)
|
||||
#20145=*
|
||||
typeexprs(#20145,1,#20144,0,"Invalid")
|
||||
hasLocation(#20145,#20109)
|
||||
enclosing_stmt(#20145,#20144)
|
||||
expr_containers(#20145,#20001)
|
||||
literals("Invalid","Invalid",#20145)
|
||||
typedecl(#20145,#20125)
|
||||
#20146=*
|
||||
entry_cfg_node(#20146,#20001)
|
||||
#20147=@"loc,{#10000},1,1,1,0"
|
||||
locations_default(#20147,#10000,1,1,1,0)
|
||||
hasLocation(#20146,#20147)
|
||||
#20148=*
|
||||
exit_cfg_node(#20148,#20001)
|
||||
hasLocation(#20148,#20123)
|
||||
successor(#20144,#20148)
|
||||
successor(#20142,#20144)
|
||||
successor(#20136,#20142)
|
||||
successor(#20130,#20136)
|
||||
successor(#20128,#20130)
|
||||
successor(#20126,#20128)
|
||||
successor(#20146,#20126)
|
||||
numlines(#10000,6,6,0)
|
||||
filetype(#10000,"typescript")
|
||||
Reference in New Issue
Block a user