Merge pull request #720 from esben-semmle/js/more-flow-parsing

Approved by xiemaisi
This commit is contained in:
semmle-qlci
2019-01-14 07:58:28 +00:00
committed by GitHub
28 changed files with 3466 additions and 196 deletions

View File

@@ -1744,6 +1744,10 @@ public class Parser {
if (isOnOptionalChain(false, callee))
this.raise(callee, "An optional chain may not be used in a `new` expression.");
return parseNewArguments(startLoc, callee);
}
protected Expression parseNewArguments(Position startLoc, Expression callee) {
List<Expression> arguments;
if (this.eat(TokenType.parenL))
arguments = this.parseExprList(TokenType.parenR, this.options.ecmaVersion() >= 8, false, null);

View File

@@ -15,19 +15,24 @@ import com.semmle.jcorn.SyntaxError;
import com.semmle.jcorn.TokenType;
import com.semmle.jcorn.TokenType.Properties;
import com.semmle.jcorn.Whitespace;
import com.semmle.js.ast.BinaryExpression;
import com.semmle.js.ast.ExportDeclaration;
import com.semmle.js.ast.ExportSpecifier;
import com.semmle.js.ast.Expression;
import com.semmle.js.ast.ExpressionStatement;
import com.semmle.js.ast.FieldDefinition;
import com.semmle.js.ast.Identifier;
import com.semmle.js.ast.ImportDeclaration;
import com.semmle.js.ast.ImportSpecifier;
import com.semmle.js.ast.Literal;
import com.semmle.js.ast.MethodDefinition;
import com.semmle.js.ast.Node;
import com.semmle.js.ast.Position;
import com.semmle.js.ast.SourceLocation;
import com.semmle.js.ast.Statement;
import com.semmle.js.ast.Token;
import com.semmle.js.ast.UnaryExpression;
import com.semmle.util.data.Pair;
import com.semmle.util.exception.Exceptions;
/**
@@ -226,30 +231,21 @@ public class FlowParser extends ESNextParser {
this.expect(TokenType.braceL);
while (this.type != TokenType.braceR) {
Position stmtStart = startLoc;
if (this.eat(TokenType._import)) {
this.flowParseDeclareImport(stmtStart);
} else {
// todo: declare check
this.next();
if (this.eatContextual("declare")) {
this.flowParseDeclare(stmtStart);
} else if (this.eat(TokenType._import)) {
if (peekAtSpecialFlowImportSpecifier() == null) {
this.raise(stmtStart,
"Imports within a `declare module` body must always be `import type` or `import typeof`.");
}
this.parseImportRest(new SourceLocation(stmtStart));
} else {
unexpected();
}
}
this.expect(TokenType.braceR);
}
private void flowParseDeclareImport(Position stmtStart) {
String kind = flowParseImportSpecifiers();
if (kind == null) {
this.raise(stmtStart, "Imports within a `declare module` body must always be `import type` or `import typeof`.");
}
this.expect(TokenType.name);
this.expectContextual("from");
this.expect(TokenType.string);
this.semicolon();
}
private void flowParseDeclareModuleExports() {
this.expectContextual("module");
this.expect(TokenType.dot);
@@ -919,6 +915,11 @@ public class FlowParser extends ESNextParser {
List<ExportSpecifier> specifiers = this.parseExportSpecifiers(exports);
this.parseExportFrom(specifiers, null, false);
return null;
} else if (this.eat(TokenType.star)) {
if (this.eatContextual("as"))
this.parseIdent(true);
this.parseExportFrom(null, null, true);
return null;
} else {
// `export type Foo = Bar;`
this.flowParseTypeAlias(startLoc);
@@ -1004,12 +1005,7 @@ public class FlowParser extends ESNextParser {
}
private String flowParseImportSpecifiers() {
String kind = null;
if (this.type == TokenType._typeof) {
kind = "typeof";
} else if (this.isContextual("type")) {
kind = "type";
}
String kind = peekAtSpecialFlowImportSpecifier();
if (kind != null) {
String lh = lookahead(4);
if (!lh.isEmpty()) {
@@ -1022,6 +1018,16 @@ public class FlowParser extends ESNextParser {
return kind;
}
private String peekAtSpecialFlowImportSpecifier() {
String kind = null;
if (this.type == TokenType._typeof) {
kind = "typeof";
} else if (this.isContextual("type")) {
kind = "type";
}
return kind;
}
@Override
protected List<ImportSpecifier> parseImportSpecifiers() {
String kind = null;
@@ -1037,7 +1043,7 @@ public class FlowParser extends ESNextParser {
@Override
protected ImportSpecifier parseImportSpecifier() {
if (this.type == TokenType._typeof || this.isContextual("type")) {
if (peekAtSpecialFlowImportSpecifier() != null) {
String lh = lookahead(2);
if (lh.charAt(0) == ',' || lh.charAt(0) == '}' || lh.equals("as"))
return super.parseImportSpecifier();
@@ -1201,4 +1207,43 @@ public class FlowParser extends ESNextParser {
return super.atGetterSetterName(pi);
}
@Override
protected Pair<Expression, Boolean> parseSubscript(final Expression base, Position startLoc, boolean noCalls) {
if (!noCalls) {
maybeFlowParseTypeParameterInstantiation(base, true);
}
return super.parseSubscript(base, startLoc, noCalls);
}
private void maybeFlowParseTypeParameterInstantiation(Expression left, boolean requireParenL) {
if (flow() && this.isRelational("<")) {
// Ambiguous case: `e1<e2>(e3)` is parsed differently as JS and Flow code:
// JS: two relational comparisons: `e1 < e2 > e3`
// Flow: a call `e1(e3)` with explicit type parameter `e2`
// Heuristic: if the left operand of the `<` token is a primitive from a literal or unary/binary expression, then it probably isn't a call, as that would always crash
left = left.stripParens();
if (left instanceof Literal || left instanceof UnaryExpression || left instanceof BinaryExpression)
return;
// If it can be parsed as Flow, we use that, otherwise we parse it as JS
State backup = new State();
try {
this.flowParseTypeParameterInstantiation();
if (requireParenL && this.type != TokenType.parenL) {
unexpected();
}
backup.commit();
} catch (SyntaxError e) {
Exceptions.ignore(e, "Backtracking parser.");
backup.reset();
}
}
}
@Override
protected Expression parseNewArguments(Position startLoc, Expression callee) {
maybeFlowParseTypeParameterInstantiation(callee, false /* case: new e1<e2>e3 */);
return super.parseNewArguments(startLoc, callee);
}
}

View File

@@ -41,7 +41,7 @@ public class Main {
* such a way that it may produce different tuples for the same file under the same
* {@link ExtractorConfig}.
*/
public static final String EXTRACTOR_VERSION = "2018-12-19";
public static final String EXTRACTOR_VERSION = "2019-09-01";
public static final Pattern NEWLINE = Pattern.compile("\n");

View File

@@ -0,0 +1 @@
var b = ::o.m<T>;

View File

@@ -2,3 +2,4 @@ declare export var foo : boolean;
declare export default typeof simpleTextBuffer$TextBuffer;
declare export default marked$Marked;
declare export type ProcessEnv = { };
declare module "foo" { declare export type * from "bar"; }

View File

@@ -0,0 +1,12 @@
new K1<T1>();
f1<T2>();
const f2 = function*(): T3<T4> {
yield* f3<T5>(x);
}
f4<T6>(v1);
f5<_,_,_>();
f6<
|T7
|T8
|T9
>();

View File

@@ -0,0 +1,5 @@
export { a } from "m";
export * from "m";
export type { b } from "m";
export type * from "m";
export type * as fooTypes from "foo";

View File

@@ -0,0 +1,7 @@
declare module "m1" {
import {
T1,
T2
} from "m2"
}

View File

@@ -1,2 +1,3 @@
import { type, type t1, typeof t2 } from 'm';
import { type t } from 'n';
import type { t } from 'o';

View File

@@ -0,0 +1,11 @@
declare module "m1" {
import type {
T1,
T2
} from "m2"
import typeof {
T3,
T4
} from "m3"
}

View File

@@ -0,0 +1 @@
1<2>(3);

View File

@@ -0,0 +1 @@
f<g()>(h());

View File

@@ -0,0 +1 @@
/x/<2>(3);

View File

@@ -0,0 +1,3 @@
if(!(0<(jd|0)&0>(Wc|0))){}
g=(g|0)<(e|0)|(g|0)>(b|0)?e:g;
if((I|0)<(D|0)|(N|0)>(P|0)|(M|0)<(F|0)|(L|0)>(H|0)){}

View File

@@ -0,0 +1,28 @@
#10000=@"/boundExplicitTypeParameters.js;sourcefile"
files(#10000,"/boundExplicitTypeParameters.js","boundExplicitTypeParameters","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,1"
locations_default(#20002,#10000,1,1,1,1)
hasLocation(#20001,#20002)
#20003=*
jsParseErrors(#20003,#20001,"Error: Unexpected token","var b = ::o.m<T>;")
#20004=@"loc,{#10000},1,17,1,17"
locations_default(#20004,#10000,1,17,1,17)
hasLocation(#20003,#20004)
#20005=*
lines(#20005,#20001,"var b = ::o.m<T>;","")
#20006=@"loc,{#10000},1,1,1,17"
locations_default(#20006,#10000,1,1,1,17)
hasLocation(#20005,#20006)
numlines(#20001,1,0,0)
numlines(#10000,1,0,0)
filetype(#10000,"javascript")

View File

@@ -10,8 +10,8 @@ hasLocation(#10000,#10002)
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,5,0"
locations_default(#20002,#10000,1,1,5,0)
#20002=@"loc,{#10000},1,1,5,58"
locations_default(#20002,#10000,1,1,5,58)
hasLocation(#20001,#20002)
#20003=*
lines(#20003,#20001,"declare export var foo : boolean;","
@@ -37,150 +37,215 @@ lines(#20009,#20001,"declare export type ProcessEnv = { };","
#20010=@"loc,{#10000},4,1,4,37"
locations_default(#20010,#10000,4,1,4,37)
hasLocation(#20009,#20010)
numlines(#20001,4,4,0)
#20011=*
tokeninfo(#20011,6,#20001,0,"declare")
#20012=@"loc,{#10000},1,1,1,7"
locations_default(#20012,#10000,1,1,1,7)
lines(#20011,#20001,"declare module ""foo"" { declare export type * from ""bar""; }","")
#20012=@"loc,{#10000},5,1,5,58"
locations_default(#20012,#10000,5,1,5,58)
hasLocation(#20011,#20012)
numlines(#20001,5,5,0)
#20013=*
tokeninfo(#20013,7,#20001,1,"export")
#20014=@"loc,{#10000},1,9,1,14"
locations_default(#20014,#10000,1,9,1,14)
tokeninfo(#20013,6,#20001,0,"declare")
#20014=@"loc,{#10000},1,1,1,7"
locations_default(#20014,#10000,1,1,1,7)
hasLocation(#20013,#20014)
#20015=*
tokeninfo(#20015,7,#20001,2,"var")
#20016=@"loc,{#10000},1,16,1,18"
locations_default(#20016,#10000,1,16,1,18)
tokeninfo(#20015,7,#20001,1,"export")
#20016=@"loc,{#10000},1,9,1,14"
locations_default(#20016,#10000,1,9,1,14)
hasLocation(#20015,#20016)
#20017=*
tokeninfo(#20017,6,#20001,3,"foo")
#20018=@"loc,{#10000},1,20,1,22"
locations_default(#20018,#10000,1,20,1,22)
tokeninfo(#20017,7,#20001,2,"var")
#20018=@"loc,{#10000},1,16,1,18"
locations_default(#20018,#10000,1,16,1,18)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,8,#20001,4,":")
#20020=@"loc,{#10000},1,24,1,24"
locations_default(#20020,#10000,1,24,1,24)
tokeninfo(#20019,6,#20001,3,"foo")
#20020=@"loc,{#10000},1,20,1,22"
locations_default(#20020,#10000,1,20,1,22)
hasLocation(#20019,#20020)
#20021=*
tokeninfo(#20021,6,#20001,5,"boolean")
#20022=@"loc,{#10000},1,26,1,32"
locations_default(#20022,#10000,1,26,1,32)
tokeninfo(#20021,8,#20001,4,":")
#20022=@"loc,{#10000},1,24,1,24"
locations_default(#20022,#10000,1,24,1,24)
hasLocation(#20021,#20022)
#20023=*
tokeninfo(#20023,8,#20001,6,";")
#20024=@"loc,{#10000},1,33,1,33"
locations_default(#20024,#10000,1,33,1,33)
tokeninfo(#20023,6,#20001,5,"boolean")
#20024=@"loc,{#10000},1,26,1,32"
locations_default(#20024,#10000,1,26,1,32)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,6,#20001,7,"declare")
#20026=@"loc,{#10000},2,1,2,7"
locations_default(#20026,#10000,2,1,2,7)
tokeninfo(#20025,8,#20001,6,";")
#20026=@"loc,{#10000},1,33,1,33"
locations_default(#20026,#10000,1,33,1,33)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,7,#20001,8,"export")
#20028=@"loc,{#10000},2,9,2,14"
locations_default(#20028,#10000,2,9,2,14)
tokeninfo(#20027,6,#20001,7,"declare")
#20028=@"loc,{#10000},2,1,2,7"
locations_default(#20028,#10000,2,1,2,7)
hasLocation(#20027,#20028)
#20029=*
tokeninfo(#20029,7,#20001,9,"default")
#20030=@"loc,{#10000},2,16,2,22"
locations_default(#20030,#10000,2,16,2,22)
tokeninfo(#20029,7,#20001,8,"export")
#20030=@"loc,{#10000},2,9,2,14"
locations_default(#20030,#10000,2,9,2,14)
hasLocation(#20029,#20030)
#20031=*
tokeninfo(#20031,7,#20001,10,"typeof")
#20032=@"loc,{#10000},2,24,2,29"
locations_default(#20032,#10000,2,24,2,29)
tokeninfo(#20031,7,#20001,9,"default")
#20032=@"loc,{#10000},2,16,2,22"
locations_default(#20032,#10000,2,16,2,22)
hasLocation(#20031,#20032)
#20033=*
tokeninfo(#20033,6,#20001,11,"simpleTextBuffer$TextBuffer")
#20034=@"loc,{#10000},2,31,2,57"
locations_default(#20034,#10000,2,31,2,57)
tokeninfo(#20033,7,#20001,10,"typeof")
#20034=@"loc,{#10000},2,24,2,29"
locations_default(#20034,#10000,2,24,2,29)
hasLocation(#20033,#20034)
#20035=*
tokeninfo(#20035,8,#20001,12,";")
#20036=@"loc,{#10000},2,58,2,58"
locations_default(#20036,#10000,2,58,2,58)
tokeninfo(#20035,6,#20001,11,"simpleTextBuffer$TextBuffer")
#20036=@"loc,{#10000},2,31,2,57"
locations_default(#20036,#10000,2,31,2,57)
hasLocation(#20035,#20036)
#20037=*
tokeninfo(#20037,6,#20001,13,"declare")
#20038=@"loc,{#10000},3,1,3,7"
locations_default(#20038,#10000,3,1,3,7)
tokeninfo(#20037,8,#20001,12,";")
#20038=@"loc,{#10000},2,58,2,58"
locations_default(#20038,#10000,2,58,2,58)
hasLocation(#20037,#20038)
#20039=*
tokeninfo(#20039,7,#20001,14,"export")
#20040=@"loc,{#10000},3,9,3,14"
locations_default(#20040,#10000,3,9,3,14)
tokeninfo(#20039,6,#20001,13,"declare")
#20040=@"loc,{#10000},3,1,3,7"
locations_default(#20040,#10000,3,1,3,7)
hasLocation(#20039,#20040)
#20041=*
tokeninfo(#20041,7,#20001,15,"default")
#20042=@"loc,{#10000},3,16,3,22"
locations_default(#20042,#10000,3,16,3,22)
tokeninfo(#20041,7,#20001,14,"export")
#20042=@"loc,{#10000},3,9,3,14"
locations_default(#20042,#10000,3,9,3,14)
hasLocation(#20041,#20042)
#20043=*
tokeninfo(#20043,6,#20001,16,"marked$Marked")
#20044=@"loc,{#10000},3,24,3,36"
locations_default(#20044,#10000,3,24,3,36)
tokeninfo(#20043,7,#20001,15,"default")
#20044=@"loc,{#10000},3,16,3,22"
locations_default(#20044,#10000,3,16,3,22)
hasLocation(#20043,#20044)
#20045=*
tokeninfo(#20045,8,#20001,17,";")
#20046=@"loc,{#10000},3,37,3,37"
locations_default(#20046,#10000,3,37,3,37)
tokeninfo(#20045,6,#20001,16,"marked$Marked")
#20046=@"loc,{#10000},3,24,3,36"
locations_default(#20046,#10000,3,24,3,36)
hasLocation(#20045,#20046)
#20047=*
tokeninfo(#20047,6,#20001,18,"declare")
#20048=@"loc,{#10000},4,1,4,7"
locations_default(#20048,#10000,4,1,4,7)
tokeninfo(#20047,8,#20001,17,";")
#20048=@"loc,{#10000},3,37,3,37"
locations_default(#20048,#10000,3,37,3,37)
hasLocation(#20047,#20048)
#20049=*
tokeninfo(#20049,7,#20001,19,"export")
#20050=@"loc,{#10000},4,9,4,14"
locations_default(#20050,#10000,4,9,4,14)
tokeninfo(#20049,6,#20001,18,"declare")
#20050=@"loc,{#10000},4,1,4,7"
locations_default(#20050,#10000,4,1,4,7)
hasLocation(#20049,#20050)
#20051=*
tokeninfo(#20051,6,#20001,20,"type")
#20052=@"loc,{#10000},4,16,4,19"
locations_default(#20052,#10000,4,16,4,19)
tokeninfo(#20051,7,#20001,19,"export")
#20052=@"loc,{#10000},4,9,4,14"
locations_default(#20052,#10000,4,9,4,14)
hasLocation(#20051,#20052)
#20053=*
tokeninfo(#20053,6,#20001,21,"ProcessEnv")
#20054=@"loc,{#10000},4,21,4,30"
locations_default(#20054,#10000,4,21,4,30)
tokeninfo(#20053,6,#20001,20,"type")
#20054=@"loc,{#10000},4,16,4,19"
locations_default(#20054,#10000,4,16,4,19)
hasLocation(#20053,#20054)
#20055=*
tokeninfo(#20055,8,#20001,22,"=")
#20056=@"loc,{#10000},4,32,4,32"
locations_default(#20056,#10000,4,32,4,32)
tokeninfo(#20055,6,#20001,21,"ProcessEnv")
#20056=@"loc,{#10000},4,21,4,30"
locations_default(#20056,#10000,4,21,4,30)
hasLocation(#20055,#20056)
#20057=*
tokeninfo(#20057,8,#20001,23,"{")
#20058=@"loc,{#10000},4,34,4,34"
locations_default(#20058,#10000,4,34,4,34)
tokeninfo(#20057,8,#20001,22,"=")
#20058=@"loc,{#10000},4,32,4,32"
locations_default(#20058,#10000,4,32,4,32)
hasLocation(#20057,#20058)
#20059=*
tokeninfo(#20059,8,#20001,24,"}")
#20060=@"loc,{#10000},4,36,4,36"
locations_default(#20060,#10000,4,36,4,36)
tokeninfo(#20059,8,#20001,23,"{")
#20060=@"loc,{#10000},4,34,4,34"
locations_default(#20060,#10000,4,34,4,34)
hasLocation(#20059,#20060)
#20061=*
tokeninfo(#20061,8,#20001,25,";")
#20062=@"loc,{#10000},4,37,4,37"
locations_default(#20062,#10000,4,37,4,37)
tokeninfo(#20061,8,#20001,24,"}")
#20062=@"loc,{#10000},4,36,4,36"
locations_default(#20062,#10000,4,36,4,36)
hasLocation(#20061,#20062)
#20063=*
tokeninfo(#20063,0,#20001,26,"")
#20064=@"loc,{#10000},5,1,5,0"
locations_default(#20064,#10000,5,1,5,0)
tokeninfo(#20063,8,#20001,25,";")
#20064=@"loc,{#10000},4,37,4,37"
locations_default(#20064,#10000,4,37,4,37)
hasLocation(#20063,#20064)
#20065=*
entry_cfg_node(#20065,#20001)
#20066=@"loc,{#10000},1,1,1,0"
locations_default(#20066,#10000,1,1,1,0)
tokeninfo(#20065,6,#20001,26,"declare")
#20066=@"loc,{#10000},5,1,5,7"
locations_default(#20066,#10000,5,1,5,7)
hasLocation(#20065,#20066)
#20067=*
exit_cfg_node(#20067,#20001)
hasLocation(#20067,#20064)
successor(#20065,#20067)
numlines(#10000,4,4,0)
tokeninfo(#20067,6,#20001,27,"module")
#20068=@"loc,{#10000},5,9,5,14"
locations_default(#20068,#10000,5,9,5,14)
hasLocation(#20067,#20068)
#20069=*
tokeninfo(#20069,4,#20001,28,"""foo""")
#20070=@"loc,{#10000},5,16,5,20"
locations_default(#20070,#10000,5,16,5,20)
hasLocation(#20069,#20070)
#20071=*
tokeninfo(#20071,8,#20001,29,"{")
#20072=@"loc,{#10000},5,22,5,22"
locations_default(#20072,#10000,5,22,5,22)
hasLocation(#20071,#20072)
#20073=*
tokeninfo(#20073,6,#20001,30,"declare")
#20074=@"loc,{#10000},5,24,5,30"
locations_default(#20074,#10000,5,24,5,30)
hasLocation(#20073,#20074)
#20075=*
tokeninfo(#20075,7,#20001,31,"export")
#20076=@"loc,{#10000},5,32,5,37"
locations_default(#20076,#10000,5,32,5,37)
hasLocation(#20075,#20076)
#20077=*
tokeninfo(#20077,6,#20001,32,"type")
#20078=@"loc,{#10000},5,39,5,42"
locations_default(#20078,#10000,5,39,5,42)
hasLocation(#20077,#20078)
#20079=*
tokeninfo(#20079,8,#20001,33,"*")
#20080=@"loc,{#10000},5,44,5,44"
locations_default(#20080,#10000,5,44,5,44)
hasLocation(#20079,#20080)
#20081=*
tokeninfo(#20081,6,#20001,34,"from")
#20082=@"loc,{#10000},5,46,5,49"
locations_default(#20082,#10000,5,46,5,49)
hasLocation(#20081,#20082)
#20083=*
tokeninfo(#20083,4,#20001,35,"""bar""")
#20084=@"loc,{#10000},5,51,5,55"
locations_default(#20084,#10000,5,51,5,55)
hasLocation(#20083,#20084)
#20085=*
tokeninfo(#20085,8,#20001,36,";")
#20086=@"loc,{#10000},5,56,5,56"
locations_default(#20086,#10000,5,56,5,56)
hasLocation(#20085,#20086)
#20087=*
tokeninfo(#20087,8,#20001,37,"}")
#20088=@"loc,{#10000},5,58,5,58"
locations_default(#20088,#10000,5,58,5,58)
hasLocation(#20087,#20088)
#20089=*
tokeninfo(#20089,0,#20001,38,"")
#20090=@"loc,{#10000},5,59,5,58"
locations_default(#20090,#10000,5,59,5,58)
hasLocation(#20089,#20090)
#20091=*
entry_cfg_node(#20091,#20001)
#20092=@"loc,{#10000},1,1,1,0"
locations_default(#20092,#10000,1,1,1,0)
hasLocation(#20091,#20092)
#20093=*
exit_cfg_node(#20093,#20001)
hasLocation(#20093,#20090)
successor(#20091,#20093)
numlines(#10000,5,5,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,687 @@
#10000=@"/explicitTypeParameters.js;sourcefile"
files(#10000,"/explicitTypeParameters.js","explicitTypeParameters","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,12,5"
locations_default(#20002,#10000,1,1,12,5)
hasLocation(#20001,#20002)
#20003=@"var;{f2};{#20000}"
variables(#20003,"f2",#20000)
#20004=*
stmts(#20004,2,#20001,0,"new K1<T1>();")
#20005=@"loc,{#10000},1,1,1,13"
locations_default(#20005,#10000,1,1,1,13)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,12,#20004,0,"new K1<T1>()")
#20007=@"loc,{#10000},1,1,1,12"
locations_default(#20007,#10000,1,1,1,12)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,79,#20006,-1,"K1")
#20009=@"loc,{#10000},1,5,1,6"
locations_default(#20009,#10000,1,5,1,6)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20004)
exprContainers(#20008,#20001)
literals("K1","K1",#20008)
#20010=@"var;{K1};{#20000}"
variables(#20010,"K1",#20000)
bind(#20008,#20010)
#20011=*
stmts(#20011,2,#20001,1,"f1<T2>();")
#20012=@"loc,{#10000},2,1,2,9"
locations_default(#20012,#10000,2,1,2,9)
hasLocation(#20011,#20012)
stmtContainers(#20011,#20001)
#20013=*
exprs(#20013,13,#20011,0,"f1<T2>()")
#20014=@"loc,{#10000},2,1,2,8"
locations_default(#20014,#10000,2,1,2,8)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20011)
exprContainers(#20013,#20001)
#20015=*
exprs(#20015,79,#20013,-1,"f1")
#20016=@"loc,{#10000},2,1,2,2"
locations_default(#20016,#10000,2,1,2,2)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20011)
exprContainers(#20015,#20001)
literals("f1","f1",#20015)
#20017=@"var;{f1};{#20000}"
variables(#20017,"f1",#20000)
bind(#20015,#20017)
#20018=*
stmts(#20018,22,#20001,2,"const f ... >(x);\n}")
#20019=@"loc,{#10000},3,1,5,1"
locations_default(#20019,#10000,3,1,5,1)
hasLocation(#20018,#20019)
stmtContainers(#20018,#20001)
#20020=*
exprs(#20020,64,#20018,0,"f2 = fu ... >(x);\n}")
#20021=@"loc,{#10000},3,7,5,1"
locations_default(#20021,#10000,3,7,5,1)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20018)
exprContainers(#20020,#20001)
#20022=*
exprs(#20022,78,#20020,0,"f2")
#20023=@"loc,{#10000},3,7,3,8"
locations_default(#20023,#10000,3,7,3,8)
hasLocation(#20022,#20023)
enclosingStmt(#20022,#20018)
exprContainers(#20022,#20001)
literals("f2","f2",#20022)
decl(#20022,#20003)
#20024=*
exprs(#20024,9,#20020,1,"functio ... >(x);\n}")
#20025=@"loc,{#10000},3,12,5,1"
locations_default(#20025,#10000,3,12,5,1)
hasLocation(#20024,#20025)
enclosingStmt(#20024,#20018)
exprContainers(#20024,#20001)
#20026=*
scopes(#20026,1)
scopenodes(#20024,#20026)
scopenesting(#20026,#20000)
#20027=@"var;{arguments};{#20026}"
variables(#20027,"arguments",#20026)
isArgumentsObject(#20027)
isGenerator(#20024)
#20028=*
stmts(#20028,1,#20024,-2,"{\n yie ... >(x);\n}")
#20029=@"loc,{#10000},3,32,5,1"
locations_default(#20029,#10000,3,32,5,1)
hasLocation(#20028,#20029)
stmtContainers(#20028,#20024)
#20030=*
stmts(#20030,2,#20028,0,"yield* f3<T5>(x);")
#20031=@"loc,{#10000},4,3,4,19"
locations_default(#20031,#10000,4,3,4,19)
hasLocation(#20030,#20031)
stmtContainers(#20030,#20024)
#20032=*
exprs(#20032,69,#20030,0,"yield* f3<T5>(x)")
#20033=@"loc,{#10000},4,3,4,18"
locations_default(#20033,#10000,4,3,4,18)
hasLocation(#20032,#20033)
enclosingStmt(#20032,#20030)
exprContainers(#20032,#20024)
#20034=*
exprs(#20034,13,#20032,0,"f3<T5>(x)")
#20035=@"loc,{#10000},4,10,4,18"
locations_default(#20035,#10000,4,10,4,18)
hasLocation(#20034,#20035)
enclosingStmt(#20034,#20030)
exprContainers(#20034,#20024)
#20036=*
exprs(#20036,79,#20034,-1,"f3")
#20037=@"loc,{#10000},4,10,4,11"
locations_default(#20037,#10000,4,10,4,11)
hasLocation(#20036,#20037)
enclosingStmt(#20036,#20030)
exprContainers(#20036,#20024)
literals("f3","f3",#20036)
#20038=@"var;{f3};{#20000}"
variables(#20038,"f3",#20000)
bind(#20036,#20038)
#20039=*
exprs(#20039,79,#20034,0,"x")
#20040=@"loc,{#10000},4,17,4,17"
locations_default(#20040,#10000,4,17,4,17)
hasLocation(#20039,#20040)
enclosingStmt(#20039,#20030)
exprContainers(#20039,#20024)
literals("x","x",#20039)
#20041=@"var;{x};{#20000}"
variables(#20041,"x",#20000)
bind(#20039,#20041)
isDelegating(#20032)
numlines(#20024,3,3,0)
#20042=*
stmts(#20042,2,#20001,3,"f4<T6>(v1);")
#20043=@"loc,{#10000},6,1,6,11"
locations_default(#20043,#10000,6,1,6,11)
hasLocation(#20042,#20043)
stmtContainers(#20042,#20001)
#20044=*
exprs(#20044,13,#20042,0,"f4<T6>(v1)")
#20045=@"loc,{#10000},6,1,6,10"
locations_default(#20045,#10000,6,1,6,10)
hasLocation(#20044,#20045)
enclosingStmt(#20044,#20042)
exprContainers(#20044,#20001)
#20046=*
exprs(#20046,79,#20044,-1,"f4")
#20047=@"loc,{#10000},6,1,6,2"
locations_default(#20047,#10000,6,1,6,2)
hasLocation(#20046,#20047)
enclosingStmt(#20046,#20042)
exprContainers(#20046,#20001)
literals("f4","f4",#20046)
#20048=@"var;{f4};{#20000}"
variables(#20048,"f4",#20000)
bind(#20046,#20048)
#20049=*
exprs(#20049,79,#20044,0,"v1")
#20050=@"loc,{#10000},6,8,6,9"
locations_default(#20050,#10000,6,8,6,9)
hasLocation(#20049,#20050)
enclosingStmt(#20049,#20042)
exprContainers(#20049,#20001)
literals("v1","v1",#20049)
#20051=@"var;{v1};{#20000}"
variables(#20051,"v1",#20000)
bind(#20049,#20051)
#20052=*
stmts(#20052,2,#20001,4,"f5<_,_,_>();")
#20053=@"loc,{#10000},7,1,7,12"
locations_default(#20053,#10000,7,1,7,12)
hasLocation(#20052,#20053)
stmtContainers(#20052,#20001)
#20054=*
exprs(#20054,13,#20052,0,"f5<_,_,_>()")
#20055=@"loc,{#10000},7,1,7,11"
locations_default(#20055,#10000,7,1,7,11)
hasLocation(#20054,#20055)
enclosingStmt(#20054,#20052)
exprContainers(#20054,#20001)
#20056=*
exprs(#20056,79,#20054,-1,"f5")
#20057=@"loc,{#10000},7,1,7,2"
locations_default(#20057,#10000,7,1,7,2)
hasLocation(#20056,#20057)
enclosingStmt(#20056,#20052)
exprContainers(#20056,#20001)
literals("f5","f5",#20056)
#20058=@"var;{f5};{#20000}"
variables(#20058,"f5",#20000)
bind(#20056,#20058)
#20059=*
stmts(#20059,2,#20001,5,"f6<\n\t|T ... 9\n\t>();")
#20060=@"loc,{#10000},8,1,12,5"
locations_default(#20060,#10000,8,1,12,5)
hasLocation(#20059,#20060)
stmtContainers(#20059,#20001)
#20061=*
exprs(#20061,13,#20059,0,"f6<\n\t|T ... T9\n\t>()")
#20062=@"loc,{#10000},8,1,12,4"
locations_default(#20062,#10000,8,1,12,4)
hasLocation(#20061,#20062)
enclosingStmt(#20061,#20059)
exprContainers(#20061,#20001)
#20063=*
exprs(#20063,79,#20061,-1,"f6")
#20064=@"loc,{#10000},8,1,8,2"
locations_default(#20064,#10000,8,1,8,2)
hasLocation(#20063,#20064)
enclosingStmt(#20063,#20059)
exprContainers(#20063,#20001)
literals("f6","f6",#20063)
#20065=@"var;{f6};{#20000}"
variables(#20065,"f6",#20000)
bind(#20063,#20065)
#20066=*
lines(#20066,#20001,"new K1<T1>();","
")
hasLocation(#20066,#20005)
#20067=*
lines(#20067,#20001,"f1<T2>();","
")
hasLocation(#20067,#20012)
#20068=*
lines(#20068,#20001,"const f2 = function*(): T3<T4> {","
")
#20069=@"loc,{#10000},3,1,3,32"
locations_default(#20069,#10000,3,1,3,32)
hasLocation(#20068,#20069)
#20070=*
lines(#20070,#20001," yield* f3<T5>(x);","
")
#20071=@"loc,{#10000},4,1,4,19"
locations_default(#20071,#10000,4,1,4,19)
hasLocation(#20070,#20071)
indentation(#10000,4," ",2)
#20072=*
lines(#20072,#20001,"}","
")
#20073=@"loc,{#10000},5,1,5,1"
locations_default(#20073,#10000,5,1,5,1)
hasLocation(#20072,#20073)
#20074=*
lines(#20074,#20001,"f4<T6>(v1);","
")
hasLocation(#20074,#20043)
#20075=*
lines(#20075,#20001,"f5<_,_,_>();","
")
hasLocation(#20075,#20053)
#20076=*
lines(#20076,#20001,"f6<","
")
#20077=@"loc,{#10000},8,1,8,3"
locations_default(#20077,#10000,8,1,8,3)
hasLocation(#20076,#20077)
#20078=*
lines(#20078,#20001," |T7","
")
#20079=@"loc,{#10000},9,1,9,4"
locations_default(#20079,#10000,9,1,9,4)
hasLocation(#20078,#20079)
indentation(#10000,9," ",1)
#20080=*
lines(#20080,#20001," |T8","
")
#20081=@"loc,{#10000},10,1,10,4"
locations_default(#20081,#10000,10,1,10,4)
hasLocation(#20080,#20081)
indentation(#10000,10," ",1)
#20082=*
lines(#20082,#20001," |T9","
")
#20083=@"loc,{#10000},11,1,11,4"
locations_default(#20083,#10000,11,1,11,4)
hasLocation(#20082,#20083)
indentation(#10000,11," ",1)
#20084=*
lines(#20084,#20001," >();","")
#20085=@"loc,{#10000},12,1,12,5"
locations_default(#20085,#10000,12,1,12,5)
hasLocation(#20084,#20085)
indentation(#10000,12," ",1)
numlines(#20001,12,12,0)
#20086=*
tokeninfo(#20086,7,#20001,0,"new")
#20087=@"loc,{#10000},1,1,1,3"
locations_default(#20087,#10000,1,1,1,3)
hasLocation(#20086,#20087)
#20088=*
tokeninfo(#20088,6,#20001,1,"K1")
hasLocation(#20088,#20009)
#20089=*
tokeninfo(#20089,8,#20001,2,"<")
#20090=@"loc,{#10000},1,7,1,7"
locations_default(#20090,#10000,1,7,1,7)
hasLocation(#20089,#20090)
#20091=*
tokeninfo(#20091,6,#20001,3,"T1")
#20092=@"loc,{#10000},1,8,1,9"
locations_default(#20092,#10000,1,8,1,9)
hasLocation(#20091,#20092)
#20093=*
tokeninfo(#20093,8,#20001,4,">")
#20094=@"loc,{#10000},1,10,1,10"
locations_default(#20094,#10000,1,10,1,10)
hasLocation(#20093,#20094)
#20095=*
tokeninfo(#20095,8,#20001,5,"(")
#20096=@"loc,{#10000},1,11,1,11"
locations_default(#20096,#10000,1,11,1,11)
hasLocation(#20095,#20096)
#20097=*
tokeninfo(#20097,8,#20001,6,")")
#20098=@"loc,{#10000},1,12,1,12"
locations_default(#20098,#10000,1,12,1,12)
hasLocation(#20097,#20098)
#20099=*
tokeninfo(#20099,8,#20001,7,";")
#20100=@"loc,{#10000},1,13,1,13"
locations_default(#20100,#10000,1,13,1,13)
hasLocation(#20099,#20100)
#20101=*
tokeninfo(#20101,6,#20001,8,"f1")
hasLocation(#20101,#20016)
#20102=*
tokeninfo(#20102,8,#20001,9,"<")
#20103=@"loc,{#10000},2,3,2,3"
locations_default(#20103,#10000,2,3,2,3)
hasLocation(#20102,#20103)
#20104=*
tokeninfo(#20104,6,#20001,10,"T2")
#20105=@"loc,{#10000},2,4,2,5"
locations_default(#20105,#10000,2,4,2,5)
hasLocation(#20104,#20105)
#20106=*
tokeninfo(#20106,8,#20001,11,">")
#20107=@"loc,{#10000},2,6,2,6"
locations_default(#20107,#10000,2,6,2,6)
hasLocation(#20106,#20107)
#20108=*
tokeninfo(#20108,8,#20001,12,"(")
#20109=@"loc,{#10000},2,7,2,7"
locations_default(#20109,#10000,2,7,2,7)
hasLocation(#20108,#20109)
#20110=*
tokeninfo(#20110,8,#20001,13,")")
#20111=@"loc,{#10000},2,8,2,8"
locations_default(#20111,#10000,2,8,2,8)
hasLocation(#20110,#20111)
#20112=*
tokeninfo(#20112,8,#20001,14,";")
#20113=@"loc,{#10000},2,9,2,9"
locations_default(#20113,#10000,2,9,2,9)
hasLocation(#20112,#20113)
#20114=*
tokeninfo(#20114,7,#20001,15,"const")
#20115=@"loc,{#10000},3,1,3,5"
locations_default(#20115,#10000,3,1,3,5)
hasLocation(#20114,#20115)
#20116=*
tokeninfo(#20116,6,#20001,16,"f2")
hasLocation(#20116,#20023)
#20117=*
tokeninfo(#20117,8,#20001,17,"=")
#20118=@"loc,{#10000},3,10,3,10"
locations_default(#20118,#10000,3,10,3,10)
hasLocation(#20117,#20118)
#20119=*
tokeninfo(#20119,7,#20001,18,"function")
#20120=@"loc,{#10000},3,12,3,19"
locations_default(#20120,#10000,3,12,3,19)
hasLocation(#20119,#20120)
#20121=*
tokeninfo(#20121,8,#20001,19,"*")
#20122=@"loc,{#10000},3,20,3,20"
locations_default(#20122,#10000,3,20,3,20)
hasLocation(#20121,#20122)
#20123=*
tokeninfo(#20123,8,#20001,20,"(")
#20124=@"loc,{#10000},3,21,3,21"
locations_default(#20124,#10000,3,21,3,21)
hasLocation(#20123,#20124)
#20125=*
tokeninfo(#20125,8,#20001,21,")")
#20126=@"loc,{#10000},3,22,3,22"
locations_default(#20126,#10000,3,22,3,22)
hasLocation(#20125,#20126)
#20127=*
tokeninfo(#20127,8,#20001,22,":")
#20128=@"loc,{#10000},3,23,3,23"
locations_default(#20128,#10000,3,23,3,23)
hasLocation(#20127,#20128)
#20129=*
tokeninfo(#20129,6,#20001,23,"T3")
#20130=@"loc,{#10000},3,25,3,26"
locations_default(#20130,#10000,3,25,3,26)
hasLocation(#20129,#20130)
#20131=*
tokeninfo(#20131,8,#20001,24,"<")
#20132=@"loc,{#10000},3,27,3,27"
locations_default(#20132,#10000,3,27,3,27)
hasLocation(#20131,#20132)
#20133=*
tokeninfo(#20133,6,#20001,25,"T4")
#20134=@"loc,{#10000},3,28,3,29"
locations_default(#20134,#10000,3,28,3,29)
hasLocation(#20133,#20134)
#20135=*
tokeninfo(#20135,8,#20001,26,">")
#20136=@"loc,{#10000},3,30,3,30"
locations_default(#20136,#10000,3,30,3,30)
hasLocation(#20135,#20136)
#20137=*
tokeninfo(#20137,8,#20001,27,"{")
#20138=@"loc,{#10000},3,32,3,32"
locations_default(#20138,#10000,3,32,3,32)
hasLocation(#20137,#20138)
#20139=*
tokeninfo(#20139,7,#20001,28,"yield")
#20140=@"loc,{#10000},4,3,4,7"
locations_default(#20140,#10000,4,3,4,7)
hasLocation(#20139,#20140)
#20141=*
tokeninfo(#20141,8,#20001,29,"*")
#20142=@"loc,{#10000},4,8,4,8"
locations_default(#20142,#10000,4,8,4,8)
hasLocation(#20141,#20142)
#20143=*
tokeninfo(#20143,6,#20001,30,"f3")
hasLocation(#20143,#20037)
#20144=*
tokeninfo(#20144,8,#20001,31,"<")
#20145=@"loc,{#10000},4,12,4,12"
locations_default(#20145,#10000,4,12,4,12)
hasLocation(#20144,#20145)
#20146=*
tokeninfo(#20146,6,#20001,32,"T5")
#20147=@"loc,{#10000},4,13,4,14"
locations_default(#20147,#10000,4,13,4,14)
hasLocation(#20146,#20147)
#20148=*
tokeninfo(#20148,8,#20001,33,">")
#20149=@"loc,{#10000},4,15,4,15"
locations_default(#20149,#10000,4,15,4,15)
hasLocation(#20148,#20149)
#20150=*
tokeninfo(#20150,8,#20001,34,"(")
#20151=@"loc,{#10000},4,16,4,16"
locations_default(#20151,#10000,4,16,4,16)
hasLocation(#20150,#20151)
#20152=*
tokeninfo(#20152,6,#20001,35,"x")
hasLocation(#20152,#20040)
#20153=*
tokeninfo(#20153,8,#20001,36,")")
#20154=@"loc,{#10000},4,18,4,18"
locations_default(#20154,#10000,4,18,4,18)
hasLocation(#20153,#20154)
#20155=*
tokeninfo(#20155,8,#20001,37,";")
#20156=@"loc,{#10000},4,19,4,19"
locations_default(#20156,#10000,4,19,4,19)
hasLocation(#20155,#20156)
#20157=*
tokeninfo(#20157,8,#20001,38,"}")
hasLocation(#20157,#20073)
#20158=*
tokeninfo(#20158,6,#20001,39,"f4")
hasLocation(#20158,#20047)
#20159=*
tokeninfo(#20159,8,#20001,40,"<")
#20160=@"loc,{#10000},6,3,6,3"
locations_default(#20160,#10000,6,3,6,3)
hasLocation(#20159,#20160)
#20161=*
tokeninfo(#20161,6,#20001,41,"T6")
#20162=@"loc,{#10000},6,4,6,5"
locations_default(#20162,#10000,6,4,6,5)
hasLocation(#20161,#20162)
#20163=*
tokeninfo(#20163,8,#20001,42,">")
#20164=@"loc,{#10000},6,6,6,6"
locations_default(#20164,#10000,6,6,6,6)
hasLocation(#20163,#20164)
#20165=*
tokeninfo(#20165,8,#20001,43,"(")
#20166=@"loc,{#10000},6,7,6,7"
locations_default(#20166,#10000,6,7,6,7)
hasLocation(#20165,#20166)
#20167=*
tokeninfo(#20167,6,#20001,44,"v1")
hasLocation(#20167,#20050)
#20168=*
tokeninfo(#20168,8,#20001,45,")")
#20169=@"loc,{#10000},6,10,6,10"
locations_default(#20169,#10000,6,10,6,10)
hasLocation(#20168,#20169)
#20170=*
tokeninfo(#20170,8,#20001,46,";")
#20171=@"loc,{#10000},6,11,6,11"
locations_default(#20171,#10000,6,11,6,11)
hasLocation(#20170,#20171)
#20172=*
tokeninfo(#20172,6,#20001,47,"f5")
hasLocation(#20172,#20057)
#20173=*
tokeninfo(#20173,8,#20001,48,"<")
#20174=@"loc,{#10000},7,3,7,3"
locations_default(#20174,#10000,7,3,7,3)
hasLocation(#20173,#20174)
#20175=*
tokeninfo(#20175,6,#20001,49,"_")
#20176=@"loc,{#10000},7,4,7,4"
locations_default(#20176,#10000,7,4,7,4)
hasLocation(#20175,#20176)
#20177=*
tokeninfo(#20177,8,#20001,50,",")
#20178=@"loc,{#10000},7,5,7,5"
locations_default(#20178,#10000,7,5,7,5)
hasLocation(#20177,#20178)
#20179=*
tokeninfo(#20179,6,#20001,51,"_")
#20180=@"loc,{#10000},7,6,7,6"
locations_default(#20180,#10000,7,6,7,6)
hasLocation(#20179,#20180)
#20181=*
tokeninfo(#20181,8,#20001,52,",")
#20182=@"loc,{#10000},7,7,7,7"
locations_default(#20182,#10000,7,7,7,7)
hasLocation(#20181,#20182)
#20183=*
tokeninfo(#20183,6,#20001,53,"_")
#20184=@"loc,{#10000},7,8,7,8"
locations_default(#20184,#10000,7,8,7,8)
hasLocation(#20183,#20184)
#20185=*
tokeninfo(#20185,8,#20001,54,">")
#20186=@"loc,{#10000},7,9,7,9"
locations_default(#20186,#10000,7,9,7,9)
hasLocation(#20185,#20186)
#20187=*
tokeninfo(#20187,8,#20001,55,"(")
#20188=@"loc,{#10000},7,10,7,10"
locations_default(#20188,#10000,7,10,7,10)
hasLocation(#20187,#20188)
#20189=*
tokeninfo(#20189,8,#20001,56,")")
#20190=@"loc,{#10000},7,11,7,11"
locations_default(#20190,#10000,7,11,7,11)
hasLocation(#20189,#20190)
#20191=*
tokeninfo(#20191,8,#20001,57,";")
#20192=@"loc,{#10000},7,12,7,12"
locations_default(#20192,#10000,7,12,7,12)
hasLocation(#20191,#20192)
#20193=*
tokeninfo(#20193,6,#20001,58,"f6")
hasLocation(#20193,#20064)
#20194=*
tokeninfo(#20194,8,#20001,59,"<")
#20195=@"loc,{#10000},8,3,8,3"
locations_default(#20195,#10000,8,3,8,3)
hasLocation(#20194,#20195)
#20196=*
tokeninfo(#20196,8,#20001,60,"|")
#20197=@"loc,{#10000},9,2,9,2"
locations_default(#20197,#10000,9,2,9,2)
hasLocation(#20196,#20197)
#20198=*
tokeninfo(#20198,6,#20001,61,"T7")
#20199=@"loc,{#10000},9,3,9,4"
locations_default(#20199,#10000,9,3,9,4)
hasLocation(#20198,#20199)
#20200=*
tokeninfo(#20200,8,#20001,62,"|")
#20201=@"loc,{#10000},10,2,10,2"
locations_default(#20201,#10000,10,2,10,2)
hasLocation(#20200,#20201)
#20202=*
tokeninfo(#20202,6,#20001,63,"T8")
#20203=@"loc,{#10000},10,3,10,4"
locations_default(#20203,#10000,10,3,10,4)
hasLocation(#20202,#20203)
#20204=*
tokeninfo(#20204,8,#20001,64,"|")
#20205=@"loc,{#10000},11,2,11,2"
locations_default(#20205,#10000,11,2,11,2)
hasLocation(#20204,#20205)
#20206=*
tokeninfo(#20206,6,#20001,65,"T9")
#20207=@"loc,{#10000},11,3,11,4"
locations_default(#20207,#10000,11,3,11,4)
hasLocation(#20206,#20207)
#20208=*
tokeninfo(#20208,8,#20001,66,">")
#20209=@"loc,{#10000},12,2,12,2"
locations_default(#20209,#10000,12,2,12,2)
hasLocation(#20208,#20209)
#20210=*
tokeninfo(#20210,8,#20001,67,"(")
#20211=@"loc,{#10000},12,3,12,3"
locations_default(#20211,#10000,12,3,12,3)
hasLocation(#20210,#20211)
#20212=*
tokeninfo(#20212,8,#20001,68,")")
#20213=@"loc,{#10000},12,4,12,4"
locations_default(#20213,#10000,12,4,12,4)
hasLocation(#20212,#20213)
#20214=*
tokeninfo(#20214,8,#20001,69,";")
#20215=@"loc,{#10000},12,5,12,5"
locations_default(#20215,#10000,12,5,12,5)
hasLocation(#20214,#20215)
#20216=*
tokeninfo(#20216,0,#20001,70,"")
#20217=@"loc,{#10000},12,6,12,5"
locations_default(#20217,#10000,12,6,12,5)
hasLocation(#20216,#20217)
#20218=*
entry_cfg_node(#20218,#20001)
#20219=@"loc,{#10000},1,1,1,0"
locations_default(#20219,#10000,1,1,1,0)
hasLocation(#20218,#20219)
#20220=*
exit_cfg_node(#20220,#20001)
hasLocation(#20220,#20217)
successor(#20059,#20063)
successor(#20063,#20061)
successor(#20061,#20220)
successor(#20052,#20056)
successor(#20056,#20054)
successor(#20054,#20059)
successor(#20042,#20046)
successor(#20049,#20044)
successor(#20046,#20049)
successor(#20044,#20052)
successor(#20018,#20022)
successor(#20024,#20020)
#20221=*
entry_cfg_node(#20221,#20024)
#20222=@"loc,{#10000},3,12,3,11"
locations_default(#20222,#10000,3,12,3,11)
hasLocation(#20221,#20222)
#20223=*
exit_cfg_node(#20223,#20024)
#20224=@"loc,{#10000},5,2,5,1"
locations_default(#20224,#10000,5,2,5,1)
hasLocation(#20223,#20224)
successor(#20028,#20030)
successor(#20030,#20036)
successor(#20039,#20034)
successor(#20036,#20039)
successor(#20034,#20032)
successor(#20032,#20223)
successor(#20221,#20028)
successor(#20022,#20024)
successor(#20020,#20042)
successor(#20011,#20015)
successor(#20015,#20013)
successor(#20013,#20018)
successor(#20004,#20008)
successor(#20008,#20006)
successor(#20006,#20011)
successor(#20218,#20004)
numlines(#10000,12,12,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,88 @@
#10000=@"/explicitTypeParametersForArgumentlessConstructorCall.js;sourcefile"
files(#10000,"/explicitTypeParametersForArgumentlessConstructorCall.js","explicitTypeParametersForArgumentlessConstructorCall","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,11"
locations_default(#20002,#10000,1,1,1,11)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"new K1<T1>;")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,12,#20003,0,"new K1<T1>")
#20005=@"loc,{#10000},1,1,1,10"
locations_default(#20005,#10000,1,1,1,10)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,79,#20004,-1,"K1")
#20007=@"loc,{#10000},1,5,1,6"
locations_default(#20007,#10000,1,5,1,6)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
literals("K1","K1",#20006)
#20008=@"var;{K1};{#20000}"
variables(#20008,"K1",#20000)
bind(#20006,#20008)
#20009=*
lines(#20009,#20001,"new K1<T1>;","")
hasLocation(#20009,#20002)
numlines(#20001,1,1,0)
#20010=*
tokeninfo(#20010,7,#20001,0,"new")
#20011=@"loc,{#10000},1,1,1,3"
locations_default(#20011,#10000,1,1,1,3)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,1,"K1")
hasLocation(#20012,#20007)
#20013=*
tokeninfo(#20013,8,#20001,2,"<")
#20014=@"loc,{#10000},1,7,1,7"
locations_default(#20014,#10000,1,7,1,7)
hasLocation(#20013,#20014)
#20015=*
tokeninfo(#20015,6,#20001,3,"T1")
#20016=@"loc,{#10000},1,8,1,9"
locations_default(#20016,#10000,1,8,1,9)
hasLocation(#20015,#20016)
#20017=*
tokeninfo(#20017,8,#20001,4,">")
#20018=@"loc,{#10000},1,10,1,10"
locations_default(#20018,#10000,1,10,1,10)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,8,#20001,5,";")
#20020=@"loc,{#10000},1,11,1,11"
locations_default(#20020,#10000,1,11,1,11)
hasLocation(#20019,#20020)
#20021=*
tokeninfo(#20021,0,#20001,6,"")
#20022=@"loc,{#10000},1,12,1,11"
locations_default(#20022,#10000,1,12,1,11)
hasLocation(#20021,#20022)
#20023=*
entry_cfg_node(#20023,#20001)
#20024=@"loc,{#10000},1,1,1,0"
locations_default(#20024,#10000,1,1,1,0)
hasLocation(#20023,#20024)
#20025=*
exit_cfg_node(#20025,#20001)
hasLocation(#20025,#20022)
successor(#20003,#20006)
successor(#20006,#20004)
successor(#20004,#20025)
successor(#20023,#20003)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,280 @@
#10000=@"/export.js;sourcefile"
files(#10000,"/export.js","export","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,5,37"
locations_default(#20002,#10000,1,1,5,37)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=*
stmts(#20004,30,#20001,0,"export ... om ""m"";")
#20005=@"loc,{#10000},1,1,1,22"
locations_default(#20005,#10000,1,1,1,22)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,4,#20004,-2,"""m""")
#20007=@"loc,{#10000},1,19,1,21"
locations_default(#20007,#10000,1,19,1,21)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
literals("m","""m""",#20006)
#20008=*
exprs(#20008,86,#20004,0,"a")
#20009=@"loc,{#10000},1,10,1,10"
locations_default(#20009,#10000,1,10,1,10)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20004)
exprContainers(#20008,#20001)
#20010=*
exprs(#20010,0,#20008,0,"a")
hasLocation(#20010,#20009)
enclosingStmt(#20010,#20004)
exprContainers(#20010,#20001)
literals("a","a",#20010)
#20011=*
exprs(#20011,0,#20008,1,"a")
hasLocation(#20011,#20009)
enclosingStmt(#20011,#20004)
exprContainers(#20011,#20001)
literals("a","a",#20011)
#20012=*
stmts(#20012,28,#20001,1,"export * from ""m"";")
#20013=@"loc,{#10000},2,1,2,18"
locations_default(#20013,#10000,2,1,2,18)
hasLocation(#20012,#20013)
stmtContainers(#20012,#20001)
#20014=*
exprs(#20014,4,#20012,0,"""m""")
#20015=@"loc,{#10000},2,15,2,17"
locations_default(#20015,#10000,2,15,2,17)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20012)
exprContainers(#20014,#20001)
literals("m","""m""",#20014)
#20016=*
lines(#20016,#20001,"export { a } from ""m"";","
")
hasLocation(#20016,#20005)
#20017=*
lines(#20017,#20001,"export * from ""m"";","
")
hasLocation(#20017,#20013)
#20018=*
lines(#20018,#20001,"export type { b } from ""m"";","
")
#20019=@"loc,{#10000},3,1,3,27"
locations_default(#20019,#10000,3,1,3,27)
hasLocation(#20018,#20019)
#20020=*
lines(#20020,#20001,"export type * from ""m"";","
")
#20021=@"loc,{#10000},4,1,4,23"
locations_default(#20021,#10000,4,1,4,23)
hasLocation(#20020,#20021)
#20022=*
lines(#20022,#20001,"export type * as fooTypes from ""foo"";","")
#20023=@"loc,{#10000},5,1,5,37"
locations_default(#20023,#10000,5,1,5,37)
hasLocation(#20022,#20023)
numlines(#20001,5,5,0)
#20024=*
tokeninfo(#20024,7,#20001,0,"export")
#20025=@"loc,{#10000},1,1,1,6"
locations_default(#20025,#10000,1,1,1,6)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,1,"{")
#20027=@"loc,{#10000},1,8,1,8"
locations_default(#20027,#10000,1,8,1,8)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,6,#20001,2,"a")
hasLocation(#20028,#20009)
#20029=*
tokeninfo(#20029,8,#20001,3,"}")
#20030=@"loc,{#10000},1,12,1,12"
locations_default(#20030,#10000,1,12,1,12)
hasLocation(#20029,#20030)
#20031=*
tokeninfo(#20031,6,#20001,4,"from")
#20032=@"loc,{#10000},1,14,1,17"
locations_default(#20032,#10000,1,14,1,17)
hasLocation(#20031,#20032)
#20033=*
tokeninfo(#20033,4,#20001,5,"""m""")
hasLocation(#20033,#20007)
#20034=*
tokeninfo(#20034,8,#20001,6,";")
#20035=@"loc,{#10000},1,22,1,22"
locations_default(#20035,#10000,1,22,1,22)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,7,#20001,7,"export")
#20037=@"loc,{#10000},2,1,2,6"
locations_default(#20037,#10000,2,1,2,6)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,8,#20001,8,"*")
#20039=@"loc,{#10000},2,8,2,8"
locations_default(#20039,#10000,2,8,2,8)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,6,#20001,9,"from")
#20041=@"loc,{#10000},2,10,2,13"
locations_default(#20041,#10000,2,10,2,13)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,4,#20001,10,"""m""")
hasLocation(#20042,#20015)
#20043=*
tokeninfo(#20043,8,#20001,11,";")
#20044=@"loc,{#10000},2,18,2,18"
locations_default(#20044,#10000,2,18,2,18)
hasLocation(#20043,#20044)
#20045=*
tokeninfo(#20045,7,#20001,12,"export")
#20046=@"loc,{#10000},3,1,3,6"
locations_default(#20046,#10000,3,1,3,6)
hasLocation(#20045,#20046)
#20047=*
tokeninfo(#20047,6,#20001,13,"type")
#20048=@"loc,{#10000},3,8,3,11"
locations_default(#20048,#10000,3,8,3,11)
hasLocation(#20047,#20048)
#20049=*
tokeninfo(#20049,8,#20001,14,"{")
#20050=@"loc,{#10000},3,13,3,13"
locations_default(#20050,#10000,3,13,3,13)
hasLocation(#20049,#20050)
#20051=*
tokeninfo(#20051,6,#20001,15,"b")
#20052=@"loc,{#10000},3,15,3,15"
locations_default(#20052,#10000,3,15,3,15)
hasLocation(#20051,#20052)
#20053=*
tokeninfo(#20053,8,#20001,16,"}")
#20054=@"loc,{#10000},3,17,3,17"
locations_default(#20054,#10000,3,17,3,17)
hasLocation(#20053,#20054)
#20055=*
tokeninfo(#20055,6,#20001,17,"from")
#20056=@"loc,{#10000},3,19,3,22"
locations_default(#20056,#10000,3,19,3,22)
hasLocation(#20055,#20056)
#20057=*
tokeninfo(#20057,4,#20001,18,"""m""")
#20058=@"loc,{#10000},3,24,3,26"
locations_default(#20058,#10000,3,24,3,26)
hasLocation(#20057,#20058)
#20059=*
tokeninfo(#20059,8,#20001,19,";")
#20060=@"loc,{#10000},3,27,3,27"
locations_default(#20060,#10000,3,27,3,27)
hasLocation(#20059,#20060)
#20061=*
tokeninfo(#20061,7,#20001,20,"export")
#20062=@"loc,{#10000},4,1,4,6"
locations_default(#20062,#10000,4,1,4,6)
hasLocation(#20061,#20062)
#20063=*
tokeninfo(#20063,6,#20001,21,"type")
#20064=@"loc,{#10000},4,8,4,11"
locations_default(#20064,#10000,4,8,4,11)
hasLocation(#20063,#20064)
#20065=*
tokeninfo(#20065,8,#20001,22,"*")
#20066=@"loc,{#10000},4,13,4,13"
locations_default(#20066,#10000,4,13,4,13)
hasLocation(#20065,#20066)
#20067=*
tokeninfo(#20067,6,#20001,23,"from")
#20068=@"loc,{#10000},4,15,4,18"
locations_default(#20068,#10000,4,15,4,18)
hasLocation(#20067,#20068)
#20069=*
tokeninfo(#20069,4,#20001,24,"""m""")
#20070=@"loc,{#10000},4,20,4,22"
locations_default(#20070,#10000,4,20,4,22)
hasLocation(#20069,#20070)
#20071=*
tokeninfo(#20071,8,#20001,25,";")
#20072=@"loc,{#10000},4,23,4,23"
locations_default(#20072,#10000,4,23,4,23)
hasLocation(#20071,#20072)
#20073=*
tokeninfo(#20073,7,#20001,26,"export")
#20074=@"loc,{#10000},5,1,5,6"
locations_default(#20074,#10000,5,1,5,6)
hasLocation(#20073,#20074)
#20075=*
tokeninfo(#20075,6,#20001,27,"type")
#20076=@"loc,{#10000},5,8,5,11"
locations_default(#20076,#10000,5,8,5,11)
hasLocation(#20075,#20076)
#20077=*
tokeninfo(#20077,8,#20001,28,"*")
#20078=@"loc,{#10000},5,13,5,13"
locations_default(#20078,#10000,5,13,5,13)
hasLocation(#20077,#20078)
#20079=*
tokeninfo(#20079,6,#20001,29,"as")
#20080=@"loc,{#10000},5,15,5,16"
locations_default(#20080,#10000,5,15,5,16)
hasLocation(#20079,#20080)
#20081=*
tokeninfo(#20081,6,#20001,30,"fooTypes")
#20082=@"loc,{#10000},5,18,5,25"
locations_default(#20082,#10000,5,18,5,25)
hasLocation(#20081,#20082)
#20083=*
tokeninfo(#20083,6,#20001,31,"from")
#20084=@"loc,{#10000},5,27,5,30"
locations_default(#20084,#10000,5,27,5,30)
hasLocation(#20083,#20084)
#20085=*
tokeninfo(#20085,4,#20001,32,"""foo""")
#20086=@"loc,{#10000},5,32,5,36"
locations_default(#20086,#10000,5,32,5,36)
hasLocation(#20085,#20086)
#20087=*
tokeninfo(#20087,8,#20001,33,";")
#20088=@"loc,{#10000},5,37,5,37"
locations_default(#20088,#10000,5,37,5,37)
hasLocation(#20087,#20088)
#20089=*
tokeninfo(#20089,0,#20001,34,"")
#20090=@"loc,{#10000},5,38,5,37"
locations_default(#20090,#10000,5,38,5,37)
hasLocation(#20089,#20090)
#20091=*
entry_cfg_node(#20091,#20001)
#20092=@"loc,{#10000},1,1,1,0"
locations_default(#20092,#10000,1,1,1,0)
hasLocation(#20091,#20092)
#20093=*
exit_cfg_node(#20093,#20001)
hasLocation(#20093,#20090)
successor(#20012,#20014)
successor(#20014,#20093)
successor(#20004,#20006)
successor(#20008,#20010)
successor(#20011,#20012)
successor(#20010,#20011)
successor(#20006,#20008)
successor(#20091,#20004)
numlines(#10000,5,5,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,69 @@
#10000=@"/importNonTypeInDeclaredModule.js;sourcefile"
files(#10000,"/importNonTypeInDeclaredModule.js","importNonTypeInDeclaredModule","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,1"
locations_default(#20002,#10000,1,1,1,1)
hasLocation(#20001,#20002)
#20003=*
jsParseErrors(#20003,#20001,"Error: Imports within a `declare module` body must always be `import type` or `import typeof`."," import {
")
#20004=@"loc,{#10000},2,3,2,3"
locations_default(#20004,#10000,2,3,2,3)
hasLocation(#20003,#20004)
#20005=*
lines(#20005,#20001,"declare module ""m1"" {","
")
#20006=@"loc,{#10000},1,1,1,21"
locations_default(#20006,#10000,1,1,1,21)
hasLocation(#20005,#20006)
#20007=*
lines(#20007,#20001," import {","
")
#20008=@"loc,{#10000},2,1,2,10"
locations_default(#20008,#10000,2,1,2,10)
hasLocation(#20007,#20008)
indentation(#10000,2," ",2)
#20009=*
lines(#20009,#20001," T1,","
")
#20010=@"loc,{#10000},3,1,3,7"
locations_default(#20010,#10000,3,1,3,7)
hasLocation(#20009,#20010)
indentation(#10000,3," ",4)
#20011=*
lines(#20011,#20001," T2","
")
#20012=@"loc,{#10000},4,1,4,6"
locations_default(#20012,#10000,4,1,4,6)
hasLocation(#20011,#20012)
indentation(#10000,4," ",4)
#20013=*
lines(#20013,#20001," } from ""m2""","
")
#20014=@"loc,{#10000},5,1,5,13"
locations_default(#20014,#10000,5,1,5,13)
hasLocation(#20013,#20014)
indentation(#10000,5," ",2)
#20015=*
lines(#20015,#20001,"}","
")
#20016=@"loc,{#10000},6,1,6,1"
locations_default(#20016,#10000,6,1,6,1)
hasLocation(#20015,#20016)
#20017=*
lines(#20017,#20001," ","")
#20018=@"loc,{#10000},7,1,7,2"
locations_default(#20018,#10000,7,1,7,2)
hasLocation(#20017,#20018)
numlines(#20001,7,0,0)
numlines(#10000,7,0,0)
filetype(#10000,"javascript")

View File

@@ -10,8 +10,8 @@ hasLocation(#10000,#10002)
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,3,0"
locations_default(#20002,#10000,1,1,3,0)
#20002=@"loc,{#10000},1,1,3,27"
locations_default(#20002,#10000,1,1,3,27)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
@@ -73,123 +73,168 @@ lines(#20016,#20001,"import { type t } from 'n';","
#20017=@"loc,{#10000},2,1,2,27"
locations_default(#20017,#10000,2,1,2,27)
hasLocation(#20016,#20017)
numlines(#20001,2,2,0)
#20018=*
tokeninfo(#20018,7,#20001,0,"import")
#20019=@"loc,{#10000},1,1,1,6"
locations_default(#20019,#10000,1,1,1,6)
lines(#20018,#20001,"import type { t } from 'o';","")
#20019=@"loc,{#10000},3,1,3,27"
locations_default(#20019,#10000,3,1,3,27)
hasLocation(#20018,#20019)
numlines(#20001,3,3,0)
#20020=*
tokeninfo(#20020,8,#20001,1,"{")
#20021=@"loc,{#10000},1,8,1,8"
locations_default(#20021,#10000,1,8,1,8)
tokeninfo(#20020,7,#20001,0,"import")
#20021=@"loc,{#10000},1,1,1,6"
locations_default(#20021,#10000,1,1,1,6)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,2,"type")
hasLocation(#20022,#20012)
#20023=*
tokeninfo(#20023,8,#20001,3,",")
#20024=@"loc,{#10000},1,14,1,14"
locations_default(#20024,#10000,1,14,1,14)
hasLocation(#20023,#20024)
tokeninfo(#20022,8,#20001,1,"{")
#20023=@"loc,{#10000},1,8,1,8"
locations_default(#20023,#10000,1,8,1,8)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,2,"type")
hasLocation(#20024,#20012)
#20025=*
tokeninfo(#20025,6,#20001,4,"type")
#20026=@"loc,{#10000},1,16,1,19"
locations_default(#20026,#10000,1,16,1,19)
tokeninfo(#20025,8,#20001,3,",")
#20026=@"loc,{#10000},1,14,1,14"
locations_default(#20026,#10000,1,14,1,14)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,6,#20001,5,"t1")
#20028=@"loc,{#10000},1,21,1,22"
locations_default(#20028,#10000,1,21,1,22)
tokeninfo(#20027,6,#20001,4,"type")
#20028=@"loc,{#10000},1,16,1,19"
locations_default(#20028,#10000,1,16,1,19)
hasLocation(#20027,#20028)
#20029=*
tokeninfo(#20029,8,#20001,6,",")
#20030=@"loc,{#10000},1,23,1,23"
locations_default(#20030,#10000,1,23,1,23)
tokeninfo(#20029,6,#20001,5,"t1")
#20030=@"loc,{#10000},1,21,1,22"
locations_default(#20030,#10000,1,21,1,22)
hasLocation(#20029,#20030)
#20031=*
tokeninfo(#20031,7,#20001,7,"typeof")
#20032=@"loc,{#10000},1,25,1,30"
locations_default(#20032,#10000,1,25,1,30)
tokeninfo(#20031,8,#20001,6,",")
#20032=@"loc,{#10000},1,23,1,23"
locations_default(#20032,#10000,1,23,1,23)
hasLocation(#20031,#20032)
#20033=*
tokeninfo(#20033,6,#20001,8,"t2")
#20034=@"loc,{#10000},1,32,1,33"
locations_default(#20034,#10000,1,32,1,33)
tokeninfo(#20033,7,#20001,7,"typeof")
#20034=@"loc,{#10000},1,25,1,30"
locations_default(#20034,#10000,1,25,1,30)
hasLocation(#20033,#20034)
#20035=*
tokeninfo(#20035,8,#20001,9,"}")
#20036=@"loc,{#10000},1,35,1,35"
locations_default(#20036,#10000,1,35,1,35)
tokeninfo(#20035,6,#20001,8,"t2")
#20036=@"loc,{#10000},1,32,1,33"
locations_default(#20036,#10000,1,32,1,33)
hasLocation(#20035,#20036)
#20037=*
tokeninfo(#20037,6,#20001,10,"from")
#20038=@"loc,{#10000},1,37,1,40"
locations_default(#20038,#10000,1,37,1,40)
tokeninfo(#20037,8,#20001,9,"}")
#20038=@"loc,{#10000},1,35,1,35"
locations_default(#20038,#10000,1,35,1,35)
hasLocation(#20037,#20038)
#20039=*
tokeninfo(#20039,4,#20001,11,"'m'")
hasLocation(#20039,#20010)
#20040=*
tokeninfo(#20040,8,#20001,12,";")
#20041=@"loc,{#10000},1,45,1,45"
locations_default(#20041,#10000,1,45,1,45)
hasLocation(#20040,#20041)
tokeninfo(#20039,6,#20001,10,"from")
#20040=@"loc,{#10000},1,37,1,40"
locations_default(#20040,#10000,1,37,1,40)
hasLocation(#20039,#20040)
#20041=*
tokeninfo(#20041,4,#20001,11,"'m'")
hasLocation(#20041,#20010)
#20042=*
tokeninfo(#20042,7,#20001,13,"import")
#20043=@"loc,{#10000},2,1,2,6"
locations_default(#20043,#10000,2,1,2,6)
tokeninfo(#20042,8,#20001,12,";")
#20043=@"loc,{#10000},1,45,1,45"
locations_default(#20043,#10000,1,45,1,45)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,8,#20001,14,"{")
#20045=@"loc,{#10000},2,8,2,8"
locations_default(#20045,#10000,2,8,2,8)
tokeninfo(#20044,7,#20001,13,"import")
#20045=@"loc,{#10000},2,1,2,6"
locations_default(#20045,#10000,2,1,2,6)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,6,#20001,15,"type")
#20047=@"loc,{#10000},2,10,2,13"
locations_default(#20047,#10000,2,10,2,13)
tokeninfo(#20046,8,#20001,14,"{")
#20047=@"loc,{#10000},2,8,2,8"
locations_default(#20047,#10000,2,8,2,8)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,6,#20001,16,"t")
#20049=@"loc,{#10000},2,15,2,15"
locations_default(#20049,#10000,2,15,2,15)
tokeninfo(#20048,6,#20001,15,"type")
#20049=@"loc,{#10000},2,10,2,13"
locations_default(#20049,#10000,2,10,2,13)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,8,#20001,17,"}")
#20051=@"loc,{#10000},2,17,2,17"
locations_default(#20051,#10000,2,17,2,17)
tokeninfo(#20050,6,#20001,16,"t")
#20051=@"loc,{#10000},2,15,2,15"
locations_default(#20051,#10000,2,15,2,15)
hasLocation(#20050,#20051)
#20052=*
tokeninfo(#20052,6,#20001,18,"from")
#20053=@"loc,{#10000},2,19,2,22"
locations_default(#20053,#10000,2,19,2,22)
tokeninfo(#20052,8,#20001,17,"}")
#20053=@"loc,{#10000},2,17,2,17"
locations_default(#20053,#10000,2,17,2,17)
hasLocation(#20052,#20053)
#20054=*
tokeninfo(#20054,4,#20001,19,"'n'")
#20055=@"loc,{#10000},2,24,2,26"
locations_default(#20055,#10000,2,24,2,26)
tokeninfo(#20054,6,#20001,18,"from")
#20055=@"loc,{#10000},2,19,2,22"
locations_default(#20055,#10000,2,19,2,22)
hasLocation(#20054,#20055)
#20056=*
tokeninfo(#20056,8,#20001,20,";")
#20057=@"loc,{#10000},2,27,2,27"
locations_default(#20057,#10000,2,27,2,27)
tokeninfo(#20056,4,#20001,19,"'n'")
#20057=@"loc,{#10000},2,24,2,26"
locations_default(#20057,#10000,2,24,2,26)
hasLocation(#20056,#20057)
#20058=*
tokeninfo(#20058,0,#20001,21,"")
#20059=@"loc,{#10000},3,1,3,0"
locations_default(#20059,#10000,3,1,3,0)
tokeninfo(#20058,8,#20001,20,";")
#20059=@"loc,{#10000},2,27,2,27"
locations_default(#20059,#10000,2,27,2,27)
hasLocation(#20058,#20059)
#20060=*
entry_cfg_node(#20060,#20001)
#20061=@"loc,{#10000},1,1,1,0"
locations_default(#20061,#10000,1,1,1,0)
tokeninfo(#20060,7,#20001,21,"import")
#20061=@"loc,{#10000},3,1,3,6"
locations_default(#20061,#10000,3,1,3,6)
hasLocation(#20060,#20061)
#20062=*
exit_cfg_node(#20062,#20001)
hasLocation(#20062,#20059)
successor(#20007,#20062)
tokeninfo(#20062,6,#20001,22,"type")
#20063=@"loc,{#10000},3,8,3,11"
locations_default(#20063,#10000,3,8,3,11)
hasLocation(#20062,#20063)
#20064=*
tokeninfo(#20064,8,#20001,23,"{")
#20065=@"loc,{#10000},3,13,3,13"
locations_default(#20065,#10000,3,13,3,13)
hasLocation(#20064,#20065)
#20066=*
tokeninfo(#20066,6,#20001,24,"t")
#20067=@"loc,{#10000},3,15,3,15"
locations_default(#20067,#10000,3,15,3,15)
hasLocation(#20066,#20067)
#20068=*
tokeninfo(#20068,8,#20001,25,"}")
#20069=@"loc,{#10000},3,17,3,17"
locations_default(#20069,#10000,3,17,3,17)
hasLocation(#20068,#20069)
#20070=*
tokeninfo(#20070,6,#20001,26,"from")
#20071=@"loc,{#10000},3,19,3,22"
locations_default(#20071,#10000,3,19,3,22)
hasLocation(#20070,#20071)
#20072=*
tokeninfo(#20072,4,#20001,27,"'o'")
#20073=@"loc,{#10000},3,24,3,26"
locations_default(#20073,#10000,3,24,3,26)
hasLocation(#20072,#20073)
#20074=*
tokeninfo(#20074,8,#20001,28,";")
#20075=@"loc,{#10000},3,27,3,27"
locations_default(#20075,#10000,3,27,3,27)
hasLocation(#20074,#20075)
#20076=*
tokeninfo(#20076,0,#20001,29,"")
#20077=@"loc,{#10000},3,28,3,27"
locations_default(#20077,#10000,3,28,3,27)
hasLocation(#20076,#20077)
#20078=*
entry_cfg_node(#20078,#20001)
#20079=@"loc,{#10000},1,1,1,0"
locations_default(#20079,#10000,1,1,1,0)
hasLocation(#20078,#20079)
#20080=*
exit_cfg_node(#20080,#20001)
hasLocation(#20080,#20077)
successor(#20007,#20080)
successor(#20011,#20007)
successor(#20060,#20011)
numlines(#10000,2,2,0)
successor(#20078,#20011)
numlines(#10000,3,3,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,223 @@
#10000=@"/importTypeInDeclaredModule.js;sourcefile"
files(#10000,"/importTypeInDeclaredModule.js","importTypeInDeclaredModule","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,11,2"
locations_default(#20002,#10000,1,1,11,2)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=*
lines(#20004,#20001,"declare module ""m1"" {","
")
#20005=@"loc,{#10000},1,1,1,21"
locations_default(#20005,#10000,1,1,1,21)
hasLocation(#20004,#20005)
#20006=*
lines(#20006,#20001," import type {","
")
#20007=@"loc,{#10000},2,1,2,15"
locations_default(#20007,#10000,2,1,2,15)
hasLocation(#20006,#20007)
indentation(#10000,2," ",2)
#20008=*
lines(#20008,#20001," T1,","
")
#20009=@"loc,{#10000},3,1,3,7"
locations_default(#20009,#10000,3,1,3,7)
hasLocation(#20008,#20009)
indentation(#10000,3," ",4)
#20010=*
lines(#20010,#20001," T2","
")
#20011=@"loc,{#10000},4,1,4,6"
locations_default(#20011,#10000,4,1,4,6)
hasLocation(#20010,#20011)
indentation(#10000,4," ",4)
#20012=*
lines(#20012,#20001," } from ""m2""","
")
#20013=@"loc,{#10000},5,1,5,13"
locations_default(#20013,#10000,5,1,5,13)
hasLocation(#20012,#20013)
indentation(#10000,5," ",2)
#20014=*
lines(#20014,#20001," import typeof {","
")
#20015=@"loc,{#10000},6,1,6,19"
locations_default(#20015,#10000,6,1,6,19)
hasLocation(#20014,#20015)
indentation(#10000,6," ",4)
#20016=*
lines(#20016,#20001," T3,","
")
#20017=@"loc,{#10000},7,1,7,7"
locations_default(#20017,#10000,7,1,7,7)
hasLocation(#20016,#20017)
indentation(#10000,7," ",4)
#20018=*
lines(#20018,#20001," T4","
")
#20019=@"loc,{#10000},8,1,8,6"
locations_default(#20019,#10000,8,1,8,6)
hasLocation(#20018,#20019)
indentation(#10000,8," ",4)
#20020=*
lines(#20020,#20001," } from ""m3""","
")
#20021=@"loc,{#10000},9,1,9,13"
locations_default(#20021,#10000,9,1,9,13)
hasLocation(#20020,#20021)
indentation(#10000,9," ",2)
#20022=*
lines(#20022,#20001,"}","
")
#20023=@"loc,{#10000},10,1,10,1"
locations_default(#20023,#10000,10,1,10,1)
hasLocation(#20022,#20023)
#20024=*
lines(#20024,#20001," ","")
#20025=@"loc,{#10000},11,1,11,2"
locations_default(#20025,#10000,11,1,11,2)
hasLocation(#20024,#20025)
numlines(#20001,11,10,0)
#20026=*
tokeninfo(#20026,6,#20001,0,"declare")
#20027=@"loc,{#10000},1,1,1,7"
locations_default(#20027,#10000,1,1,1,7)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,6,#20001,1,"module")
#20029=@"loc,{#10000},1,9,1,14"
locations_default(#20029,#10000,1,9,1,14)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,4,#20001,2,"""m1""")
#20031=@"loc,{#10000},1,16,1,19"
locations_default(#20031,#10000,1,16,1,19)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,8,#20001,3,"{")
#20033=@"loc,{#10000},1,21,1,21"
locations_default(#20033,#10000,1,21,1,21)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,7,#20001,4,"import")
#20035=@"loc,{#10000},2,3,2,8"
locations_default(#20035,#10000,2,3,2,8)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,6,#20001,5,"type")
#20037=@"loc,{#10000},2,10,2,13"
locations_default(#20037,#10000,2,10,2,13)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,8,#20001,6,"{")
#20039=@"loc,{#10000},2,15,2,15"
locations_default(#20039,#10000,2,15,2,15)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,6,#20001,7,"T1")
#20041=@"loc,{#10000},3,5,3,6"
locations_default(#20041,#10000,3,5,3,6)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,8,#20001,8,",")
#20043=@"loc,{#10000},3,7,3,7"
locations_default(#20043,#10000,3,7,3,7)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,6,#20001,9,"T2")
#20045=@"loc,{#10000},4,5,4,6"
locations_default(#20045,#10000,4,5,4,6)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,8,#20001,10,"}")
#20047=@"loc,{#10000},5,3,5,3"
locations_default(#20047,#10000,5,3,5,3)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,6,#20001,11,"from")
#20049=@"loc,{#10000},5,5,5,8"
locations_default(#20049,#10000,5,5,5,8)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,4,#20001,12,"""m2""")
#20051=@"loc,{#10000},5,10,5,13"
locations_default(#20051,#10000,5,10,5,13)
hasLocation(#20050,#20051)
#20052=*
tokeninfo(#20052,7,#20001,13,"import")
#20053=@"loc,{#10000},6,5,6,10"
locations_default(#20053,#10000,6,5,6,10)
hasLocation(#20052,#20053)
#20054=*
tokeninfo(#20054,7,#20001,14,"typeof")
#20055=@"loc,{#10000},6,12,6,17"
locations_default(#20055,#10000,6,12,6,17)
hasLocation(#20054,#20055)
#20056=*
tokeninfo(#20056,8,#20001,15,"{")
#20057=@"loc,{#10000},6,19,6,19"
locations_default(#20057,#10000,6,19,6,19)
hasLocation(#20056,#20057)
#20058=*
tokeninfo(#20058,6,#20001,16,"T3")
#20059=@"loc,{#10000},7,5,7,6"
locations_default(#20059,#10000,7,5,7,6)
hasLocation(#20058,#20059)
#20060=*
tokeninfo(#20060,8,#20001,17,",")
#20061=@"loc,{#10000},7,7,7,7"
locations_default(#20061,#10000,7,7,7,7)
hasLocation(#20060,#20061)
#20062=*
tokeninfo(#20062,6,#20001,18,"T4")
#20063=@"loc,{#10000},8,5,8,6"
locations_default(#20063,#10000,8,5,8,6)
hasLocation(#20062,#20063)
#20064=*
tokeninfo(#20064,8,#20001,19,"}")
#20065=@"loc,{#10000},9,3,9,3"
locations_default(#20065,#10000,9,3,9,3)
hasLocation(#20064,#20065)
#20066=*
tokeninfo(#20066,6,#20001,20,"from")
#20067=@"loc,{#10000},9,5,9,8"
locations_default(#20067,#10000,9,5,9,8)
hasLocation(#20066,#20067)
#20068=*
tokeninfo(#20068,4,#20001,21,"""m3""")
#20069=@"loc,{#10000},9,10,9,13"
locations_default(#20069,#10000,9,10,9,13)
hasLocation(#20068,#20069)
#20070=*
tokeninfo(#20070,8,#20001,22,"}")
hasLocation(#20070,#20023)
#20071=*
tokeninfo(#20071,0,#20001,23,"")
#20072=@"loc,{#10000},11,3,11,2"
locations_default(#20072,#10000,11,3,11,2)
hasLocation(#20071,#20072)
#20073=*
entry_cfg_node(#20073,#20001)
#20074=@"loc,{#10000},1,1,1,0"
locations_default(#20074,#10000,1,1,1,0)
hasLocation(#20073,#20074)
#20075=*
exit_cfg_node(#20075,#20001)
hasLocation(#20075,#20072)
successor(#20073,#20075)
numlines(#10000,11,10,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,125 @@
#10000=@"/notExplicitTypeParameters1.js;sourcefile"
files(#10000,"/notExplicitTypeParameters1.js","notExplicitTypeParameters1","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,8"
locations_default(#20002,#10000,1,1,1,8)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"1<2>(3);")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,29,#20003,0,"1<2>(3)")
#20005=@"loc,{#10000},1,1,1,7"
locations_default(#20005,#10000,1,1,1,7)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,27,#20004,0,"1<2")
#20007=@"loc,{#10000},1,1,1,3"
locations_default(#20007,#10000,1,1,1,3)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,3,#20006,0,"1")
#20009=@"loc,{#10000},1,1,1,1"
locations_default(#20009,#10000,1,1,1,1)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
literals("1","1",#20008)
#20010=*
exprs(#20010,3,#20006,1,"2")
#20011=@"loc,{#10000},1,3,1,3"
locations_default(#20011,#10000,1,3,1,3)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20003)
exprContainers(#20010,#20001)
literals("2","2",#20010)
#20012=*
exprs(#20012,63,#20004,1,"(3)")
#20013=@"loc,{#10000},1,5,1,7"
locations_default(#20013,#10000,1,5,1,7)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20003)
exprContainers(#20012,#20001)
#20014=*
exprs(#20014,3,#20012,0,"3")
#20015=@"loc,{#10000},1,6,1,6"
locations_default(#20015,#10000,1,6,1,6)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20003)
exprContainers(#20014,#20001)
literals("3","3",#20014)
#20016=*
lines(#20016,#20001,"1<2>(3);","")
hasLocation(#20016,#20002)
numlines(#20001,1,1,0)
#20017=*
tokeninfo(#20017,3,#20001,0,"1")
hasLocation(#20017,#20009)
#20018=*
tokeninfo(#20018,8,#20001,1,"<")
#20019=@"loc,{#10000},1,2,1,2"
locations_default(#20019,#10000,1,2,1,2)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,3,#20001,2,"2")
hasLocation(#20020,#20011)
#20021=*
tokeninfo(#20021,8,#20001,3,">")
#20022=@"loc,{#10000},1,4,1,4"
locations_default(#20022,#10000,1,4,1,4)
hasLocation(#20021,#20022)
#20023=*
tokeninfo(#20023,8,#20001,4,"(")
#20024=@"loc,{#10000},1,5,1,5"
locations_default(#20024,#10000,1,5,1,5)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,3,#20001,5,"3")
hasLocation(#20025,#20015)
#20026=*
tokeninfo(#20026,8,#20001,6,")")
#20027=@"loc,{#10000},1,7,1,7"
locations_default(#20027,#10000,1,7,1,7)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,7,";")
#20029=@"loc,{#10000},1,8,1,8"
locations_default(#20029,#10000,1,8,1,8)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,0,#20001,8,"")
#20031=@"loc,{#10000},1,9,1,8"
locations_default(#20031,#10000,1,9,1,8)
hasLocation(#20030,#20031)
#20032=*
entry_cfg_node(#20032,#20001)
#20033=@"loc,{#10000},1,1,1,0"
locations_default(#20033,#10000,1,1,1,0)
hasLocation(#20032,#20033)
#20034=*
exit_cfg_node(#20034,#20001)
hasLocation(#20034,#20031)
successor(#20003,#20008)
successor(#20012,#20014)
successor(#20014,#20004)
successor(#20010,#20006)
successor(#20008,#20010)
successor(#20006,#20012)
successor(#20004,#20034)
successor(#20032,#20003)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,170 @@
#10000=@"/notExplicitTypeParameters2.js;sourcefile"
files(#10000,"/notExplicitTypeParameters2.js","notExplicitTypeParameters2","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,12"
locations_default(#20002,#10000,1,1,1,12)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"f<g()>(h());")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,29,#20003,0,"f<g()>(h())")
#20005=@"loc,{#10000},1,1,1,11"
locations_default(#20005,#10000,1,1,1,11)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,27,#20004,0,"f<g()")
#20007=@"loc,{#10000},1,1,1,5"
locations_default(#20007,#10000,1,1,1,5)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,79,#20006,0,"f")
#20009=@"loc,{#10000},1,1,1,1"
locations_default(#20009,#10000,1,1,1,1)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
literals("f","f",#20008)
#20010=@"var;{f};{#20000}"
variables(#20010,"f",#20000)
bind(#20008,#20010)
#20011=*
exprs(#20011,13,#20006,1,"g()")
#20012=@"loc,{#10000},1,3,1,5"
locations_default(#20012,#10000,1,3,1,5)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20003)
exprContainers(#20011,#20001)
#20013=*
exprs(#20013,79,#20011,-1,"g")
#20014=@"loc,{#10000},1,3,1,3"
locations_default(#20014,#10000,1,3,1,3)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
literals("g","g",#20013)
#20015=@"var;{g};{#20000}"
variables(#20015,"g",#20000)
bind(#20013,#20015)
#20016=*
exprs(#20016,63,#20004,1,"(h())")
#20017=@"loc,{#10000},1,7,1,11"
locations_default(#20017,#10000,1,7,1,11)
hasLocation(#20016,#20017)
enclosingStmt(#20016,#20003)
exprContainers(#20016,#20001)
#20018=*
exprs(#20018,13,#20016,0,"h()")
#20019=@"loc,{#10000},1,8,1,10"
locations_default(#20019,#10000,1,8,1,10)
hasLocation(#20018,#20019)
enclosingStmt(#20018,#20003)
exprContainers(#20018,#20001)
#20020=*
exprs(#20020,79,#20018,-1,"h")
#20021=@"loc,{#10000},1,8,1,8"
locations_default(#20021,#10000,1,8,1,8)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20003)
exprContainers(#20020,#20001)
literals("h","h",#20020)
#20022=@"var;{h};{#20000}"
variables(#20022,"h",#20000)
bind(#20020,#20022)
#20023=*
lines(#20023,#20001,"f<g()>(h());","")
hasLocation(#20023,#20002)
numlines(#20001,1,1,0)
#20024=*
tokeninfo(#20024,6,#20001,0,"f")
hasLocation(#20024,#20009)
#20025=*
tokeninfo(#20025,8,#20001,1,"<")
#20026=@"loc,{#10000},1,2,1,2"
locations_default(#20026,#10000,1,2,1,2)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,6,#20001,2,"g")
hasLocation(#20027,#20014)
#20028=*
tokeninfo(#20028,8,#20001,3,"(")
#20029=@"loc,{#10000},1,4,1,4"
locations_default(#20029,#10000,1,4,1,4)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,4,")")
#20031=@"loc,{#10000},1,5,1,5"
locations_default(#20031,#10000,1,5,1,5)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,8,#20001,5,">")
#20033=@"loc,{#10000},1,6,1,6"
locations_default(#20033,#10000,1,6,1,6)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,8,#20001,6,"(")
#20035=@"loc,{#10000},1,7,1,7"
locations_default(#20035,#10000,1,7,1,7)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,6,#20001,7,"h")
hasLocation(#20036,#20021)
#20037=*
tokeninfo(#20037,8,#20001,8,"(")
#20038=@"loc,{#10000},1,9,1,9"
locations_default(#20038,#10000,1,9,1,9)
hasLocation(#20037,#20038)
#20039=*
tokeninfo(#20039,8,#20001,9,")")
#20040=@"loc,{#10000},1,10,1,10"
locations_default(#20040,#10000,1,10,1,10)
hasLocation(#20039,#20040)
#20041=*
tokeninfo(#20041,8,#20001,10,")")
#20042=@"loc,{#10000},1,11,1,11"
locations_default(#20042,#10000,1,11,1,11)
hasLocation(#20041,#20042)
#20043=*
tokeninfo(#20043,8,#20001,11,";")
#20044=@"loc,{#10000},1,12,1,12"
locations_default(#20044,#10000,1,12,1,12)
hasLocation(#20043,#20044)
#20045=*
tokeninfo(#20045,0,#20001,12,"")
#20046=@"loc,{#10000},1,13,1,12"
locations_default(#20046,#10000,1,13,1,12)
hasLocation(#20045,#20046)
#20047=*
entry_cfg_node(#20047,#20001)
#20048=@"loc,{#10000},1,1,1,0"
locations_default(#20048,#10000,1,1,1,0)
hasLocation(#20047,#20048)
#20049=*
exit_cfg_node(#20049,#20001)
hasLocation(#20049,#20046)
successor(#20003,#20008)
successor(#20016,#20020)
successor(#20020,#20018)
successor(#20018,#20004)
successor(#20013,#20011)
successor(#20011,#20006)
successor(#20008,#20013)
successor(#20006,#20016)
successor(#20004,#20049)
successor(#20047,#20003)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -0,0 +1,131 @@
#10000=@"/notExplicitTypeParameters3.js;sourcefile"
files(#10000,"/notExplicitTypeParameters3.js","notExplicitTypeParameters3","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"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,10"
locations_default(#20002,#10000,1,1,1,10)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"/x/<2>(3);")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,29,#20003,0,"/x/<2>(3)")
#20005=@"loc,{#10000},1,1,1,9"
locations_default(#20005,#10000,1,1,1,9)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,27,#20004,0,"/x/<2")
#20007=@"loc,{#10000},1,1,1,5"
locations_default(#20007,#10000,1,1,1,5)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,5,#20006,0,"/x/")
#20009=@"loc,{#10000},1,1,1,3"
locations_default(#20009,#10000,1,1,1,3)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
literals("/x/","/x/",#20008)
#20010=*
regexpterm(#20010,14,#20008,0,"x")
#20011=@"loc,{#10000},1,2,1,2"
locations_default(#20011,#10000,1,2,1,2)
hasLocation(#20010,#20011)
regexpConstValue(#20010,"x")
#20012=*
exprs(#20012,3,#20006,1,"2")
#20013=@"loc,{#10000},1,5,1,5"
locations_default(#20013,#10000,1,5,1,5)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20003)
exprContainers(#20012,#20001)
literals("2","2",#20012)
#20014=*
exprs(#20014,63,#20004,1,"(3)")
#20015=@"loc,{#10000},1,7,1,9"
locations_default(#20015,#10000,1,7,1,9)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20003)
exprContainers(#20014,#20001)
#20016=*
exprs(#20016,3,#20014,0,"3")
#20017=@"loc,{#10000},1,8,1,8"
locations_default(#20017,#10000,1,8,1,8)
hasLocation(#20016,#20017)
enclosingStmt(#20016,#20003)
exprContainers(#20016,#20001)
literals("3","3",#20016)
#20018=*
lines(#20018,#20001,"/x/<2>(3);","")
hasLocation(#20018,#20002)
numlines(#20001,1,1,0)
#20019=*
tokeninfo(#20019,5,#20001,0,"/x/")
hasLocation(#20019,#20009)
#20020=*
tokeninfo(#20020,8,#20001,1,"<")
#20021=@"loc,{#10000},1,4,1,4"
locations_default(#20021,#10000,1,4,1,4)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,3,#20001,2,"2")
hasLocation(#20022,#20013)
#20023=*
tokeninfo(#20023,8,#20001,3,">")
#20024=@"loc,{#10000},1,6,1,6"
locations_default(#20024,#10000,1,6,1,6)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,8,#20001,4,"(")
#20026=@"loc,{#10000},1,7,1,7"
locations_default(#20026,#10000,1,7,1,7)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,3,#20001,5,"3")
hasLocation(#20027,#20017)
#20028=*
tokeninfo(#20028,8,#20001,6,")")
#20029=@"loc,{#10000},1,9,1,9"
locations_default(#20029,#10000,1,9,1,9)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,7,";")
#20031=@"loc,{#10000},1,10,1,10"
locations_default(#20031,#10000,1,10,1,10)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,0,#20001,8,"")
#20033=@"loc,{#10000},1,11,1,10"
locations_default(#20033,#10000,1,11,1,10)
hasLocation(#20032,#20033)
#20034=*
entry_cfg_node(#20034,#20001)
#20035=@"loc,{#10000},1,1,1,0"
locations_default(#20035,#10000,1,1,1,0)
hasLocation(#20034,#20035)
#20036=*
exit_cfg_node(#20036,#20001)
hasLocation(#20036,#20033)
successor(#20003,#20008)
successor(#20014,#20016)
successor(#20016,#20004)
successor(#20012,#20006)
successor(#20008,#20012)
successor(#20006,#20014)
successor(#20004,#20036)
successor(#20034,#20003)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")