Merge branch 'master' into csharp/autoformat

This commit is contained in:
Tom Hvitved
2019-02-05 10:37:42 +01:00
committed by GitHub
274 changed files with 70048 additions and 74391 deletions

View File

@@ -25,6 +25,4 @@
## Changes to QL libraries
* The class `AccessorCall` (and subclasses `PropertyCall`, `IndexerCall`, and `EventCall`) have been redefined, so the expressions they represent are not necessarily the accesses themselves, but rather the expressions that give rise to the accessor calls. For example, in the property assignment `x.Prop = 0`, the call to the setter for `Prop` is no longer represented by the access `x.Prop`, but instead the whole assignment. Consequently, it is no longer safe to cast directly between `AccessorCall`s and `Access`es, and the predicate `AccessorCall::getAccess()` should be used instead.
## Changes to the autobuilder

View File

@@ -8,6 +8,6 @@ int doFoo(Names n) { //wrong: n is passed by value (meaning the entire structure
...
}
int doBar(Names &n) { //better, only a reference is passed
int doBar(const Names &n) { //better, only a reference is passed
...
}

View File

@@ -1,6 +1,6 @@
/**
* @name Large object passed by value
* @description An object larger than 64 bytes is passed by value to a function. Passing large objects by value unnecessarily use up scarce stack space, increase the cost of calling a function and can be a security risk. Use a pointer to the object instead.
* @description An object larger than 64 bytes is passed by value to a function. Passing large objects by value unnecessarily use up scarce stack space, increase the cost of calling a function and can be a security risk. Use a const pointer to the object instead.
* @kind problem
* @problem.severity warning
* @precision high
@@ -20,5 +20,5 @@ where f.getAParameter() = p
and not t.getUnderlyingType() instanceof ArrayType
and not f instanceof CopyAssignmentOperator
select
p, "This parameter of type $@ is " + size.toString() + " bytes - consider passing a pointer/reference instead.",
p, "This parameter of type $@ is " + size.toString() + " bytes - consider passing a const pointer/reference instead.",
t, t.toString()

View File

@@ -159,24 +159,13 @@ private cached module Cached {
not startsBasicBlock(i2)
}
/** Gets the index of `i` in its `IRBlock`. */
private int getMemberIndex(Instruction i) {
startsBasicBlock(i) and
result = 0
or
exists(Instruction iPrev |
adjacentInBlock(iPrev, i) and
result = getMemberIndex(iPrev) + 1
)
}
/** Holds if `i` is the `index`th instruction the block starting with `first`. */
private Instruction getInstructionFromFirst(Instruction first, int index) =
shortestDistances(startsBasicBlock/1, adjacentInBlock/2)(first, result, index)
/** Holds if `i` is the `index`th instruction in `block`. */
cached Instruction getInstruction(TIRBlock block, int index) {
exists(Instruction first |
block = MkIRBlock(first) and
index = getMemberIndex(result) and
adjacentInBlock*(first, result)
)
result = getInstructionFromFirst(getFirstInstruction(block), index)
}
cached int getInstructionCount(TIRBlock block) {

View File

@@ -3,31 +3,7 @@ import FunctionIR
import cpp
import semmle.code.cpp.ir.implementation.TempVariableTag
private import semmle.code.cpp.ir.internal.TempVariableTag
private newtype TIRVariable =
TIRAutomaticUserVariable(LocalScopeVariable var, FunctionIR funcIR) {
exists(Function func |
func = funcIR.getFunction() and
(
var.getFunction() = func or
var.(Parameter).getCatchBlock().getEnclosingFunction() = func
)
)
} or
TIRStaticUserVariable(Variable var, FunctionIR funcIR) {
(
var instanceof GlobalOrNamespaceVariable or
var instanceof MemberVariable and not var instanceof Field
) and
exists(VariableAccess access |
access.getTarget() = var and
access.getEnclosingFunction() = funcIR.getFunction()
)
} or
TIRTempVariable(FunctionIR funcIR, Locatable ast, TempVariableTag tag,
Type type) {
Construction::hasTempVariable(funcIR.getFunction(), ast, tag, type)
}
private import semmle.code.cpp.ir.internal.TIRVariable
IRUserVariable getIRUserVariable(Function func, Variable var) {
result.getVariable() = var and
@@ -40,7 +16,7 @@ IRUserVariable getIRUserVariable(Function func, Variable var) {
* generated by the AST-to-IR translation (`IRTempVariable`).
*/
abstract class IRVariable extends TIRVariable {
FunctionIR funcIR;
Function func;
abstract string toString();
@@ -72,14 +48,14 @@ abstract class IRVariable extends TIRVariable {
* Gets the IR for the function that references this variable.
*/
final FunctionIR getFunctionIR() {
result = funcIR
result.getFunction() = func
}
/**
* Gets the function that references this variable.
*/
final Function getFunction() {
result = funcIR.getFunction()
result = func
}
}
@@ -126,7 +102,7 @@ class IRAutomaticUserVariable extends IRUserVariable, IRAutomaticVariable,
LocalScopeVariable localVar;
IRAutomaticUserVariable() {
this = TIRAutomaticUserVariable(localVar, funcIR) and
this = TIRAutomaticUserVariable(localVar, func) and
var = localVar
}
@@ -137,7 +113,7 @@ class IRAutomaticUserVariable extends IRUserVariable, IRAutomaticVariable,
class IRStaticUserVariable extends IRUserVariable, TIRStaticUserVariable {
IRStaticUserVariable() {
this = TIRStaticUserVariable(var, funcIR)
this = TIRStaticUserVariable(var, func)
}
}
@@ -152,7 +128,7 @@ class IRTempVariable extends IRVariable, IRAutomaticVariable, TIRTempVariable {
Type type;
IRTempVariable() {
this = TIRTempVariable(funcIR, ast, tag, type)
this = TIRTempVariable(func, ast, tag, type)
}
override final Type getType() {

View File

@@ -10,8 +10,6 @@ import semmle.code.cpp.ir.implementation.Opcode
private import semmle.code.cpp.ir.implementation.Opcode
private import semmle.code.cpp.ir.internal.OperandTag
class InstructionTag = Construction::InstructionTagType;
module InstructionSanity {
/**
* Holds if the instruction `instr` should be expected to have an operand
@@ -211,17 +209,6 @@ module InstructionSanity {
* Represents a single operation in the IR.
*/
class Instruction extends Construction::TInstruction {
Opcode opcode;
Locatable ast;
InstructionTag instructionTag;
Type resultType;
FunctionIR funcIR;
boolean glvalue;
Instruction() {
this = Construction::MkInstruction(funcIR, opcode, ast, instructionTag, resultType, glvalue)
}
final string toString() {
result = getOpcode().toString() + ": " + getAST().toString()
}
@@ -244,9 +231,9 @@ class Instruction extends Construction::TInstruction {
*/
final string getOperationString() {
if exists(getImmediateString()) then
result = getOperationPrefix() + opcode.toString() + "[" + getImmediateString() + "]"
result = getOperationPrefix() + getOpcode().toString() + "[" + getImmediateString() + "]"
else
result = getOperationPrefix() + opcode.toString()
result = getOperationPrefix() + getOpcode().toString()
}
/**
@@ -264,7 +251,7 @@ class Instruction extends Construction::TInstruction {
}
private string getResultPrefix() {
if resultType instanceof VoidType then
if getResultType() instanceof VoidType then
result = "v"
else if hasMemoryResult() then
if isResultModeled() then
@@ -309,8 +296,8 @@ class Instruction extends Construction::TInstruction {
private string getResultTypeString() {
exists(string valcat |
valcat = getValueCategoryString(resultType.toString()) and
if (resultType instanceof UnknownType and
valcat = getValueCategoryString(getResultType().toString()) and
if (getResultType() instanceof UnknownType and
not isGLValue() and
exists(getResultSize())) then (
result = valcat + "[" + getResultSize().toString() + "]"
@@ -378,28 +365,28 @@ class Instruction extends Construction::TInstruction {
* Gets the function that contains this instruction.
*/
final Function getFunction() {
result = funcIR.getFunction()
result = getFunctionIR().getFunction()
}
/**
* Gets the FunctionIR object that contains the IR for this instruction.
*/
final FunctionIR getFunctionIR() {
result = funcIR
result = Construction::getInstructionEnclosingFunctionIR(this)
}
/**
* Gets the AST that caused this instruction to be generated.
*/
final Locatable getAST() {
result = ast
result = Construction::getInstructionAST(this)
}
/**
* Gets the location of the source code for this instruction.
*/
final Location getLocation() {
result = ast.getLocation()
result = getAST().getLocation()
}
/**
@@ -421,7 +408,7 @@ class Instruction extends Construction::TInstruction {
* instruction does not produce a result, its result type will be `VoidType`.
*/
final Type getResultType() {
result = resultType
Construction::instructionHasType(this, result, _)
}
/**
@@ -443,7 +430,7 @@ class Instruction extends Construction::TInstruction {
* the integer value loaded from variable `x`.
*/
final predicate isGLValue() {
glvalue = true
Construction::instructionHasType(this, _, true)
}
/**
@@ -460,10 +447,10 @@ class Instruction extends Construction::TInstruction {
result = nullptr.getSize()
)
)
else if resultType instanceof UnknownType then
else if getResultType() instanceof UnknownType then
result = Construction::getInstructionResultSize(this)
else (
result = resultType.getSize()
result = getResultType().getSize()
)
}
@@ -471,11 +458,7 @@ class Instruction extends Construction::TInstruction {
* Gets the opcode that specifies the operation performed by this instruction.
*/
final Opcode getOpcode() {
result = opcode
}
final InstructionTag getTag() {
result = instructionTag
result = Construction::getInstructionOpcode(this)
}
/**
@@ -644,19 +627,19 @@ class ConstantValueInstruction extends Instruction {
class EnterFunctionInstruction extends Instruction {
EnterFunctionInstruction() {
opcode instanceof Opcode::EnterFunction
getOpcode() instanceof Opcode::EnterFunction
}
}
class VariableAddressInstruction extends VariableInstruction {
VariableAddressInstruction() {
opcode instanceof Opcode::VariableAddress
getOpcode() instanceof Opcode::VariableAddress
}
}
class InitializeParameterInstruction extends VariableInstruction {
InitializeParameterInstruction() {
opcode instanceof Opcode::InitializeParameter
getOpcode() instanceof Opcode::InitializeParameter
}
final Parameter getParameter() {
@@ -673,13 +656,13 @@ class InitializeParameterInstruction extends VariableInstruction {
*/
class InitializeThisInstruction extends Instruction {
InitializeThisInstruction() {
opcode instanceof Opcode::InitializeThis
getOpcode() instanceof Opcode::InitializeThis
}
}
class FieldAddressInstruction extends FieldInstruction {
FieldAddressInstruction() {
opcode instanceof Opcode::FieldAddress
getOpcode() instanceof Opcode::FieldAddress
}
final Instruction getObjectAddress() {
@@ -689,7 +672,7 @@ class FieldAddressInstruction extends FieldInstruction {
class UninitializedInstruction extends VariableInstruction {
UninitializedInstruction() {
opcode instanceof Opcode::Uninitialized
getOpcode() instanceof Opcode::Uninitialized
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -706,25 +689,25 @@ class UninitializedInstruction extends VariableInstruction {
class NoOpInstruction extends Instruction {
NoOpInstruction() {
opcode instanceof Opcode::NoOp
getOpcode() instanceof Opcode::NoOp
}
}
class ReturnInstruction extends Instruction {
ReturnInstruction() {
opcode instanceof ReturnOpcode
getOpcode() instanceof ReturnOpcode
}
}
class ReturnVoidInstruction extends ReturnInstruction {
ReturnVoidInstruction() {
opcode instanceof Opcode::ReturnVoid
getOpcode() instanceof Opcode::ReturnVoid
}
}
class ReturnValueInstruction extends ReturnInstruction {
ReturnValueInstruction() {
opcode instanceof Opcode::ReturnValue
getOpcode() instanceof Opcode::ReturnValue
}
final Instruction getReturnValue() {
@@ -734,7 +717,7 @@ class ReturnValueInstruction extends ReturnInstruction {
class CopyInstruction extends Instruction {
CopyInstruction() {
opcode instanceof CopyOpcode
getOpcode() instanceof CopyOpcode
}
final Instruction getSourceValue() {
@@ -744,13 +727,13 @@ class CopyInstruction extends Instruction {
class CopyValueInstruction extends CopyInstruction {
CopyValueInstruction() {
opcode instanceof Opcode::CopyValue
getOpcode() instanceof Opcode::CopyValue
}
}
class LoadInstruction extends CopyInstruction {
LoadInstruction() {
opcode instanceof Opcode::Load
getOpcode() instanceof Opcode::Load
}
final Instruction getSourceAddress() {
@@ -760,7 +743,7 @@ class LoadInstruction extends CopyInstruction {
class StoreInstruction extends CopyInstruction {
StoreInstruction() {
opcode instanceof Opcode::Store
getOpcode() instanceof Opcode::Store
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -774,7 +757,7 @@ class StoreInstruction extends CopyInstruction {
class ConditionalBranchInstruction extends Instruction {
ConditionalBranchInstruction() {
opcode instanceof Opcode::ConditionalBranch
getOpcode() instanceof Opcode::ConditionalBranch
}
final Instruction getCondition() {
@@ -792,25 +775,25 @@ class ConditionalBranchInstruction extends Instruction {
class ExitFunctionInstruction extends Instruction {
ExitFunctionInstruction() {
opcode instanceof Opcode::ExitFunction
getOpcode() instanceof Opcode::ExitFunction
}
}
class ConstantInstruction extends ConstantValueInstruction {
ConstantInstruction() {
opcode instanceof Opcode::Constant
getOpcode() instanceof Opcode::Constant
}
}
class IntegerConstantInstruction extends ConstantInstruction {
IntegerConstantInstruction() {
resultType instanceof IntegralType
getResultType() instanceof IntegralType
}
}
class FloatConstantInstruction extends ConstantInstruction {
FloatConstantInstruction() {
resultType instanceof FloatingPointType
getResultType() instanceof FloatingPointType
}
}
@@ -832,7 +815,7 @@ class StringConstantInstruction extends Instruction {
class BinaryInstruction extends Instruction {
BinaryInstruction() {
opcode instanceof BinaryOpcode
getOpcode() instanceof BinaryOpcode
}
final Instruction getLeftOperand() {
@@ -855,67 +838,67 @@ class BinaryInstruction extends Instruction {
class AddInstruction extends BinaryInstruction {
AddInstruction() {
opcode instanceof Opcode::Add
getOpcode() instanceof Opcode::Add
}
}
class SubInstruction extends BinaryInstruction {
SubInstruction() {
opcode instanceof Opcode::Sub
getOpcode() instanceof Opcode::Sub
}
}
class MulInstruction extends BinaryInstruction {
MulInstruction() {
opcode instanceof Opcode::Mul
getOpcode() instanceof Opcode::Mul
}
}
class DivInstruction extends BinaryInstruction {
DivInstruction() {
opcode instanceof Opcode::Div
getOpcode() instanceof Opcode::Div
}
}
class RemInstruction extends BinaryInstruction {
RemInstruction() {
opcode instanceof Opcode::Rem
getOpcode() instanceof Opcode::Rem
}
}
class NegateInstruction extends UnaryInstruction {
NegateInstruction() {
opcode instanceof Opcode::Negate
getOpcode() instanceof Opcode::Negate
}
}
class BitAndInstruction extends BinaryInstruction {
BitAndInstruction() {
opcode instanceof Opcode::BitAnd
getOpcode() instanceof Opcode::BitAnd
}
}
class BitOrInstruction extends BinaryInstruction {
BitOrInstruction() {
opcode instanceof Opcode::BitOr
getOpcode() instanceof Opcode::BitOr
}
}
class BitXorInstruction extends BinaryInstruction {
BitXorInstruction() {
opcode instanceof Opcode::BitXor
getOpcode() instanceof Opcode::BitXor
}
}
class ShiftLeftInstruction extends BinaryInstruction {
ShiftLeftInstruction() {
opcode instanceof Opcode::ShiftLeft
getOpcode() instanceof Opcode::ShiftLeft
}
}
class ShiftRightInstruction extends BinaryInstruction {
ShiftRightInstruction() {
opcode instanceof Opcode::ShiftRight
getOpcode() instanceof Opcode::ShiftRight
}
}
@@ -923,7 +906,7 @@ class PointerArithmeticInstruction extends BinaryInstruction {
int elementSize;
PointerArithmeticInstruction() {
opcode instanceof PointerArithmeticOpcode and
getOpcode() instanceof PointerArithmeticOpcode and
elementSize = Construction::getInstructionElementSize(this)
}
@@ -938,31 +921,31 @@ class PointerArithmeticInstruction extends BinaryInstruction {
class PointerOffsetInstruction extends PointerArithmeticInstruction {
PointerOffsetInstruction() {
opcode instanceof PointerOffsetOpcode
getOpcode() instanceof PointerOffsetOpcode
}
}
class PointerAddInstruction extends PointerOffsetInstruction {
PointerAddInstruction() {
opcode instanceof Opcode::PointerAdd
getOpcode() instanceof Opcode::PointerAdd
}
}
class PointerSubInstruction extends PointerOffsetInstruction {
PointerSubInstruction() {
opcode instanceof Opcode::PointerSub
getOpcode() instanceof Opcode::PointerSub
}
}
class PointerDiffInstruction extends PointerArithmeticInstruction {
PointerDiffInstruction() {
opcode instanceof Opcode::PointerDiff
getOpcode() instanceof Opcode::PointerDiff
}
}
class UnaryInstruction extends Instruction {
UnaryInstruction() {
opcode instanceof UnaryOpcode
getOpcode() instanceof UnaryOpcode
}
final Instruction getOperand() {
@@ -972,7 +955,7 @@ class UnaryInstruction extends Instruction {
class ConvertInstruction extends UnaryInstruction {
ConvertInstruction() {
opcode instanceof Opcode::Convert
getOpcode() instanceof Opcode::Convert
}
}
@@ -1024,7 +1007,7 @@ class InheritanceConversionInstruction extends UnaryInstruction {
*/
class ConvertToBaseInstruction extends InheritanceConversionInstruction {
ConvertToBaseInstruction() {
opcode instanceof Opcode::ConvertToBase
getOpcode() instanceof Opcode::ConvertToBase
}
}
@@ -1034,7 +1017,7 @@ class ConvertToBaseInstruction extends InheritanceConversionInstruction {
*/
class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction {
ConvertToVirtualBaseInstruction() {
opcode instanceof Opcode::ConvertToVirtualBase
getOpcode() instanceof Opcode::ConvertToVirtualBase
}
}
@@ -1044,37 +1027,37 @@ class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction {
*/
class ConvertToDerivedInstruction extends InheritanceConversionInstruction {
ConvertToDerivedInstruction() {
opcode instanceof Opcode::ConvertToDerived
getOpcode() instanceof Opcode::ConvertToDerived
}
}
class BitComplementInstruction extends UnaryInstruction {
BitComplementInstruction() {
opcode instanceof Opcode::BitComplement
getOpcode() instanceof Opcode::BitComplement
}
}
class LogicalNotInstruction extends UnaryInstruction {
LogicalNotInstruction() {
opcode instanceof Opcode::LogicalNot
getOpcode() instanceof Opcode::LogicalNot
}
}
class CompareInstruction extends BinaryInstruction {
CompareInstruction() {
opcode instanceof CompareOpcode
getOpcode() instanceof CompareOpcode
}
}
class CompareEQInstruction extends CompareInstruction {
CompareEQInstruction() {
opcode instanceof Opcode::CompareEQ
getOpcode() instanceof Opcode::CompareEQ
}
}
class CompareNEInstruction extends CompareInstruction {
CompareNEInstruction() {
opcode instanceof Opcode::CompareNE
getOpcode() instanceof Opcode::CompareNE
}
}
@@ -1083,7 +1066,7 @@ class CompareNEInstruction extends CompareInstruction {
*/
class RelationalInstruction extends CompareInstruction {
RelationalInstruction() {
opcode instanceof RelationalOpcode
getOpcode() instanceof RelationalOpcode
}
/**
@@ -1116,7 +1099,7 @@ class RelationalInstruction extends CompareInstruction {
class CompareLTInstruction extends RelationalInstruction {
CompareLTInstruction() {
opcode instanceof Opcode::CompareLT
getOpcode() instanceof Opcode::CompareLT
}
override Instruction getLesserOperand() {
@@ -1134,7 +1117,7 @@ class CompareLTInstruction extends RelationalInstruction {
class CompareGTInstruction extends RelationalInstruction {
CompareGTInstruction() {
opcode instanceof Opcode::CompareGT
getOpcode() instanceof Opcode::CompareGT
}
override Instruction getLesserOperand() {
@@ -1152,7 +1135,7 @@ class CompareGTInstruction extends RelationalInstruction {
class CompareLEInstruction extends RelationalInstruction {
CompareLEInstruction() {
opcode instanceof Opcode::CompareLE
getOpcode() instanceof Opcode::CompareLE
}
override Instruction getLesserOperand() {
@@ -1170,7 +1153,7 @@ class CompareLEInstruction extends RelationalInstruction {
class CompareGEInstruction extends RelationalInstruction {
CompareGEInstruction() {
opcode instanceof Opcode::CompareGE
getOpcode() instanceof Opcode::CompareGE
}
override Instruction getLesserOperand() {
@@ -1188,7 +1171,7 @@ class CompareGEInstruction extends RelationalInstruction {
class SwitchInstruction extends Instruction {
SwitchInstruction() {
opcode instanceof Opcode::Switch
getOpcode() instanceof Opcode::Switch
}
final Instruction getExpression() {
@@ -1211,7 +1194,7 @@ class SwitchInstruction extends Instruction {
*/
class CallInstruction extends Instruction {
CallInstruction() {
opcode instanceof Opcode::Call
getOpcode() instanceof Opcode::Call
}
/**
@@ -1254,7 +1237,7 @@ class CallInstruction extends Instruction {
*/
class SideEffectInstruction extends Instruction {
SideEffectInstruction() {
opcode instanceof SideEffectOpcode
getOpcode() instanceof SideEffectOpcode
}
final Instruction getPrimaryInstruction() {
@@ -1268,7 +1251,7 @@ class SideEffectInstruction extends Instruction {
*/
class CallSideEffectInstruction extends SideEffectInstruction {
CallSideEffectInstruction() {
opcode instanceof Opcode::CallSideEffect
getOpcode() instanceof Opcode::CallSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1282,7 +1265,7 @@ class CallSideEffectInstruction extends SideEffectInstruction {
*/
class CallReadSideEffectInstruction extends SideEffectInstruction {
CallReadSideEffectInstruction() {
opcode instanceof Opcode::CallReadSideEffect
getOpcode() instanceof Opcode::CallReadSideEffect
}
}
@@ -1291,7 +1274,7 @@ class CallReadSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectReadSideEffectInstruction extends SideEffectInstruction {
IndirectReadSideEffectInstruction() {
opcode instanceof Opcode::IndirectReadSideEffect
getOpcode() instanceof Opcode::IndirectReadSideEffect
}
}
@@ -1300,7 +1283,7 @@ class IndirectReadSideEffectInstruction extends SideEffectInstruction {
*/
class BufferReadSideEffectInstruction extends SideEffectInstruction {
BufferReadSideEffectInstruction() {
opcode instanceof Opcode::BufferReadSideEffect
getOpcode() instanceof Opcode::BufferReadSideEffect
}
}
@@ -1309,7 +1292,7 @@ class BufferReadSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectWriteSideEffectInstruction extends SideEffectInstruction {
IndirectWriteSideEffectInstruction() {
opcode instanceof Opcode::IndirectWriteSideEffect
getOpcode() instanceof Opcode::IndirectWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1323,7 +1306,7 @@ class IndirectWriteSideEffectInstruction extends SideEffectInstruction {
*/
class BufferWriteSideEffectInstruction extends SideEffectInstruction {
BufferWriteSideEffectInstruction() {
opcode instanceof Opcode::BufferWriteSideEffect
getOpcode() instanceof Opcode::BufferWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1338,7 +1321,7 @@ class BufferWriteSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction {
IndirectMayWriteSideEffectInstruction() {
opcode instanceof Opcode::IndirectMayWriteSideEffect
getOpcode() instanceof Opcode::IndirectMayWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1352,7 +1335,7 @@ class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction {
*/
class BufferMayWriteSideEffectInstruction extends SideEffectInstruction {
BufferMayWriteSideEffectInstruction() {
opcode instanceof Opcode::BufferMayWriteSideEffect
getOpcode() instanceof Opcode::BufferMayWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
result instanceof BufferMayMemoryAccess
@@ -1364,7 +1347,7 @@ class BufferMayWriteSideEffectInstruction extends SideEffectInstruction {
*/
class ThrowInstruction extends Instruction {
ThrowInstruction() {
opcode instanceof ThrowOpcode
getOpcode() instanceof ThrowOpcode
}
}
@@ -1373,7 +1356,7 @@ class ThrowInstruction extends Instruction {
*/
class ThrowValueInstruction extends ThrowInstruction {
ThrowValueInstruction() {
opcode instanceof Opcode::ThrowValue
getOpcode() instanceof Opcode::ThrowValue
}
/**
@@ -1396,7 +1379,7 @@ class ThrowValueInstruction extends ThrowInstruction {
*/
class ReThrowInstruction extends ThrowInstruction {
ReThrowInstruction() {
opcode instanceof Opcode::ReThrow
getOpcode() instanceof Opcode::ReThrow
}
}
@@ -1405,7 +1388,7 @@ class ReThrowInstruction extends ThrowInstruction {
*/
class UnwindInstruction extends Instruction {
UnwindInstruction() {
opcode instanceof Opcode::Unwind
getOpcode() instanceof Opcode::Unwind
}
}
@@ -1414,7 +1397,7 @@ class UnwindInstruction extends Instruction {
*/
class CatchInstruction extends Instruction {
CatchInstruction() {
opcode instanceof CatchOpcode
getOpcode() instanceof CatchOpcode
}
}
@@ -1425,7 +1408,7 @@ class CatchByTypeInstruction extends CatchInstruction {
Type exceptionType;
CatchByTypeInstruction() {
opcode instanceof Opcode::CatchByType and
getOpcode() instanceof Opcode::CatchByType and
exceptionType = Construction::getInstructionExceptionType(this)
}
@@ -1446,13 +1429,13 @@ class CatchByTypeInstruction extends CatchInstruction {
*/
class CatchAnyInstruction extends CatchInstruction {
CatchAnyInstruction() {
opcode instanceof Opcode::CatchAny
getOpcode() instanceof Opcode::CatchAny
}
}
class UnmodeledDefinitionInstruction extends Instruction {
UnmodeledDefinitionInstruction() {
opcode instanceof Opcode::UnmodeledDefinition
getOpcode() instanceof Opcode::UnmodeledDefinition
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1465,7 +1448,7 @@ class UnmodeledDefinitionInstruction extends Instruction {
*/
class AliasedDefinitionInstruction extends Instruction {
AliasedDefinitionInstruction() {
opcode instanceof Opcode::AliasedDefinition
getOpcode() instanceof Opcode::AliasedDefinition
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1475,7 +1458,7 @@ class AliasedDefinitionInstruction extends Instruction {
class UnmodeledUseInstruction extends Instruction {
UnmodeledUseInstruction() {
opcode instanceof Opcode::UnmodeledUse
getOpcode() instanceof Opcode::UnmodeledUse
}
override string getOperandsString() {
@@ -1495,7 +1478,7 @@ class UnmodeledUseInstruction extends Instruction {
*/
class PhiInstruction extends Instruction {
PhiInstruction() {
opcode instanceof Opcode::Phi
getOpcode() instanceof Opcode::Phi
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1547,7 +1530,7 @@ class PhiInstruction extends Instruction {
*/
class ChiInstruction extends Instruction {
ChiInstruction() {
opcode instanceof Opcode::Chi
getOpcode() instanceof Opcode::Chi
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1577,7 +1560,7 @@ class ChiInstruction extends Instruction {
*/
class UnreachedInstruction extends Instruction {
UnreachedInstruction() {
opcode instanceof Opcode::Unreached
getOpcode() instanceof Opcode::Unreached
}
}
@@ -1587,6 +1570,6 @@ class UnreachedInstruction extends Instruction {
*/
class BuiltInInstruction extends Instruction {
BuiltInInstruction() {
opcode instanceof BuiltInOpcode
getOpcode() instanceof BuiltInOpcode
}
}

View File

@@ -14,25 +14,6 @@ cached private module Cached {
result.getFirstInstruction() = getNewInstruction(oldBlock.getFirstInstruction())
}
cached newtype TInstructionTag =
WrappedInstructionTag(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction
} or
PhiTag(Alias::VirtualVariable vvar, OldBlock block) {
hasPhiNode(vvar, block)
} or
ChiTag(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction and
hasChiNode(_, oldInstruction)
} or
UnreachedTag()
cached class InstructionTagType extends TInstructionTag {
cached final string toString() {
result = "Tag"
}
}
cached predicate functionHasIR(Function func) {
exists(OldIR::FunctionIR funcIR |
funcIR.getFunction() = func
@@ -40,7 +21,7 @@ cached private module Cached {
}
cached OldInstruction getOldInstruction(Instruction instr) {
instr.getTag() = WrappedInstructionTag(result)
instr = WrappedInstruction(result)
}
private Instruction getNewInstruction(OldInstruction instr) {
@@ -52,90 +33,35 @@ cached private module Cached {
* corresponding to `instr` if there is no `Chi` node.
*/
private Instruction getNewFinalInstruction(OldInstruction instr) {
result = getChiInstruction(instr)
result = Chi(instr)
or
not exists(getChiInstruction(instr)) and
not exists(Chi(instr)) and
result = getNewInstruction(instr)
}
private PhiInstruction getPhiInstruction(Function func, OldBlock oldBlock,
Alias::VirtualVariable vvar) {
result.getFunction() = func and
result.getAST() = oldBlock.getFirstInstruction().getAST() and
result.getTag() = PhiTag(vvar, oldBlock)
}
private ChiInstruction getChiInstruction (OldInstruction instr) {
hasChiNode(_, instr) and
result.getTag() = ChiTag(instr)
}
private IRVariable getNewIRVariable(OldIR::IRVariable var) {
result.getFunction() = var.getFunction() and
(
exists(OldIR::IRUserVariable userVar, IRUserVariable newUserVar |
userVar = var and
newUserVar.getVariable() = userVar.getVariable() and
result = newUserVar
) or
exists(OldIR::IRTempVariable tempVar, IRTempVariable newTempVar |
tempVar = var and
newTempVar.getAST() = tempVar.getAST() and
newTempVar.getTag() = tempVar.getTag() and
result = newTempVar
)
)
// This is just a type cast. Both classes derive from the same newtype.
result = var
}
cached newtype TInstruction =
MkInstruction(FunctionIR funcIR, Opcode opcode, Locatable ast,
InstructionTag tag, Type resultType, boolean isGLValue) {
hasInstruction(funcIR.getFunction(), opcode, ast, tag,
resultType, isGLValue)
WrappedInstruction(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction
} or
Phi(OldBlock block, Alias::VirtualVariable vvar) {
hasPhiNode(vvar, block)
} or
Chi(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction and
hasChiNode(_, oldInstruction)
} or
Unreached(Function function) {
exists(OldInstruction oldInstruction |
function = oldInstruction.getFunction() and
Reachability::isInfeasibleInstructionSuccessor(oldInstruction, _)
)
}
private predicate hasInstruction(Function func, Opcode opcode, Locatable ast,
InstructionTag tag, Type resultType, boolean isGLValue) {
exists(OldInstruction instr |
instr.getFunction() = func and
instr.getOpcode() = opcode and
instr.getAST() = ast and
WrappedInstructionTag(instr) = tag and
instr.getResultType() = resultType and
if instr.isGLValue() then
isGLValue = true
else
isGLValue = false
) or
exists(OldBlock block, Alias::VirtualVariable vvar |
hasPhiNode(vvar, block) and
block.getFunction() = func and
opcode instanceof Opcode::Phi and
ast = block.getFirstInstruction().getAST() and
tag = PhiTag(vvar, block) and
resultType = vvar.getType() and
isGLValue = false
) or
exists(OldInstruction instr, Alias::VirtualVariable vvar |
hasChiNode(vvar, instr) and
instr.getFunction() = func and
opcode instanceof Opcode::Chi and
ast = instr.getAST() and
tag = ChiTag(instr) and
resultType = vvar.getType() and
isGLValue = false
) or
exists(OldInstruction oldInstruction |
func = oldInstruction.getFunction() and
Reachability::isInfeasibleInstructionSuccessor(oldInstruction, _) and
tag = UnreachedTag() and
opcode instanceof Opcode::Unreached and
ast = func and
resultType instanceof VoidType and
isGLValue = false
)
}
cached predicate hasTempVariable(Function func, Locatable ast, TempVariableTag tag,
Type type) {
exists(OldIR::IRTempVariable var |
@@ -169,7 +95,7 @@ cached private module Cached {
if defIndex >= 0 then
result = getNewFinalInstruction(defBlock.getInstruction(defIndex))
else
result = getPhiInstruction(instruction.getFunction(), defBlock, vvar)
result = Phi(defBlock, vvar)
)
)
else (
@@ -189,7 +115,7 @@ cached private module Cached {
else
result = getNewInstruction(oldOperand.getDefinitionInstruction())
) or
instruction.getTag() = ChiTag(getOldInstruction(result)) and
instruction = Chi(getOldInstruction(result)) and
tag instanceof ChiPartialOperandTag
or
exists(FunctionIR f |
@@ -208,21 +134,21 @@ cached private module Cached {
OldBlock defBlock, int defRank, int defIndex, OldBlock predBlock |
hasPhiNode(vvar, phiBlock) and
predBlock = phiBlock.getAFeasiblePredecessor() and
instr.getTag() = PhiTag(vvar, phiBlock) and
instr = Phi(phiBlock, vvar) and
newPredecessorBlock = getNewBlock(predBlock) and
hasDefinitionAtRank(vvar, defBlock, defRank, defIndex) and
definitionReachesEndOfBlock(vvar, defBlock, defRank, predBlock) and
if defIndex >= 0 then
result = getNewFinalInstruction(defBlock.getInstruction(defIndex))
else
result = getPhiInstruction(instr.getFunction(), defBlock, vvar)
result = Phi(defBlock, vvar)
)
}
cached Instruction getChiInstructionTotalOperand(ChiInstruction chiInstr) {
exists(Alias::VirtualVariable vvar, OldInstruction oldInstr, OldBlock defBlock,
int defRank, int defIndex, OldBlock useBlock, int useRank |
ChiTag(oldInstr) = chiInstr.getTag() and
chiInstr = Chi(oldInstr) and
vvar = Alias::getResultMemoryAccess(oldInstr).getVirtualVariable() and
hasDefinitionAtRank(vvar, defBlock, defRank, defIndex) and
hasUseAtRank(vvar, useBlock, useRank, oldInstr) and
@@ -230,13 +156,13 @@ cached private module Cached {
if defIndex >= 0 then
result = getNewFinalInstruction(defBlock.getInstruction(defIndex))
else
result = getPhiInstruction(chiInstr.getFunction(), defBlock, vvar)
result = Phi(defBlock, vvar)
)
}
cached Instruction getPhiInstructionBlockStart(PhiInstruction instr) {
exists(OldBlock oldBlock |
instr.getTag() = PhiTag(_, oldBlock) and
instr = Phi(oldBlock, _) and
result = getNewInstruction(oldBlock.getFirstInstruction())
)
}
@@ -257,15 +183,14 @@ cached private module Cached {
cached Instruction getInstructionSuccessor(Instruction instruction, EdgeKind kind) {
if(hasChiNode(_, getOldInstruction(instruction)))
then
result = getChiInstruction(getOldInstruction(instruction)) and
result = Chi(getOldInstruction(instruction)) and
kind instanceof GotoEdge
else (
exists(OldInstruction oldInstruction |
oldInstruction = getOldInstruction(instruction) and
(
if Reachability::isInfeasibleInstructionSuccessor(oldInstruction, kind) then (
result.getTag() = UnreachedTag() and
result.getFunction() = instruction.getFunction()
result = Unreached(instruction.getFunction())
)
else (
result = getNewInstruction(oldInstruction.getSuccessor(kind))
@@ -273,7 +198,7 @@ cached private module Cached {
)
) or
exists(OldInstruction oldInstruction |
instruction = getChiInstruction(oldInstruction) and
instruction = Chi(oldInstruction) and
result = getNewInstruction(oldInstruction.getSuccessor(kind))
)
)
@@ -291,11 +216,88 @@ cached private module Cached {
// `oldInstruction`, in which case the back edge should come out of the
// chi node instead.
if hasChiNode(_, oldInstruction)
then instruction = getChiInstruction(oldInstruction)
then instruction = Chi(oldInstruction)
else instruction = getNewInstruction(oldInstruction)
)
}
cached Locatable getInstructionAST(Instruction instruction) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction)
or
instruction = Chi(oldInstruction)
|
result = oldInstruction.getAST()
)
or
exists(OldBlock block |
instruction = Phi(block, _) and
result = block.getFirstInstruction().getAST()
)
or
instruction = Unreached(result)
}
cached predicate instructionHasType(Instruction instruction, Type type, boolean isGLValue) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction) and
type = oldInstruction.getResultType() and
if oldInstruction.isGLValue()
then isGLValue = true
else isGLValue = false
)
or
exists(OldInstruction oldInstruction, Alias::VirtualVariable vvar |
instruction = Chi(oldInstruction) and
hasChiNode(vvar, oldInstruction) and
type = vvar.getType() and
isGLValue = false
)
or
exists(Alias::VirtualVariable vvar |
instruction = Phi(_, vvar) and
type = vvar.getType() and
isGLValue = false
)
or
instruction = Unreached(_) and
type instanceof VoidType and
isGLValue = false
}
cached Opcode getInstructionOpcode(Instruction instruction) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction) and
result = oldInstruction.getOpcode()
)
or
instruction instanceof Chi and
result instanceof Opcode::Chi
or
instruction instanceof Phi and
result instanceof Opcode::Phi
or
instruction instanceof Unreached and
result instanceof Opcode::Unreached
}
cached FunctionIR getInstructionEnclosingFunctionIR(Instruction instruction) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction)
or
instruction = Chi(oldInstruction)
|
result.getFunction() = oldInstruction.getFunction()
)
or
exists(OldBlock block |
instruction = Phi(block, _) and
result.getFunction() = block.getFunction()
)
or
instruction = Unreached(result.getFunction())
}
cached IRVariable getInstructionVariable(Instruction instruction) {
result = getNewIRVariable(getOldInstruction(instruction).(OldIR::VariableInstruction).getVariable())
}
@@ -346,13 +348,13 @@ cached private module Cached {
)
or
exists(OldIR::Instruction oldInstruction |
instruction.getTag() = ChiTag(oldInstruction) and
instruction = Chi(oldInstruction) and
result = getNewInstruction(oldInstruction)
)
}
private predicate ssa_variableUpdate(Alias::VirtualVariable vvar,
OldInstruction instr, OldBlock block, int index) {
OldBlock block, int index, OldInstruction instr) {
block.getInstruction(index) = instr and
Alias::getResultMemoryAccess(instr).getVirtualVariable() = vvar
}
@@ -370,11 +372,11 @@ cached private module Cached {
}
private predicate defUseRank(Alias::VirtualVariable vvar, OldBlock block, int rankIndex, int index) {
index = rank[rankIndex](int j | hasDefinition(vvar, block, j) or hasUse(vvar, _, block, j))
index = rank[rankIndex](int j | hasDefinition(vvar, block, j) or hasUse(vvar, block, j, _))
}
private predicate hasUse(Alias::VirtualVariable vvar, OldInstruction use, OldBlock block,
int index) {
private predicate hasUse(Alias::VirtualVariable vvar, OldBlock block, int index,
OldInstruction use) {
exists(Alias::MemoryAccess access |
(
access = Alias::getOperandMemoryAccess(use.getAnOperand())
@@ -392,10 +394,16 @@ cached private module Cached {
}
private predicate variableLiveOnEntryToBlock(Alias::VirtualVariable vvar, OldBlock block) {
exists (int index | hasUse(vvar, _, block, index) |
not exists (int j | ssa_variableUpdate(vvar, _, block, j) | j < index)
) or
(variableLiveOnExitFromBlock(vvar, block) and not ssa_variableUpdate(vvar, _, block, _))
exists(int firstAccess |
hasUse(vvar, block, firstAccess, _) and
firstAccess = min(int index |
hasUse(vvar, block, index, _)
or
ssa_variableUpdate(vvar, block, index, _)
)
)
or
(variableLiveOnExitFromBlock(vvar, block) and not ssa_variableUpdate(vvar, block, _, _))
}
pragma[noinline]
@@ -422,7 +430,7 @@ cached private module Cached {
private predicate hasUseAtRank(Alias::VirtualVariable vvar, OldBlock block, int rankIndex,
OldInstruction use) {
exists(int index |
hasUse(vvar, use, block, index) and
hasUse(vvar, block, index, use) and
defUseRank(vvar, block, rankIndex, index)
)
}
@@ -535,11 +543,11 @@ cached private module CachedForDebugging {
result = "NonSSA: " + oldInstr.getUniqueId()
) or
exists(Alias::VirtualVariable vvar, OldBlock phiBlock |
instr.getTag() = PhiTag(vvar, phiBlock) and
instr = Phi(phiBlock, vvar) and
result = "Phi Block(" + phiBlock.getUniqueId() + "): " + vvar.getUniqueId()
) or
(
instr.getTag() = UnreachedTag() and
instr = Unreached(_) and
result = "Unreached"
)
}

View File

@@ -159,24 +159,13 @@ private cached module Cached {
not startsBasicBlock(i2)
}
/** Gets the index of `i` in its `IRBlock`. */
private int getMemberIndex(Instruction i) {
startsBasicBlock(i) and
result = 0
or
exists(Instruction iPrev |
adjacentInBlock(iPrev, i) and
result = getMemberIndex(iPrev) + 1
)
}
/** Holds if `i` is the `index`th instruction the block starting with `first`. */
private Instruction getInstructionFromFirst(Instruction first, int index) =
shortestDistances(startsBasicBlock/1, adjacentInBlock/2)(first, result, index)
/** Holds if `i` is the `index`th instruction in `block`. */
cached Instruction getInstruction(TIRBlock block, int index) {
exists(Instruction first |
block = MkIRBlock(first) and
index = getMemberIndex(result) and
adjacentInBlock*(first, result)
)
result = getInstructionFromFirst(getFirstInstruction(block), index)
}
cached int getInstructionCount(TIRBlock block) {

View File

@@ -3,31 +3,7 @@ import FunctionIR
import cpp
import semmle.code.cpp.ir.implementation.TempVariableTag
private import semmle.code.cpp.ir.internal.TempVariableTag
private newtype TIRVariable =
TIRAutomaticUserVariable(LocalScopeVariable var, FunctionIR funcIR) {
exists(Function func |
func = funcIR.getFunction() and
(
var.getFunction() = func or
var.(Parameter).getCatchBlock().getEnclosingFunction() = func
)
)
} or
TIRStaticUserVariable(Variable var, FunctionIR funcIR) {
(
var instanceof GlobalOrNamespaceVariable or
var instanceof MemberVariable and not var instanceof Field
) and
exists(VariableAccess access |
access.getTarget() = var and
access.getEnclosingFunction() = funcIR.getFunction()
)
} or
TIRTempVariable(FunctionIR funcIR, Locatable ast, TempVariableTag tag,
Type type) {
Construction::hasTempVariable(funcIR.getFunction(), ast, tag, type)
}
private import semmle.code.cpp.ir.internal.TIRVariable
IRUserVariable getIRUserVariable(Function func, Variable var) {
result.getVariable() = var and
@@ -40,7 +16,7 @@ IRUserVariable getIRUserVariable(Function func, Variable var) {
* generated by the AST-to-IR translation (`IRTempVariable`).
*/
abstract class IRVariable extends TIRVariable {
FunctionIR funcIR;
Function func;
abstract string toString();
@@ -72,14 +48,14 @@ abstract class IRVariable extends TIRVariable {
* Gets the IR for the function that references this variable.
*/
final FunctionIR getFunctionIR() {
result = funcIR
result.getFunction() = func
}
/**
* Gets the function that references this variable.
*/
final Function getFunction() {
result = funcIR.getFunction()
result = func
}
}
@@ -126,7 +102,7 @@ class IRAutomaticUserVariable extends IRUserVariable, IRAutomaticVariable,
LocalScopeVariable localVar;
IRAutomaticUserVariable() {
this = TIRAutomaticUserVariable(localVar, funcIR) and
this = TIRAutomaticUserVariable(localVar, func) and
var = localVar
}
@@ -137,7 +113,7 @@ class IRAutomaticUserVariable extends IRUserVariable, IRAutomaticVariable,
class IRStaticUserVariable extends IRUserVariable, TIRStaticUserVariable {
IRStaticUserVariable() {
this = TIRStaticUserVariable(var, funcIR)
this = TIRStaticUserVariable(var, func)
}
}
@@ -152,7 +128,7 @@ class IRTempVariable extends IRVariable, IRAutomaticVariable, TIRTempVariable {
Type type;
IRTempVariable() {
this = TIRTempVariable(funcIR, ast, tag, type)
this = TIRTempVariable(func, ast, tag, type)
}
override final Type getType() {

View File

@@ -10,8 +10,6 @@ import semmle.code.cpp.ir.implementation.Opcode
private import semmle.code.cpp.ir.implementation.Opcode
private import semmle.code.cpp.ir.internal.OperandTag
class InstructionTag = Construction::InstructionTagType;
module InstructionSanity {
/**
* Holds if the instruction `instr` should be expected to have an operand
@@ -211,17 +209,6 @@ module InstructionSanity {
* Represents a single operation in the IR.
*/
class Instruction extends Construction::TInstruction {
Opcode opcode;
Locatable ast;
InstructionTag instructionTag;
Type resultType;
FunctionIR funcIR;
boolean glvalue;
Instruction() {
this = Construction::MkInstruction(funcIR, opcode, ast, instructionTag, resultType, glvalue)
}
final string toString() {
result = getOpcode().toString() + ": " + getAST().toString()
}
@@ -244,9 +231,9 @@ class Instruction extends Construction::TInstruction {
*/
final string getOperationString() {
if exists(getImmediateString()) then
result = getOperationPrefix() + opcode.toString() + "[" + getImmediateString() + "]"
result = getOperationPrefix() + getOpcode().toString() + "[" + getImmediateString() + "]"
else
result = getOperationPrefix() + opcode.toString()
result = getOperationPrefix() + getOpcode().toString()
}
/**
@@ -264,7 +251,7 @@ class Instruction extends Construction::TInstruction {
}
private string getResultPrefix() {
if resultType instanceof VoidType then
if getResultType() instanceof VoidType then
result = "v"
else if hasMemoryResult() then
if isResultModeled() then
@@ -309,8 +296,8 @@ class Instruction extends Construction::TInstruction {
private string getResultTypeString() {
exists(string valcat |
valcat = getValueCategoryString(resultType.toString()) and
if (resultType instanceof UnknownType and
valcat = getValueCategoryString(getResultType().toString()) and
if (getResultType() instanceof UnknownType and
not isGLValue() and
exists(getResultSize())) then (
result = valcat + "[" + getResultSize().toString() + "]"
@@ -378,28 +365,28 @@ class Instruction extends Construction::TInstruction {
* Gets the function that contains this instruction.
*/
final Function getFunction() {
result = funcIR.getFunction()
result = getFunctionIR().getFunction()
}
/**
* Gets the FunctionIR object that contains the IR for this instruction.
*/
final FunctionIR getFunctionIR() {
result = funcIR
result = Construction::getInstructionEnclosingFunctionIR(this)
}
/**
* Gets the AST that caused this instruction to be generated.
*/
final Locatable getAST() {
result = ast
result = Construction::getInstructionAST(this)
}
/**
* Gets the location of the source code for this instruction.
*/
final Location getLocation() {
result = ast.getLocation()
result = getAST().getLocation()
}
/**
@@ -421,7 +408,7 @@ class Instruction extends Construction::TInstruction {
* instruction does not produce a result, its result type will be `VoidType`.
*/
final Type getResultType() {
result = resultType
Construction::instructionHasType(this, result, _)
}
/**
@@ -443,7 +430,7 @@ class Instruction extends Construction::TInstruction {
* the integer value loaded from variable `x`.
*/
final predicate isGLValue() {
glvalue = true
Construction::instructionHasType(this, _, true)
}
/**
@@ -460,10 +447,10 @@ class Instruction extends Construction::TInstruction {
result = nullptr.getSize()
)
)
else if resultType instanceof UnknownType then
else if getResultType() instanceof UnknownType then
result = Construction::getInstructionResultSize(this)
else (
result = resultType.getSize()
result = getResultType().getSize()
)
}
@@ -471,11 +458,7 @@ class Instruction extends Construction::TInstruction {
* Gets the opcode that specifies the operation performed by this instruction.
*/
final Opcode getOpcode() {
result = opcode
}
final InstructionTag getTag() {
result = instructionTag
result = Construction::getInstructionOpcode(this)
}
/**
@@ -644,19 +627,19 @@ class ConstantValueInstruction extends Instruction {
class EnterFunctionInstruction extends Instruction {
EnterFunctionInstruction() {
opcode instanceof Opcode::EnterFunction
getOpcode() instanceof Opcode::EnterFunction
}
}
class VariableAddressInstruction extends VariableInstruction {
VariableAddressInstruction() {
opcode instanceof Opcode::VariableAddress
getOpcode() instanceof Opcode::VariableAddress
}
}
class InitializeParameterInstruction extends VariableInstruction {
InitializeParameterInstruction() {
opcode instanceof Opcode::InitializeParameter
getOpcode() instanceof Opcode::InitializeParameter
}
final Parameter getParameter() {
@@ -673,13 +656,13 @@ class InitializeParameterInstruction extends VariableInstruction {
*/
class InitializeThisInstruction extends Instruction {
InitializeThisInstruction() {
opcode instanceof Opcode::InitializeThis
getOpcode() instanceof Opcode::InitializeThis
}
}
class FieldAddressInstruction extends FieldInstruction {
FieldAddressInstruction() {
opcode instanceof Opcode::FieldAddress
getOpcode() instanceof Opcode::FieldAddress
}
final Instruction getObjectAddress() {
@@ -689,7 +672,7 @@ class FieldAddressInstruction extends FieldInstruction {
class UninitializedInstruction extends VariableInstruction {
UninitializedInstruction() {
opcode instanceof Opcode::Uninitialized
getOpcode() instanceof Opcode::Uninitialized
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -706,25 +689,25 @@ class UninitializedInstruction extends VariableInstruction {
class NoOpInstruction extends Instruction {
NoOpInstruction() {
opcode instanceof Opcode::NoOp
getOpcode() instanceof Opcode::NoOp
}
}
class ReturnInstruction extends Instruction {
ReturnInstruction() {
opcode instanceof ReturnOpcode
getOpcode() instanceof ReturnOpcode
}
}
class ReturnVoidInstruction extends ReturnInstruction {
ReturnVoidInstruction() {
opcode instanceof Opcode::ReturnVoid
getOpcode() instanceof Opcode::ReturnVoid
}
}
class ReturnValueInstruction extends ReturnInstruction {
ReturnValueInstruction() {
opcode instanceof Opcode::ReturnValue
getOpcode() instanceof Opcode::ReturnValue
}
final Instruction getReturnValue() {
@@ -734,7 +717,7 @@ class ReturnValueInstruction extends ReturnInstruction {
class CopyInstruction extends Instruction {
CopyInstruction() {
opcode instanceof CopyOpcode
getOpcode() instanceof CopyOpcode
}
final Instruction getSourceValue() {
@@ -744,13 +727,13 @@ class CopyInstruction extends Instruction {
class CopyValueInstruction extends CopyInstruction {
CopyValueInstruction() {
opcode instanceof Opcode::CopyValue
getOpcode() instanceof Opcode::CopyValue
}
}
class LoadInstruction extends CopyInstruction {
LoadInstruction() {
opcode instanceof Opcode::Load
getOpcode() instanceof Opcode::Load
}
final Instruction getSourceAddress() {
@@ -760,7 +743,7 @@ class LoadInstruction extends CopyInstruction {
class StoreInstruction extends CopyInstruction {
StoreInstruction() {
opcode instanceof Opcode::Store
getOpcode() instanceof Opcode::Store
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -774,7 +757,7 @@ class StoreInstruction extends CopyInstruction {
class ConditionalBranchInstruction extends Instruction {
ConditionalBranchInstruction() {
opcode instanceof Opcode::ConditionalBranch
getOpcode() instanceof Opcode::ConditionalBranch
}
final Instruction getCondition() {
@@ -792,25 +775,25 @@ class ConditionalBranchInstruction extends Instruction {
class ExitFunctionInstruction extends Instruction {
ExitFunctionInstruction() {
opcode instanceof Opcode::ExitFunction
getOpcode() instanceof Opcode::ExitFunction
}
}
class ConstantInstruction extends ConstantValueInstruction {
ConstantInstruction() {
opcode instanceof Opcode::Constant
getOpcode() instanceof Opcode::Constant
}
}
class IntegerConstantInstruction extends ConstantInstruction {
IntegerConstantInstruction() {
resultType instanceof IntegralType
getResultType() instanceof IntegralType
}
}
class FloatConstantInstruction extends ConstantInstruction {
FloatConstantInstruction() {
resultType instanceof FloatingPointType
getResultType() instanceof FloatingPointType
}
}
@@ -832,7 +815,7 @@ class StringConstantInstruction extends Instruction {
class BinaryInstruction extends Instruction {
BinaryInstruction() {
opcode instanceof BinaryOpcode
getOpcode() instanceof BinaryOpcode
}
final Instruction getLeftOperand() {
@@ -855,67 +838,67 @@ class BinaryInstruction extends Instruction {
class AddInstruction extends BinaryInstruction {
AddInstruction() {
opcode instanceof Opcode::Add
getOpcode() instanceof Opcode::Add
}
}
class SubInstruction extends BinaryInstruction {
SubInstruction() {
opcode instanceof Opcode::Sub
getOpcode() instanceof Opcode::Sub
}
}
class MulInstruction extends BinaryInstruction {
MulInstruction() {
opcode instanceof Opcode::Mul
getOpcode() instanceof Opcode::Mul
}
}
class DivInstruction extends BinaryInstruction {
DivInstruction() {
opcode instanceof Opcode::Div
getOpcode() instanceof Opcode::Div
}
}
class RemInstruction extends BinaryInstruction {
RemInstruction() {
opcode instanceof Opcode::Rem
getOpcode() instanceof Opcode::Rem
}
}
class NegateInstruction extends UnaryInstruction {
NegateInstruction() {
opcode instanceof Opcode::Negate
getOpcode() instanceof Opcode::Negate
}
}
class BitAndInstruction extends BinaryInstruction {
BitAndInstruction() {
opcode instanceof Opcode::BitAnd
getOpcode() instanceof Opcode::BitAnd
}
}
class BitOrInstruction extends BinaryInstruction {
BitOrInstruction() {
opcode instanceof Opcode::BitOr
getOpcode() instanceof Opcode::BitOr
}
}
class BitXorInstruction extends BinaryInstruction {
BitXorInstruction() {
opcode instanceof Opcode::BitXor
getOpcode() instanceof Opcode::BitXor
}
}
class ShiftLeftInstruction extends BinaryInstruction {
ShiftLeftInstruction() {
opcode instanceof Opcode::ShiftLeft
getOpcode() instanceof Opcode::ShiftLeft
}
}
class ShiftRightInstruction extends BinaryInstruction {
ShiftRightInstruction() {
opcode instanceof Opcode::ShiftRight
getOpcode() instanceof Opcode::ShiftRight
}
}
@@ -923,7 +906,7 @@ class PointerArithmeticInstruction extends BinaryInstruction {
int elementSize;
PointerArithmeticInstruction() {
opcode instanceof PointerArithmeticOpcode and
getOpcode() instanceof PointerArithmeticOpcode and
elementSize = Construction::getInstructionElementSize(this)
}
@@ -938,31 +921,31 @@ class PointerArithmeticInstruction extends BinaryInstruction {
class PointerOffsetInstruction extends PointerArithmeticInstruction {
PointerOffsetInstruction() {
opcode instanceof PointerOffsetOpcode
getOpcode() instanceof PointerOffsetOpcode
}
}
class PointerAddInstruction extends PointerOffsetInstruction {
PointerAddInstruction() {
opcode instanceof Opcode::PointerAdd
getOpcode() instanceof Opcode::PointerAdd
}
}
class PointerSubInstruction extends PointerOffsetInstruction {
PointerSubInstruction() {
opcode instanceof Opcode::PointerSub
getOpcode() instanceof Opcode::PointerSub
}
}
class PointerDiffInstruction extends PointerArithmeticInstruction {
PointerDiffInstruction() {
opcode instanceof Opcode::PointerDiff
getOpcode() instanceof Opcode::PointerDiff
}
}
class UnaryInstruction extends Instruction {
UnaryInstruction() {
opcode instanceof UnaryOpcode
getOpcode() instanceof UnaryOpcode
}
final Instruction getOperand() {
@@ -972,7 +955,7 @@ class UnaryInstruction extends Instruction {
class ConvertInstruction extends UnaryInstruction {
ConvertInstruction() {
opcode instanceof Opcode::Convert
getOpcode() instanceof Opcode::Convert
}
}
@@ -1024,7 +1007,7 @@ class InheritanceConversionInstruction extends UnaryInstruction {
*/
class ConvertToBaseInstruction extends InheritanceConversionInstruction {
ConvertToBaseInstruction() {
opcode instanceof Opcode::ConvertToBase
getOpcode() instanceof Opcode::ConvertToBase
}
}
@@ -1034,7 +1017,7 @@ class ConvertToBaseInstruction extends InheritanceConversionInstruction {
*/
class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction {
ConvertToVirtualBaseInstruction() {
opcode instanceof Opcode::ConvertToVirtualBase
getOpcode() instanceof Opcode::ConvertToVirtualBase
}
}
@@ -1044,37 +1027,37 @@ class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction {
*/
class ConvertToDerivedInstruction extends InheritanceConversionInstruction {
ConvertToDerivedInstruction() {
opcode instanceof Opcode::ConvertToDerived
getOpcode() instanceof Opcode::ConvertToDerived
}
}
class BitComplementInstruction extends UnaryInstruction {
BitComplementInstruction() {
opcode instanceof Opcode::BitComplement
getOpcode() instanceof Opcode::BitComplement
}
}
class LogicalNotInstruction extends UnaryInstruction {
LogicalNotInstruction() {
opcode instanceof Opcode::LogicalNot
getOpcode() instanceof Opcode::LogicalNot
}
}
class CompareInstruction extends BinaryInstruction {
CompareInstruction() {
opcode instanceof CompareOpcode
getOpcode() instanceof CompareOpcode
}
}
class CompareEQInstruction extends CompareInstruction {
CompareEQInstruction() {
opcode instanceof Opcode::CompareEQ
getOpcode() instanceof Opcode::CompareEQ
}
}
class CompareNEInstruction extends CompareInstruction {
CompareNEInstruction() {
opcode instanceof Opcode::CompareNE
getOpcode() instanceof Opcode::CompareNE
}
}
@@ -1083,7 +1066,7 @@ class CompareNEInstruction extends CompareInstruction {
*/
class RelationalInstruction extends CompareInstruction {
RelationalInstruction() {
opcode instanceof RelationalOpcode
getOpcode() instanceof RelationalOpcode
}
/**
@@ -1116,7 +1099,7 @@ class RelationalInstruction extends CompareInstruction {
class CompareLTInstruction extends RelationalInstruction {
CompareLTInstruction() {
opcode instanceof Opcode::CompareLT
getOpcode() instanceof Opcode::CompareLT
}
override Instruction getLesserOperand() {
@@ -1134,7 +1117,7 @@ class CompareLTInstruction extends RelationalInstruction {
class CompareGTInstruction extends RelationalInstruction {
CompareGTInstruction() {
opcode instanceof Opcode::CompareGT
getOpcode() instanceof Opcode::CompareGT
}
override Instruction getLesserOperand() {
@@ -1152,7 +1135,7 @@ class CompareGTInstruction extends RelationalInstruction {
class CompareLEInstruction extends RelationalInstruction {
CompareLEInstruction() {
opcode instanceof Opcode::CompareLE
getOpcode() instanceof Opcode::CompareLE
}
override Instruction getLesserOperand() {
@@ -1170,7 +1153,7 @@ class CompareLEInstruction extends RelationalInstruction {
class CompareGEInstruction extends RelationalInstruction {
CompareGEInstruction() {
opcode instanceof Opcode::CompareGE
getOpcode() instanceof Opcode::CompareGE
}
override Instruction getLesserOperand() {
@@ -1188,7 +1171,7 @@ class CompareGEInstruction extends RelationalInstruction {
class SwitchInstruction extends Instruction {
SwitchInstruction() {
opcode instanceof Opcode::Switch
getOpcode() instanceof Opcode::Switch
}
final Instruction getExpression() {
@@ -1211,7 +1194,7 @@ class SwitchInstruction extends Instruction {
*/
class CallInstruction extends Instruction {
CallInstruction() {
opcode instanceof Opcode::Call
getOpcode() instanceof Opcode::Call
}
/**
@@ -1254,7 +1237,7 @@ class CallInstruction extends Instruction {
*/
class SideEffectInstruction extends Instruction {
SideEffectInstruction() {
opcode instanceof SideEffectOpcode
getOpcode() instanceof SideEffectOpcode
}
final Instruction getPrimaryInstruction() {
@@ -1268,7 +1251,7 @@ class SideEffectInstruction extends Instruction {
*/
class CallSideEffectInstruction extends SideEffectInstruction {
CallSideEffectInstruction() {
opcode instanceof Opcode::CallSideEffect
getOpcode() instanceof Opcode::CallSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1282,7 +1265,7 @@ class CallSideEffectInstruction extends SideEffectInstruction {
*/
class CallReadSideEffectInstruction extends SideEffectInstruction {
CallReadSideEffectInstruction() {
opcode instanceof Opcode::CallReadSideEffect
getOpcode() instanceof Opcode::CallReadSideEffect
}
}
@@ -1291,7 +1274,7 @@ class CallReadSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectReadSideEffectInstruction extends SideEffectInstruction {
IndirectReadSideEffectInstruction() {
opcode instanceof Opcode::IndirectReadSideEffect
getOpcode() instanceof Opcode::IndirectReadSideEffect
}
}
@@ -1300,7 +1283,7 @@ class IndirectReadSideEffectInstruction extends SideEffectInstruction {
*/
class BufferReadSideEffectInstruction extends SideEffectInstruction {
BufferReadSideEffectInstruction() {
opcode instanceof Opcode::BufferReadSideEffect
getOpcode() instanceof Opcode::BufferReadSideEffect
}
}
@@ -1309,7 +1292,7 @@ class BufferReadSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectWriteSideEffectInstruction extends SideEffectInstruction {
IndirectWriteSideEffectInstruction() {
opcode instanceof Opcode::IndirectWriteSideEffect
getOpcode() instanceof Opcode::IndirectWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1323,7 +1306,7 @@ class IndirectWriteSideEffectInstruction extends SideEffectInstruction {
*/
class BufferWriteSideEffectInstruction extends SideEffectInstruction {
BufferWriteSideEffectInstruction() {
opcode instanceof Opcode::BufferWriteSideEffect
getOpcode() instanceof Opcode::BufferWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1338,7 +1321,7 @@ class BufferWriteSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction {
IndirectMayWriteSideEffectInstruction() {
opcode instanceof Opcode::IndirectMayWriteSideEffect
getOpcode() instanceof Opcode::IndirectMayWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1352,7 +1335,7 @@ class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction {
*/
class BufferMayWriteSideEffectInstruction extends SideEffectInstruction {
BufferMayWriteSideEffectInstruction() {
opcode instanceof Opcode::BufferMayWriteSideEffect
getOpcode() instanceof Opcode::BufferMayWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
result instanceof BufferMayMemoryAccess
@@ -1364,7 +1347,7 @@ class BufferMayWriteSideEffectInstruction extends SideEffectInstruction {
*/
class ThrowInstruction extends Instruction {
ThrowInstruction() {
opcode instanceof ThrowOpcode
getOpcode() instanceof ThrowOpcode
}
}
@@ -1373,7 +1356,7 @@ class ThrowInstruction extends Instruction {
*/
class ThrowValueInstruction extends ThrowInstruction {
ThrowValueInstruction() {
opcode instanceof Opcode::ThrowValue
getOpcode() instanceof Opcode::ThrowValue
}
/**
@@ -1396,7 +1379,7 @@ class ThrowValueInstruction extends ThrowInstruction {
*/
class ReThrowInstruction extends ThrowInstruction {
ReThrowInstruction() {
opcode instanceof Opcode::ReThrow
getOpcode() instanceof Opcode::ReThrow
}
}
@@ -1405,7 +1388,7 @@ class ReThrowInstruction extends ThrowInstruction {
*/
class UnwindInstruction extends Instruction {
UnwindInstruction() {
opcode instanceof Opcode::Unwind
getOpcode() instanceof Opcode::Unwind
}
}
@@ -1414,7 +1397,7 @@ class UnwindInstruction extends Instruction {
*/
class CatchInstruction extends Instruction {
CatchInstruction() {
opcode instanceof CatchOpcode
getOpcode() instanceof CatchOpcode
}
}
@@ -1425,7 +1408,7 @@ class CatchByTypeInstruction extends CatchInstruction {
Type exceptionType;
CatchByTypeInstruction() {
opcode instanceof Opcode::CatchByType and
getOpcode() instanceof Opcode::CatchByType and
exceptionType = Construction::getInstructionExceptionType(this)
}
@@ -1446,13 +1429,13 @@ class CatchByTypeInstruction extends CatchInstruction {
*/
class CatchAnyInstruction extends CatchInstruction {
CatchAnyInstruction() {
opcode instanceof Opcode::CatchAny
getOpcode() instanceof Opcode::CatchAny
}
}
class UnmodeledDefinitionInstruction extends Instruction {
UnmodeledDefinitionInstruction() {
opcode instanceof Opcode::UnmodeledDefinition
getOpcode() instanceof Opcode::UnmodeledDefinition
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1465,7 +1448,7 @@ class UnmodeledDefinitionInstruction extends Instruction {
*/
class AliasedDefinitionInstruction extends Instruction {
AliasedDefinitionInstruction() {
opcode instanceof Opcode::AliasedDefinition
getOpcode() instanceof Opcode::AliasedDefinition
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1475,7 +1458,7 @@ class AliasedDefinitionInstruction extends Instruction {
class UnmodeledUseInstruction extends Instruction {
UnmodeledUseInstruction() {
opcode instanceof Opcode::UnmodeledUse
getOpcode() instanceof Opcode::UnmodeledUse
}
override string getOperandsString() {
@@ -1495,7 +1478,7 @@ class UnmodeledUseInstruction extends Instruction {
*/
class PhiInstruction extends Instruction {
PhiInstruction() {
opcode instanceof Opcode::Phi
getOpcode() instanceof Opcode::Phi
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1547,7 +1530,7 @@ class PhiInstruction extends Instruction {
*/
class ChiInstruction extends Instruction {
ChiInstruction() {
opcode instanceof Opcode::Chi
getOpcode() instanceof Opcode::Chi
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1577,7 +1560,7 @@ class ChiInstruction extends Instruction {
*/
class UnreachedInstruction extends Instruction {
UnreachedInstruction() {
opcode instanceof Opcode::Unreached
getOpcode() instanceof Opcode::Unreached
}
}
@@ -1587,6 +1570,6 @@ class UnreachedInstruction extends Instruction {
*/
class BuiltInInstruction extends Instruction {
BuiltInInstruction() {
opcode instanceof BuiltInOpcode
getOpcode() instanceof BuiltInOpcode
}
}

View File

@@ -8,28 +8,12 @@ private import TranslatedExpr
private import TranslatedStmt
private import TranslatedFunction
class InstructionTagType extends TInstructionTag {
final string toString() {
result = "Tag"
}
TranslatedElement getInstructionTranslatedElement(Instruction instruction) {
instruction = MkInstruction(result, _)
}
private TranslatedElement getInstructionTranslatedElement(
Instruction instruction) {
result = getInstructionTranslatedElementAndTag(instruction, _)
}
private TranslatedElement getInstructionTranslatedElementAndTag(
Instruction instruction, InstructionTag tag) {
result.getAST() = instruction.getAST() and
tag = instruction.getTag() and
result.hasInstruction(_, tag, _, _)
}
private TranslatedElement getTempVariableTranslatedElement(
IRTempVariable var) {
result.getAST() = var.getAST() and
result.hasTempVariable(var.getTag(), _)
InstructionTag getInstructionTag(Instruction instruction) {
instruction = MkInstruction(_, result)
}
import Cached
@@ -39,21 +23,10 @@ cached private module Cached {
}
cached newtype TInstruction =
MkInstruction(FunctionIR funcIR, Opcode opcode, Locatable ast,
InstructionTag tag, Type resultType, boolean isGLValue) {
hasInstruction(funcIR.getFunction(), opcode, ast, tag,
resultType, isGLValue)
MkInstruction(TranslatedElement element, InstructionTag tag) {
element.hasInstruction(_, tag, _, _)
}
private predicate hasInstruction(Function func, Opcode opcode, Locatable ast,
InstructionTag tag, Type resultType, boolean isGLValue) {
exists(TranslatedElement element |
element.getAST() = ast and
func = element.getFunction() and
element.hasInstruction(opcode, tag, resultType, isGLValue)
)
}
cached predicate hasTempVariable(Function func, Locatable ast, TempVariableTag tag,
Type type) {
exists(TranslatedElement element |
@@ -88,7 +61,7 @@ cached private module Cached {
cached Instruction getInstructionOperandDefinition(Instruction instruction, OperandTag tag) {
result = getInstructionTranslatedElement(instruction).getInstructionOperand(
instruction.getTag(), tag)
getInstructionTag(instruction), tag)
}
cached Instruction getPhiInstructionOperandDefinition(Instruction instruction,
@@ -102,7 +75,7 @@ cached private module Cached {
cached Instruction getInstructionSuccessor(Instruction instruction, EdgeKind kind) {
result = getInstructionTranslatedElement(instruction).getInstructionSuccessor(
instruction.getTag(), kind)
getInstructionTag(instruction), kind)
}
// This predicate has pragma[noopt] because otherwise the `getAChild*` calls
@@ -187,9 +160,27 @@ cached private module Cached {
goto.getLocation().isBefore(goto.getTarget().getLocation())
}
cached Locatable getInstructionAST(Instruction instruction) {
result = getInstructionTranslatedElement(instruction).getAST()
}
cached predicate instructionHasType(Instruction instruction, Type type, boolean isGLValue) {
getInstructionTranslatedElement(instruction)
.hasInstruction(_, getInstructionTag(instruction), type, isGLValue)
}
cached Opcode getInstructionOpcode(Instruction instruction) {
getInstructionTranslatedElement(instruction)
.hasInstruction(result, getInstructionTag(instruction), _, _)
}
cached FunctionIR getInstructionEnclosingFunctionIR(Instruction instruction) {
result.getFunction() = getInstructionTranslatedElement(instruction).getFunction()
}
cached IRVariable getInstructionVariable(Instruction instruction) {
result = getInstructionTranslatedElement(instruction).getInstructionVariable(
instruction.getTag())
getInstructionTag(instruction))
}
cached Field getInstructionField(Instruction instruction) {
@@ -200,41 +191,39 @@ cached private module Cached {
}
cached Function getInstructionFunction(Instruction instruction) {
exists(InstructionTag tag |
result = getInstructionTranslatedElementAndTag(instruction, tag)
.getInstructionFunction(tag)
)
result = getInstructionTranslatedElement(instruction)
.getInstructionFunction(getInstructionTag(instruction))
}
cached string getInstructionConstantValue(Instruction instruction) {
result =
getInstructionTranslatedElement(instruction).getInstructionConstantValue(
instruction.getTag())
getInstructionTag(instruction))
}
cached StringLiteral getInstructionStringLiteral(Instruction instruction) {
result =
getInstructionTranslatedElement(instruction).getInstructionStringLiteral(
instruction.getTag())
getInstructionTag(instruction))
}
cached Type getInstructionExceptionType(Instruction instruction) {
result =
getInstructionTranslatedElement(instruction).getInstructionExceptionType(
instruction.getTag())
getInstructionTag(instruction))
}
cached predicate getInstructionInheritance(Instruction instruction,
Class baseClass, Class derivedClass) {
getInstructionTranslatedElement(instruction).getInstructionInheritance(
instruction.getTag(), baseClass, derivedClass)
getInstructionTag(instruction), baseClass, derivedClass)
}
pragma[noinline]
private predicate instructionOrigin(Instruction instruction,
TranslatedElement element, InstructionTag tag) {
element = getInstructionTranslatedElement(instruction) and
tag = instruction.getTag()
tag = getInstructionTag(instruction)
}
cached int getInstructionElementSize(Instruction instruction) {
@@ -262,12 +251,14 @@ cached private module Cached {
import CachedForDebugging
cached private module CachedForDebugging {
cached string getTempVariableUniqueId(IRTempVariable var) {
result = getTempVariableTranslatedElement(var).getId() + ":" +
getTempVariableTagId(var.getTag())
exists(TranslatedElement element |
var = element.getTempVariable(_) and
result = element.getId() + ":" + getTempVariableTagId(var.getTag())
)
}
cached string getInstructionUniqueId(Instruction instruction) {
result = getInstructionTranslatedElement(instruction).getId() + ":" +
getInstructionTagId(instruction.getTag())
getInstructionTagId(getInstructionTag(instruction))
}
}

View File

@@ -86,6 +86,12 @@ newtype TInstructionTag =
elementIsInitialized(elementIndex)
}
class InstructionTag extends TInstructionTag {
final string toString() {
result = "Tag"
}
}
/**
* Gets a unique string for the instruction tag. Primarily used for generating
* instruction IDs to ensure stable IR dumps.

View File

@@ -9,6 +9,7 @@ private import InstructionTag
private import TranslatedCondition
private import TranslatedFunction
private import TranslatedStmt
private import IRConstruction
/**
* Gets the built-in `int` type.
@@ -35,15 +36,18 @@ private Element getRealParent(Expr expr) {
*/
predicate isIRConstant(Expr expr) { exists(expr.getValue()) }
// Pulled out to work around QL-796
private predicate isOrphan(Expr expr) {
not exists(getRealParent(expr))
}
/**
* Holds if `expr` and all of its descendants should be ignored for the purposes
* of IR generation due to some property of `expr` itself. Unlike
* `ignoreExpr()`, this predicate does not ignore an expression solely because
* it is a descendant of an ignored element.
* Holds if `expr` should be ignored for the purposes of IR generation due to
* some property of `expr` or one of its ancestors.
*/
private predicate ignoreExprAndDescendants(Expr expr) {
// Ignore parentless expressions
not exists(getRealParent(expr)) or
isOrphan(expr) or
// Ignore the constants in SwitchCase, since their values are embedded in the
// CaseEdge.
getRealParent(expr) instanceof SwitchCase or
@@ -59,7 +63,8 @@ private predicate ignoreExprAndDescendants(Expr expr) {
// REVIEW: Ignore initializers for `NewArrayExpr` until we determine how to
// represent them.
newExpr.getInitializer().getFullyConverted() = expr
)
) or
ignoreExprAndDescendants(getRealParent(expr)) // recursive case
}
/**
@@ -80,7 +85,7 @@ private predicate ignoreExprOnly(Expr expr) {
*/
private predicate ignoreExpr(Expr expr) {
ignoreExprOnly(expr) or
ignoreExprAndDescendants(getRealParent*(expr))
ignoreExprAndDescendants(expr)
}
/**
@@ -623,8 +628,8 @@ abstract class TranslatedElement extends TTranslatedElement {
* Gets the instruction generated by this element with tag `tag`.
*/
final Instruction getInstruction(InstructionTag tag) {
result.getAST() = getAST() and
result.getTag() = tag
getInstructionTranslatedElement(result) = this and
getInstructionTag(result) = tag
}
/**
@@ -632,7 +637,8 @@ abstract class TranslatedElement extends TTranslatedElement {
*/
final IRTempVariable getTempVariable(TempVariableTag tag) {
result.getAST() = getAST() and
result.getTag() = tag
result.getTag() = tag and
hasTempVariable(tag, _)
}
/**

View File

@@ -159,24 +159,13 @@ private cached module Cached {
not startsBasicBlock(i2)
}
/** Gets the index of `i` in its `IRBlock`. */
private int getMemberIndex(Instruction i) {
startsBasicBlock(i) and
result = 0
or
exists(Instruction iPrev |
adjacentInBlock(iPrev, i) and
result = getMemberIndex(iPrev) + 1
)
}
/** Holds if `i` is the `index`th instruction the block starting with `first`. */
private Instruction getInstructionFromFirst(Instruction first, int index) =
shortestDistances(startsBasicBlock/1, adjacentInBlock/2)(first, result, index)
/** Holds if `i` is the `index`th instruction in `block`. */
cached Instruction getInstruction(TIRBlock block, int index) {
exists(Instruction first |
block = MkIRBlock(first) and
index = getMemberIndex(result) and
adjacentInBlock*(first, result)
)
result = getInstructionFromFirst(getFirstInstruction(block), index)
}
cached int getInstructionCount(TIRBlock block) {

View File

@@ -3,31 +3,7 @@ import FunctionIR
import cpp
import semmle.code.cpp.ir.implementation.TempVariableTag
private import semmle.code.cpp.ir.internal.TempVariableTag
private newtype TIRVariable =
TIRAutomaticUserVariable(LocalScopeVariable var, FunctionIR funcIR) {
exists(Function func |
func = funcIR.getFunction() and
(
var.getFunction() = func or
var.(Parameter).getCatchBlock().getEnclosingFunction() = func
)
)
} or
TIRStaticUserVariable(Variable var, FunctionIR funcIR) {
(
var instanceof GlobalOrNamespaceVariable or
var instanceof MemberVariable and not var instanceof Field
) and
exists(VariableAccess access |
access.getTarget() = var and
access.getEnclosingFunction() = funcIR.getFunction()
)
} or
TIRTempVariable(FunctionIR funcIR, Locatable ast, TempVariableTag tag,
Type type) {
Construction::hasTempVariable(funcIR.getFunction(), ast, tag, type)
}
private import semmle.code.cpp.ir.internal.TIRVariable
IRUserVariable getIRUserVariable(Function func, Variable var) {
result.getVariable() = var and
@@ -40,7 +16,7 @@ IRUserVariable getIRUserVariable(Function func, Variable var) {
* generated by the AST-to-IR translation (`IRTempVariable`).
*/
abstract class IRVariable extends TIRVariable {
FunctionIR funcIR;
Function func;
abstract string toString();
@@ -72,14 +48,14 @@ abstract class IRVariable extends TIRVariable {
* Gets the IR for the function that references this variable.
*/
final FunctionIR getFunctionIR() {
result = funcIR
result.getFunction() = func
}
/**
* Gets the function that references this variable.
*/
final Function getFunction() {
result = funcIR.getFunction()
result = func
}
}
@@ -126,7 +102,7 @@ class IRAutomaticUserVariable extends IRUserVariable, IRAutomaticVariable,
LocalScopeVariable localVar;
IRAutomaticUserVariable() {
this = TIRAutomaticUserVariable(localVar, funcIR) and
this = TIRAutomaticUserVariable(localVar, func) and
var = localVar
}
@@ -137,7 +113,7 @@ class IRAutomaticUserVariable extends IRUserVariable, IRAutomaticVariable,
class IRStaticUserVariable extends IRUserVariable, TIRStaticUserVariable {
IRStaticUserVariable() {
this = TIRStaticUserVariable(var, funcIR)
this = TIRStaticUserVariable(var, func)
}
}
@@ -152,7 +128,7 @@ class IRTempVariable extends IRVariable, IRAutomaticVariable, TIRTempVariable {
Type type;
IRTempVariable() {
this = TIRTempVariable(funcIR, ast, tag, type)
this = TIRTempVariable(func, ast, tag, type)
}
override final Type getType() {

View File

@@ -10,8 +10,6 @@ import semmle.code.cpp.ir.implementation.Opcode
private import semmle.code.cpp.ir.implementation.Opcode
private import semmle.code.cpp.ir.internal.OperandTag
class InstructionTag = Construction::InstructionTagType;
module InstructionSanity {
/**
* Holds if the instruction `instr` should be expected to have an operand
@@ -211,17 +209,6 @@ module InstructionSanity {
* Represents a single operation in the IR.
*/
class Instruction extends Construction::TInstruction {
Opcode opcode;
Locatable ast;
InstructionTag instructionTag;
Type resultType;
FunctionIR funcIR;
boolean glvalue;
Instruction() {
this = Construction::MkInstruction(funcIR, opcode, ast, instructionTag, resultType, glvalue)
}
final string toString() {
result = getOpcode().toString() + ": " + getAST().toString()
}
@@ -244,9 +231,9 @@ class Instruction extends Construction::TInstruction {
*/
final string getOperationString() {
if exists(getImmediateString()) then
result = getOperationPrefix() + opcode.toString() + "[" + getImmediateString() + "]"
result = getOperationPrefix() + getOpcode().toString() + "[" + getImmediateString() + "]"
else
result = getOperationPrefix() + opcode.toString()
result = getOperationPrefix() + getOpcode().toString()
}
/**
@@ -264,7 +251,7 @@ class Instruction extends Construction::TInstruction {
}
private string getResultPrefix() {
if resultType instanceof VoidType then
if getResultType() instanceof VoidType then
result = "v"
else if hasMemoryResult() then
if isResultModeled() then
@@ -309,8 +296,8 @@ class Instruction extends Construction::TInstruction {
private string getResultTypeString() {
exists(string valcat |
valcat = getValueCategoryString(resultType.toString()) and
if (resultType instanceof UnknownType and
valcat = getValueCategoryString(getResultType().toString()) and
if (getResultType() instanceof UnknownType and
not isGLValue() and
exists(getResultSize())) then (
result = valcat + "[" + getResultSize().toString() + "]"
@@ -378,28 +365,28 @@ class Instruction extends Construction::TInstruction {
* Gets the function that contains this instruction.
*/
final Function getFunction() {
result = funcIR.getFunction()
result = getFunctionIR().getFunction()
}
/**
* Gets the FunctionIR object that contains the IR for this instruction.
*/
final FunctionIR getFunctionIR() {
result = funcIR
result = Construction::getInstructionEnclosingFunctionIR(this)
}
/**
* Gets the AST that caused this instruction to be generated.
*/
final Locatable getAST() {
result = ast
result = Construction::getInstructionAST(this)
}
/**
* Gets the location of the source code for this instruction.
*/
final Location getLocation() {
result = ast.getLocation()
result = getAST().getLocation()
}
/**
@@ -421,7 +408,7 @@ class Instruction extends Construction::TInstruction {
* instruction does not produce a result, its result type will be `VoidType`.
*/
final Type getResultType() {
result = resultType
Construction::instructionHasType(this, result, _)
}
/**
@@ -443,7 +430,7 @@ class Instruction extends Construction::TInstruction {
* the integer value loaded from variable `x`.
*/
final predicate isGLValue() {
glvalue = true
Construction::instructionHasType(this, _, true)
}
/**
@@ -460,10 +447,10 @@ class Instruction extends Construction::TInstruction {
result = nullptr.getSize()
)
)
else if resultType instanceof UnknownType then
else if getResultType() instanceof UnknownType then
result = Construction::getInstructionResultSize(this)
else (
result = resultType.getSize()
result = getResultType().getSize()
)
}
@@ -471,11 +458,7 @@ class Instruction extends Construction::TInstruction {
* Gets the opcode that specifies the operation performed by this instruction.
*/
final Opcode getOpcode() {
result = opcode
}
final InstructionTag getTag() {
result = instructionTag
result = Construction::getInstructionOpcode(this)
}
/**
@@ -644,19 +627,19 @@ class ConstantValueInstruction extends Instruction {
class EnterFunctionInstruction extends Instruction {
EnterFunctionInstruction() {
opcode instanceof Opcode::EnterFunction
getOpcode() instanceof Opcode::EnterFunction
}
}
class VariableAddressInstruction extends VariableInstruction {
VariableAddressInstruction() {
opcode instanceof Opcode::VariableAddress
getOpcode() instanceof Opcode::VariableAddress
}
}
class InitializeParameterInstruction extends VariableInstruction {
InitializeParameterInstruction() {
opcode instanceof Opcode::InitializeParameter
getOpcode() instanceof Opcode::InitializeParameter
}
final Parameter getParameter() {
@@ -673,13 +656,13 @@ class InitializeParameterInstruction extends VariableInstruction {
*/
class InitializeThisInstruction extends Instruction {
InitializeThisInstruction() {
opcode instanceof Opcode::InitializeThis
getOpcode() instanceof Opcode::InitializeThis
}
}
class FieldAddressInstruction extends FieldInstruction {
FieldAddressInstruction() {
opcode instanceof Opcode::FieldAddress
getOpcode() instanceof Opcode::FieldAddress
}
final Instruction getObjectAddress() {
@@ -689,7 +672,7 @@ class FieldAddressInstruction extends FieldInstruction {
class UninitializedInstruction extends VariableInstruction {
UninitializedInstruction() {
opcode instanceof Opcode::Uninitialized
getOpcode() instanceof Opcode::Uninitialized
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -706,25 +689,25 @@ class UninitializedInstruction extends VariableInstruction {
class NoOpInstruction extends Instruction {
NoOpInstruction() {
opcode instanceof Opcode::NoOp
getOpcode() instanceof Opcode::NoOp
}
}
class ReturnInstruction extends Instruction {
ReturnInstruction() {
opcode instanceof ReturnOpcode
getOpcode() instanceof ReturnOpcode
}
}
class ReturnVoidInstruction extends ReturnInstruction {
ReturnVoidInstruction() {
opcode instanceof Opcode::ReturnVoid
getOpcode() instanceof Opcode::ReturnVoid
}
}
class ReturnValueInstruction extends ReturnInstruction {
ReturnValueInstruction() {
opcode instanceof Opcode::ReturnValue
getOpcode() instanceof Opcode::ReturnValue
}
final Instruction getReturnValue() {
@@ -734,7 +717,7 @@ class ReturnValueInstruction extends ReturnInstruction {
class CopyInstruction extends Instruction {
CopyInstruction() {
opcode instanceof CopyOpcode
getOpcode() instanceof CopyOpcode
}
final Instruction getSourceValue() {
@@ -744,13 +727,13 @@ class CopyInstruction extends Instruction {
class CopyValueInstruction extends CopyInstruction {
CopyValueInstruction() {
opcode instanceof Opcode::CopyValue
getOpcode() instanceof Opcode::CopyValue
}
}
class LoadInstruction extends CopyInstruction {
LoadInstruction() {
opcode instanceof Opcode::Load
getOpcode() instanceof Opcode::Load
}
final Instruction getSourceAddress() {
@@ -760,7 +743,7 @@ class LoadInstruction extends CopyInstruction {
class StoreInstruction extends CopyInstruction {
StoreInstruction() {
opcode instanceof Opcode::Store
getOpcode() instanceof Opcode::Store
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -774,7 +757,7 @@ class StoreInstruction extends CopyInstruction {
class ConditionalBranchInstruction extends Instruction {
ConditionalBranchInstruction() {
opcode instanceof Opcode::ConditionalBranch
getOpcode() instanceof Opcode::ConditionalBranch
}
final Instruction getCondition() {
@@ -792,25 +775,25 @@ class ConditionalBranchInstruction extends Instruction {
class ExitFunctionInstruction extends Instruction {
ExitFunctionInstruction() {
opcode instanceof Opcode::ExitFunction
getOpcode() instanceof Opcode::ExitFunction
}
}
class ConstantInstruction extends ConstantValueInstruction {
ConstantInstruction() {
opcode instanceof Opcode::Constant
getOpcode() instanceof Opcode::Constant
}
}
class IntegerConstantInstruction extends ConstantInstruction {
IntegerConstantInstruction() {
resultType instanceof IntegralType
getResultType() instanceof IntegralType
}
}
class FloatConstantInstruction extends ConstantInstruction {
FloatConstantInstruction() {
resultType instanceof FloatingPointType
getResultType() instanceof FloatingPointType
}
}
@@ -832,7 +815,7 @@ class StringConstantInstruction extends Instruction {
class BinaryInstruction extends Instruction {
BinaryInstruction() {
opcode instanceof BinaryOpcode
getOpcode() instanceof BinaryOpcode
}
final Instruction getLeftOperand() {
@@ -855,67 +838,67 @@ class BinaryInstruction extends Instruction {
class AddInstruction extends BinaryInstruction {
AddInstruction() {
opcode instanceof Opcode::Add
getOpcode() instanceof Opcode::Add
}
}
class SubInstruction extends BinaryInstruction {
SubInstruction() {
opcode instanceof Opcode::Sub
getOpcode() instanceof Opcode::Sub
}
}
class MulInstruction extends BinaryInstruction {
MulInstruction() {
opcode instanceof Opcode::Mul
getOpcode() instanceof Opcode::Mul
}
}
class DivInstruction extends BinaryInstruction {
DivInstruction() {
opcode instanceof Opcode::Div
getOpcode() instanceof Opcode::Div
}
}
class RemInstruction extends BinaryInstruction {
RemInstruction() {
opcode instanceof Opcode::Rem
getOpcode() instanceof Opcode::Rem
}
}
class NegateInstruction extends UnaryInstruction {
NegateInstruction() {
opcode instanceof Opcode::Negate
getOpcode() instanceof Opcode::Negate
}
}
class BitAndInstruction extends BinaryInstruction {
BitAndInstruction() {
opcode instanceof Opcode::BitAnd
getOpcode() instanceof Opcode::BitAnd
}
}
class BitOrInstruction extends BinaryInstruction {
BitOrInstruction() {
opcode instanceof Opcode::BitOr
getOpcode() instanceof Opcode::BitOr
}
}
class BitXorInstruction extends BinaryInstruction {
BitXorInstruction() {
opcode instanceof Opcode::BitXor
getOpcode() instanceof Opcode::BitXor
}
}
class ShiftLeftInstruction extends BinaryInstruction {
ShiftLeftInstruction() {
opcode instanceof Opcode::ShiftLeft
getOpcode() instanceof Opcode::ShiftLeft
}
}
class ShiftRightInstruction extends BinaryInstruction {
ShiftRightInstruction() {
opcode instanceof Opcode::ShiftRight
getOpcode() instanceof Opcode::ShiftRight
}
}
@@ -923,7 +906,7 @@ class PointerArithmeticInstruction extends BinaryInstruction {
int elementSize;
PointerArithmeticInstruction() {
opcode instanceof PointerArithmeticOpcode and
getOpcode() instanceof PointerArithmeticOpcode and
elementSize = Construction::getInstructionElementSize(this)
}
@@ -938,31 +921,31 @@ class PointerArithmeticInstruction extends BinaryInstruction {
class PointerOffsetInstruction extends PointerArithmeticInstruction {
PointerOffsetInstruction() {
opcode instanceof PointerOffsetOpcode
getOpcode() instanceof PointerOffsetOpcode
}
}
class PointerAddInstruction extends PointerOffsetInstruction {
PointerAddInstruction() {
opcode instanceof Opcode::PointerAdd
getOpcode() instanceof Opcode::PointerAdd
}
}
class PointerSubInstruction extends PointerOffsetInstruction {
PointerSubInstruction() {
opcode instanceof Opcode::PointerSub
getOpcode() instanceof Opcode::PointerSub
}
}
class PointerDiffInstruction extends PointerArithmeticInstruction {
PointerDiffInstruction() {
opcode instanceof Opcode::PointerDiff
getOpcode() instanceof Opcode::PointerDiff
}
}
class UnaryInstruction extends Instruction {
UnaryInstruction() {
opcode instanceof UnaryOpcode
getOpcode() instanceof UnaryOpcode
}
final Instruction getOperand() {
@@ -972,7 +955,7 @@ class UnaryInstruction extends Instruction {
class ConvertInstruction extends UnaryInstruction {
ConvertInstruction() {
opcode instanceof Opcode::Convert
getOpcode() instanceof Opcode::Convert
}
}
@@ -1024,7 +1007,7 @@ class InheritanceConversionInstruction extends UnaryInstruction {
*/
class ConvertToBaseInstruction extends InheritanceConversionInstruction {
ConvertToBaseInstruction() {
opcode instanceof Opcode::ConvertToBase
getOpcode() instanceof Opcode::ConvertToBase
}
}
@@ -1034,7 +1017,7 @@ class ConvertToBaseInstruction extends InheritanceConversionInstruction {
*/
class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction {
ConvertToVirtualBaseInstruction() {
opcode instanceof Opcode::ConvertToVirtualBase
getOpcode() instanceof Opcode::ConvertToVirtualBase
}
}
@@ -1044,37 +1027,37 @@ class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction {
*/
class ConvertToDerivedInstruction extends InheritanceConversionInstruction {
ConvertToDerivedInstruction() {
opcode instanceof Opcode::ConvertToDerived
getOpcode() instanceof Opcode::ConvertToDerived
}
}
class BitComplementInstruction extends UnaryInstruction {
BitComplementInstruction() {
opcode instanceof Opcode::BitComplement
getOpcode() instanceof Opcode::BitComplement
}
}
class LogicalNotInstruction extends UnaryInstruction {
LogicalNotInstruction() {
opcode instanceof Opcode::LogicalNot
getOpcode() instanceof Opcode::LogicalNot
}
}
class CompareInstruction extends BinaryInstruction {
CompareInstruction() {
opcode instanceof CompareOpcode
getOpcode() instanceof CompareOpcode
}
}
class CompareEQInstruction extends CompareInstruction {
CompareEQInstruction() {
opcode instanceof Opcode::CompareEQ
getOpcode() instanceof Opcode::CompareEQ
}
}
class CompareNEInstruction extends CompareInstruction {
CompareNEInstruction() {
opcode instanceof Opcode::CompareNE
getOpcode() instanceof Opcode::CompareNE
}
}
@@ -1083,7 +1066,7 @@ class CompareNEInstruction extends CompareInstruction {
*/
class RelationalInstruction extends CompareInstruction {
RelationalInstruction() {
opcode instanceof RelationalOpcode
getOpcode() instanceof RelationalOpcode
}
/**
@@ -1116,7 +1099,7 @@ class RelationalInstruction extends CompareInstruction {
class CompareLTInstruction extends RelationalInstruction {
CompareLTInstruction() {
opcode instanceof Opcode::CompareLT
getOpcode() instanceof Opcode::CompareLT
}
override Instruction getLesserOperand() {
@@ -1134,7 +1117,7 @@ class CompareLTInstruction extends RelationalInstruction {
class CompareGTInstruction extends RelationalInstruction {
CompareGTInstruction() {
opcode instanceof Opcode::CompareGT
getOpcode() instanceof Opcode::CompareGT
}
override Instruction getLesserOperand() {
@@ -1152,7 +1135,7 @@ class CompareGTInstruction extends RelationalInstruction {
class CompareLEInstruction extends RelationalInstruction {
CompareLEInstruction() {
opcode instanceof Opcode::CompareLE
getOpcode() instanceof Opcode::CompareLE
}
override Instruction getLesserOperand() {
@@ -1170,7 +1153,7 @@ class CompareLEInstruction extends RelationalInstruction {
class CompareGEInstruction extends RelationalInstruction {
CompareGEInstruction() {
opcode instanceof Opcode::CompareGE
getOpcode() instanceof Opcode::CompareGE
}
override Instruction getLesserOperand() {
@@ -1188,7 +1171,7 @@ class CompareGEInstruction extends RelationalInstruction {
class SwitchInstruction extends Instruction {
SwitchInstruction() {
opcode instanceof Opcode::Switch
getOpcode() instanceof Opcode::Switch
}
final Instruction getExpression() {
@@ -1211,7 +1194,7 @@ class SwitchInstruction extends Instruction {
*/
class CallInstruction extends Instruction {
CallInstruction() {
opcode instanceof Opcode::Call
getOpcode() instanceof Opcode::Call
}
/**
@@ -1254,7 +1237,7 @@ class CallInstruction extends Instruction {
*/
class SideEffectInstruction extends Instruction {
SideEffectInstruction() {
opcode instanceof SideEffectOpcode
getOpcode() instanceof SideEffectOpcode
}
final Instruction getPrimaryInstruction() {
@@ -1268,7 +1251,7 @@ class SideEffectInstruction extends Instruction {
*/
class CallSideEffectInstruction extends SideEffectInstruction {
CallSideEffectInstruction() {
opcode instanceof Opcode::CallSideEffect
getOpcode() instanceof Opcode::CallSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1282,7 +1265,7 @@ class CallSideEffectInstruction extends SideEffectInstruction {
*/
class CallReadSideEffectInstruction extends SideEffectInstruction {
CallReadSideEffectInstruction() {
opcode instanceof Opcode::CallReadSideEffect
getOpcode() instanceof Opcode::CallReadSideEffect
}
}
@@ -1291,7 +1274,7 @@ class CallReadSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectReadSideEffectInstruction extends SideEffectInstruction {
IndirectReadSideEffectInstruction() {
opcode instanceof Opcode::IndirectReadSideEffect
getOpcode() instanceof Opcode::IndirectReadSideEffect
}
}
@@ -1300,7 +1283,7 @@ class IndirectReadSideEffectInstruction extends SideEffectInstruction {
*/
class BufferReadSideEffectInstruction extends SideEffectInstruction {
BufferReadSideEffectInstruction() {
opcode instanceof Opcode::BufferReadSideEffect
getOpcode() instanceof Opcode::BufferReadSideEffect
}
}
@@ -1309,7 +1292,7 @@ class BufferReadSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectWriteSideEffectInstruction extends SideEffectInstruction {
IndirectWriteSideEffectInstruction() {
opcode instanceof Opcode::IndirectWriteSideEffect
getOpcode() instanceof Opcode::IndirectWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1323,7 +1306,7 @@ class IndirectWriteSideEffectInstruction extends SideEffectInstruction {
*/
class BufferWriteSideEffectInstruction extends SideEffectInstruction {
BufferWriteSideEffectInstruction() {
opcode instanceof Opcode::BufferWriteSideEffect
getOpcode() instanceof Opcode::BufferWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1338,7 +1321,7 @@ class BufferWriteSideEffectInstruction extends SideEffectInstruction {
*/
class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction {
IndirectMayWriteSideEffectInstruction() {
opcode instanceof Opcode::IndirectMayWriteSideEffect
getOpcode() instanceof Opcode::IndirectMayWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1352,7 +1335,7 @@ class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction {
*/
class BufferMayWriteSideEffectInstruction extends SideEffectInstruction {
BufferMayWriteSideEffectInstruction() {
opcode instanceof Opcode::BufferMayWriteSideEffect
getOpcode() instanceof Opcode::BufferMayWriteSideEffect
}
override final MemoryAccessKind getResultMemoryAccess() {
result instanceof BufferMayMemoryAccess
@@ -1364,7 +1347,7 @@ class BufferMayWriteSideEffectInstruction extends SideEffectInstruction {
*/
class ThrowInstruction extends Instruction {
ThrowInstruction() {
opcode instanceof ThrowOpcode
getOpcode() instanceof ThrowOpcode
}
}
@@ -1373,7 +1356,7 @@ class ThrowInstruction extends Instruction {
*/
class ThrowValueInstruction extends ThrowInstruction {
ThrowValueInstruction() {
opcode instanceof Opcode::ThrowValue
getOpcode() instanceof Opcode::ThrowValue
}
/**
@@ -1396,7 +1379,7 @@ class ThrowValueInstruction extends ThrowInstruction {
*/
class ReThrowInstruction extends ThrowInstruction {
ReThrowInstruction() {
opcode instanceof Opcode::ReThrow
getOpcode() instanceof Opcode::ReThrow
}
}
@@ -1405,7 +1388,7 @@ class ReThrowInstruction extends ThrowInstruction {
*/
class UnwindInstruction extends Instruction {
UnwindInstruction() {
opcode instanceof Opcode::Unwind
getOpcode() instanceof Opcode::Unwind
}
}
@@ -1414,7 +1397,7 @@ class UnwindInstruction extends Instruction {
*/
class CatchInstruction extends Instruction {
CatchInstruction() {
opcode instanceof CatchOpcode
getOpcode() instanceof CatchOpcode
}
}
@@ -1425,7 +1408,7 @@ class CatchByTypeInstruction extends CatchInstruction {
Type exceptionType;
CatchByTypeInstruction() {
opcode instanceof Opcode::CatchByType and
getOpcode() instanceof Opcode::CatchByType and
exceptionType = Construction::getInstructionExceptionType(this)
}
@@ -1446,13 +1429,13 @@ class CatchByTypeInstruction extends CatchInstruction {
*/
class CatchAnyInstruction extends CatchInstruction {
CatchAnyInstruction() {
opcode instanceof Opcode::CatchAny
getOpcode() instanceof Opcode::CatchAny
}
}
class UnmodeledDefinitionInstruction extends Instruction {
UnmodeledDefinitionInstruction() {
opcode instanceof Opcode::UnmodeledDefinition
getOpcode() instanceof Opcode::UnmodeledDefinition
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1465,7 +1448,7 @@ class UnmodeledDefinitionInstruction extends Instruction {
*/
class AliasedDefinitionInstruction extends Instruction {
AliasedDefinitionInstruction() {
opcode instanceof Opcode::AliasedDefinition
getOpcode() instanceof Opcode::AliasedDefinition
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1475,7 +1458,7 @@ class AliasedDefinitionInstruction extends Instruction {
class UnmodeledUseInstruction extends Instruction {
UnmodeledUseInstruction() {
opcode instanceof Opcode::UnmodeledUse
getOpcode() instanceof Opcode::UnmodeledUse
}
override string getOperandsString() {
@@ -1495,7 +1478,7 @@ class UnmodeledUseInstruction extends Instruction {
*/
class PhiInstruction extends Instruction {
PhiInstruction() {
opcode instanceof Opcode::Phi
getOpcode() instanceof Opcode::Phi
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1547,7 +1530,7 @@ class PhiInstruction extends Instruction {
*/
class ChiInstruction extends Instruction {
ChiInstruction() {
opcode instanceof Opcode::Chi
getOpcode() instanceof Opcode::Chi
}
override final MemoryAccessKind getResultMemoryAccess() {
@@ -1577,7 +1560,7 @@ class ChiInstruction extends Instruction {
*/
class UnreachedInstruction extends Instruction {
UnreachedInstruction() {
opcode instanceof Opcode::Unreached
getOpcode() instanceof Opcode::Unreached
}
}
@@ -1587,6 +1570,6 @@ class UnreachedInstruction extends Instruction {
*/
class BuiltInInstruction extends Instruction {
BuiltInInstruction() {
opcode instanceof BuiltInOpcode
getOpcode() instanceof BuiltInOpcode
}
}

View File

@@ -14,25 +14,6 @@ cached private module Cached {
result.getFirstInstruction() = getNewInstruction(oldBlock.getFirstInstruction())
}
cached newtype TInstructionTag =
WrappedInstructionTag(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction
} or
PhiTag(Alias::VirtualVariable vvar, OldBlock block) {
hasPhiNode(vvar, block)
} or
ChiTag(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction and
hasChiNode(_, oldInstruction)
} or
UnreachedTag()
cached class InstructionTagType extends TInstructionTag {
cached final string toString() {
result = "Tag"
}
}
cached predicate functionHasIR(Function func) {
exists(OldIR::FunctionIR funcIR |
funcIR.getFunction() = func
@@ -40,7 +21,7 @@ cached private module Cached {
}
cached OldInstruction getOldInstruction(Instruction instr) {
instr.getTag() = WrappedInstructionTag(result)
instr = WrappedInstruction(result)
}
private Instruction getNewInstruction(OldInstruction instr) {
@@ -52,90 +33,35 @@ cached private module Cached {
* corresponding to `instr` if there is no `Chi` node.
*/
private Instruction getNewFinalInstruction(OldInstruction instr) {
result = getChiInstruction(instr)
result = Chi(instr)
or
not exists(getChiInstruction(instr)) and
not exists(Chi(instr)) and
result = getNewInstruction(instr)
}
private PhiInstruction getPhiInstruction(Function func, OldBlock oldBlock,
Alias::VirtualVariable vvar) {
result.getFunction() = func and
result.getAST() = oldBlock.getFirstInstruction().getAST() and
result.getTag() = PhiTag(vvar, oldBlock)
}
private ChiInstruction getChiInstruction (OldInstruction instr) {
hasChiNode(_, instr) and
result.getTag() = ChiTag(instr)
}
private IRVariable getNewIRVariable(OldIR::IRVariable var) {
result.getFunction() = var.getFunction() and
(
exists(OldIR::IRUserVariable userVar, IRUserVariable newUserVar |
userVar = var and
newUserVar.getVariable() = userVar.getVariable() and
result = newUserVar
) or
exists(OldIR::IRTempVariable tempVar, IRTempVariable newTempVar |
tempVar = var and
newTempVar.getAST() = tempVar.getAST() and
newTempVar.getTag() = tempVar.getTag() and
result = newTempVar
)
)
// This is just a type cast. Both classes derive from the same newtype.
result = var
}
cached newtype TInstruction =
MkInstruction(FunctionIR funcIR, Opcode opcode, Locatable ast,
InstructionTag tag, Type resultType, boolean isGLValue) {
hasInstruction(funcIR.getFunction(), opcode, ast, tag,
resultType, isGLValue)
WrappedInstruction(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction
} or
Phi(OldBlock block, Alias::VirtualVariable vvar) {
hasPhiNode(vvar, block)
} or
Chi(OldInstruction oldInstruction) {
not oldInstruction instanceof OldIR::PhiInstruction and
hasChiNode(_, oldInstruction)
} or
Unreached(Function function) {
exists(OldInstruction oldInstruction |
function = oldInstruction.getFunction() and
Reachability::isInfeasibleInstructionSuccessor(oldInstruction, _)
)
}
private predicate hasInstruction(Function func, Opcode opcode, Locatable ast,
InstructionTag tag, Type resultType, boolean isGLValue) {
exists(OldInstruction instr |
instr.getFunction() = func and
instr.getOpcode() = opcode and
instr.getAST() = ast and
WrappedInstructionTag(instr) = tag and
instr.getResultType() = resultType and
if instr.isGLValue() then
isGLValue = true
else
isGLValue = false
) or
exists(OldBlock block, Alias::VirtualVariable vvar |
hasPhiNode(vvar, block) and
block.getFunction() = func and
opcode instanceof Opcode::Phi and
ast = block.getFirstInstruction().getAST() and
tag = PhiTag(vvar, block) and
resultType = vvar.getType() and
isGLValue = false
) or
exists(OldInstruction instr, Alias::VirtualVariable vvar |
hasChiNode(vvar, instr) and
instr.getFunction() = func and
opcode instanceof Opcode::Chi and
ast = instr.getAST() and
tag = ChiTag(instr) and
resultType = vvar.getType() and
isGLValue = false
) or
exists(OldInstruction oldInstruction |
func = oldInstruction.getFunction() and
Reachability::isInfeasibleInstructionSuccessor(oldInstruction, _) and
tag = UnreachedTag() and
opcode instanceof Opcode::Unreached and
ast = func and
resultType instanceof VoidType and
isGLValue = false
)
}
cached predicate hasTempVariable(Function func, Locatable ast, TempVariableTag tag,
Type type) {
exists(OldIR::IRTempVariable var |
@@ -169,7 +95,7 @@ cached private module Cached {
if defIndex >= 0 then
result = getNewFinalInstruction(defBlock.getInstruction(defIndex))
else
result = getPhiInstruction(instruction.getFunction(), defBlock, vvar)
result = Phi(defBlock, vvar)
)
)
else (
@@ -189,7 +115,7 @@ cached private module Cached {
else
result = getNewInstruction(oldOperand.getDefinitionInstruction())
) or
instruction.getTag() = ChiTag(getOldInstruction(result)) and
instruction = Chi(getOldInstruction(result)) and
tag instanceof ChiPartialOperandTag
or
exists(FunctionIR f |
@@ -208,21 +134,21 @@ cached private module Cached {
OldBlock defBlock, int defRank, int defIndex, OldBlock predBlock |
hasPhiNode(vvar, phiBlock) and
predBlock = phiBlock.getAFeasiblePredecessor() and
instr.getTag() = PhiTag(vvar, phiBlock) and
instr = Phi(phiBlock, vvar) and
newPredecessorBlock = getNewBlock(predBlock) and
hasDefinitionAtRank(vvar, defBlock, defRank, defIndex) and
definitionReachesEndOfBlock(vvar, defBlock, defRank, predBlock) and
if defIndex >= 0 then
result = getNewFinalInstruction(defBlock.getInstruction(defIndex))
else
result = getPhiInstruction(instr.getFunction(), defBlock, vvar)
result = Phi(defBlock, vvar)
)
}
cached Instruction getChiInstructionTotalOperand(ChiInstruction chiInstr) {
exists(Alias::VirtualVariable vvar, OldInstruction oldInstr, OldBlock defBlock,
int defRank, int defIndex, OldBlock useBlock, int useRank |
ChiTag(oldInstr) = chiInstr.getTag() and
chiInstr = Chi(oldInstr) and
vvar = Alias::getResultMemoryAccess(oldInstr).getVirtualVariable() and
hasDefinitionAtRank(vvar, defBlock, defRank, defIndex) and
hasUseAtRank(vvar, useBlock, useRank, oldInstr) and
@@ -230,13 +156,13 @@ cached private module Cached {
if defIndex >= 0 then
result = getNewFinalInstruction(defBlock.getInstruction(defIndex))
else
result = getPhiInstruction(chiInstr.getFunction(), defBlock, vvar)
result = Phi(defBlock, vvar)
)
}
cached Instruction getPhiInstructionBlockStart(PhiInstruction instr) {
exists(OldBlock oldBlock |
instr.getTag() = PhiTag(_, oldBlock) and
instr = Phi(oldBlock, _) and
result = getNewInstruction(oldBlock.getFirstInstruction())
)
}
@@ -257,15 +183,14 @@ cached private module Cached {
cached Instruction getInstructionSuccessor(Instruction instruction, EdgeKind kind) {
if(hasChiNode(_, getOldInstruction(instruction)))
then
result = getChiInstruction(getOldInstruction(instruction)) and
result = Chi(getOldInstruction(instruction)) and
kind instanceof GotoEdge
else (
exists(OldInstruction oldInstruction |
oldInstruction = getOldInstruction(instruction) and
(
if Reachability::isInfeasibleInstructionSuccessor(oldInstruction, kind) then (
result.getTag() = UnreachedTag() and
result.getFunction() = instruction.getFunction()
result = Unreached(instruction.getFunction())
)
else (
result = getNewInstruction(oldInstruction.getSuccessor(kind))
@@ -273,7 +198,7 @@ cached private module Cached {
)
) or
exists(OldInstruction oldInstruction |
instruction = getChiInstruction(oldInstruction) and
instruction = Chi(oldInstruction) and
result = getNewInstruction(oldInstruction.getSuccessor(kind))
)
)
@@ -291,11 +216,88 @@ cached private module Cached {
// `oldInstruction`, in which case the back edge should come out of the
// chi node instead.
if hasChiNode(_, oldInstruction)
then instruction = getChiInstruction(oldInstruction)
then instruction = Chi(oldInstruction)
else instruction = getNewInstruction(oldInstruction)
)
}
cached Locatable getInstructionAST(Instruction instruction) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction)
or
instruction = Chi(oldInstruction)
|
result = oldInstruction.getAST()
)
or
exists(OldBlock block |
instruction = Phi(block, _) and
result = block.getFirstInstruction().getAST()
)
or
instruction = Unreached(result)
}
cached predicate instructionHasType(Instruction instruction, Type type, boolean isGLValue) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction) and
type = oldInstruction.getResultType() and
if oldInstruction.isGLValue()
then isGLValue = true
else isGLValue = false
)
or
exists(OldInstruction oldInstruction, Alias::VirtualVariable vvar |
instruction = Chi(oldInstruction) and
hasChiNode(vvar, oldInstruction) and
type = vvar.getType() and
isGLValue = false
)
or
exists(Alias::VirtualVariable vvar |
instruction = Phi(_, vvar) and
type = vvar.getType() and
isGLValue = false
)
or
instruction = Unreached(_) and
type instanceof VoidType and
isGLValue = false
}
cached Opcode getInstructionOpcode(Instruction instruction) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction) and
result = oldInstruction.getOpcode()
)
or
instruction instanceof Chi and
result instanceof Opcode::Chi
or
instruction instanceof Phi and
result instanceof Opcode::Phi
or
instruction instanceof Unreached and
result instanceof Opcode::Unreached
}
cached FunctionIR getInstructionEnclosingFunctionIR(Instruction instruction) {
exists(OldInstruction oldInstruction |
instruction = WrappedInstruction(oldInstruction)
or
instruction = Chi(oldInstruction)
|
result.getFunction() = oldInstruction.getFunction()
)
or
exists(OldBlock block |
instruction = Phi(block, _) and
result.getFunction() = block.getFunction()
)
or
instruction = Unreached(result.getFunction())
}
cached IRVariable getInstructionVariable(Instruction instruction) {
result = getNewIRVariable(getOldInstruction(instruction).(OldIR::VariableInstruction).getVariable())
}
@@ -346,13 +348,13 @@ cached private module Cached {
)
or
exists(OldIR::Instruction oldInstruction |
instruction.getTag() = ChiTag(oldInstruction) and
instruction = Chi(oldInstruction) and
result = getNewInstruction(oldInstruction)
)
}
private predicate ssa_variableUpdate(Alias::VirtualVariable vvar,
OldInstruction instr, OldBlock block, int index) {
OldBlock block, int index, OldInstruction instr) {
block.getInstruction(index) = instr and
Alias::getResultMemoryAccess(instr).getVirtualVariable() = vvar
}
@@ -370,11 +372,11 @@ cached private module Cached {
}
private predicate defUseRank(Alias::VirtualVariable vvar, OldBlock block, int rankIndex, int index) {
index = rank[rankIndex](int j | hasDefinition(vvar, block, j) or hasUse(vvar, _, block, j))
index = rank[rankIndex](int j | hasDefinition(vvar, block, j) or hasUse(vvar, block, j, _))
}
private predicate hasUse(Alias::VirtualVariable vvar, OldInstruction use, OldBlock block,
int index) {
private predicate hasUse(Alias::VirtualVariable vvar, OldBlock block, int index,
OldInstruction use) {
exists(Alias::MemoryAccess access |
(
access = Alias::getOperandMemoryAccess(use.getAnOperand())
@@ -392,10 +394,16 @@ cached private module Cached {
}
private predicate variableLiveOnEntryToBlock(Alias::VirtualVariable vvar, OldBlock block) {
exists (int index | hasUse(vvar, _, block, index) |
not exists (int j | ssa_variableUpdate(vvar, _, block, j) | j < index)
) or
(variableLiveOnExitFromBlock(vvar, block) and not ssa_variableUpdate(vvar, _, block, _))
exists(int firstAccess |
hasUse(vvar, block, firstAccess, _) and
firstAccess = min(int index |
hasUse(vvar, block, index, _)
or
ssa_variableUpdate(vvar, block, index, _)
)
)
or
(variableLiveOnExitFromBlock(vvar, block) and not ssa_variableUpdate(vvar, block, _, _))
}
pragma[noinline]
@@ -422,7 +430,7 @@ cached private module Cached {
private predicate hasUseAtRank(Alias::VirtualVariable vvar, OldBlock block, int rankIndex,
OldInstruction use) {
exists(int index |
hasUse(vvar, use, block, index) and
hasUse(vvar, block, index, use) and
defUseRank(vvar, block, rankIndex, index)
)
}
@@ -535,11 +543,11 @@ cached private module CachedForDebugging {
result = "NonSSA: " + oldInstr.getUniqueId()
) or
exists(Alias::VirtualVariable vvar, OldBlock phiBlock |
instr.getTag() = PhiTag(vvar, phiBlock) and
instr = Phi(phiBlock, vvar) and
result = "Phi Block(" + phiBlock.getUniqueId() + "): " + vvar.getUniqueId()
) or
(
instr.getTag() = UnreachedTag() and
instr = Unreached(_) and
result = "Unreached"
)
}

View File

@@ -0,0 +1,25 @@
private import cpp
private import semmle.code.cpp.ir.implementation.TempVariableTag
private import semmle.code.cpp.ir.implementation.raw.internal.IRConstruction as Construction
newtype TIRVariable =
TIRAutomaticUserVariable(LocalScopeVariable var, Function func) {
Construction::functionHasIR(func) and
var.getFunction() = func or
var.(Parameter).getCatchBlock().getEnclosingFunction() = func
} or
TIRStaticUserVariable(Variable var, Function func) {
Construction::functionHasIR(func) and
(
var instanceof GlobalOrNamespaceVariable or
var instanceof MemberVariable and not var instanceof Field
) and
exists(VariableAccess access |
access.getTarget() = var and
access.getEnclosingFunction() = func
)
} or
TIRTempVariable(Function func, Locatable ast, TempVariableTag tag, Type type) {
Construction::hasTempVariable(func, ast, tag, type)
}

View File

@@ -1,3 +1,3 @@
| test.cpp:16:13:16:14 | _t | This parameter of type $@ is 4096 bytes - consider passing a pointer/reference instead. | test.cpp:6:8:6:20 | myLargeStruct | myLargeStruct |
| test.cpp:24:44:24:48 | mtc_t | This parameter of type $@ is 4096 bytes - consider passing a pointer/reference instead. | test.cpp:11:7:11:21 | myTemplateClass<myLargeStruct> | myTemplateClass<myLargeStruct> |
| test.cpp:28:49:28:49 | b | This parameter of type $@ is 4096 bytes - consider passing a pointer/reference instead. | test.cpp:6:8:6:20 | myLargeStruct | myLargeStruct |
| test.cpp:16:13:16:14 | _t | This parameter of type $@ is 4096 bytes - consider passing a const pointer/reference instead. | test.cpp:6:8:6:20 | myLargeStruct | myLargeStruct |
| test.cpp:24:44:24:48 | mtc_t | This parameter of type $@ is 4096 bytes - consider passing a const pointer/reference instead. | test.cpp:11:7:11:21 | myTemplateClass<myLargeStruct> | myTemplateClass<myLargeStruct> |
| test.cpp:28:49:28:49 | b | This parameter of type $@ is 4096 bytes - consider passing a const pointer/reference instead. | test.cpp:6:8:6:20 | myLargeStruct | myLargeStruct |

View File

@@ -402,17 +402,14 @@ module AssignableInternal {
* `a`, if any.
*/
cached
Expr getAccessorCallValueArgument(Access a) {
a.getTarget() instanceof DeclarationWithAccessors and
(
exists(AssignExpr ae | tupleAssignmentDefinition(ae, a) |
tupleAssignmentPair(ae, a, result)
)
or
exists(Assignment ass | a = ass.getLValue() |
result = ass.getRValue() and
not ass.(AssignOperation).hasExpandedAssignment()
)
Expr getAccessorCallValueArgument(AccessorCall ac) {
exists(AssignExpr ae | tupleAssignmentDefinition(ae, ac) |
tupleAssignmentPair(ae, ac, result)
)
or
exists(Assignment ass | ac = ass.getLValue() |
result = ass.getRValue() and
not ass.(AssignOperation).hasExpandedAssignment()
)
}
}

View File

@@ -513,7 +513,7 @@ class IndexerProperty extends Property {
IndexerCall getAnIndexerCall() {
result = getType().(RefType).getAnIndexer().getAnAccessor().getACall() and
// The qualifier of this indexer call should be a value returned from an access of this property
exists(Expr qualifier | qualifier = result.getAccess().getQualifier() |
exists(Expr qualifier | qualifier = result.(IndexerAccess).getQualifier() |
DataFlow::localFlow(DataFlow::exprNode(this.getAnAccess()), DataFlow::exprNode(qualifier))
)
}

View File

@@ -477,7 +477,7 @@ private module Internal {
override Expr getArgument(int i) { result = getCall().getArgument(i) }
override Expr getQualifier() { result = getCall().getAccess().getQualifier() }
override Expr getQualifier() { result = getCall().(MemberAccess).getQualifier() }
override Accessor getAStaticTarget() { result = getCall().getTarget() }

View File

@@ -380,6 +380,17 @@ class MemberConstantAccess extends FieldAccess {
override string toString() { result = "access to constant " + this.getTarget().getName() }
}
/**
* An internal helper class to share logic between `PropertyAccess` and
* `PropertyCall`.
*/
library class PropertyAccessExpr extends Expr, @property_access_expr {
/** Gets the target of this property access. */
Property getProperty() { expr_access(this, result) }
override string toString() { result = "access to property " + this.getProperty().getName() }
}
/**
* An access to a property, for example the access to `P` on line 5 in
*
@@ -393,13 +404,8 @@ class MemberConstantAccess extends FieldAccess {
* }
* ```
*/
class PropertyAccess extends AssignableMemberAccess, @property_access_expr {
/** Gets the target of this property access. */
Property getProperty() { expr_access(this, result) }
class PropertyAccess extends AssignableMemberAccess, PropertyAccessExpr {
override Property getTarget() { result = this.getProperty() }
override string toString() { result = "access to property " + this.getProperty().getName() }
}
/**
@@ -509,6 +515,17 @@ class ElementRead extends ElementAccess, AssignableRead { }
*/
class ElementWrite extends ElementAccess, AssignableWrite { }
/**
* An internal helper class to share logic between `IndexerAccess` and
* `IndexerCall`.
*/
library class IndexerAccessExpr extends Expr, @indexer_access_expr {
/** Gets the target of this indexer access. */
Indexer getIndexer() { expr_access(this, result) }
override string toString() { result = "access to indexer" }
}
/**
* An access to an indexer, for example the access to `c` on line 5 in
*
@@ -522,17 +539,12 @@ class ElementWrite extends ElementAccess, AssignableWrite { }
* }
* ```
*/
class IndexerAccess extends AssignableMemberAccess, ElementAccess, @indexer_access_expr {
/** Gets the target of this indexer access. */
Indexer getIndexer() { expr_access(this, result) }
class IndexerAccess extends AssignableMemberAccess, ElementAccess, IndexerAccessExpr {
override Indexer getTarget() { result = this.getIndexer() }
override Indexer getQualifiedDeclaration() {
result = ElementAccess.super.getQualifiedDeclaration()
}
override string toString() { result = "access to indexer" }
}
/**
@@ -588,6 +600,17 @@ class VirtualIndexerAccess extends IndexerAccess {
VirtualIndexerAccess() { targetIsOverridableOrImplementable() }
}
/**
* An internal helper class to share logic between `EventAccess` and
* `EventCall`.
*/
library class EventAccessExpr extends Expr, @event_access_expr {
/** Gets the target of this event access. */
Event getEvent() { expr_access(this, result) }
override string toString() { result = "access to event " + this.getEvent().getName() }
}
/**
* An access to an event, for example the accesses to `Click` on lines
* 7 and 8 in
@@ -605,13 +628,8 @@ class VirtualIndexerAccess extends IndexerAccess {
* }
* ```
*/
class EventAccess extends AssignableMemberAccess, @event_access_expr {
/** Gets the target of this event access. */
Event getEvent() { expr_access(this, result) }
class EventAccess extends AssignableMemberAccess, EventAccessExpr {
override Event getTarget() { result = getEvent() }
override string toString() { result = "access to event " + this.getEvent().getName() }
}
/**

View File

@@ -11,24 +11,13 @@ private import semmle.code.csharp.dataflow.DelegateDataFlow
private import semmle.code.csharp.dispatch.Dispatch
private import dotnet
/** INTERNAL: Do not use. */
library class CallImpl extends Expr {
cached
CallImpl() {
this instanceof @call and
not this instanceof @call_access_expr
or
this instanceof AccessorCallImpl::AccessorCallImpl
}
}
/**
* A call. Either a method call (`MethodCall`), a constructor initializer call
* (`ConstructorInitializer`), a call to a user-defined operator (`OperatorCall`),
* a delegate call (`DelegateCall`), an accessor call (`AccessorCall`), a
* constructor call (`ObjectCreation`), or a local function call (`LocalFunctionCall`).
*/
class Call extends DotNet::Call, CallImpl {
class Call extends DotNet::Call, Expr, @call {
/**
* Gets the static (compile-time) target of this call. For example, the
* static target of `x.M()` on line 9 is `A.M` in
@@ -565,159 +554,15 @@ class DelegateCall extends Call, @delegate_invocation_expr {
override string toString() { result = "delegate call" }
}
/**
* Provides logic for determining the syntactic nodes associated with calls
* to accessors. Example:
*
* ```
* int Prop { get; set; }
* public int GetProp() => Prop;
* public void SetProp(int i) { Prop = i + 1; }
* ```
*
* In the body of `GetProp()`, the call to the accessor `get_Prop()` is simply
* the access `Prop`. However, in the body of `SetProp()`, the call to the accessor
* `set_Prop()` is not the access `Prop`, but rather the assignment `Prop = i + 1`.
* (Using `Prop` as the call to `set_Prop()` will yield an incorrect control flow
* graph, where `set_Prop()` is called before `i + 1` is evaluated.)
*/
private module AccessorCallImpl {
/**
* Holds if `e` is a tuple assignment with multiple setter assignments,
* for example `(Prop1, Prop2) = (0, 1)`, where both `Prop1` and `Prop2`
* are properties.
*
* In such cases, we cannot associate the compound assignment with the
* setter calls, so we instead revert to representing the calls via the
* individual accesses on the left hand side.
*/
private predicate multiTupleSetter(Expr e) {
strictcount(AssignableDefinitions::TupleAssignmentDefinition def |
def.getExpr() = e and
def.getTargetAccess().getTarget() instanceof DeclarationWithGetSetAccessors
) > 1
}
abstract class AccessorCallImpl extends Expr {
abstract Access getAccess();
abstract Accessor getTarget();
abstract Expr getArgument(int i);
}
abstract class PropertyCallImpl extends AccessorCallImpl {
PropertyAccess pa;
override PropertyAccess getAccess() { result = pa }
abstract override Accessor getTarget();
abstract override Expr getArgument(int i);
}
class PropertyGetterCall extends PropertyCallImpl, @property_access_expr {
PropertyGetterCall() {
this instanceof AssignableRead and
pa = this
}
override Getter getTarget() { result = pa.getProperty().getGetter() }
override Expr getArgument(int i) { none() }
}
class PropertySetterCall extends PropertyCallImpl {
PropertySetterCall() {
exists(AssignableDefinition def | pa = def.getTargetAccess() |
(if multiTupleSetter(def.getExpr()) then this = pa else this = def.getExpr()) and
not def.getExpr().(AssignOperation).hasExpandedAssignment()
)
}
override Expr getArgument(int i) {
i = 0 and
result = AssignableInternal::getAccessorCallValueArgument(pa)
}
override Setter getTarget() { result = pa.getProperty().getSetter() }
}
abstract class IndexerCallImpl extends AccessorCallImpl {
IndexerAccess ia;
override IndexerAccess getAccess() { result = ia }
abstract override Accessor getTarget();
abstract override Expr getArgument(int i);
}
class IndexerGetterCall extends IndexerCallImpl, @indexer_access_expr {
IndexerGetterCall() {
this instanceof AssignableRead and
ia = this
}
override Getter getTarget() { result = ia.getIndexer().getGetter() }
override Expr getArgument(int i) { result = ia.getIndex(i) }
}
class IndexerSetterCall extends IndexerCallImpl {
IndexerSetterCall() {
exists(AssignableDefinition def | ia = def.getTargetAccess() |
(if multiTupleSetter(def.getExpr()) then this = ia else this = def.getExpr()) and
not def.getExpr().(AssignOperation).hasExpandedAssignment()
)
}
override Setter getTarget() { result = ia.getIndexer().getSetter() }
override Expr getArgument(int i) {
result = ia.getIndex(i)
or
i = count(ia.getAnIndex()) and
result = AssignableInternal::getAccessorCallValueArgument(ia)
}
}
class EventCallImpl extends AccessorCallImpl, @assign_event_expr {
override EventAccess getAccess() { result = this.(AddOrRemoveEventExpr).getLValue() }
override EventAccessor getTarget() {
exists(Event e | e = this.getAccess().getEvent() |
this instanceof AddEventExpr and result = e.getAddEventAccessor()
or
this instanceof RemoveEventExpr and result = e.getRemoveEventAccessor()
)
}
override Expr getArgument(int i) {
i = 0 and
result = this.(AddOrRemoveEventExpr).getRValue()
}
}
}
/**
* A call to an accessor. Either a property accessor call (`PropertyCall`),
* an indexer accessor call (`IndexerCall`), or an event accessor call
* (`EventCall`).
*/
class AccessorCall extends Call {
private AccessorCallImpl::AccessorCallImpl impl;
class AccessorCall extends Call, QualifiableExpr, @call_access_expr {
override Accessor getTarget() { none() }
AccessorCall() { this = impl }
/** Gets the underlying access. */
MemberAccess getAccess() { result = impl.getAccess() }
override Accessor getTarget() { result = impl.getTarget() }
override Expr getArgument(int i) { result = impl.getArgument(i) }
override string toString() { none() } // avoid multiple `toString()`s
override Expr getArgument(int i) { none() }
override Accessor getARuntimeTarget() { result = Call.super.getARuntimeTarget() }
}
@@ -736,15 +581,21 @@ class AccessorCall extends Call {
* }
* ```
*/
class PropertyCall extends AccessorCall {
private AccessorCallImpl::PropertyCallImpl impl;
class PropertyCall extends AccessorCall, PropertyAccessExpr {
override Accessor getTarget() {
exists(PropertyAccess pa, Property p | pa = this and p = getProperty() |
pa instanceof AssignableRead and result = p.getGetter()
or
pa instanceof AssignableWrite and result = p.getSetter()
)
}
PropertyCall() { this = impl }
override Expr getArgument(int i) {
i = 0 and
result = AssignableInternal::getAccessorCallValueArgument(this)
}
override PropertyAccess getAccess() { result = impl.getAccess() }
/** Gets property targeted by this property call. */
Property getProperty() { result = this.getAccess().getTarget() }
override string toString() { result = PropertyAccessExpr.super.toString() }
}
/**
@@ -763,15 +614,23 @@ class PropertyCall extends AccessorCall {
* }
* ```
*/
class IndexerCall extends AccessorCall {
private AccessorCallImpl::IndexerCallImpl impl;
class IndexerCall extends AccessorCall, IndexerAccessExpr {
override Accessor getTarget() {
exists(IndexerAccess ia, Indexer i | ia = this and i = getIndexer() |
ia instanceof AssignableRead and result = i.getGetter()
or
ia instanceof AssignableWrite and result = i.getSetter()
)
}
IndexerCall() { this = impl }
override Expr getArgument(int i) {
result = this.(ElementAccess).getIndex(i)
or
i = count(this.(ElementAccess).getAnIndex()) and
result = AssignableInternal::getAccessorCallValueArgument(this)
}
override IndexerAccess getAccess() { result = impl.getAccess() }
/** Gets indexer targeted by this index call. */
Indexer getIndexer() { result = this.getAccess().getTarget() }
override string toString() { result = IndexerAccessExpr.super.toString() }
}
/**
@@ -795,15 +654,27 @@ class IndexerCall extends AccessorCall {
* }
* ```
*/
class EventCall extends AccessorCall, @assign_event_expr {
private AccessorCallImpl::EventCallImpl impl;
class EventCall extends AccessorCall, EventAccessExpr {
override EventAccessor getTarget() {
exists(Event e, AddOrRemoveEventExpr aoree |
e = getEvent() and
aoree.getLValue() = this
|
aoree instanceof AddEventExpr and result = e.getAddEventAccessor()
or
aoree instanceof RemoveEventExpr and result = e.getRemoveEventAccessor()
)
}
EventCall() { this = impl }
override Expr getArgument(int i) {
i = 0 and
exists(AddOrRemoveEventExpr aoree |
aoree.getLValue() = this and
result = aoree.getRValue()
)
}
override EventAccess getAccess() { result = impl.getAccess() }
/** Gets event targeted by this event call. */
Event getEvent() { result = this.getAccess().getTarget() }
override string toString() { result = EventAccessExpr.super.toString() }
}
/**

View File

@@ -155,8 +155,7 @@ class XmlReaderSettingsCreation extends ObjectCreation {
p = this.getType().(RefType).getAProperty() and
exists(PropertyCall set, Expr arg |
set.getTarget() = p.getSetter() and
DataFlow::localFlow(DataFlow::exprNode(this),
DataFlow::exprNode(set.getAccess().getQualifier())) and
DataFlow::localFlow(DataFlow::exprNode(this), DataFlow::exprNode(set.getQualifier())) and
arg = set.getAnArgument() and
result = getBitwiseOrOperand*(arg)
)

View File

@@ -5,7 +5,6 @@
import Expr
import Type
import Callable
private import csharp as CS
/** An expression. */
class Expr extends Element, @dotnet_expr {
@@ -26,9 +25,7 @@ class Expr extends Element, @dotnet_expr {
}
/** A call. */
class Call extends Expr {
Call() { this instanceof @cil_call_any or this instanceof CS::CallImpl }
class Call extends Expr, @dotnet_call {
/** Gets the target of this call. */
Callable getTarget() { none() }

View File

@@ -17,23 +17,21 @@
| arguments.cs:39:9:39:28 | call to method f3 | arguments.cs:39:27:39:27 | 0 | o |
| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:18:40:35 | array creation of type Int32[] | args |
| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:41:40:41 | 0 | o |
| arguments.cs:54:9:54:16 | ... = ... | arguments.cs:54:16:54:16 | 0 | value |
| arguments.cs:55:9:55:25 | ... = ... | arguments.cs:55:16:55:25 | access to indexer | value |
| arguments.cs:54:9:54:12 | access to property Prop | arguments.cs:54:16:54:16 | 0 | value |
| arguments.cs:55:9:55:12 | access to property Prop | arguments.cs:55:16:55:25 | access to indexer | value |
| arguments.cs:55:16:55:25 | access to indexer | arguments.cs:55:21:55:21 | 1 | a |
| arguments.cs:55:16:55:25 | access to indexer | arguments.cs:55:24:55:24 | 2 | b |
| arguments.cs:56:10:56:13 | access to property Prop | arguments.cs:56:31:56:31 | 5 | value |
| arguments.cs:56:16:56:25 | access to indexer | arguments.cs:56:21:56:21 | 3 | a |
| arguments.cs:56:16:56:25 | access to indexer | arguments.cs:56:24:56:24 | 4 | b |
| arguments.cs:56:16:56:25 | access to indexer | arguments.cs:56:34:56:34 | 6 | value |
| arguments.cs:58:9:58:17 | ... = ... | arguments.cs:58:9:58:17 | ... + ... | value |
| arguments.cs:58:9:58:12 | access to property Prop | arguments.cs:58:9:58:17 | ... + ... | value |
| arguments.cs:59:9:59:18 | access to indexer | arguments.cs:59:14:59:14 | 8 | a |
| arguments.cs:59:9:59:18 | access to indexer | arguments.cs:59:17:59:17 | 9 | b |
| arguments.cs:59:9:59:20 | ...++ | arguments.cs:59:14:59:14 | 8 | a |
| arguments.cs:59:9:59:20 | ...++ | arguments.cs:59:17:59:17 | 9 | b |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:9:60:26 | ... + ... | value |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:14:60:15 | 10 | a |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:14:60:15 | 10 | a |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:18:60:19 | 11 | b |
| arguments.cs:60:9:60:26 | ... = ... | arguments.cs:60:9:60:26 | ... + ... | value |
| arguments.cs:60:9:60:26 | ... = ... | arguments.cs:60:14:60:15 | 10 | a |
| arguments.cs:60:9:60:26 | ... = ... | arguments.cs:60:18:60:19 | 11 | b |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:18:60:19 | 11 | b |
| arguments.cs:62:16:62:27 | access to indexer | arguments.cs:62:21:62:22 | 15 | a |
| arguments.cs:62:16:62:27 | access to indexer | arguments.cs:62:25:62:26 | 16 | b |

View File

@@ -17,23 +17,23 @@
| arguments.cs:39:9:39:28 | call to method f3 | arguments.cs:39:27:39:27 | 0 | arguments.cs:33:17:33:17 | o |
| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:18:40:35 | array creation of type Int32[] | arguments.cs:33:33:33:36 | args |
| arguments.cs:40:9:40:42 | call to method f3 | arguments.cs:40:41:40:41 | 0 | arguments.cs:33:17:33:17 | o |
| arguments.cs:54:9:54:16 | ... = ... | arguments.cs:54:16:54:16 | 0 | arguments.cs:48:21:48:23 | value |
| arguments.cs:55:9:55:25 | ... = ... | arguments.cs:55:16:55:25 | access to indexer | arguments.cs:48:21:48:23 | value |
| arguments.cs:54:9:54:12 | access to property Prop | arguments.cs:54:16:54:16 | 0 | arguments.cs:48:21:48:23 | value |
| arguments.cs:55:9:55:12 | access to property Prop | arguments.cs:55:16:55:25 | access to indexer | arguments.cs:48:21:48:23 | value |
| arguments.cs:55:16:55:25 | access to indexer | arguments.cs:55:21:55:21 | 1 | arguments.cs:50:18:50:18 | a |
| arguments.cs:55:16:55:25 | access to indexer | arguments.cs:55:24:55:24 | 2 | arguments.cs:50:25:50:25 | b |
| arguments.cs:56:10:56:13 | access to property Prop | arguments.cs:56:31:56:31 | 5 | arguments.cs:48:21:48:23 | value |
| arguments.cs:56:16:56:25 | access to indexer | arguments.cs:56:21:56:21 | 3 | arguments.cs:50:18:50:18 | a |
| arguments.cs:56:16:56:25 | access to indexer | arguments.cs:56:24:56:24 | 4 | arguments.cs:50:25:50:25 | b |
| arguments.cs:56:16:56:25 | access to indexer | arguments.cs:56:34:56:34 | 6 | arguments.cs:50:44:50:46 | value |
| arguments.cs:58:9:58:17 | ... = ... | arguments.cs:58:9:58:17 | ... + ... | arguments.cs:48:21:48:23 | value |
| arguments.cs:58:9:58:12 | access to property Prop | arguments.cs:58:9:58:17 | ... + ... | arguments.cs:48:21:48:23 | value |
| arguments.cs:59:9:59:18 | access to indexer | arguments.cs:59:14:59:14 | 8 | arguments.cs:50:18:50:18 | a |
| arguments.cs:59:9:59:18 | access to indexer | arguments.cs:59:14:59:14 | 8 | arguments.cs:50:18:50:18 | a |
| arguments.cs:59:9:59:18 | access to indexer | arguments.cs:59:17:59:17 | 9 | arguments.cs:50:25:50:25 | b |
| arguments.cs:59:9:59:20 | ...++ | arguments.cs:59:14:59:14 | 8 | arguments.cs:50:18:50:18 | a |
| arguments.cs:59:9:59:20 | ...++ | arguments.cs:59:17:59:17 | 9 | arguments.cs:50:25:50:25 | b |
| arguments.cs:59:9:59:18 | access to indexer | arguments.cs:59:17:59:17 | 9 | arguments.cs:50:25:50:25 | b |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:9:60:26 | ... + ... | arguments.cs:50:44:50:46 | value |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:14:60:15 | 10 | arguments.cs:50:18:50:18 | a |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:14:60:15 | 10 | arguments.cs:50:18:50:18 | a |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:18:60:19 | 11 | arguments.cs:50:25:50:25 | b |
| arguments.cs:60:9:60:26 | ... = ... | arguments.cs:60:9:60:26 | ... + ... | arguments.cs:50:44:50:46 | value |
| arguments.cs:60:9:60:26 | ... = ... | arguments.cs:60:14:60:15 | 10 | arguments.cs:50:18:50:18 | a |
| arguments.cs:60:9:60:26 | ... = ... | arguments.cs:60:18:60:19 | 11 | arguments.cs:50:25:50:25 | b |
| arguments.cs:60:9:60:20 | access to indexer | arguments.cs:60:18:60:19 | 11 | arguments.cs:50:25:50:25 | b |
| arguments.cs:62:16:62:27 | access to indexer | arguments.cs:62:21:62:22 | 15 | arguments.cs:50:18:50:18 | a |
| arguments.cs:62:16:62:27 | access to indexer | arguments.cs:62:25:62:26 | 16 | arguments.cs:50:25:50:25 | b |

View File

@@ -16,7 +16,7 @@
| in | Capture.cs:182:17:182:17 | i | Capture.cs:188:13:188:17 | SSA def(i) | Capture.cs:183:13:186:13 | SSA capture def(i) | Capture.cs:189:13:189:17 | call to local function M11 |
| in | Capture.cs:197:17:197:17 | i | Capture.cs:197:17:197:21 | SSA def(i) | Capture.cs:198:33:198:44 | SSA capture def(i) | Capture.cs:200:13:200:19 | delegate call |
| in | Capture.cs:197:17:197:17 | i | Capture.cs:197:17:197:21 | SSA def(i) | Capture.cs:203:34:203:45 | SSA capture def(i) | Capture.cs:200:13:200:19 | delegate call |
| in | Capture.cs:209:17:209:17 | i | Capture.cs:209:17:209:21 | SSA def(i) | Capture.cs:212:39:212:71 | SSA capture def(i) | Capture.cs:213:17:213:34 | ... += ... |
| in | Capture.cs:209:17:209:17 | i | Capture.cs:209:17:209:21 | SSA def(i) | Capture.cs:212:39:212:71 | SSA capture def(i) | Capture.cs:213:17:213:24 | access to event Exited |
| in | Capture.cs:229:13:229:13 | i | Capture.cs:232:9:232:13 | SSA def(i) | Capture.cs:231:9:231:49 | SSA capture def(i) | Capture.cs:233:9:233:12 | call to local function M2 |
| in | Fields.cs:77:13:77:13 | f | Fields.cs:77:13:77:45 | SSA def(f) | Fields.cs:78:27:78:54 | SSA capture def(f) | Fields.cs:81:9:81:11 | delegate call |
| in | Fields.cs:77:13:77:13 | f | Fields.cs:77:13:77:45 | SSA def(f) | Fields.cs:78:27:78:54 | SSA capture def(f) | Fields.cs:86:9:86:47 | call to method Select |

View File

@@ -30,7 +30,7 @@
| definitions.cs:57:13:57:23 | Enumeration | definitions.cs:13:10:13:20 | Enumeration | T |
| definitions.cs:57:29:57:39 | Enumeration | definitions.cs:13:10:13:20 | Enumeration | T |
| definitions.cs:57:41:57:42 | access to constant e1 | definitions.cs:15:9:15:10 | e1 | V |
| definitions.cs:60:13:60:21 | access to property property1 | definitions.cs:24:20:24:28 | property1 | V |
| definitions.cs:60:13:60:21 | access to property property1 | definitions.cs:24:20:24:28 | property1 | M |
| definitions.cs:60:25:60:33 | access to property property1 | definitions.cs:24:20:24:28 | property1 | M |
| definitions.cs:63:13:63:14 | C1 | definitions.cs:18:11:18:12 | C1 | T |
| definitions.cs:64:13:64:14 | S1 | definitions.cs:78:12:78:13 | S1 | T |
@@ -45,11 +45,11 @@
| definitions.cs:92:31:92:32 | S1 | definitions.cs:78:12:78:13 | S1 | T |
| definitions.cs:93:24:93:25 | S1 | definitions.cs:78:12:78:13 | S1 | M |
| definitions.cs:101:22:101:33 | EventHandler | definitions.cs:99:30:99:41 | EventHandler | T |
| definitions.cs:105:13:105:17 | access to event Click | definitions.cs:101:35:101:39 | Click | V |
| definitions.cs:105:13:105:17 | access to event Click | definitions.cs:101:35:101:39 | Click | M |
| definitions.cs:105:22:105:22 | access to method M | definitions.cs:103:32:103:32 | M | M |
| definitions.cs:107:13:107:17 | access to event Click | definitions.cs:101:35:101:39 | Click | V |
| definitions.cs:107:13:107:17 | access to event Click | definitions.cs:101:35:101:39 | Click | M |
| definitions.cs:107:22:107:34 | access to local function LocalFunction | definitions.cs:106:13:106:36 | LocalFunction | M |
| definitions.cs:108:13:108:17 | access to event Click | definitions.cs:101:35:101:39 | Click | V |
| definitions.cs:108:13:108:17 | access to event Click | definitions.cs:101:35:101:39 | Click | M |
| definitions.cs:114:28:114:28 | T | definitions.cs:114:17:114:17 | T | T |
| definitions.cs:114:32:114:32 | A | definitions.cs:97:11:97:11 | A | T |
| definitions.cs:117:27:117:27 | T | definitions.cs:117:18:117:18 | T | T |
@@ -109,7 +109,7 @@
| definitions.cs:171:13:171:17 | C1 | definitions.cs:18:11:18:12 | C1 | T |
| definitions.cs:171:27:171:31 | C1 | definitions.cs:18:11:18:12 | C1 | M |
| definitions.cs:172:13:172:13 | access to local variable c | definitions.cs:171:19:171:19 | c | V |
| definitions.cs:172:15:172:23 | access to property property1 | definitions.cs:24:20:24:28 | property1 | V |
| definitions.cs:172:15:172:23 | access to property property1 | definitions.cs:24:20:24:28 | property1 | M |
| definitions.cs:172:27:172:27 | access to local variable c | definitions.cs:171:19:171:19 | c | V |
| definitions.cs:172:29:172:37 | access to property property1 | definitions.cs:24:20:24:28 | property1 | M |
| definitions.cs:173:13:173:15 | C5 | definitions.cs:164:11:164:12 | C5 | T |
@@ -117,7 +117,7 @@
| definitions.cs:173:34:173:35 | C5 | definitions.cs:164:11:164:12 | C5 | T |
| definitions.cs:174:13:174:14 | access to local variable c5 | definitions.cs:173:17:173:18 | c5 | V |
| definitions.cs:174:16:174:17 | access to field c1 | definitions.cs:167:12:167:13 | c1 | V |
| definitions.cs:174:19:174:27 | access to property property1 | definitions.cs:24:20:24:28 | property1 | V |
| definitions.cs:174:19:174:27 | access to property property1 | definitions.cs:24:20:24:28 | property1 | M |
| definitions.cs:175:24:175:25 | access to local variable c5 | definitions.cs:173:17:173:18 | c5 | V |
| definitions.cs:175:30:175:34 | C4 | definitions.cs:151:11:151:12 | C4 | T |
| definitions.cs:175:36:175:41 | Nested<I4> | definitions.cs:158:22:158:30 | Nested<> | T |

View File

@@ -77,18 +77,18 @@
| ViableCallable.cs:12:9:12:28 | call to method M | C6<String,Decimal>.M<T3>(string, T3) |
| ViableCallable.cs:12:9:12:28 | call to method M | C6<String,Int32>.M<T3>(string, T3) |
| ViableCallable.cs:12:9:12:28 | call to method M | C7<Boolean>.M<T3>(bool, T3) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C2<Boolean>.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C2<Decimal>.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C2<Int32>.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C3.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C4<Int32>.set_Prop(int[]) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C5.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C6<Boolean,Byte>.set_Prop(bool) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C6<Int32[],Boolean>.set_Prop(int[]) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C6<String,Boolean>.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C6<String,Decimal>.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C6<String,Int32>.set_Prop(string) |
| ViableCallable.cs:14:9:14:25 | ... = ... | C7<Boolean>.set_Prop(bool) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C2<Boolean>.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C2<Decimal>.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C2<Int32>.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C3.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C4<Int32>.set_Prop(int[]) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C5.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C6<Boolean,Byte>.set_Prop(bool) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C6<Int32[],Boolean>.set_Prop(int[]) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C6<String,Boolean>.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C6<String,Decimal>.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C6<String,Int32>.set_Prop(string) |
| ViableCallable.cs:14:9:14:15 | access to property Prop | C7<Boolean>.set_Prop(bool) |
| ViableCallable.cs:14:19:14:25 | access to property Prop | C2<Boolean>.get_Prop() |
| ViableCallable.cs:14:19:14:25 | access to property Prop | C2<Decimal>.get_Prop() |
| ViableCallable.cs:14:19:14:25 | access to property Prop | C2<Int32>.get_Prop() |
@@ -101,18 +101,18 @@
| ViableCallable.cs:14:19:14:25 | access to property Prop | C6<String,Decimal>.get_Prop() |
| ViableCallable.cs:14:19:14:25 | access to property Prop | C6<String,Int32>.get_Prop() |
| ViableCallable.cs:14:19:14:25 | access to property Prop | C7<Boolean>.get_Prop() |
| ViableCallable.cs:16:9:16:41 | ... = ... | C2<Boolean>.set_Item(bool, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C2<Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C2<Int32>.set_Item(int, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C3.set_Item(decimal, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C4<Int32>.set_Item(bool, int[]) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C5.set_Item(bool, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C6<Boolean,Byte>.set_Item(byte, bool) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C6<Int32[],Boolean>.set_Item(bool, int[]) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C6<String,Boolean>.set_Item(bool, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C6<String,Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C6<String,Int32>.set_Item(int, string) |
| ViableCallable.cs:16:9:16:41 | ... = ... | C7<Boolean>.set_Item(byte, bool) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C2<Boolean>.set_Item(bool, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C2<Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C2<Int32>.set_Item(int, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C3.set_Item(decimal, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C4<Int32>.set_Item(bool, int[]) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C5.set_Item(bool, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C6<Boolean,Byte>.set_Item(byte, bool) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C6<Int32[],Boolean>.set_Item(bool, int[]) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C6<String,Boolean>.set_Item(bool, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C6<String,Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C6<String,Int32>.set_Item(int, string) |
| ViableCallable.cs:16:9:16:23 | access to indexer | C7<Boolean>.set_Item(byte, bool) |
| ViableCallable.cs:16:27:16:41 | access to indexer | C2<Boolean>.get_Item(bool) |
| ViableCallable.cs:16:27:16:41 | access to indexer | C2<Decimal>.get_Item(decimal) |
| ViableCallable.cs:16:27:16:41 | access to indexer | C2<Int32>.get_Item(int) |
@@ -125,125 +125,125 @@
| ViableCallable.cs:16:27:16:41 | access to indexer | C6<String,Decimal>.get_Item(decimal) |
| ViableCallable.cs:16:27:16:41 | access to indexer | C6<String,Int32>.get_Item(int) |
| ViableCallable.cs:16:27:16:41 | access to indexer | C7<Boolean>.get_Item(byte) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C2<Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C2<Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C2<Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C3.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C4<Int32>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C5.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C6<Boolean,Byte>.add_Event(EventHandler<bool>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C6<Int32[],Boolean>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C6<String,Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C6<String,Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C6<String,Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:29 | ... += ... | C7<Boolean>.add_Event(EventHandler<bool>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C2<Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C2<Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C2<Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C3.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C4<Int32>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C5.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C6<Boolean,Byte>.remove_Event(EventHandler<bool>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C6<Int32[],Boolean>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C6<String,Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C6<String,Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C6<String,Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:29 | ... -= ... | C7<Boolean>.remove_Event(EventHandler<bool>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C2<Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C2<Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C2<Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C3.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C4<Int32>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C5.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C6<Boolean,Byte>.add_Event(EventHandler<bool>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C6<Int32[],Boolean>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C6<String,Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C6<String,Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C6<String,Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:18:9:18:16 | access to event Event | C7<Boolean>.add_Event(EventHandler<bool>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C2<Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C2<Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C2<Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C3.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C4<Int32>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C5.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C6<Boolean,Byte>.remove_Event(EventHandler<bool>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C6<Int32[],Boolean>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C6<String,Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C6<String,Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C6<String,Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:19:9:19:16 | access to event Event | C7<Boolean>.remove_Event(EventHandler<bool>) |
| ViableCallable.cs:22:9:22:30 | call to method M | C4<Int32>.M<T3>(int[], T3) |
| ViableCallable.cs:22:9:22:30 | call to method M | C6<Int32[],Boolean>.M<T3>(int[], T3) |
| ViableCallable.cs:24:9:24:25 | ... = ... | C4<Int32>.set_Prop(int[]) |
| ViableCallable.cs:24:9:24:25 | ... = ... | C6<Int32[],Boolean>.set_Prop(int[]) |
| ViableCallable.cs:24:9:24:15 | access to property Prop | C4<Int32>.set_Prop(int[]) |
| ViableCallable.cs:24:9:24:15 | access to property Prop | C6<Int32[],Boolean>.set_Prop(int[]) |
| ViableCallable.cs:24:19:24:25 | access to property Prop | C4<Int32>.get_Prop() |
| ViableCallable.cs:24:19:24:25 | access to property Prop | C6<Int32[],Boolean>.get_Prop() |
| ViableCallable.cs:26:9:26:41 | ... = ... | C4<Int32>.set_Item(bool, int[]) |
| ViableCallable.cs:26:9:26:41 | ... = ... | C6<Int32[],Boolean>.set_Item(bool, int[]) |
| ViableCallable.cs:26:9:26:23 | access to indexer | C4<Int32>.set_Item(bool, int[]) |
| ViableCallable.cs:26:9:26:23 | access to indexer | C6<Int32[],Boolean>.set_Item(bool, int[]) |
| ViableCallable.cs:26:27:26:41 | access to indexer | C4<Int32>.get_Item(bool) |
| ViableCallable.cs:26:27:26:41 | access to indexer | C6<Int32[],Boolean>.get_Item(bool) |
| ViableCallable.cs:28:9:28:29 | ... += ... | C4<Int32>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:28:9:28:29 | ... += ... | C6<Int32[],Boolean>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:29:9:29:29 | ... -= ... | C4<Int32>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:29:9:29:29 | ... -= ... | C6<Int32[],Boolean>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:28:9:28:16 | access to event Event | C4<Int32>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:28:9:28:16 | access to event Event | C6<Int32[],Boolean>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:29:9:29:16 | access to event Event | C4<Int32>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:29:9:29:16 | access to event Event | C6<Int32[],Boolean>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:32:30:32:52 | call to method Mock | ViableCallable.Mock<C1<string, int>>() |
| ViableCallable.cs:33:9:33:23 | call to method M | C2<Int32>.M<T3>(string, T3) |
| ViableCallable.cs:33:9:33:23 | call to method M | C6<String,Int32>.M<T3>(string, T3) |
| ViableCallable.cs:35:9:35:25 | ... = ... | C2<Int32>.set_Prop(string) |
| ViableCallable.cs:35:9:35:25 | ... = ... | C6<String,Int32>.set_Prop(string) |
| ViableCallable.cs:35:9:35:15 | access to property Prop | C2<Int32>.set_Prop(string) |
| ViableCallable.cs:35:9:35:15 | access to property Prop | C6<String,Int32>.set_Prop(string) |
| ViableCallable.cs:35:19:35:25 | access to property Prop | C2<Int32>.get_Prop() |
| ViableCallable.cs:35:19:35:25 | access to property Prop | C6<String,Int32>.get_Prop() |
| ViableCallable.cs:37:9:37:21 | ... = ... | C2<Int32>.set_Item(int, string) |
| ViableCallable.cs:37:9:37:21 | ... = ... | C6<String,Int32>.set_Item(int, string) |
| ViableCallable.cs:37:9:37:13 | access to indexer | C2<Int32>.set_Item(int, string) |
| ViableCallable.cs:37:9:37:13 | access to indexer | C6<String,Int32>.set_Item(int, string) |
| ViableCallable.cs:37:17:37:21 | access to indexer | C2<Int32>.get_Item(int) |
| ViableCallable.cs:37:17:37:21 | access to indexer | C6<String,Int32>.get_Item(int) |
| ViableCallable.cs:39:9:39:29 | ... += ... | C2<Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:39:9:39:29 | ... += ... | C6<String,Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:40:9:40:29 | ... -= ... | C2<Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:40:9:40:29 | ... -= ... | C6<String,Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:39:9:39:16 | access to event Event | C2<Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:39:9:39:16 | access to event Event | C6<String,Int32>.add_Event(EventHandler<string>) |
| ViableCallable.cs:40:9:40:16 | access to event Event | C2<Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:40:9:40:16 | access to event Event | C6<String,Int32>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:43:34:43:60 | call to method Mock | ViableCallable.Mock<C1<string, decimal>>() |
| ViableCallable.cs:44:9:44:24 | call to method M | C2<Decimal>.M<T3>(string, T3) |
| ViableCallable.cs:44:9:44:24 | call to method M | C3.M<T3>(string, T3) |
| ViableCallable.cs:44:9:44:24 | call to method M | C6<String,Decimal>.M<T3>(string, T3) |
| ViableCallable.cs:46:9:46:25 | ... = ... | C2<Decimal>.set_Prop(string) |
| ViableCallable.cs:46:9:46:25 | ... = ... | C3.set_Prop(string) |
| ViableCallable.cs:46:9:46:25 | ... = ... | C6<String,Decimal>.set_Prop(string) |
| ViableCallable.cs:46:9:46:15 | access to property Prop | C2<Decimal>.set_Prop(string) |
| ViableCallable.cs:46:9:46:15 | access to property Prop | C3.set_Prop(string) |
| ViableCallable.cs:46:9:46:15 | access to property Prop | C6<String,Decimal>.set_Prop(string) |
| ViableCallable.cs:46:19:46:25 | access to property Prop | C2<Decimal>.get_Prop() |
| ViableCallable.cs:46:19:46:25 | access to property Prop | C3.get_Prop() |
| ViableCallable.cs:46:19:46:25 | access to property Prop | C6<String,Decimal>.get_Prop() |
| ViableCallable.cs:48:9:48:23 | ... = ... | C2<Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:48:9:48:23 | ... = ... | C3.set_Item(decimal, string) |
| ViableCallable.cs:48:9:48:23 | ... = ... | C6<String,Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:48:9:48:14 | access to indexer | C2<Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:48:9:48:14 | access to indexer | C3.set_Item(decimal, string) |
| ViableCallable.cs:48:9:48:14 | access to indexer | C6<String,Decimal>.set_Item(decimal, string) |
| ViableCallable.cs:48:18:48:23 | access to indexer | C2<Decimal>.get_Item(decimal) |
| ViableCallable.cs:48:18:48:23 | access to indexer | C3.get_Item(decimal) |
| ViableCallable.cs:48:18:48:23 | access to indexer | C6<String,Decimal>.get_Item(decimal) |
| ViableCallable.cs:50:9:50:29 | ... += ... | C2<Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:50:9:50:29 | ... += ... | C3.add_Event(EventHandler<string>) |
| ViableCallable.cs:50:9:50:29 | ... += ... | C6<String,Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:51:9:51:29 | ... -= ... | C2<Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:51:9:51:29 | ... -= ... | C3.remove_Event(EventHandler<string>) |
| ViableCallable.cs:51:9:51:29 | ... -= ... | C6<String,Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:50:9:50:16 | access to event Event | C2<Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:50:9:50:16 | access to event Event | C3.add_Event(EventHandler<string>) |
| ViableCallable.cs:50:9:50:16 | access to event Event | C6<String,Decimal>.add_Event(EventHandler<string>) |
| ViableCallable.cs:51:9:51:16 | access to event Event | C2<Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:51:9:51:16 | access to event Event | C3.remove_Event(EventHandler<string>) |
| ViableCallable.cs:51:9:51:16 | access to event Event | C6<String,Decimal>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:54:30:54:52 | call to method Mock | ViableCallable.Mock<C1<int[], bool>>() |
| ViableCallable.cs:55:9:55:44 | call to method M | C4<Int32>.M<T3>(int[], T3) |
| ViableCallable.cs:55:9:55:44 | call to method M | C6<Int32[],Boolean>.M<T3>(int[], T3) |
| ViableCallable.cs:57:9:57:25 | ... = ... | C4<Int32>.set_Prop(int[]) |
| ViableCallable.cs:57:9:57:25 | ... = ... | C6<Int32[],Boolean>.set_Prop(int[]) |
| ViableCallable.cs:57:9:57:15 | access to property Prop | C4<Int32>.set_Prop(int[]) |
| ViableCallable.cs:57:9:57:15 | access to property Prop | C6<Int32[],Boolean>.set_Prop(int[]) |
| ViableCallable.cs:57:19:57:25 | access to property Prop | C4<Int32>.get_Prop() |
| ViableCallable.cs:57:19:57:25 | access to property Prop | C6<Int32[],Boolean>.get_Prop() |
| ViableCallable.cs:59:9:59:29 | ... = ... | C4<Int32>.set_Item(bool, int[]) |
| ViableCallable.cs:59:9:59:29 | ... = ... | C6<Int32[],Boolean>.set_Item(bool, int[]) |
| ViableCallable.cs:59:9:59:17 | access to indexer | C4<Int32>.set_Item(bool, int[]) |
| ViableCallable.cs:59:9:59:17 | access to indexer | C6<Int32[],Boolean>.set_Item(bool, int[]) |
| ViableCallable.cs:59:21:59:29 | access to indexer | C4<Int32>.get_Item(bool) |
| ViableCallable.cs:59:21:59:29 | access to indexer | C6<Int32[],Boolean>.get_Item(bool) |
| ViableCallable.cs:61:9:61:29 | ... += ... | C4<Int32>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:61:9:61:29 | ... += ... | C6<Int32[],Boolean>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:62:9:62:29 | ... -= ... | C4<Int32>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:62:9:62:29 | ... -= ... | C6<Int32[],Boolean>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:61:9:61:16 | access to event Event | C4<Int32>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:61:9:61:16 | access to event Event | C6<Int32[],Boolean>.add_Event(EventHandler<int[]>) |
| ViableCallable.cs:62:9:62:16 | access to event Event | C4<Int32>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:62:9:62:16 | access to event Event | C6<Int32[],Boolean>.remove_Event(EventHandler<int[]>) |
| ViableCallable.cs:65:31:65:54 | call to method Mock | ViableCallable.Mock<C1<string, bool>>() |
| ViableCallable.cs:66:9:66:30 | call to method M | C2<Boolean>.M<T3>(string, T3) |
| ViableCallable.cs:66:9:66:30 | call to method M | C5.M<T3>(string, T3) |
| ViableCallable.cs:66:9:66:30 | call to method M | C6<String,Boolean>.M<T3>(string, T3) |
| ViableCallable.cs:68:9:68:25 | ... = ... | C2<Boolean>.set_Prop(string) |
| ViableCallable.cs:68:9:68:25 | ... = ... | C5.set_Prop(string) |
| ViableCallable.cs:68:9:68:25 | ... = ... | C6<String,Boolean>.set_Prop(string) |
| ViableCallable.cs:68:9:68:15 | access to property Prop | C2<Boolean>.set_Prop(string) |
| ViableCallable.cs:68:9:68:15 | access to property Prop | C5.set_Prop(string) |
| ViableCallable.cs:68:9:68:15 | access to property Prop | C6<String,Boolean>.set_Prop(string) |
| ViableCallable.cs:68:19:68:25 | access to property Prop | C2<Boolean>.get_Prop() |
| ViableCallable.cs:68:19:68:25 | access to property Prop | C5.get_Prop() |
| ViableCallable.cs:68:19:68:25 | access to property Prop | C6<String,Boolean>.get_Prop() |
| ViableCallable.cs:70:9:70:29 | ... = ... | C2<Boolean>.set_Item(bool, string) |
| ViableCallable.cs:70:9:70:29 | ... = ... | C5.set_Item(bool, string) |
| ViableCallable.cs:70:9:70:29 | ... = ... | C6<String,Boolean>.set_Item(bool, string) |
| ViableCallable.cs:70:9:70:17 | access to indexer | C2<Boolean>.set_Item(bool, string) |
| ViableCallable.cs:70:9:70:17 | access to indexer | C5.set_Item(bool, string) |
| ViableCallable.cs:70:9:70:17 | access to indexer | C6<String,Boolean>.set_Item(bool, string) |
| ViableCallable.cs:70:21:70:29 | access to indexer | C2<Boolean>.get_Item(bool) |
| ViableCallable.cs:70:21:70:29 | access to indexer | C5.get_Item(bool) |
| ViableCallable.cs:70:21:70:29 | access to indexer | C6<String,Boolean>.get_Item(bool) |
| ViableCallable.cs:72:9:72:29 | ... += ... | C2<Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:72:9:72:29 | ... += ... | C5.add_Event(EventHandler<string>) |
| ViableCallable.cs:72:9:72:29 | ... += ... | C6<String,Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:73:9:73:29 | ... -= ... | C2<Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:73:9:73:29 | ... -= ... | C5.remove_Event(EventHandler<string>) |
| ViableCallable.cs:73:9:73:29 | ... -= ... | C6<String,Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:72:9:72:16 | access to event Event | C2<Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:72:9:72:16 | access to event Event | C5.add_Event(EventHandler<string>) |
| ViableCallable.cs:72:9:72:16 | access to event Event | C6<String,Boolean>.add_Event(EventHandler<string>) |
| ViableCallable.cs:73:9:73:16 | access to event Event | C2<Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:73:9:73:16 | access to event Event | C5.remove_Event(EventHandler<string>) |
| ViableCallable.cs:73:9:73:16 | access to event Event | C6<String,Boolean>.remove_Event(EventHandler<string>) |
| ViableCallable.cs:77:9:77:29 | call to method M | C6<T1,Boolean>.M<T3>(T1, T3) |
| ViableCallable.cs:79:9:79:25 | ... = ... | C6<T1,Boolean>.set_Prop(T1) |
| ViableCallable.cs:79:9:79:15 | access to property Prop | C6<T1,Boolean>.set_Prop(T1) |
| ViableCallable.cs:79:19:79:25 | access to property Prop | C6<T1,Boolean>.get_Prop() |
| ViableCallable.cs:81:9:81:29 | ... = ... | C6<T1,Boolean>.set_Item(bool, T1) |
| ViableCallable.cs:81:9:81:17 | access to indexer | C6<T1,Boolean>.set_Item(bool, T1) |
| ViableCallable.cs:81:21:81:29 | access to indexer | C6<T1,Boolean>.get_Item(bool) |
| ViableCallable.cs:83:9:83:29 | ... += ... | C6<T1,Boolean>.add_Event(EventHandler<T1>) |
| ViableCallable.cs:84:9:84:29 | ... -= ... | C6<T1,Boolean>.remove_Event(EventHandler<T1>) |
| ViableCallable.cs:83:9:83:16 | access to event Event | C6<T1,Boolean>.add_Event(EventHandler<T1>) |
| ViableCallable.cs:84:9:84:16 | access to event Event | C6<T1,Boolean>.remove_Event(EventHandler<T1>) |
| ViableCallable.cs:87:21:87:30 | call to method Mock | ViableCallable.Mock<C8>() |
| ViableCallable.cs:88:9:88:44 | dynamic call to method M | C8.M(IEnumerable<C1<string[], bool>>) |
| ViableCallable.cs:88:9:88:44 | dynamic call to method M | C9<>.M(IEnumerable<C1<string[], bool>>) |
@@ -258,9 +258,9 @@
| ViableCallable.cs:92:16:92:19 | dynamic access to element | C9<>.get_Item(int) |
| ViableCallable.cs:95:13:95:40 | call to method Mock | ViableCallable.Mock<IEnumerable<C4<int>>>() |
| ViableCallable.cs:99:9:99:15 | dynamic call to method M | C5.M(int) |
| ViableCallable.cs:102:9:102:20 | ... = ... | C5.set_Prop2(string) |
| ViableCallable.cs:105:9:105:22 | ... += ... | C5.add_Event2(EventHandler<string>) |
| ViableCallable.cs:106:9:106:22 | ... -= ... | C5.remove_Event2(EventHandler<string>) |
| ViableCallable.cs:102:9:102:16 | access to property Prop2 | C5.set_Prop2(string) |
| ViableCallable.cs:105:9:105:17 | access to event Event2 | C5.add_Event2(EventHandler<string>) |
| ViableCallable.cs:106:9:106:17 | access to event Event2 | C5.remove_Event2(EventHandler<string>) |
| ViableCallable.cs:120:9:120:25 | dynamic call to method M2 | C8.M2<decimal>(decimal[]) |
| ViableCallable.cs:124:9:124:24 | dynamic call to method M2 | C8.M2<string>(string[]) |
| ViableCallable.cs:132:9:132:28 | dynamic call to method M | C6<T1,Byte>.M<T3>(T1, T3) |

View File

@@ -4,134 +4,134 @@
| ViableCallable.cs:12:9:12:28 | call to method M | M | C5 |
| ViableCallable.cs:12:9:12:28 | call to method M | M | C6<,> |
| ViableCallable.cs:12:9:12:28 | call to method M | M | C7<> |
| ViableCallable.cs:14:9:14:25 | ... = ... | set_Prop | C2<> |
| ViableCallable.cs:14:9:14:25 | ... = ... | set_Prop | C3 |
| ViableCallable.cs:14:9:14:25 | ... = ... | set_Prop | C4<> |
| ViableCallable.cs:14:9:14:25 | ... = ... | set_Prop | C5 |
| ViableCallable.cs:14:9:14:25 | ... = ... | set_Prop | C6<,> |
| ViableCallable.cs:14:9:14:25 | ... = ... | set_Prop | C7<> |
| ViableCallable.cs:14:9:14:15 | access to property Prop | set_Prop | C2<> |
| ViableCallable.cs:14:9:14:15 | access to property Prop | set_Prop | C3 |
| ViableCallable.cs:14:9:14:15 | access to property Prop | set_Prop | C4<> |
| ViableCallable.cs:14:9:14:15 | access to property Prop | set_Prop | C5 |
| ViableCallable.cs:14:9:14:15 | access to property Prop | set_Prop | C6<,> |
| ViableCallable.cs:14:9:14:15 | access to property Prop | set_Prop | C7<> |
| ViableCallable.cs:14:19:14:25 | access to property Prop | get_Prop | C2<> |
| ViableCallable.cs:14:19:14:25 | access to property Prop | get_Prop | C3 |
| ViableCallable.cs:14:19:14:25 | access to property Prop | get_Prop | C4<> |
| ViableCallable.cs:14:19:14:25 | access to property Prop | get_Prop | C5 |
| ViableCallable.cs:14:19:14:25 | access to property Prop | get_Prop | C6<,> |
| ViableCallable.cs:14:19:14:25 | access to property Prop | get_Prop | C7<> |
| ViableCallable.cs:16:9:16:41 | ... = ... | set_Item | C2<> |
| ViableCallable.cs:16:9:16:41 | ... = ... | set_Item | C3 |
| ViableCallable.cs:16:9:16:41 | ... = ... | set_Item | C4<> |
| ViableCallable.cs:16:9:16:41 | ... = ... | set_Item | C5 |
| ViableCallable.cs:16:9:16:41 | ... = ... | set_Item | C6<,> |
| ViableCallable.cs:16:9:16:41 | ... = ... | set_Item | C7<> |
| ViableCallable.cs:16:9:16:23 | access to indexer | set_Item | C2<> |
| ViableCallable.cs:16:9:16:23 | access to indexer | set_Item | C3 |
| ViableCallable.cs:16:9:16:23 | access to indexer | set_Item | C4<> |
| ViableCallable.cs:16:9:16:23 | access to indexer | set_Item | C5 |
| ViableCallable.cs:16:9:16:23 | access to indexer | set_Item | C6<,> |
| ViableCallable.cs:16:9:16:23 | access to indexer | set_Item | C7<> |
| ViableCallable.cs:16:27:16:41 | access to indexer | get_Item | C2<> |
| ViableCallable.cs:16:27:16:41 | access to indexer | get_Item | C3 |
| ViableCallable.cs:16:27:16:41 | access to indexer | get_Item | C4<> |
| ViableCallable.cs:16:27:16:41 | access to indexer | get_Item | C5 |
| ViableCallable.cs:16:27:16:41 | access to indexer | get_Item | C6<,> |
| ViableCallable.cs:16:27:16:41 | access to indexer | get_Item | C7<> |
| ViableCallable.cs:18:9:18:29 | ... += ... | add_Event | C2<> |
| ViableCallable.cs:18:9:18:29 | ... += ... | add_Event | C3 |
| ViableCallable.cs:18:9:18:29 | ... += ... | add_Event | C4<> |
| ViableCallable.cs:18:9:18:29 | ... += ... | add_Event | C5 |
| ViableCallable.cs:18:9:18:29 | ... += ... | add_Event | C6<,> |
| ViableCallable.cs:18:9:18:29 | ... += ... | add_Event | C7<> |
| ViableCallable.cs:19:9:19:29 | ... -= ... | remove_Event | C2<> |
| ViableCallable.cs:19:9:19:29 | ... -= ... | remove_Event | C3 |
| ViableCallable.cs:19:9:19:29 | ... -= ... | remove_Event | C4<> |
| ViableCallable.cs:19:9:19:29 | ... -= ... | remove_Event | C5 |
| ViableCallable.cs:19:9:19:29 | ... -= ... | remove_Event | C6<,> |
| ViableCallable.cs:19:9:19:29 | ... -= ... | remove_Event | C7<> |
| ViableCallable.cs:18:9:18:16 | access to event Event | add_Event | C2<> |
| ViableCallable.cs:18:9:18:16 | access to event Event | add_Event | C3 |
| ViableCallable.cs:18:9:18:16 | access to event Event | add_Event | C4<> |
| ViableCallable.cs:18:9:18:16 | access to event Event | add_Event | C5 |
| ViableCallable.cs:18:9:18:16 | access to event Event | add_Event | C6<,> |
| ViableCallable.cs:18:9:18:16 | access to event Event | add_Event | C7<> |
| ViableCallable.cs:19:9:19:16 | access to event Event | remove_Event | C2<> |
| ViableCallable.cs:19:9:19:16 | access to event Event | remove_Event | C3 |
| ViableCallable.cs:19:9:19:16 | access to event Event | remove_Event | C4<> |
| ViableCallable.cs:19:9:19:16 | access to event Event | remove_Event | C5 |
| ViableCallable.cs:19:9:19:16 | access to event Event | remove_Event | C6<,> |
| ViableCallable.cs:19:9:19:16 | access to event Event | remove_Event | C7<> |
| ViableCallable.cs:22:9:22:30 | call to method M | M | C4<> |
| ViableCallable.cs:22:9:22:30 | call to method M | M | C6<,> |
| ViableCallable.cs:24:9:24:25 | ... = ... | set_Prop | C4<> |
| ViableCallable.cs:24:9:24:25 | ... = ... | set_Prop | C6<,> |
| ViableCallable.cs:24:9:24:15 | access to property Prop | set_Prop | C4<> |
| ViableCallable.cs:24:9:24:15 | access to property Prop | set_Prop | C6<,> |
| ViableCallable.cs:24:19:24:25 | access to property Prop | get_Prop | C4<> |
| ViableCallable.cs:24:19:24:25 | access to property Prop | get_Prop | C6<,> |
| ViableCallable.cs:26:9:26:41 | ... = ... | set_Item | C4<> |
| ViableCallable.cs:26:9:26:41 | ... = ... | set_Item | C6<,> |
| ViableCallable.cs:26:9:26:23 | access to indexer | set_Item | C4<> |
| ViableCallable.cs:26:9:26:23 | access to indexer | set_Item | C6<,> |
| ViableCallable.cs:26:27:26:41 | access to indexer | get_Item | C4<> |
| ViableCallable.cs:26:27:26:41 | access to indexer | get_Item | C6<,> |
| ViableCallable.cs:28:9:28:29 | ... += ... | add_Event | C4<> |
| ViableCallable.cs:28:9:28:29 | ... += ... | add_Event | C6<,> |
| ViableCallable.cs:29:9:29:29 | ... -= ... | remove_Event | C4<> |
| ViableCallable.cs:29:9:29:29 | ... -= ... | remove_Event | C6<,> |
| ViableCallable.cs:28:9:28:16 | access to event Event | add_Event | C4<> |
| ViableCallable.cs:28:9:28:16 | access to event Event | add_Event | C6<,> |
| ViableCallable.cs:29:9:29:16 | access to event Event | remove_Event | C4<> |
| ViableCallable.cs:29:9:29:16 | access to event Event | remove_Event | C6<,> |
| ViableCallable.cs:33:9:33:23 | call to method M | M | C2<> |
| ViableCallable.cs:33:9:33:23 | call to method M | M | C6<,> |
| ViableCallable.cs:35:9:35:25 | ... = ... | set_Prop | C2<> |
| ViableCallable.cs:35:9:35:25 | ... = ... | set_Prop | C6<,> |
| ViableCallable.cs:35:9:35:15 | access to property Prop | set_Prop | C2<> |
| ViableCallable.cs:35:9:35:15 | access to property Prop | set_Prop | C6<,> |
| ViableCallable.cs:35:19:35:25 | access to property Prop | get_Prop | C2<> |
| ViableCallable.cs:35:19:35:25 | access to property Prop | get_Prop | C6<,> |
| ViableCallable.cs:37:9:37:21 | ... = ... | set_Item | C2<> |
| ViableCallable.cs:37:9:37:21 | ... = ... | set_Item | C6<,> |
| ViableCallable.cs:37:9:37:13 | access to indexer | set_Item | C2<> |
| ViableCallable.cs:37:9:37:13 | access to indexer | set_Item | C6<,> |
| ViableCallable.cs:37:17:37:21 | access to indexer | get_Item | C2<> |
| ViableCallable.cs:37:17:37:21 | access to indexer | get_Item | C6<,> |
| ViableCallable.cs:39:9:39:29 | ... += ... | add_Event | C2<> |
| ViableCallable.cs:39:9:39:29 | ... += ... | add_Event | C6<,> |
| ViableCallable.cs:40:9:40:29 | ... -= ... | remove_Event | C2<> |
| ViableCallable.cs:40:9:40:29 | ... -= ... | remove_Event | C6<,> |
| ViableCallable.cs:39:9:39:16 | access to event Event | add_Event | C2<> |
| ViableCallable.cs:39:9:39:16 | access to event Event | add_Event | C6<,> |
| ViableCallable.cs:40:9:40:16 | access to event Event | remove_Event | C2<> |
| ViableCallable.cs:40:9:40:16 | access to event Event | remove_Event | C6<,> |
| ViableCallable.cs:44:9:44:24 | call to method M | M | C2<> |
| ViableCallable.cs:44:9:44:24 | call to method M | M | C3 |
| ViableCallable.cs:44:9:44:24 | call to method M | M | C6<,> |
| ViableCallable.cs:46:9:46:25 | ... = ... | set_Prop | C2<> |
| ViableCallable.cs:46:9:46:25 | ... = ... | set_Prop | C3 |
| ViableCallable.cs:46:9:46:25 | ... = ... | set_Prop | C6<,> |
| ViableCallable.cs:46:9:46:15 | access to property Prop | set_Prop | C2<> |
| ViableCallable.cs:46:9:46:15 | access to property Prop | set_Prop | C3 |
| ViableCallable.cs:46:9:46:15 | access to property Prop | set_Prop | C6<,> |
| ViableCallable.cs:46:19:46:25 | access to property Prop | get_Prop | C2<> |
| ViableCallable.cs:46:19:46:25 | access to property Prop | get_Prop | C3 |
| ViableCallable.cs:46:19:46:25 | access to property Prop | get_Prop | C6<,> |
| ViableCallable.cs:48:9:48:23 | ... = ... | set_Item | C2<> |
| ViableCallable.cs:48:9:48:23 | ... = ... | set_Item | C3 |
| ViableCallable.cs:48:9:48:23 | ... = ... | set_Item | C6<,> |
| ViableCallable.cs:48:9:48:14 | access to indexer | set_Item | C2<> |
| ViableCallable.cs:48:9:48:14 | access to indexer | set_Item | C3 |
| ViableCallable.cs:48:9:48:14 | access to indexer | set_Item | C6<,> |
| ViableCallable.cs:48:18:48:23 | access to indexer | get_Item | C2<> |
| ViableCallable.cs:48:18:48:23 | access to indexer | get_Item | C3 |
| ViableCallable.cs:48:18:48:23 | access to indexer | get_Item | C6<,> |
| ViableCallable.cs:50:9:50:29 | ... += ... | add_Event | C2<> |
| ViableCallable.cs:50:9:50:29 | ... += ... | add_Event | C3 |
| ViableCallable.cs:50:9:50:29 | ... += ... | add_Event | C6<,> |
| ViableCallable.cs:51:9:51:29 | ... -= ... | remove_Event | C2<> |
| ViableCallable.cs:51:9:51:29 | ... -= ... | remove_Event | C3 |
| ViableCallable.cs:51:9:51:29 | ... -= ... | remove_Event | C6<,> |
| ViableCallable.cs:50:9:50:16 | access to event Event | add_Event | C2<> |
| ViableCallable.cs:50:9:50:16 | access to event Event | add_Event | C3 |
| ViableCallable.cs:50:9:50:16 | access to event Event | add_Event | C6<,> |
| ViableCallable.cs:51:9:51:16 | access to event Event | remove_Event | C2<> |
| ViableCallable.cs:51:9:51:16 | access to event Event | remove_Event | C3 |
| ViableCallable.cs:51:9:51:16 | access to event Event | remove_Event | C6<,> |
| ViableCallable.cs:55:9:55:44 | call to method M | M | C4<> |
| ViableCallable.cs:55:9:55:44 | call to method M | M | C6<,> |
| ViableCallable.cs:57:9:57:25 | ... = ... | set_Prop | C4<> |
| ViableCallable.cs:57:9:57:25 | ... = ... | set_Prop | C6<,> |
| ViableCallable.cs:57:9:57:15 | access to property Prop | set_Prop | C4<> |
| ViableCallable.cs:57:9:57:15 | access to property Prop | set_Prop | C6<,> |
| ViableCallable.cs:57:19:57:25 | access to property Prop | get_Prop | C4<> |
| ViableCallable.cs:57:19:57:25 | access to property Prop | get_Prop | C6<,> |
| ViableCallable.cs:59:9:59:29 | ... = ... | set_Item | C4<> |
| ViableCallable.cs:59:9:59:29 | ... = ... | set_Item | C6<,> |
| ViableCallable.cs:59:9:59:17 | access to indexer | set_Item | C4<> |
| ViableCallable.cs:59:9:59:17 | access to indexer | set_Item | C6<,> |
| ViableCallable.cs:59:21:59:29 | access to indexer | get_Item | C4<> |
| ViableCallable.cs:59:21:59:29 | access to indexer | get_Item | C6<,> |
| ViableCallable.cs:61:9:61:29 | ... += ... | add_Event | C4<> |
| ViableCallable.cs:61:9:61:29 | ... += ... | add_Event | C6<,> |
| ViableCallable.cs:62:9:62:29 | ... -= ... | remove_Event | C4<> |
| ViableCallable.cs:62:9:62:29 | ... -= ... | remove_Event | C6<,> |
| ViableCallable.cs:61:9:61:16 | access to event Event | add_Event | C4<> |
| ViableCallable.cs:61:9:61:16 | access to event Event | add_Event | C6<,> |
| ViableCallable.cs:62:9:62:16 | access to event Event | remove_Event | C4<> |
| ViableCallable.cs:62:9:62:16 | access to event Event | remove_Event | C6<,> |
| ViableCallable.cs:66:9:66:30 | call to method M | M | C2<> |
| ViableCallable.cs:66:9:66:30 | call to method M | M | C5 |
| ViableCallable.cs:66:9:66:30 | call to method M | M | C6<,> |
| ViableCallable.cs:68:9:68:25 | ... = ... | set_Prop | C2<> |
| ViableCallable.cs:68:9:68:25 | ... = ... | set_Prop | C5 |
| ViableCallable.cs:68:9:68:25 | ... = ... | set_Prop | C6<,> |
| ViableCallable.cs:68:9:68:15 | access to property Prop | set_Prop | C2<> |
| ViableCallable.cs:68:9:68:15 | access to property Prop | set_Prop | C5 |
| ViableCallable.cs:68:9:68:15 | access to property Prop | set_Prop | C6<,> |
| ViableCallable.cs:68:19:68:25 | access to property Prop | get_Prop | C2<> |
| ViableCallable.cs:68:19:68:25 | access to property Prop | get_Prop | C5 |
| ViableCallable.cs:68:19:68:25 | access to property Prop | get_Prop | C6<,> |
| ViableCallable.cs:70:9:70:29 | ... = ... | set_Item | C2<> |
| ViableCallable.cs:70:9:70:29 | ... = ... | set_Item | C5 |
| ViableCallable.cs:70:9:70:29 | ... = ... | set_Item | C6<,> |
| ViableCallable.cs:70:9:70:17 | access to indexer | set_Item | C2<> |
| ViableCallable.cs:70:9:70:17 | access to indexer | set_Item | C5 |
| ViableCallable.cs:70:9:70:17 | access to indexer | set_Item | C6<,> |
| ViableCallable.cs:70:21:70:29 | access to indexer | get_Item | C2<> |
| ViableCallable.cs:70:21:70:29 | access to indexer | get_Item | C5 |
| ViableCallable.cs:70:21:70:29 | access to indexer | get_Item | C6<,> |
| ViableCallable.cs:72:9:72:29 | ... += ... | add_Event | C2<> |
| ViableCallable.cs:72:9:72:29 | ... += ... | add_Event | C5 |
| ViableCallable.cs:72:9:72:29 | ... += ... | add_Event | C6<,> |
| ViableCallable.cs:73:9:73:29 | ... -= ... | remove_Event | C2<> |
| ViableCallable.cs:73:9:73:29 | ... -= ... | remove_Event | C5 |
| ViableCallable.cs:73:9:73:29 | ... -= ... | remove_Event | C6<,> |
| ViableCallable.cs:72:9:72:16 | access to event Event | add_Event | C2<> |
| ViableCallable.cs:72:9:72:16 | access to event Event | add_Event | C5 |
| ViableCallable.cs:72:9:72:16 | access to event Event | add_Event | C6<,> |
| ViableCallable.cs:73:9:73:16 | access to event Event | remove_Event | C2<> |
| ViableCallable.cs:73:9:73:16 | access to event Event | remove_Event | C5 |
| ViableCallable.cs:73:9:73:16 | access to event Event | remove_Event | C6<,> |
| ViableCallable.cs:76:27:76:44 | object creation of type C6<T1,Boolean> | C6 | C6<,> |
| ViableCallable.cs:77:9:77:29 | call to method M | M | C6<,> |
| ViableCallable.cs:79:9:79:25 | ... = ... | set_Prop | C6<,> |
| ViableCallable.cs:79:9:79:15 | access to property Prop | set_Prop | C6<,> |
| ViableCallable.cs:79:19:79:25 | access to property Prop | get_Prop | C6<,> |
| ViableCallable.cs:81:9:81:29 | ... = ... | set_Item | C6<,> |
| ViableCallable.cs:81:9:81:17 | access to indexer | set_Item | C6<,> |
| ViableCallable.cs:81:21:81:29 | access to indexer | get_Item | C6<,> |
| ViableCallable.cs:83:9:83:29 | ... += ... | add_Event | C6<,> |
| ViableCallable.cs:84:9:84:29 | ... -= ... | remove_Event | C6<,> |
| ViableCallable.cs:83:9:83:16 | access to event Event | add_Event | C6<,> |
| ViableCallable.cs:84:9:84:16 | access to event Event | remove_Event | C6<,> |
| ViableCallable.cs:88:9:88:44 | dynamic call to method M | M | C8 |
| ViableCallable.cs:88:9:88:44 | dynamic call to method M | M | C9<> |
| ViableCallable.cs:90:9:90:15 | dynamic access to member Prop1 | set_Prop1 | C8 |
@@ -143,9 +143,9 @@
| ViableCallable.cs:92:16:92:19 | dynamic access to element | get_Item | C8 |
| ViableCallable.cs:92:16:92:19 | dynamic access to element | get_Item | C9<> |
| ViableCallable.cs:99:9:99:15 | dynamic call to method M | M | C5 |
| ViableCallable.cs:102:9:102:20 | ... = ... | set_Prop2 | C5 |
| ViableCallable.cs:105:9:105:22 | ... += ... | add_Event2 | C5 |
| ViableCallable.cs:106:9:106:22 | ... -= ... | remove_Event2 | C5 |
| ViableCallable.cs:102:9:102:16 | access to property Prop2 | set_Prop2 | C5 |
| ViableCallable.cs:105:9:105:17 | access to event Event2 | add_Event2 | C5 |
| ViableCallable.cs:106:9:106:17 | access to event Event2 | remove_Event2 | C5 |
| ViableCallable.cs:120:9:120:25 | dynamic call to method M2 | M2 | C8 |
| ViableCallable.cs:124:9:124:24 | dynamic call to method M2 | M2 | C8 |
| ViableCallable.cs:131:13:131:30 | object creation of type C6<T1,Byte> | C6 | C6<,> |

View File

@@ -308,7 +308,7 @@ public class E
{
if (l.HasValue)
{
e.Long = l.Value; // GOOD
e.Long = l.Value; // GOOD (false positive)
}
return;
}

View File

@@ -348,6 +348,8 @@ nodes
| E.cs:285:9:285:9 | access to local variable o |
| E.cs:301:13:301:27 | SSA def(s) |
| E.cs:302:9:302:9 | access to local variable s |
| E.cs:311:13:311:18 | SSA call def(this.l) |
| E.cs:311:22:311:22 | access to field l |
| Forwarding.cs:7:16:7:23 | SSA def(s) |
| Forwarding.cs:14:9:17:9 | if (...) ... |
| Forwarding.cs:19:9:22:9 | if (...) ... |
@@ -678,6 +680,7 @@ edges
| E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o |
| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o |
| E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s |
| E.cs:311:13:311:18 | SSA call def(this.l) | E.cs:311:22:311:22 | access to field l |
| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:14:9:17:9 | if (...) ... |
| Forwarding.cs:14:9:17:9 | if (...) ... | Forwarding.cs:19:9:22:9 | if (...) ... |
| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:24:9:27:9 | if (...) ... |
@@ -778,6 +781,7 @@ edges
| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null here as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this |
| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null here as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this |
| E.cs:302:9:302:9 | access to local variable s | E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null here because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this |
| E.cs:311:22:311:22 | access to field l | E.cs:311:13:311:18 | SSA call def(this.l) | E.cs:311:22:311:22 | access to field l | Variable $@ may be null here because it has a nullable type. | E.cs:309:13:309:13 | this.l | this.l | E.cs:305:19:305:19 | l | this |
| GuardedString.cs:35:31:35:31 | access to local variable s | GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null here because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this |
| NullMaybeBad.cs:7:27:7:27 | access to parameter o | NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null here because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this |
| StringConcatenation.cs:16:17:16:17 | access to local variable s | StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:16:17:16:17 | access to local variable s | Variable $@ may be null here because of $@ assignment. | StringConcatenation.cs:14:16:14:16 | s | s | StringConcatenation.cs:14:16:14:23 | String s = ... | this |

View File

@@ -823,7 +823,6 @@ public class ASTExtractor {
contextManager.leaveContainer();
scopeManager.leaveScope();
lexicalExtractor.emitNumlines(key, nd.getLoc().getStart(), nd.getLoc().getEnd());
}
private void extractParameterDefaultsAndTypes(IFunction nd, Label key, int paramCount) {

View File

@@ -773,14 +773,18 @@ public class CFGExtractor {
public <Q, A> A accept(Visitor<Q, A> v, Q q) { return null; }
}
// associate statements with their (direct or indirect) labels
private final Map<Statement, Set<String>> loopLabels = new LinkedHashMap<Statement, Set<String>>();
// associate statements with their (direct or indirect) labels;
// per-function cache, cleared after each function
private Map<Statement, Set<String>> loopLabels = new LinkedHashMap<Statement, Set<String>>();
// cache the set of normal control flow successors
private final Map<Node, Object> followingCache = new LinkedHashMap<Node, Object>();
// cache the set of normal control flow successors;
// per-function cache, cleared after each function
private Map<Node, Object> followingCache = new LinkedHashMap<Node, Object>();
// map from a node in a chain of property accesses or calls to the successor info for the first node in the chain
private final Map<Chainable, SuccessorInfo> chainRootSuccessors = new LinkedHashMap<Chainable, SuccessorInfo>();
// map from a node in a chain of property accesses or calls to the successor info
// for the first node in the chain;
// per-function cache, cleared after each function
private Map<Chainable, SuccessorInfo> chainRootSuccessors = new LinkedHashMap<Chainable, SuccessorInfo>();
/**
* Generate entry node.
@@ -1031,6 +1035,16 @@ public class CFGExtractor {
@Override
public Void visit(IFunction nd, SuccessorInfo i) {
// save per-function caches
Map<Statement, Set<String>> oldLoopLabels = loopLabels;
Map<Node, Object> oldFollowingCache = followingCache;
Map<Chainable, SuccessorInfo> oldChainRootSuccessors = chainRootSuccessors;
// clear caches
loopLabels = new LinkedHashMap<>();
followingCache = new LinkedHashMap<>();
chainRootSuccessors = new LinkedHashMap<>();
if (nd instanceof FunctionDeclaration && nd.hasDeclareKeyword()) {
// All 'declared' statements have a no-op CFG node, but their children should
// not be processed.
@@ -1039,6 +1053,12 @@ public class CFGExtractor {
}
buildFunctionCreation(nd, i);
buildFunctionBody(nd);
// restore caches
loopLabels = oldLoopLabels;
followingCache = oldFollowingCache;
chainRootSuccessors = oldChainRootSuccessors;
return null;
}

View File

@@ -94,12 +94,14 @@ public class JSExtractor {
ASTExtractor scriptExtractor = new ASTExtractor(lexicalExtractor, scopeManager);
toplevelLabel = scriptExtractor.getToplevelLabel();
scriptExtractor.extract(ast, platform, sourceType, toplevelKind);
lexicalExtractor.extractComments(toplevelLabel);
loc = lexicalExtractor.extractLines(parserRes.getSource(), toplevelLabel);
lexicalExtractor.extractTokens(toplevelLabel);
new CFGExtractor(scriptExtractor).extract(ast);
new JSDocExtractor(textualExtractor).extract(lexicalExtractor.getComments());
lexicalExtractor.purge();
scriptExtractor.extract(ast, platform, sourceType, toplevelKind);
new CFGExtractor(scriptExtractor).extract(ast);
} else {
lexicalExtractor = new LexicalExtractor(textualExtractor, new ArrayList<Token>(), new ArrayList<Comment>());
ASTExtractor scriptExtractor = new ASTExtractor(lexicalExtractor, null);

View File

@@ -133,7 +133,7 @@ public class LexicalExtractor {
locationManager.emitNodeLocation(token, key);
// fill in next_token relation
while (j < comments.size() && comments.get(j).getLoc().getEnd().compareTo(token.getLoc().getStart()) < 0)
while (j < comments.size() && comments.get(j).getLoc().getEnd().compareTo(token.getLoc().getStart()) <= 0)
trapwriter.addTuple("next_token", this.trapwriter.localID(comments.get(j++)), key);
// the parser sometimes duplicates tokens; skip the second one by nulling it out
@@ -173,4 +173,12 @@ public class LexicalExtractor {
public String mkToString(SourceElement nd) {
return textualExtractor.mkToString(nd);
}
/**
* Purge token and comments information to reduce heap pressure.
*/
public void purge() {
this.tokens.clear();
this.comments.clear();
}
}

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 = "2019-01-17";
public static final String EXTRACTOR_VERSION = "2019-01-29";
public static final Pattern NEWLINE = Pattern.compile("\n");

View File

@@ -5,7 +5,6 @@ import java.io.StringWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map.Entry;

View File

@@ -9,91 +9,90 @@ 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,"!class {};")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20002=*
lines(#20002,#20001,"!class {};","")
#20003=@"loc,{#10000},1,1,1,10"
locations_default(#20003,#10000,1,1,1,10)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
exprs(#20004,18,#20003,0,"!class {}")
#20005=@"loc,{#10000},1,1,1,9"
locations_default(#20005,#10000,1,1,1,9)
tokeninfo(#20004,8,#20001,0,"!")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,80,#20004,0,"class {}")
#20007=@"loc,{#10000},1,2,1,9"
locations_default(#20007,#10000,1,2,1,9)
tokeninfo(#20006,7,#20001,1,"class")
#20007=@"loc,{#10000},1,2,1,6"
locations_default(#20007,#10000,1,2,1,6)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
properties(#20008,#20006,2,0,"constructor() {}")
#20009=@"loc,{#10000},1,8,1,7"
locations_default(#20009,#10000,1,8,1,7)
tokeninfo(#20008,8,#20001,2,"{")
#20009=@"loc,{#10000},1,8,1,8"
locations_default(#20009,#10000,1,8,1,8)
hasLocation(#20008,#20009)
#20010=*
exprs(#20010,0,#20008,0,"constructor")
hasLocation(#20010,#20009)
enclosingStmt(#20010,#20003)
exprContainers(#20010,#20001)
literals("constructor","constructor",#20010)
#20011=*
exprs(#20011,9,#20008,1,"() {}")
hasLocation(#20011,#20009)
enclosingStmt(#20011,#20003)
exprContainers(#20011,#20001)
tokeninfo(#20010,8,#20001,3,"}")
#20011=@"loc,{#10000},1,9,1,9"
locations_default(#20011,#10000,1,9,1,9)
hasLocation(#20010,#20011)
#20012=*
scopes(#20012,1)
scopenodes(#20011,#20012)
scopenesting(#20012,#20000)
#20013=@"var;{arguments};{#20012}"
variables(#20013,"arguments",#20012)
isArgumentsObject(#20013)
tokeninfo(#20012,8,#20001,4,";")
#20013=@"loc,{#10000},1,10,1,10"
locations_default(#20013,#10000,1,10,1,10)
hasLocation(#20012,#20013)
#20014=*
stmts(#20014,1,#20011,-2,"{}")
hasLocation(#20014,#20009)
stmtContainers(#20014,#20011)
numlines(#20011,1,0,0)
isMethod(#20008)
#20015=*
lines(#20015,#20001,"!class {};","")
hasLocation(#20015,#20002)
numlines(#20001,1,1,0)
tokeninfo(#20014,0,#20001,5,"")
#20015=@"loc,{#10000},1,11,1,10"
locations_default(#20015,#10000,1,11,1,10)
hasLocation(#20014,#20015)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20016=*
tokeninfo(#20016,8,#20001,0,"!")
#20017=@"loc,{#10000},1,1,1,1"
locations_default(#20017,#10000,1,1,1,1)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,7,#20001,1,"class")
#20019=@"loc,{#10000},1,2,1,6"
locations_default(#20019,#10000,1,2,1,6)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,2,"{")
#20021=@"loc,{#10000},1,8,1,8"
locations_default(#20021,#10000,1,8,1,8)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,3,"}")
#20023=@"loc,{#10000},1,9,1,9"
locations_default(#20023,#10000,1,9,1,9)
hasLocation(#20022,#20023)
stmts(#20016,2,#20001,0,"!class {};")
hasLocation(#20016,#20003)
stmtContainers(#20016,#20001)
#20017=*
exprs(#20017,18,#20016,0,"!class {}")
#20018=@"loc,{#10000},1,1,1,9"
locations_default(#20018,#10000,1,1,1,9)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20016)
exprContainers(#20017,#20001)
#20019=*
exprs(#20019,80,#20017,0,"class {}")
#20020=@"loc,{#10000},1,2,1,9"
locations_default(#20020,#10000,1,2,1,9)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20016)
exprContainers(#20019,#20001)
#20021=*
properties(#20021,#20019,2,0,"constructor() {}")
#20022=@"loc,{#10000},1,8,1,7"
locations_default(#20022,#10000,1,8,1,7)
hasLocation(#20021,#20022)
#20023=*
exprs(#20023,0,#20021,0,"constructor")
hasLocation(#20023,#20022)
enclosingStmt(#20023,#20016)
exprContainers(#20023,#20001)
literals("constructor","constructor",#20023)
#20024=*
tokeninfo(#20024,8,#20001,4,";")
#20025=@"loc,{#10000},1,10,1,10"
locations_default(#20025,#10000,1,10,1,10)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,0,#20001,5,"")
#20027=@"loc,{#10000},1,11,1,10"
locations_default(#20027,#10000,1,11,1,10)
hasLocation(#20026,#20027)
exprs(#20024,9,#20021,1,"() {}")
hasLocation(#20024,#20022)
enclosingStmt(#20024,#20016)
exprContainers(#20024,#20001)
#20025=*
scopes(#20025,1)
scopenodes(#20024,#20025)
scopenesting(#20025,#20000)
#20026=@"var;{arguments};{#20025}"
variables(#20026,"arguments",#20025)
isArgumentsObject(#20026)
#20027=*
stmts(#20027,1,#20024,-2,"{}")
hasLocation(#20027,#20022)
stmtContainers(#20027,#20024)
isMethod(#20021)
#20028=*
entry_cfg_node(#20028,#20001)
#20029=@"loc,{#10000},1,1,1,0"
@@ -101,21 +100,21 @@ locations_default(#20029,#10000,1,1,1,0)
hasLocation(#20028,#20029)
#20030=*
exit_cfg_node(#20030,#20001)
hasLocation(#20030,#20027)
successor(#20003,#20010)
successor(#20011,#20008)
hasLocation(#20030,#20015)
successor(#20016,#20023)
successor(#20024,#20021)
#20031=*
entry_cfg_node(#20031,#20011)
hasLocation(#20031,#20009)
entry_cfg_node(#20031,#20024)
hasLocation(#20031,#20022)
#20032=*
exit_cfg_node(#20032,#20011)
hasLocation(#20032,#20009)
successor(#20014,#20032)
successor(#20031,#20014)
successor(#20010,#20011)
successor(#20008,#20006)
successor(#20006,#20004)
successor(#20004,#20030)
successor(#20028,#20003)
exit_cfg_node(#20032,#20024)
hasLocation(#20032,#20022)
successor(#20027,#20032)
successor(#20031,#20027)
successor(#20023,#20024)
successor(#20021,#20019)
successor(#20019,#20017)
successor(#20017,#20030)
successor(#20028,#20016)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,112 +9,111 @@ 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,"!class A {};")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,18,#20003,0,"!class A {}")
#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,80,#20004,0,"class A {}")
#20007=@"loc,{#10000},1,2,1,11"
locations_default(#20007,#10000,1,2,1,11)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
scopes(#20008,8)
scopenodes(#20006,#20008)
scopenesting(#20008,#20000)
#20009=@"var;{A};{#20008}"
variables(#20009,"A",#20008)
#20010=@"local_type_name;{A};{#20008}"
local_type_names(#20010,"A",#20008)
#20011=*
exprs(#20011,78,#20006,0,"A")
#20012=@"loc,{#10000},1,8,1,8"
locations_default(#20012,#10000,1,8,1,8)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20003)
exprContainers(#20011,#20001)
literals("A","A",#20011)
decl(#20011,#20009)
typedecl(#20011,#20010)
#20013=*
properties(#20013,#20006,2,0,"constructor() {}")
#20014=@"loc,{#10000},1,10,1,9"
locations_default(#20014,#10000,1,10,1,9)
hasLocation(#20013,#20014)
#20015=*
exprs(#20015,0,#20013,0,"constructor")
hasLocation(#20015,#20014)
enclosingStmt(#20015,#20003)
exprContainers(#20015,#20001)
literals("constructor","constructor",#20015)
#20016=*
exprs(#20016,9,#20013,1,"() {}")
hasLocation(#20016,#20014)
enclosingStmt(#20016,#20003)
exprContainers(#20016,#20001)
#20017=*
scopes(#20017,1)
scopenodes(#20016,#20017)
scopenesting(#20017,#20008)
#20018=@"var;{arguments};{#20017}"
variables(#20018,"arguments",#20017)
isArgumentsObject(#20018)
#20019=*
stmts(#20019,1,#20016,-2,"{}")
hasLocation(#20019,#20014)
stmtContainers(#20019,#20016)
numlines(#20016,1,0,0)
isMethod(#20013)
#20020=*
lines(#20020,#20001,"!class A {};","")
hasLocation(#20020,#20002)
#20002=*
lines(#20002,#20001,"!class A {};","")
#20003=@"loc,{#10000},1,1,1,12"
locations_default(#20003,#10000,1,1,1,12)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,8,#20001,0,"!")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"class")
#20007=@"loc,{#10000},1,2,1,6"
locations_default(#20007,#10000,1,2,1,6)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"A")
#20009=@"loc,{#10000},1,8,1,8"
locations_default(#20009,#10000,1,8,1,8)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"{")
#20011=@"loc,{#10000},1,10,1,10"
locations_default(#20011,#10000,1,10,1,10)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,"}")
#20013=@"loc,{#10000},1,11,1,11"
locations_default(#20013,#10000,1,11,1,11)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,";")
#20015=@"loc,{#10000},1,12,1,12"
locations_default(#20015,#10000,1,12,1,12)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,0,#20001,6,"")
#20017=@"loc,{#10000},1,13,1,12"
locations_default(#20017,#10000,1,13,1,12)
hasLocation(#20016,#20017)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20018=*
stmts(#20018,2,#20001,0,"!class A {};")
hasLocation(#20018,#20003)
stmtContainers(#20018,#20001)
#20019=*
exprs(#20019,18,#20018,0,"!class A {}")
#20020=@"loc,{#10000},1,1,1,11"
locations_default(#20020,#10000,1,1,1,11)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20018)
exprContainers(#20019,#20001)
#20021=*
tokeninfo(#20021,8,#20001,0,"!")
#20022=@"loc,{#10000},1,1,1,1"
locations_default(#20022,#10000,1,1,1,1)
exprs(#20021,80,#20019,0,"class A {}")
#20022=@"loc,{#10000},1,2,1,11"
locations_default(#20022,#10000,1,2,1,11)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20018)
exprContainers(#20021,#20001)
#20023=*
tokeninfo(#20023,7,#20001,1,"class")
#20024=@"loc,{#10000},1,2,1,6"
locations_default(#20024,#10000,1,2,1,6)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,6,#20001,2,"A")
hasLocation(#20025,#20012)
scopes(#20023,8)
scopenodes(#20021,#20023)
scopenesting(#20023,#20000)
#20024=@"var;{A};{#20023}"
variables(#20024,"A",#20023)
#20025=@"local_type_name;{A};{#20023}"
local_type_names(#20025,"A",#20023)
#20026=*
tokeninfo(#20026,8,#20001,3,"{")
#20027=@"loc,{#10000},1,10,1,10"
locations_default(#20027,#10000,1,10,1,10)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,4,"}")
#20029=@"loc,{#10000},1,11,1,11"
locations_default(#20029,#10000,1,11,1,11)
hasLocation(#20028,#20029)
exprs(#20026,78,#20021,0,"A")
hasLocation(#20026,#20009)
enclosingStmt(#20026,#20018)
exprContainers(#20026,#20001)
literals("A","A",#20026)
decl(#20026,#20024)
typedecl(#20026,#20025)
#20027=*
properties(#20027,#20021,2,0,"constructor() {}")
#20028=@"loc,{#10000},1,10,1,9"
locations_default(#20028,#10000,1,10,1,9)
hasLocation(#20027,#20028)
#20029=*
exprs(#20029,0,#20027,0,"constructor")
hasLocation(#20029,#20028)
enclosingStmt(#20029,#20018)
exprContainers(#20029,#20001)
literals("constructor","constructor",#20029)
#20030=*
tokeninfo(#20030,8,#20001,5,";")
#20031=@"loc,{#10000},1,12,1,12"
locations_default(#20031,#10000,1,12,1,12)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,0,#20001,6,"")
#20033=@"loc,{#10000},1,13,1,12"
locations_default(#20033,#10000,1,13,1,12)
hasLocation(#20032,#20033)
exprs(#20030,9,#20027,1,"() {}")
hasLocation(#20030,#20028)
enclosingStmt(#20030,#20018)
exprContainers(#20030,#20001)
#20031=*
scopes(#20031,1)
scopenodes(#20030,#20031)
scopenesting(#20031,#20023)
#20032=@"var;{arguments};{#20031}"
variables(#20032,"arguments",#20031)
isArgumentsObject(#20032)
#20033=*
stmts(#20033,1,#20030,-2,"{}")
hasLocation(#20033,#20028)
stmtContainers(#20033,#20030)
isMethod(#20027)
#20034=*
entry_cfg_node(#20034,#20001)
#20035=@"loc,{#10000},1,1,1,0"
@@ -122,22 +121,22 @@ locations_default(#20035,#10000,1,1,1,0)
hasLocation(#20034,#20035)
#20036=*
exit_cfg_node(#20036,#20001)
hasLocation(#20036,#20033)
successor(#20003,#20011)
successor(#20016,#20013)
hasLocation(#20036,#20017)
successor(#20018,#20026)
successor(#20030,#20027)
#20037=*
entry_cfg_node(#20037,#20016)
hasLocation(#20037,#20014)
entry_cfg_node(#20037,#20030)
hasLocation(#20037,#20028)
#20038=*
exit_cfg_node(#20038,#20016)
hasLocation(#20038,#20014)
successor(#20019,#20038)
successor(#20037,#20019)
successor(#20015,#20016)
successor(#20013,#20006)
successor(#20011,#20015)
successor(#20006,#20004)
successor(#20004,#20036)
successor(#20034,#20003)
exit_cfg_node(#20038,#20030)
hasLocation(#20038,#20028)
successor(#20033,#20038)
successor(#20037,#20033)
successor(#20029,#20030)
successor(#20027,#20021)
successor(#20026,#20029)
successor(#20021,#20019)
successor(#20019,#20036)
successor(#20034,#20018)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,145 +9,144 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,20"
locations_default(#20002,#10000,1,1,1,20)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"!class extends B {};")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,18,#20003,0,"!class extends B {}")
#20005=@"loc,{#10000},1,1,1,19"
locations_default(#20005,#10000,1,1,1,19)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,80,#20004,0,"class extends B {}")
#20007=@"loc,{#10000},1,2,1,19"
locations_default(#20007,#10000,1,2,1,19)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,79,#20006,1,"B")
#20009=@"loc,{#10000},1,16,1,16"
locations_default(#20009,#10000,1,16,1,16)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
literals("B","B",#20008)
#20010=@"var;{B};{#20000}"
variables(#20010,"B",#20000)
bind(#20008,#20010)
#20011=*
properties(#20011,#20006,2,0,"constru ... rgs); }")
#20012=@"loc,{#10000},1,18,1,17"
locations_default(#20012,#10000,1,18,1,17)
hasLocation(#20011,#20012)
#20013=*
exprs(#20013,0,#20011,0,"constructor")
hasLocation(#20013,#20012)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
literals("constructor","constructor",#20013)
#20014=*
exprs(#20014,9,#20011,1,"(...arg ... rgs); }")
hasLocation(#20014,#20012)
enclosingStmt(#20014,#20003)
exprContainers(#20014,#20001)
#20015=*
scopes(#20015,1)
scopenodes(#20014,#20015)
scopenesting(#20015,#20000)
#20016=@"var;{args};{#20015}"
variables(#20016,"args",#20015)
#20017=*
exprs(#20017,78,#20014,0,"args")
hasLocation(#20017,#20012)
exprContainers(#20017,#20014)
literals("args","args",#20017)
decl(#20017,#20016)
#20018=@"var;{arguments};{#20015}"
variables(#20018,"arguments",#20015)
isArgumentsObject(#20018)
hasRestParameter(#20014)
#20019=*
stmts(#20019,1,#20014,-2,"{ super(...args); }")
hasLocation(#20019,#20012)
stmtContainers(#20019,#20014)
#20020=*
stmts(#20020,2,#20019,0,"super(...args);")
hasLocation(#20020,#20012)
stmtContainers(#20020,#20014)
#20021=*
exprs(#20021,13,#20020,0,"super(...args)")
hasLocation(#20021,#20012)
enclosingStmt(#20021,#20020)
exprContainers(#20021,#20014)
#20022=*
exprs(#20022,81,#20021,-1,"super")
hasLocation(#20022,#20012)
enclosingStmt(#20022,#20020)
exprContainers(#20022,#20014)
#20023=*
exprs(#20023,66,#20021,0,"...args")
hasLocation(#20023,#20012)
enclosingStmt(#20023,#20020)
exprContainers(#20023,#20014)
#20024=*
exprs(#20024,79,#20023,0,"args")
hasLocation(#20024,#20012)
enclosingStmt(#20024,#20020)
exprContainers(#20024,#20014)
literals("args","args",#20024)
bind(#20024,#20016)
numlines(#20014,1,0,0)
isMethod(#20011)
#20025=*
lines(#20025,#20001,"!class extends B {};","")
hasLocation(#20025,#20002)
#20002=*
lines(#20002,#20001,"!class extends B {};","")
#20003=@"loc,{#10000},1,1,1,20"
locations_default(#20003,#10000,1,1,1,20)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20026=*
tokeninfo(#20026,8,#20001,0,"!")
#20027=@"loc,{#10000},1,1,1,1"
locations_default(#20027,#10000,1,1,1,1)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,7,#20001,1,"class")
#20029=@"loc,{#10000},1,2,1,6"
locations_default(#20029,#10000,1,2,1,6)
hasLocation(#20028,#20029)
#20004=*
tokeninfo(#20004,8,#20001,0,"!")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"class")
#20007=@"loc,{#10000},1,2,1,6"
locations_default(#20007,#10000,1,2,1,6)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,7,#20001,2,"extends")
#20009=@"loc,{#10000},1,8,1,14"
locations_default(#20009,#10000,1,8,1,14)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"B")
#20011=@"loc,{#10000},1,16,1,16"
locations_default(#20011,#10000,1,16,1,16)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,"{")
#20013=@"loc,{#10000},1,18,1,18"
locations_default(#20013,#10000,1,18,1,18)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"}")
#20015=@"loc,{#10000},1,19,1,19"
locations_default(#20015,#10000,1,19,1,19)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,";")
#20017=@"loc,{#10000},1,20,1,20"
locations_default(#20017,#10000,1,20,1,20)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,0,#20001,7,"")
#20019=@"loc,{#10000},1,21,1,20"
locations_default(#20019,#10000,1,21,1,20)
hasLocation(#20018,#20019)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20020=*
stmts(#20020,2,#20001,0,"!class extends B {};")
hasLocation(#20020,#20003)
stmtContainers(#20020,#20001)
#20021=*
exprs(#20021,18,#20020,0,"!class extends B {}")
#20022=@"loc,{#10000},1,1,1,19"
locations_default(#20022,#10000,1,1,1,19)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20020)
exprContainers(#20021,#20001)
#20023=*
exprs(#20023,80,#20021,0,"class extends B {}")
#20024=@"loc,{#10000},1,2,1,19"
locations_default(#20024,#10000,1,2,1,19)
hasLocation(#20023,#20024)
enclosingStmt(#20023,#20020)
exprContainers(#20023,#20001)
#20025=*
exprs(#20025,79,#20023,1,"B")
hasLocation(#20025,#20011)
enclosingStmt(#20025,#20020)
exprContainers(#20025,#20001)
literals("B","B",#20025)
#20026=@"var;{B};{#20000}"
variables(#20026,"B",#20000)
bind(#20025,#20026)
#20027=*
properties(#20027,#20023,2,0,"constru ... rgs); }")
#20028=@"loc,{#10000},1,18,1,17"
locations_default(#20028,#10000,1,18,1,17)
hasLocation(#20027,#20028)
#20029=*
exprs(#20029,0,#20027,0,"constructor")
hasLocation(#20029,#20028)
enclosingStmt(#20029,#20020)
exprContainers(#20029,#20001)
literals("constructor","constructor",#20029)
#20030=*
tokeninfo(#20030,7,#20001,2,"extends")
#20031=@"loc,{#10000},1,8,1,14"
locations_default(#20031,#10000,1,8,1,14)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,3,"B")
hasLocation(#20032,#20009)
exprs(#20030,9,#20027,1,"(...arg ... rgs); }")
hasLocation(#20030,#20028)
enclosingStmt(#20030,#20020)
exprContainers(#20030,#20001)
#20031=*
scopes(#20031,1)
scopenodes(#20030,#20031)
scopenesting(#20031,#20000)
#20032=@"var;{args};{#20031}"
variables(#20032,"args",#20031)
#20033=*
tokeninfo(#20033,8,#20001,4,"{")
#20034=@"loc,{#10000},1,18,1,18"
locations_default(#20034,#10000,1,18,1,18)
hasLocation(#20033,#20034)
exprs(#20033,78,#20030,0,"args")
hasLocation(#20033,#20028)
exprContainers(#20033,#20030)
literals("args","args",#20033)
decl(#20033,#20032)
#20034=@"var;{arguments};{#20031}"
variables(#20034,"arguments",#20031)
isArgumentsObject(#20034)
hasRestParameter(#20030)
#20035=*
tokeninfo(#20035,8,#20001,5,"}")
#20036=@"loc,{#10000},1,19,1,19"
locations_default(#20036,#10000,1,19,1,19)
hasLocation(#20035,#20036)
stmts(#20035,1,#20030,-2,"{ super(...args); }")
hasLocation(#20035,#20028)
stmtContainers(#20035,#20030)
#20036=*
stmts(#20036,2,#20035,0,"super(...args);")
hasLocation(#20036,#20028)
stmtContainers(#20036,#20030)
#20037=*
tokeninfo(#20037,8,#20001,6,";")
#20038=@"loc,{#10000},1,20,1,20"
locations_default(#20038,#10000,1,20,1,20)
hasLocation(#20037,#20038)
exprs(#20037,13,#20036,0,"super(...args)")
hasLocation(#20037,#20028)
enclosingStmt(#20037,#20036)
exprContainers(#20037,#20030)
#20038=*
exprs(#20038,81,#20037,-1,"super")
hasLocation(#20038,#20028)
enclosingStmt(#20038,#20036)
exprContainers(#20038,#20030)
#20039=*
tokeninfo(#20039,0,#20001,7,"")
#20040=@"loc,{#10000},1,21,1,20"
locations_default(#20040,#10000,1,21,1,20)
hasLocation(#20039,#20040)
exprs(#20039,66,#20037,0,"...args")
hasLocation(#20039,#20028)
enclosingStmt(#20039,#20036)
exprContainers(#20039,#20030)
#20040=*
exprs(#20040,79,#20039,0,"args")
hasLocation(#20040,#20028)
enclosingStmt(#20040,#20036)
exprContainers(#20040,#20030)
literals("args","args",#20040)
bind(#20040,#20032)
isMethod(#20027)
#20041=*
entry_cfg_node(#20041,#20001)
#20042=@"loc,{#10000},1,1,1,0"
@@ -155,28 +154,28 @@ locations_default(#20042,#10000,1,1,1,0)
hasLocation(#20041,#20042)
#20043=*
exit_cfg_node(#20043,#20001)
hasLocation(#20043,#20040)
successor(#20003,#20008)
successor(#20014,#20011)
hasLocation(#20043,#20019)
successor(#20020,#20025)
successor(#20030,#20027)
#20044=*
entry_cfg_node(#20044,#20014)
hasLocation(#20044,#20012)
entry_cfg_node(#20044,#20030)
hasLocation(#20044,#20028)
#20045=*
exit_cfg_node(#20045,#20014)
hasLocation(#20045,#20012)
successor(#20019,#20020)
successor(#20020,#20022)
successor(#20024,#20023)
exit_cfg_node(#20045,#20030)
hasLocation(#20045,#20028)
successor(#20035,#20036)
successor(#20036,#20038)
successor(#20040,#20039)
successor(#20039,#20037)
successor(#20038,#20040)
successor(#20037,#20045)
successor(#20033,#20035)
successor(#20044,#20033)
successor(#20029,#20030)
successor(#20027,#20023)
successor(#20025,#20029)
successor(#20023,#20021)
successor(#20022,#20024)
successor(#20021,#20045)
successor(#20017,#20019)
successor(#20044,#20017)
successor(#20013,#20014)
successor(#20011,#20006)
successor(#20008,#20013)
successor(#20006,#20004)
successor(#20004,#20043)
successor(#20041,#20003)
successor(#20021,#20043)
successor(#20041,#20020)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,166 +9,165 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,22"
locations_default(#20002,#10000,1,1,1,22)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"!class ... s B {};")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20002=*
lines(#20002,#20001,"!class A extends B {};","")
#20003=@"loc,{#10000},1,1,1,22"
locations_default(#20003,#10000,1,1,1,22)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
exprs(#20004,18,#20003,0,"!class ... ds B {}")
#20005=@"loc,{#10000},1,1,1,21"
locations_default(#20005,#10000,1,1,1,21)
tokeninfo(#20004,8,#20001,0,"!")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,80,#20004,0,"class A extends B {}")
#20007=@"loc,{#10000},1,2,1,21"
locations_default(#20007,#10000,1,2,1,21)
tokeninfo(#20006,7,#20001,1,"class")
#20007=@"loc,{#10000},1,2,1,6"
locations_default(#20007,#10000,1,2,1,6)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
scopes(#20008,8)
scopenodes(#20006,#20008)
scopenesting(#20008,#20000)
#20009=@"var;{A};{#20008}"
variables(#20009,"A",#20008)
#20010=@"local_type_name;{A};{#20008}"
local_type_names(#20010,"A",#20008)
#20011=*
exprs(#20011,78,#20006,0,"A")
#20012=@"loc,{#10000},1,8,1,8"
locations_default(#20012,#10000,1,8,1,8)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20003)
exprContainers(#20011,#20001)
literals("A","A",#20011)
decl(#20011,#20009)
typedecl(#20011,#20010)
#20013=*
exprs(#20013,79,#20006,1,"B")
#20014=@"loc,{#10000},1,18,1,18"
locations_default(#20014,#10000,1,18,1,18)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
literals("B","B",#20013)
#20015=@"var;{B};{#20000}"
variables(#20015,"B",#20000)
bind(#20013,#20015)
tokeninfo(#20008,6,#20001,2,"A")
#20009=@"loc,{#10000},1,8,1,8"
locations_default(#20009,#10000,1,8,1,8)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,7,#20001,3,"extends")
#20011=@"loc,{#10000},1,10,1,16"
locations_default(#20011,#10000,1,10,1,16)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,4,"B")
#20013=@"loc,{#10000},1,18,1,18"
locations_default(#20013,#10000,1,18,1,18)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"{")
#20015=@"loc,{#10000},1,20,1,20"
locations_default(#20015,#10000,1,20,1,20)
hasLocation(#20014,#20015)
#20016=*
properties(#20016,#20006,2,0,"constru ... rgs); }")
#20017=@"loc,{#10000},1,20,1,19"
locations_default(#20017,#10000,1,20,1,19)
tokeninfo(#20016,8,#20001,6,"}")
#20017=@"loc,{#10000},1,21,1,21"
locations_default(#20017,#10000,1,21,1,21)
hasLocation(#20016,#20017)
#20018=*
exprs(#20018,0,#20016,0,"constructor")
hasLocation(#20018,#20017)
enclosingStmt(#20018,#20003)
exprContainers(#20018,#20001)
literals("constructor","constructor",#20018)
#20019=*
exprs(#20019,9,#20016,1,"(...arg ... rgs); }")
hasLocation(#20019,#20017)
enclosingStmt(#20019,#20003)
exprContainers(#20019,#20001)
tokeninfo(#20018,8,#20001,7,";")
#20019=@"loc,{#10000},1,22,1,22"
locations_default(#20019,#10000,1,22,1,22)
hasLocation(#20018,#20019)
#20020=*
scopes(#20020,1)
scopenodes(#20019,#20020)
scopenesting(#20020,#20008)
#20021=@"var;{args};{#20020}"
variables(#20021,"args",#20020)
tokeninfo(#20020,0,#20001,8,"")
#20021=@"loc,{#10000},1,23,1,22"
locations_default(#20021,#10000,1,23,1,22)
hasLocation(#20020,#20021)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20022=*
exprs(#20022,78,#20019,0,"args")
hasLocation(#20022,#20017)
exprContainers(#20022,#20019)
literals("args","args",#20022)
decl(#20022,#20021)
#20023=@"var;{arguments};{#20020}"
variables(#20023,"arguments",#20020)
isArgumentsObject(#20023)
hasRestParameter(#20019)
#20024=*
stmts(#20024,1,#20019,-2,"{ super(...args); }")
hasLocation(#20024,#20017)
stmtContainers(#20024,#20019)
stmts(#20022,2,#20001,0,"!class ... s B {};")
hasLocation(#20022,#20003)
stmtContainers(#20022,#20001)
#20023=*
exprs(#20023,18,#20022,0,"!class ... ds B {}")
#20024=@"loc,{#10000},1,1,1,21"
locations_default(#20024,#10000,1,1,1,21)
hasLocation(#20023,#20024)
enclosingStmt(#20023,#20022)
exprContainers(#20023,#20001)
#20025=*
stmts(#20025,2,#20024,0,"super(...args);")
hasLocation(#20025,#20017)
stmtContainers(#20025,#20019)
#20026=*
exprs(#20026,13,#20025,0,"super(...args)")
hasLocation(#20026,#20017)
enclosingStmt(#20026,#20025)
exprContainers(#20026,#20019)
exprs(#20025,80,#20023,0,"class A extends B {}")
#20026=@"loc,{#10000},1,2,1,21"
locations_default(#20026,#10000,1,2,1,21)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20022)
exprContainers(#20025,#20001)
#20027=*
exprs(#20027,81,#20026,-1,"super")
hasLocation(#20027,#20017)
enclosingStmt(#20027,#20025)
exprContainers(#20027,#20019)
#20028=*
exprs(#20028,66,#20026,0,"...args")
hasLocation(#20028,#20017)
enclosingStmt(#20028,#20025)
exprContainers(#20028,#20019)
#20029=*
exprs(#20029,79,#20028,0,"args")
hasLocation(#20029,#20017)
enclosingStmt(#20029,#20025)
exprContainers(#20029,#20019)
literals("args","args",#20029)
bind(#20029,#20021)
numlines(#20019,1,0,0)
isMethod(#20016)
scopes(#20027,8)
scopenodes(#20025,#20027)
scopenesting(#20027,#20000)
#20028=@"var;{A};{#20027}"
variables(#20028,"A",#20027)
#20029=@"local_type_name;{A};{#20027}"
local_type_names(#20029,"A",#20027)
#20030=*
lines(#20030,#20001,"!class A extends B {};","")
hasLocation(#20030,#20002)
numlines(#20001,1,1,0)
exprs(#20030,78,#20025,0,"A")
hasLocation(#20030,#20009)
enclosingStmt(#20030,#20022)
exprContainers(#20030,#20001)
literals("A","A",#20030)
decl(#20030,#20028)
typedecl(#20030,#20029)
#20031=*
tokeninfo(#20031,8,#20001,0,"!")
#20032=@"loc,{#10000},1,1,1,1"
locations_default(#20032,#10000,1,1,1,1)
hasLocation(#20031,#20032)
exprs(#20031,79,#20025,1,"B")
hasLocation(#20031,#20013)
enclosingStmt(#20031,#20022)
exprContainers(#20031,#20001)
literals("B","B",#20031)
#20032=@"var;{B};{#20000}"
variables(#20032,"B",#20000)
bind(#20031,#20032)
#20033=*
tokeninfo(#20033,7,#20001,1,"class")
#20034=@"loc,{#10000},1,2,1,6"
locations_default(#20034,#10000,1,2,1,6)
properties(#20033,#20025,2,0,"constru ... rgs); }")
#20034=@"loc,{#10000},1,20,1,19"
locations_default(#20034,#10000,1,20,1,19)
hasLocation(#20033,#20034)
#20035=*
tokeninfo(#20035,6,#20001,2,"A")
hasLocation(#20035,#20012)
exprs(#20035,0,#20033,0,"constructor")
hasLocation(#20035,#20034)
enclosingStmt(#20035,#20022)
exprContainers(#20035,#20001)
literals("constructor","constructor",#20035)
#20036=*
tokeninfo(#20036,7,#20001,3,"extends")
#20037=@"loc,{#10000},1,10,1,16"
locations_default(#20037,#10000,1,10,1,16)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,6,#20001,4,"B")
hasLocation(#20038,#20014)
exprs(#20036,9,#20033,1,"(...arg ... rgs); }")
hasLocation(#20036,#20034)
enclosingStmt(#20036,#20022)
exprContainers(#20036,#20001)
#20037=*
scopes(#20037,1)
scopenodes(#20036,#20037)
scopenesting(#20037,#20027)
#20038=@"var;{args};{#20037}"
variables(#20038,"args",#20037)
#20039=*
tokeninfo(#20039,8,#20001,5,"{")
#20040=@"loc,{#10000},1,20,1,20"
locations_default(#20040,#10000,1,20,1,20)
hasLocation(#20039,#20040)
exprs(#20039,78,#20036,0,"args")
hasLocation(#20039,#20034)
exprContainers(#20039,#20036)
literals("args","args",#20039)
decl(#20039,#20038)
#20040=@"var;{arguments};{#20037}"
variables(#20040,"arguments",#20037)
isArgumentsObject(#20040)
hasRestParameter(#20036)
#20041=*
tokeninfo(#20041,8,#20001,6,"}")
#20042=@"loc,{#10000},1,21,1,21"
locations_default(#20042,#10000,1,21,1,21)
hasLocation(#20041,#20042)
stmts(#20041,1,#20036,-2,"{ super(...args); }")
hasLocation(#20041,#20034)
stmtContainers(#20041,#20036)
#20042=*
stmts(#20042,2,#20041,0,"super(...args);")
hasLocation(#20042,#20034)
stmtContainers(#20042,#20036)
#20043=*
tokeninfo(#20043,8,#20001,7,";")
#20044=@"loc,{#10000},1,22,1,22"
locations_default(#20044,#10000,1,22,1,22)
hasLocation(#20043,#20044)
exprs(#20043,13,#20042,0,"super(...args)")
hasLocation(#20043,#20034)
enclosingStmt(#20043,#20042)
exprContainers(#20043,#20036)
#20044=*
exprs(#20044,81,#20043,-1,"super")
hasLocation(#20044,#20034)
enclosingStmt(#20044,#20042)
exprContainers(#20044,#20036)
#20045=*
tokeninfo(#20045,0,#20001,8,"")
#20046=@"loc,{#10000},1,23,1,22"
locations_default(#20046,#10000,1,23,1,22)
hasLocation(#20045,#20046)
exprs(#20045,66,#20043,0,"...args")
hasLocation(#20045,#20034)
enclosingStmt(#20045,#20042)
exprContainers(#20045,#20036)
#20046=*
exprs(#20046,79,#20045,0,"args")
hasLocation(#20046,#20034)
enclosingStmt(#20046,#20042)
exprContainers(#20046,#20036)
literals("args","args",#20046)
bind(#20046,#20038)
isMethod(#20033)
#20047=*
entry_cfg_node(#20047,#20001)
#20048=@"loc,{#10000},1,1,1,0"
@@ -176,29 +175,29 @@ locations_default(#20048,#10000,1,1,1,0)
hasLocation(#20047,#20048)
#20049=*
exit_cfg_node(#20049,#20001)
hasLocation(#20049,#20046)
successor(#20003,#20011)
successor(#20019,#20016)
hasLocation(#20049,#20021)
successor(#20022,#20030)
successor(#20036,#20033)
#20050=*
entry_cfg_node(#20050,#20019)
hasLocation(#20050,#20017)
entry_cfg_node(#20050,#20036)
hasLocation(#20050,#20034)
#20051=*
exit_cfg_node(#20051,#20019)
hasLocation(#20051,#20017)
successor(#20024,#20025)
successor(#20025,#20027)
successor(#20029,#20028)
successor(#20028,#20026)
successor(#20027,#20029)
successor(#20026,#20051)
successor(#20022,#20024)
successor(#20050,#20022)
successor(#20018,#20019)
successor(#20016,#20006)
successor(#20013,#20018)
successor(#20011,#20013)
successor(#20006,#20004)
successor(#20004,#20049)
successor(#20047,#20003)
exit_cfg_node(#20051,#20036)
hasLocation(#20051,#20034)
successor(#20041,#20042)
successor(#20042,#20044)
successor(#20046,#20045)
successor(#20045,#20043)
successor(#20044,#20046)
successor(#20043,#20051)
successor(#20039,#20041)
successor(#20050,#20039)
successor(#20035,#20036)
successor(#20033,#20025)
successor(#20031,#20035)
successor(#20030,#20031)
successor(#20025,#20023)
successor(#20023,#20049)
successor(#20047,#20022)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

File diff suppressed because it is too large Load Diff

View File

@@ -9,152 +9,152 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,15"
locations_default(#20002,#10000,1,1,1,15)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,3,#20001,0,"if(x,1+2,y||z);")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,10,#20003,0,"x,1+2,y||z")
#20005=@"loc,{#10000},1,4,1,13"
locations_default(#20005,#10000,1,4,1,13)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,79,#20004,0,"x")
#20007=@"loc,{#10000},1,4,1,4"
locations_default(#20007,#10000,1,4,1,4)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
literals("x","x",#20006)
#20008=@"var;{x};{#20000}"
variables(#20008,"x",#20000)
bind(#20006,#20008)
#20009=*
exprs(#20009,34,#20004,1,"1+2")
#20010=@"loc,{#10000},1,6,1,8"
locations_default(#20010,#10000,1,6,1,8)
hasLocation(#20009,#20010)
enclosingStmt(#20009,#20003)
exprContainers(#20009,#20001)
#20011=*
exprs(#20011,3,#20009,0,"1")
#20012=@"loc,{#10000},1,6,1,6"
locations_default(#20012,#10000,1,6,1,6)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20003)
exprContainers(#20011,#20001)
literals("1","1",#20011)
#20013=*
exprs(#20013,3,#20009,1,"2")
#20014=@"loc,{#10000},1,8,1,8"
locations_default(#20014,#10000,1,8,1,8)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
literals("2","2",#20013)
#20015=*
exprs(#20015,45,#20004,2,"y||z")
#20016=@"loc,{#10000},1,10,1,13"
locations_default(#20016,#10000,1,10,1,13)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20003)
exprContainers(#20015,#20001)
#20017=*
exprs(#20017,79,#20015,0,"y")
#20018=@"loc,{#10000},1,10,1,10"
locations_default(#20018,#10000,1,10,1,10)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20003)
exprContainers(#20017,#20001)
literals("y","y",#20017)
#20019=@"var;{y};{#20000}"
variables(#20019,"y",#20000)
bind(#20017,#20019)
#20020=*
exprs(#20020,79,#20015,1,"z")
#20021=@"loc,{#10000},1,13,1,13"
locations_default(#20021,#10000,1,13,1,13)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20003)
exprContainers(#20020,#20001)
literals("z","z",#20020)
#20022=@"var;{z};{#20000}"
variables(#20022,"z",#20000)
bind(#20020,#20022)
#20023=*
stmts(#20023,0,#20003,1,";")
#20024=@"loc,{#10000},1,15,1,15"
locations_default(#20024,#10000,1,15,1,15)
hasLocation(#20023,#20024)
stmtContainers(#20023,#20001)
#20025=*
lines(#20025,#20001,"if(x,1+2,y||z);","")
hasLocation(#20025,#20002)
#20002=*
lines(#20002,#20001,"if(x,1+2,y||z);","")
#20003=@"loc,{#10000},1,1,1,15"
locations_default(#20003,#10000,1,1,1,15)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"if")
#20005=@"loc,{#10000},1,1,1,2"
locations_default(#20005,#10000,1,1,1,2)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,8,#20001,1,"(")
#20007=@"loc,{#10000},1,3,1,3"
locations_default(#20007,#10000,1,3,1,3)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"x")
#20009=@"loc,{#10000},1,4,1,4"
locations_default(#20009,#10000,1,4,1,4)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,",")
#20011=@"loc,{#10000},1,5,1,5"
locations_default(#20011,#10000,1,5,1,5)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,3,#20001,4,"1")
#20013=@"loc,{#10000},1,6,1,6"
locations_default(#20013,#10000,1,6,1,6)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"+")
#20015=@"loc,{#10000},1,7,1,7"
locations_default(#20015,#10000,1,7,1,7)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,3,#20001,6,"2")
#20017=@"loc,{#10000},1,8,1,8"
locations_default(#20017,#10000,1,8,1,8)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,7,",")
#20019=@"loc,{#10000},1,9,1,9"
locations_default(#20019,#10000,1,9,1,9)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,6,#20001,8,"y")
#20021=@"loc,{#10000},1,10,1,10"
locations_default(#20021,#10000,1,10,1,10)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,9,"||")
#20023=@"loc,{#10000},1,11,1,12"
locations_default(#20023,#10000,1,11,1,12)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,10,"z")
#20025=@"loc,{#10000},1,13,1,13"
locations_default(#20025,#10000,1,13,1,13)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,7,#20001,0,"if")
#20027=@"loc,{#10000},1,1,1,2"
locations_default(#20027,#10000,1,1,1,2)
tokeninfo(#20026,8,#20001,11,")")
#20027=@"loc,{#10000},1,14,1,14"
locations_default(#20027,#10000,1,14,1,14)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,1,"(")
#20029=@"loc,{#10000},1,3,1,3"
locations_default(#20029,#10000,1,3,1,3)
tokeninfo(#20028,8,#20001,12,";")
#20029=@"loc,{#10000},1,15,1,15"
locations_default(#20029,#10000,1,15,1,15)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,6,#20001,2,"x")
hasLocation(#20030,#20007)
#20031=*
tokeninfo(#20031,8,#20001,3,",")
#20032=@"loc,{#10000},1,5,1,5"
locations_default(#20032,#10000,1,5,1,5)
hasLocation(#20031,#20032)
tokeninfo(#20030,0,#20001,13,"")
#20031=@"loc,{#10000},1,16,1,15"
locations_default(#20031,#10000,1,16,1,15)
hasLocation(#20030,#20031)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20032=*
stmts(#20032,3,#20001,0,"if(x,1+2,y||z);")
hasLocation(#20032,#20003)
stmtContainers(#20032,#20001)
#20033=*
tokeninfo(#20033,3,#20001,4,"1")
hasLocation(#20033,#20012)
#20034=*
tokeninfo(#20034,8,#20001,5,"+")
#20035=@"loc,{#10000},1,7,1,7"
locations_default(#20035,#10000,1,7,1,7)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,3,#20001,6,"2")
hasLocation(#20036,#20014)
exprs(#20033,10,#20032,0,"x,1+2,y||z")
#20034=@"loc,{#10000},1,4,1,13"
locations_default(#20034,#10000,1,4,1,13)
hasLocation(#20033,#20034)
enclosingStmt(#20033,#20032)
exprContainers(#20033,#20001)
#20035=*
exprs(#20035,79,#20033,0,"x")
hasLocation(#20035,#20009)
enclosingStmt(#20035,#20032)
exprContainers(#20035,#20001)
literals("x","x",#20035)
#20036=@"var;{x};{#20000}"
variables(#20036,"x",#20000)
bind(#20035,#20036)
#20037=*
tokeninfo(#20037,8,#20001,7,",")
#20038=@"loc,{#10000},1,9,1,9"
locations_default(#20038,#10000,1,9,1,9)
exprs(#20037,34,#20033,1,"1+2")
#20038=@"loc,{#10000},1,6,1,8"
locations_default(#20038,#10000,1,6,1,8)
hasLocation(#20037,#20038)
enclosingStmt(#20037,#20032)
exprContainers(#20037,#20001)
#20039=*
tokeninfo(#20039,6,#20001,8,"y")
hasLocation(#20039,#20018)
exprs(#20039,3,#20037,0,"1")
hasLocation(#20039,#20013)
enclosingStmt(#20039,#20032)
exprContainers(#20039,#20001)
literals("1","1",#20039)
#20040=*
tokeninfo(#20040,8,#20001,9,"||")
#20041=@"loc,{#10000},1,11,1,12"
locations_default(#20041,#10000,1,11,1,12)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,6,#20001,10,"z")
hasLocation(#20042,#20021)
exprs(#20040,3,#20037,1,"2")
hasLocation(#20040,#20017)
enclosingStmt(#20040,#20032)
exprContainers(#20040,#20001)
literals("2","2",#20040)
#20041=*
exprs(#20041,45,#20033,2,"y||z")
#20042=@"loc,{#10000},1,10,1,13"
locations_default(#20042,#10000,1,10,1,13)
hasLocation(#20041,#20042)
enclosingStmt(#20041,#20032)
exprContainers(#20041,#20001)
#20043=*
tokeninfo(#20043,8,#20001,11,")")
#20044=@"loc,{#10000},1,14,1,14"
locations_default(#20044,#10000,1,14,1,14)
hasLocation(#20043,#20044)
exprs(#20043,79,#20041,0,"y")
hasLocation(#20043,#20021)
enclosingStmt(#20043,#20032)
exprContainers(#20043,#20001)
literals("y","y",#20043)
#20044=@"var;{y};{#20000}"
variables(#20044,"y",#20000)
bind(#20043,#20044)
#20045=*
tokeninfo(#20045,8,#20001,12,";")
hasLocation(#20045,#20024)
#20046=*
tokeninfo(#20046,0,#20001,13,"")
#20047=@"loc,{#10000},1,16,1,15"
locations_default(#20047,#10000,1,16,1,15)
hasLocation(#20046,#20047)
exprs(#20045,79,#20041,1,"z")
hasLocation(#20045,#20025)
enclosingStmt(#20045,#20032)
exprContainers(#20045,#20001)
literals("z","z",#20045)
#20046=@"var;{z};{#20000}"
variables(#20046,"z",#20000)
bind(#20045,#20046)
#20047=*
stmts(#20047,0,#20032,1,";")
hasLocation(#20047,#20029)
stmtContainers(#20047,#20001)
#20048=*
entry_cfg_node(#20048,#20001)
#20049=@"loc,{#10000},1,1,1,0"
@@ -162,35 +162,35 @@ locations_default(#20049,#10000,1,1,1,0)
hasLocation(#20048,#20049)
#20050=*
exit_cfg_node(#20050,#20001)
hasLocation(#20050,#20047)
successor(#20003,#20004)
successor(#20004,#20006)
successor(#20015,#20017)
hasLocation(#20050,#20031)
successor(#20032,#20033)
successor(#20033,#20035)
successor(#20041,#20043)
#20051=*
guard_node(#20051,1,#20017)
hasLocation(#20051,#20018)
successor(#20051,#20023)
guard_node(#20051,1,#20043)
hasLocation(#20051,#20021)
successor(#20051,#20047)
#20052=*
guard_node(#20052,0,#20017)
hasLocation(#20052,#20018)
successor(#20052,#20020)
successor(#20017,#20051)
successor(#20017,#20052)
guard_node(#20052,0,#20043)
hasLocation(#20052,#20021)
successor(#20052,#20045)
successor(#20043,#20051)
successor(#20043,#20052)
#20053=*
guard_node(#20053,1,#20020)
hasLocation(#20053,#20021)
successor(#20053,#20023)
guard_node(#20053,1,#20045)
hasLocation(#20053,#20025)
successor(#20053,#20047)
#20054=*
guard_node(#20054,0,#20020)
hasLocation(#20054,#20021)
guard_node(#20054,0,#20045)
hasLocation(#20054,#20025)
successor(#20054,#20050)
successor(#20020,#20053)
successor(#20020,#20054)
successor(#20013,#20009)
successor(#20011,#20013)
successor(#20009,#20015)
successor(#20006,#20011)
successor(#20023,#20050)
successor(#20048,#20003)
successor(#20045,#20053)
successor(#20045,#20054)
successor(#20040,#20037)
successor(#20039,#20040)
successor(#20037,#20041)
successor(#20035,#20039)
successor(#20047,#20050)
successor(#20048,#20032)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,177 +9,177 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,12"
locations_default(#20002,#10000,1,1,2,12)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"a && b && c;")
#20004=@"loc,{#10000},1,1,1,12"
locations_default(#20004,#10000,1,1,1,12)
hasLocation(#20003,#20004)
stmtContainers(#20003,#20001)
#20005=*
exprs(#20005,44,#20003,0,"a && b && c")
#20006=@"loc,{#10000},1,1,1,11"
locations_default(#20006,#10000,1,1,1,11)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20003)
exprContainers(#20005,#20001)
#20007=*
exprs(#20007,44,#20005,0,"a && b")
#20008=@"loc,{#10000},1,1,1,6"
locations_default(#20008,#10000,1,1,1,6)
hasLocation(#20007,#20008)
enclosingStmt(#20007,#20003)
exprContainers(#20007,#20001)
#20009=*
exprs(#20009,79,#20007,0,"a")
#20010=@"loc,{#10000},1,1,1,1"
locations_default(#20010,#10000,1,1,1,1)
hasLocation(#20009,#20010)
enclosingStmt(#20009,#20003)
exprContainers(#20009,#20001)
literals("a","a",#20009)
#20011=@"var;{a};{#20000}"
variables(#20011,"a",#20000)
bind(#20009,#20011)
#20012=*
exprs(#20012,79,#20007,1,"b")
#20013=@"loc,{#10000},1,6,1,6"
locations_default(#20013,#10000,1,6,1,6)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20003)
exprContainers(#20012,#20001)
literals("b","b",#20012)
#20014=@"var;{b};{#20000}"
variables(#20014,"b",#20000)
bind(#20012,#20014)
#20015=*
exprs(#20015,79,#20005,1,"c")
#20016=@"loc,{#10000},1,11,1,11"
locations_default(#20016,#10000,1,11,1,11)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20003)
exprContainers(#20015,#20001)
literals("c","c",#20015)
#20017=@"var;{c};{#20000}"
variables(#20017,"c",#20000)
bind(#20015,#20017)
#20018=*
stmts(#20018,2,#20001,1,"x || y || z;")
#20019=@"loc,{#10000},2,1,2,12"
locations_default(#20019,#10000,2,1,2,12)
hasLocation(#20018,#20019)
stmtContainers(#20018,#20001)
#20020=*
exprs(#20020,45,#20018,0,"x || y || z")
#20021=@"loc,{#10000},2,1,2,11"
locations_default(#20021,#10000,2,1,2,11)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20018)
exprContainers(#20020,#20001)
#20022=*
exprs(#20022,45,#20020,0,"x || y")
#20023=@"loc,{#10000},2,1,2,6"
locations_default(#20023,#10000,2,1,2,6)
hasLocation(#20022,#20023)
enclosingStmt(#20022,#20018)
exprContainers(#20022,#20001)
#20024=*
exprs(#20024,79,#20022,0,"x")
#20025=@"loc,{#10000},2,1,2,1"
locations_default(#20025,#10000,2,1,2,1)
hasLocation(#20024,#20025)
enclosingStmt(#20024,#20018)
exprContainers(#20024,#20001)
literals("x","x",#20024)
#20026=@"var;{x};{#20000}"
variables(#20026,"x",#20000)
bind(#20024,#20026)
#20027=*
exprs(#20027,79,#20022,1,"y")
#20028=@"loc,{#10000},2,6,2,6"
locations_default(#20028,#10000,2,6,2,6)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20018)
exprContainers(#20027,#20001)
literals("y","y",#20027)
#20029=@"var;{y};{#20000}"
variables(#20029,"y",#20000)
bind(#20027,#20029)
#20030=*
exprs(#20030,79,#20020,1,"z")
#20031=@"loc,{#10000},2,11,2,11"
locations_default(#20031,#10000,2,11,2,11)
hasLocation(#20030,#20031)
enclosingStmt(#20030,#20018)
exprContainers(#20030,#20001)
literals("z","z",#20030)
#20032=@"var;{z};{#20000}"
variables(#20032,"z",#20000)
bind(#20030,#20032)
#20033=*
lines(#20033,#20001,"a && b && c;","
#20002=*
lines(#20002,#20001,"a && b && c;","
")
hasLocation(#20033,#20004)
#20034=*
lines(#20034,#20001,"x || y || z;","")
hasLocation(#20034,#20019)
#20003=@"loc,{#10000},1,1,1,12"
locations_default(#20003,#10000,1,1,1,12)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001,"x || y || z;","")
#20005=@"loc,{#10000},2,1,2,12"
locations_default(#20005,#10000,2,1,2,12)
hasLocation(#20004,#20005)
numlines(#20001,2,2,0)
#20035=*
tokeninfo(#20035,6,#20001,0,"a")
hasLocation(#20035,#20010)
#20006=*
tokeninfo(#20006,6,#20001,0,"a")
#20007=@"loc,{#10000},1,1,1,1"
locations_default(#20007,#10000,1,1,1,1)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,1,"&&")
#20009=@"loc,{#10000},1,3,1,4"
locations_default(#20009,#10000,1,3,1,4)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,2,"b")
#20011=@"loc,{#10000},1,6,1,6"
locations_default(#20011,#10000,1,6,1,6)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,3,"&&")
#20013=@"loc,{#10000},1,8,1,9"
locations_default(#20013,#10000,1,8,1,9)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,4,"c")
#20015=@"loc,{#10000},1,11,1,11"
locations_default(#20015,#10000,1,11,1,11)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,5,";")
#20017=@"loc,{#10000},1,12,1,12"
locations_default(#20017,#10000,1,12,1,12)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,6,"x")
#20019=@"loc,{#10000},2,1,2,1"
locations_default(#20019,#10000,2,1,2,1)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,7,"||")
#20021=@"loc,{#10000},2,3,2,4"
locations_default(#20021,#10000,2,3,2,4)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,8,"y")
#20023=@"loc,{#10000},2,6,2,6"
locations_default(#20023,#10000,2,6,2,6)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,8,#20001,9,"||")
#20025=@"loc,{#10000},2,8,2,9"
locations_default(#20025,#10000,2,8,2,9)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,6,#20001,10,"z")
#20027=@"loc,{#10000},2,11,2,11"
locations_default(#20027,#10000,2,11,2,11)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,11,";")
#20029=@"loc,{#10000},2,12,2,12"
locations_default(#20029,#10000,2,12,2,12)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,0,#20001,12,"")
#20031=@"loc,{#10000},2,13,2,12"
locations_default(#20031,#10000,2,13,2,12)
hasLocation(#20030,#20031)
toplevels(#20001,0)
#20032=@"loc,{#10000},1,1,2,12"
locations_default(#20032,#10000,1,1,2,12)
hasLocation(#20001,#20032)
#20033=*
stmts(#20033,2,#20001,0,"a && b && c;")
hasLocation(#20033,#20003)
stmtContainers(#20033,#20001)
#20034=*
exprs(#20034,44,#20033,0,"a && b && c")
#20035=@"loc,{#10000},1,1,1,11"
locations_default(#20035,#10000,1,1,1,11)
hasLocation(#20034,#20035)
enclosingStmt(#20034,#20033)
exprContainers(#20034,#20001)
#20036=*
tokeninfo(#20036,8,#20001,1,"&&")
#20037=@"loc,{#10000},1,3,1,4"
locations_default(#20037,#10000,1,3,1,4)
exprs(#20036,44,#20034,0,"a && b")
#20037=@"loc,{#10000},1,1,1,6"
locations_default(#20037,#10000,1,1,1,6)
hasLocation(#20036,#20037)
enclosingStmt(#20036,#20033)
exprContainers(#20036,#20001)
#20038=*
tokeninfo(#20038,6,#20001,2,"b")
hasLocation(#20038,#20013)
#20039=*
tokeninfo(#20039,8,#20001,3,"&&")
#20040=@"loc,{#10000},1,8,1,9"
locations_default(#20040,#10000,1,8,1,9)
hasLocation(#20039,#20040)
#20041=*
tokeninfo(#20041,6,#20001,4,"c")
hasLocation(#20041,#20016)
exprs(#20038,79,#20036,0,"a")
hasLocation(#20038,#20007)
enclosingStmt(#20038,#20033)
exprContainers(#20038,#20001)
literals("a","a",#20038)
#20039=@"var;{a};{#20000}"
variables(#20039,"a",#20000)
bind(#20038,#20039)
#20040=*
exprs(#20040,79,#20036,1,"b")
hasLocation(#20040,#20011)
enclosingStmt(#20040,#20033)
exprContainers(#20040,#20001)
literals("b","b",#20040)
#20041=@"var;{b};{#20000}"
variables(#20041,"b",#20000)
bind(#20040,#20041)
#20042=*
tokeninfo(#20042,8,#20001,5,";")
#20043=@"loc,{#10000},1,12,1,12"
locations_default(#20043,#10000,1,12,1,12)
hasLocation(#20042,#20043)
exprs(#20042,79,#20034,1,"c")
hasLocation(#20042,#20015)
enclosingStmt(#20042,#20033)
exprContainers(#20042,#20001)
literals("c","c",#20042)
#20043=@"var;{c};{#20000}"
variables(#20043,"c",#20000)
bind(#20042,#20043)
#20044=*
tokeninfo(#20044,6,#20001,6,"x")
hasLocation(#20044,#20025)
stmts(#20044,2,#20001,1,"x || y || z;")
hasLocation(#20044,#20005)
stmtContainers(#20044,#20001)
#20045=*
tokeninfo(#20045,8,#20001,7,"||")
#20046=@"loc,{#10000},2,3,2,4"
locations_default(#20046,#10000,2,3,2,4)
exprs(#20045,45,#20044,0,"x || y || z")
#20046=@"loc,{#10000},2,1,2,11"
locations_default(#20046,#10000,2,1,2,11)
hasLocation(#20045,#20046)
enclosingStmt(#20045,#20044)
exprContainers(#20045,#20001)
#20047=*
tokeninfo(#20047,6,#20001,8,"y")
hasLocation(#20047,#20028)
#20048=*
tokeninfo(#20048,8,#20001,9,"||")
#20049=@"loc,{#10000},2,8,2,9"
locations_default(#20049,#10000,2,8,2,9)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,6,#20001,10,"z")
hasLocation(#20050,#20031)
exprs(#20047,45,#20045,0,"x || y")
#20048=@"loc,{#10000},2,1,2,6"
locations_default(#20048,#10000,2,1,2,6)
hasLocation(#20047,#20048)
enclosingStmt(#20047,#20044)
exprContainers(#20047,#20001)
#20049=*
exprs(#20049,79,#20047,0,"x")
hasLocation(#20049,#20019)
enclosingStmt(#20049,#20044)
exprContainers(#20049,#20001)
literals("x","x",#20049)
#20050=@"var;{x};{#20000}"
variables(#20050,"x",#20000)
bind(#20049,#20050)
#20051=*
tokeninfo(#20051,8,#20001,11,";")
#20052=@"loc,{#10000},2,12,2,12"
locations_default(#20052,#10000,2,12,2,12)
hasLocation(#20051,#20052)
exprs(#20051,79,#20047,1,"y")
hasLocation(#20051,#20023)
enclosingStmt(#20051,#20044)
exprContainers(#20051,#20001)
literals("y","y",#20051)
#20052=@"var;{y};{#20000}"
variables(#20052,"y",#20000)
bind(#20051,#20052)
#20053=*
tokeninfo(#20053,0,#20001,12,"")
#20054=@"loc,{#10000},2,13,2,12"
locations_default(#20054,#10000,2,13,2,12)
hasLocation(#20053,#20054)
exprs(#20053,79,#20045,1,"z")
hasLocation(#20053,#20027)
enclosingStmt(#20053,#20044)
exprContainers(#20053,#20001)
literals("z","z",#20053)
#20054=@"var;{z};{#20000}"
variables(#20054,"z",#20000)
bind(#20053,#20054)
#20055=*
entry_cfg_node(#20055,#20001)
#20056=@"loc,{#10000},1,1,1,0"
@@ -187,55 +187,55 @@ locations_default(#20056,#10000,1,1,1,0)
hasLocation(#20055,#20056)
#20057=*
exit_cfg_node(#20057,#20001)
hasLocation(#20057,#20054)
successor(#20018,#20020)
successor(#20020,#20022)
successor(#20022,#20024)
hasLocation(#20057,#20031)
successor(#20044,#20045)
successor(#20045,#20047)
successor(#20047,#20049)
#20058=*
guard_node(#20058,1,#20024)
hasLocation(#20058,#20025)
guard_node(#20058,1,#20049)
hasLocation(#20058,#20019)
successor(#20058,#20057)
#20059=*
guard_node(#20059,0,#20024)
hasLocation(#20059,#20025)
successor(#20059,#20027)
successor(#20024,#20058)
successor(#20024,#20059)
guard_node(#20059,0,#20049)
hasLocation(#20059,#20019)
successor(#20059,#20051)
successor(#20049,#20058)
successor(#20049,#20059)
#20060=*
guard_node(#20060,1,#20027)
hasLocation(#20060,#20028)
guard_node(#20060,1,#20051)
hasLocation(#20060,#20023)
successor(#20060,#20057)
#20061=*
guard_node(#20061,0,#20027)
hasLocation(#20061,#20028)
successor(#20061,#20030)
successor(#20027,#20060)
successor(#20027,#20061)
successor(#20030,#20057)
successor(#20003,#20005)
successor(#20005,#20007)
successor(#20007,#20009)
guard_node(#20061,0,#20051)
hasLocation(#20061,#20023)
successor(#20061,#20053)
successor(#20051,#20060)
successor(#20051,#20061)
successor(#20053,#20057)
successor(#20033,#20034)
successor(#20034,#20036)
successor(#20036,#20038)
#20062=*
guard_node(#20062,1,#20009)
hasLocation(#20062,#20010)
successor(#20062,#20012)
guard_node(#20062,1,#20038)
hasLocation(#20062,#20007)
successor(#20062,#20040)
#20063=*
guard_node(#20063,0,#20009)
hasLocation(#20063,#20010)
successor(#20063,#20018)
successor(#20009,#20062)
successor(#20009,#20063)
guard_node(#20063,0,#20038)
hasLocation(#20063,#20007)
successor(#20063,#20044)
successor(#20038,#20062)
successor(#20038,#20063)
#20064=*
guard_node(#20064,1,#20012)
hasLocation(#20064,#20013)
successor(#20064,#20015)
guard_node(#20064,1,#20040)
hasLocation(#20064,#20011)
successor(#20064,#20042)
#20065=*
guard_node(#20065,0,#20012)
hasLocation(#20065,#20013)
successor(#20065,#20018)
successor(#20012,#20064)
successor(#20012,#20065)
successor(#20015,#20018)
successor(#20055,#20003)
guard_node(#20065,0,#20040)
hasLocation(#20065,#20011)
successor(#20065,#20044)
successor(#20040,#20064)
successor(#20040,#20065)
successor(#20042,#20044)
successor(#20055,#20033)
numlines(#10000,2,2,0)
filetype(#10000,"javascript")

View File

@@ -9,156 +9,156 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,22"
locations_default(#20002,#10000,1,1,1,22)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"(a ? b ... ) || e;")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20002=*
lines(#20002,#20001,"(a ? b || c : d) || e;","")
#20003=@"loc,{#10000},1,1,1,22"
locations_default(#20003,#10000,1,1,1,22)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
exprs(#20004,45,#20003,0,"(a ? b ... d) || e")
#20005=@"loc,{#10000},1,1,1,21"
locations_default(#20005,#10000,1,1,1,21)
tokeninfo(#20004,8,#20001,0,"(")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,63,#20004,0,"(a ? b || c : d)")
#20007=@"loc,{#10000},1,1,1,16"
locations_default(#20007,#10000,1,1,1,16)
tokeninfo(#20006,6,#20001,1,"a")
#20007=@"loc,{#10000},1,2,1,2"
locations_default(#20007,#10000,1,2,1,2)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,11,#20006,0,"a ? b || c : d")
#20009=@"loc,{#10000},1,2,1,15"
locations_default(#20009,#10000,1,2,1,15)
tokeninfo(#20008,8,#20001,2,"?")
#20009=@"loc,{#10000},1,4,1,4"
locations_default(#20009,#10000,1,4,1,4)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
#20010=*
exprs(#20010,79,#20008,0,"a")
#20011=@"loc,{#10000},1,2,1,2"
locations_default(#20011,#10000,1,2,1,2)
tokeninfo(#20010,6,#20001,3,"b")
#20011=@"loc,{#10000},1,6,1,6"
locations_default(#20011,#10000,1,6,1,6)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20003)
exprContainers(#20010,#20001)
literals("a","a",#20010)
#20012=@"var;{a};{#20000}"
variables(#20012,"a",#20000)
bind(#20010,#20012)
#20013=*
exprs(#20013,45,#20008,1,"b || c")
#20014=@"loc,{#10000},1,6,1,11"
locations_default(#20014,#10000,1,6,1,11)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
#20015=*
exprs(#20015,79,#20013,0,"b")
#20016=@"loc,{#10000},1,6,1,6"
locations_default(#20016,#10000,1,6,1,6)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20003)
exprContainers(#20015,#20001)
literals("b","b",#20015)
#20017=@"var;{b};{#20000}"
variables(#20017,"b",#20000)
bind(#20015,#20017)
#20012=*
tokeninfo(#20012,8,#20001,4,"||")
#20013=@"loc,{#10000},1,8,1,9"
locations_default(#20013,#10000,1,8,1,9)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,5,"c")
#20015=@"loc,{#10000},1,11,1,11"
locations_default(#20015,#10000,1,11,1,11)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,":")
#20017=@"loc,{#10000},1,13,1,13"
locations_default(#20017,#10000,1,13,1,13)
hasLocation(#20016,#20017)
#20018=*
exprs(#20018,79,#20013,1,"c")
#20019=@"loc,{#10000},1,11,1,11"
locations_default(#20019,#10000,1,11,1,11)
tokeninfo(#20018,6,#20001,7,"d")
#20019=@"loc,{#10000},1,15,1,15"
locations_default(#20019,#10000,1,15,1,15)
hasLocation(#20018,#20019)
enclosingStmt(#20018,#20003)
exprContainers(#20018,#20001)
literals("c","c",#20018)
#20020=@"var;{c};{#20000}"
variables(#20020,"c",#20000)
bind(#20018,#20020)
#20021=*
exprs(#20021,79,#20008,2,"d")
#20022=@"loc,{#10000},1,15,1,15"
locations_default(#20022,#10000,1,15,1,15)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20003)
exprContainers(#20021,#20001)
literals("d","d",#20021)
#20023=@"var;{d};{#20000}"
variables(#20023,"d",#20000)
bind(#20021,#20023)
#20020=*
tokeninfo(#20020,8,#20001,8,")")
#20021=@"loc,{#10000},1,16,1,16"
locations_default(#20021,#10000,1,16,1,16)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,9,"||")
#20023=@"loc,{#10000},1,18,1,19"
locations_default(#20023,#10000,1,18,1,19)
hasLocation(#20022,#20023)
#20024=*
exprs(#20024,79,#20004,1,"e")
tokeninfo(#20024,6,#20001,10,"e")
#20025=@"loc,{#10000},1,21,1,21"
locations_default(#20025,#10000,1,21,1,21)
hasLocation(#20024,#20025)
enclosingStmt(#20024,#20003)
exprContainers(#20024,#20001)
literals("e","e",#20024)
#20026=@"var;{e};{#20000}"
variables(#20026,"e",#20000)
bind(#20024,#20026)
#20027=*
lines(#20027,#20001,"(a ? b || c : d) || e;","")
hasLocation(#20027,#20002)
numlines(#20001,1,1,0)
#20026=*
tokeninfo(#20026,8,#20001,11,";")
#20027=@"loc,{#10000},1,22,1,22"
locations_default(#20027,#10000,1,22,1,22)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,0,"(")
#20029=@"loc,{#10000},1,1,1,1"
locations_default(#20029,#10000,1,1,1,1)
tokeninfo(#20028,0,#20001,12,"")
#20029=@"loc,{#10000},1,23,1,22"
locations_default(#20029,#10000,1,23,1,22)
hasLocation(#20028,#20029)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20030=*
tokeninfo(#20030,6,#20001,1,"a")
hasLocation(#20030,#20011)
stmts(#20030,2,#20001,0,"(a ? b ... ) || e;")
hasLocation(#20030,#20003)
stmtContainers(#20030,#20001)
#20031=*
tokeninfo(#20031,8,#20001,2,"?")
#20032=@"loc,{#10000},1,4,1,4"
locations_default(#20032,#10000,1,4,1,4)
exprs(#20031,45,#20030,0,"(a ? b ... d) || e")
#20032=@"loc,{#10000},1,1,1,21"
locations_default(#20032,#10000,1,1,1,21)
hasLocation(#20031,#20032)
enclosingStmt(#20031,#20030)
exprContainers(#20031,#20001)
#20033=*
tokeninfo(#20033,6,#20001,3,"b")
hasLocation(#20033,#20016)
#20034=*
tokeninfo(#20034,8,#20001,4,"||")
#20035=@"loc,{#10000},1,8,1,9"
locations_default(#20035,#10000,1,8,1,9)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,6,#20001,5,"c")
hasLocation(#20036,#20019)
exprs(#20033,63,#20031,0,"(a ? b || c : d)")
#20034=@"loc,{#10000},1,1,1,16"
locations_default(#20034,#10000,1,1,1,16)
hasLocation(#20033,#20034)
enclosingStmt(#20033,#20030)
exprContainers(#20033,#20001)
#20035=*
exprs(#20035,11,#20033,0,"a ? b || c : d")
#20036=@"loc,{#10000},1,2,1,15"
locations_default(#20036,#10000,1,2,1,15)
hasLocation(#20035,#20036)
enclosingStmt(#20035,#20030)
exprContainers(#20035,#20001)
#20037=*
tokeninfo(#20037,8,#20001,6,":")
#20038=@"loc,{#10000},1,13,1,13"
locations_default(#20038,#10000,1,13,1,13)
hasLocation(#20037,#20038)
exprs(#20037,79,#20035,0,"a")
hasLocation(#20037,#20007)
enclosingStmt(#20037,#20030)
exprContainers(#20037,#20001)
literals("a","a",#20037)
#20038=@"var;{a};{#20000}"
variables(#20038,"a",#20000)
bind(#20037,#20038)
#20039=*
tokeninfo(#20039,6,#20001,7,"d")
hasLocation(#20039,#20022)
#20040=*
tokeninfo(#20040,8,#20001,8,")")
#20041=@"loc,{#10000},1,16,1,16"
locations_default(#20041,#10000,1,16,1,16)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,8,#20001,9,"||")
#20043=@"loc,{#10000},1,18,1,19"
locations_default(#20043,#10000,1,18,1,19)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,6,#20001,10,"e")
hasLocation(#20044,#20025)
exprs(#20039,45,#20035,1,"b || c")
#20040=@"loc,{#10000},1,6,1,11"
locations_default(#20040,#10000,1,6,1,11)
hasLocation(#20039,#20040)
enclosingStmt(#20039,#20030)
exprContainers(#20039,#20001)
#20041=*
exprs(#20041,79,#20039,0,"b")
hasLocation(#20041,#20011)
enclosingStmt(#20041,#20030)
exprContainers(#20041,#20001)
literals("b","b",#20041)
#20042=@"var;{b};{#20000}"
variables(#20042,"b",#20000)
bind(#20041,#20042)
#20043=*
exprs(#20043,79,#20039,1,"c")
hasLocation(#20043,#20015)
enclosingStmt(#20043,#20030)
exprContainers(#20043,#20001)
literals("c","c",#20043)
#20044=@"var;{c};{#20000}"
variables(#20044,"c",#20000)
bind(#20043,#20044)
#20045=*
tokeninfo(#20045,8,#20001,11,";")
#20046=@"loc,{#10000},1,22,1,22"
locations_default(#20046,#10000,1,22,1,22)
hasLocation(#20045,#20046)
exprs(#20045,79,#20035,2,"d")
hasLocation(#20045,#20019)
enclosingStmt(#20045,#20030)
exprContainers(#20045,#20001)
literals("d","d",#20045)
#20046=@"var;{d};{#20000}"
variables(#20046,"d",#20000)
bind(#20045,#20046)
#20047=*
tokeninfo(#20047,0,#20001,12,"")
#20048=@"loc,{#10000},1,23,1,22"
locations_default(#20048,#10000,1,23,1,22)
hasLocation(#20047,#20048)
exprs(#20047,79,#20031,1,"e")
hasLocation(#20047,#20025)
enclosingStmt(#20047,#20030)
exprContainers(#20047,#20001)
literals("e","e",#20047)
#20048=@"var;{e};{#20000}"
variables(#20048,"e",#20000)
bind(#20047,#20048)
#20049=*
entry_cfg_node(#20049,#20001)
#20050=@"loc,{#10000},1,1,1,0"
@@ -166,53 +166,53 @@ locations_default(#20050,#10000,1,1,1,0)
hasLocation(#20049,#20050)
#20051=*
exit_cfg_node(#20051,#20001)
hasLocation(#20051,#20048)
successor(#20003,#20004)
successor(#20004,#20006)
successor(#20006,#20008)
successor(#20008,#20010)
hasLocation(#20051,#20029)
successor(#20030,#20031)
successor(#20031,#20033)
successor(#20033,#20035)
successor(#20035,#20037)
#20052=*
guard_node(#20052,1,#20010)
hasLocation(#20052,#20011)
successor(#20052,#20013)
guard_node(#20052,1,#20037)
hasLocation(#20052,#20007)
successor(#20052,#20039)
#20053=*
guard_node(#20053,0,#20010)
hasLocation(#20053,#20011)
successor(#20053,#20021)
successor(#20010,#20052)
successor(#20010,#20053)
successor(#20013,#20015)
guard_node(#20053,0,#20037)
hasLocation(#20053,#20007)
successor(#20053,#20045)
successor(#20037,#20052)
successor(#20037,#20053)
successor(#20039,#20041)
#20054=*
guard_node(#20054,1,#20015)
hasLocation(#20054,#20016)
guard_node(#20054,1,#20041)
hasLocation(#20054,#20011)
successor(#20054,#20051)
#20055=*
guard_node(#20055,0,#20015)
hasLocation(#20055,#20016)
successor(#20055,#20018)
successor(#20015,#20054)
successor(#20015,#20055)
guard_node(#20055,0,#20041)
hasLocation(#20055,#20011)
successor(#20055,#20043)
successor(#20041,#20054)
successor(#20041,#20055)
#20056=*
guard_node(#20056,1,#20018)
hasLocation(#20056,#20019)
guard_node(#20056,1,#20043)
hasLocation(#20056,#20015)
successor(#20056,#20051)
#20057=*
guard_node(#20057,0,#20018)
hasLocation(#20057,#20019)
successor(#20057,#20024)
successor(#20018,#20056)
successor(#20018,#20057)
guard_node(#20057,0,#20043)
hasLocation(#20057,#20015)
successor(#20057,#20047)
successor(#20043,#20056)
successor(#20043,#20057)
#20058=*
guard_node(#20058,1,#20021)
hasLocation(#20058,#20022)
guard_node(#20058,1,#20045)
hasLocation(#20058,#20019)
successor(#20058,#20051)
#20059=*
guard_node(#20059,0,#20021)
hasLocation(#20059,#20022)
successor(#20059,#20024)
successor(#20021,#20058)
successor(#20021,#20059)
successor(#20024,#20051)
successor(#20049,#20003)
guard_node(#20059,0,#20045)
hasLocation(#20059,#20019)
successor(#20059,#20047)
successor(#20045,#20058)
successor(#20045,#20059)
successor(#20047,#20051)
successor(#20049,#20030)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

File diff suppressed because it is too large Load Diff

View File

@@ -9,75 +9,76 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,5,24"
locations_default(#20002,#10000,1,1,5,24)
hasLocation(#20001,#20002)
#20003=*
comments(#20003,0,#20001," line comment","// line comment")
#20004=@"loc,{#10000},1,1,1,15"
locations_default(#20004,#10000,1,1,1,15)
hasLocation(#20003,#20004)
#20005=*
comments(#20005,1,#20001," block comment ","/* block comment */")
#20006=@"loc,{#10000},2,1,2,19"
locations_default(#20006,#10000,2,1,2,19)
hasLocation(#20005,#20006)
#20007=*
comments(#20007,2,#20001," doc comment ","/** doc comment */")
#20008=@"loc,{#10000},3,1,3,18"
locations_default(#20008,#10000,3,1,3,18)
hasLocation(#20007,#20008)
#20009=*
comments(#20009,3,#20001," an HTML comment","<!-- an HTML comment")
#20010=@"loc,{#10000},4,1,4,20"
locations_default(#20010,#10000,4,1,4,20)
hasLocation(#20009,#20010)
#20011=*
comments(#20011,4,#20001," another HTML comment","--> ano ... comment")
#20012=@"loc,{#10000},5,1,5,24"
locations_default(#20012,#10000,5,1,5,24)
hasLocation(#20011,#20012)
#20002=*
comments(#20002,0,#20001," line comment","// line comment")
#20003=@"loc,{#10000},1,1,1,15"
locations_default(#20003,#10000,1,1,1,15)
hasLocation(#20002,#20003)
#20004=*
comments(#20004,1,#20001," block comment ","/* block comment */")
#20005=@"loc,{#10000},2,1,2,19"
locations_default(#20005,#10000,2,1,2,19)
hasLocation(#20004,#20005)
#20006=*
comments(#20006,2,#20001," doc comment ","/** doc comment */")
#20007=@"loc,{#10000},3,1,3,18"
locations_default(#20007,#10000,3,1,3,18)
hasLocation(#20006,#20007)
#20008=*
comments(#20008,3,#20001," an HTML comment","<!-- an HTML comment")
#20009=@"loc,{#10000},4,1,4,20"
locations_default(#20009,#10000,4,1,4,20)
hasLocation(#20008,#20009)
#20010=*
comments(#20010,4,#20001," another HTML comment","--> ano ... comment")
#20011=@"loc,{#10000},5,1,5,24"
locations_default(#20011,#10000,5,1,5,24)
hasLocation(#20010,#20011)
#20012=*
lines(#20012,#20001,"// line comment","
")
hasLocation(#20012,#20003)
#20013=*
lines(#20013,#20001,"// line comment","
lines(#20013,#20001,"/* block comment */","
")
hasLocation(#20013,#20004)
hasLocation(#20013,#20005)
#20014=*
lines(#20014,#20001,"/* block comment */","
lines(#20014,#20001,"/** doc comment */","
")
hasLocation(#20014,#20006)
hasLocation(#20014,#20007)
#20015=*
lines(#20015,#20001,"/** doc comment */","
lines(#20015,#20001,"<!-- an HTML comment","
")
hasLocation(#20015,#20008)
hasLocation(#20015,#20009)
#20016=*
lines(#20016,#20001,"<!-- an HTML comment","
")
hasLocation(#20016,#20010)
#20017=*
lines(#20017,#20001,"--> another HTML comment","")
hasLocation(#20017,#20012)
lines(#20016,#20001,"--> another HTML comment","")
hasLocation(#20016,#20011)
numlines(#20001,5,0,5)
#20018=*
tokeninfo(#20018,0,#20001,0,"")
#20019=@"loc,{#10000},5,25,5,24"
locations_default(#20019,#10000,5,25,5,24)
hasLocation(#20018,#20019)
next_token(#20003,#20018)
next_token(#20005,#20018)
next_token(#20007,#20018)
next_token(#20009,#20018)
#20020=*
entry_cfg_node(#20020,#20001)
#20021=@"loc,{#10000},1,1,1,0"
locations_default(#20021,#10000,1,1,1,0)
hasLocation(#20020,#20021)
#20022=*
exit_cfg_node(#20022,#20001)
hasLocation(#20022,#20019)
successor(#20020,#20022)
#20017=*
tokeninfo(#20017,0,#20001,0,"")
#20018=@"loc,{#10000},5,25,5,24"
locations_default(#20018,#10000,5,25,5,24)
hasLocation(#20017,#20018)
next_token(#20002,#20017)
next_token(#20004,#20017)
next_token(#20006,#20017)
next_token(#20008,#20017)
next_token(#20010,#20017)
#20019=*
jsdoc(#20019,"doc comment",#20006)
hasLocation(#20019,#20007)
toplevels(#20001,0)
#20020=@"loc,{#10000},1,1,5,24"
locations_default(#20020,#10000,1,1,5,24)
hasLocation(#20001,#20020)
#20021=*
entry_cfg_node(#20021,#20001)
#20022=@"loc,{#10000},1,1,1,0"
locations_default(#20022,#10000,1,1,1,0)
hasLocation(#20021,#20022)
#20023=*
jsdoc(#20023,"doc comment",#20007)
hasLocation(#20023,#20008)
exit_cfg_node(#20023,#20001)
hasLocation(#20023,#20018)
successor(#20021,#20023)
numlines(#10000,5,0,5)
filetype(#10000,"javascript")

View File

@@ -9,26 +9,26 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=*
comments(#20003,1,#20001,"","/**/")
#20004=@"loc,{#10000},1,1,1,4"
locations_default(#20004,#10000,1,1,1,4)
hasLocation(#20003,#20004)
#20005=*
lines(#20005,#20001,"/**/","
#20002=*
comments(#20002,1,#20001,"","/**/")
#20003=@"loc,{#10000},1,1,1,4"
locations_default(#20003,#10000,1,1,1,4)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001,"/**/","
")
hasLocation(#20005,#20004)
hasLocation(#20004,#20003)
numlines(#20001,1,0,1)
#20006=*
tokeninfo(#20006,0,#20001,0,"")
#20007=@"loc,{#10000},2,1,2,0"
locations_default(#20007,#10000,2,1,2,0)
hasLocation(#20006,#20007)
next_token(#20003,#20006)
#20005=*
tokeninfo(#20005,0,#20001,0,"")
#20006=@"loc,{#10000},2,1,2,0"
locations_default(#20006,#10000,2,1,2,0)
hasLocation(#20005,#20006)
next_token(#20002,#20005)
toplevels(#20001,0)
#20007=@"loc,{#10000},1,1,2,0"
locations_default(#20007,#10000,1,1,2,0)
hasLocation(#20001,#20007)
#20008=*
entry_cfg_node(#20008,#20001)
#20009=@"loc,{#10000},1,1,1,0"
@@ -36,7 +36,7 @@ locations_default(#20009,#10000,1,1,1,0)
hasLocation(#20008,#20009)
#20010=*
exit_cfg_node(#20010,#20001)
hasLocation(#20010,#20007)
hasLocation(#20010,#20006)
successor(#20008,#20010)
numlines(#10000,1,0,1)
filetype(#10000,"javascript")

File diff suppressed because it is too large Load Diff

View File

@@ -9,109 +9,108 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=@"var;{f};{#20000}"
variables(#20003,"f",#20000)
#20002=*
lines(#20002,#20001,"function f(ä, ö) {}","
")
#20003=@"loc,{#10000},1,1,1,19"
locations_default(#20003,#10000,1,1,1,19)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
stmts(#20004,17,#20001,0,"function f(\u00e4, \u00f6) {}")
#20005=@"loc,{#10000},1,1,1,19"
locations_default(#20005,#10000,1,1,1,19)
tokeninfo(#20004,7,#20001,0,"function")
#20005=@"loc,{#10000},1,1,1,8"
locations_default(#20005,#10000,1,1,1,8)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,78,#20004,-1,"f")
tokeninfo(#20006,6,#20001,1,"f")
#20007=@"loc,{#10000},1,10,1,10"
locations_default(#20007,#10000,1,10,1,10)
hasLocation(#20006,#20007)
exprContainers(#20006,#20004)
literals("f","f",#20006)
decl(#20006,#20003)
#20008=*
scopes(#20008,1)
scopenodes(#20004,#20008)
scopenesting(#20008,#20000)
#20009=@"var;{ä};{#20008}"
variables(#20009,"ä",#20008)
tokeninfo(#20008,8,#20001,2,"(")
#20009=@"loc,{#10000},1,11,1,11"
locations_default(#20009,#10000,1,11,1,11)
hasLocation(#20008,#20009)
#20010=*
exprs(#20010,78,#20004,0,"\u00e4")
tokeninfo(#20010,6,#20001,3,"ä")
#20011=@"loc,{#10000},1,12,1,12"
locations_default(#20011,#10000,1,12,1,12)
hasLocation(#20010,#20011)
exprContainers(#20010,#20004)
literals("ä","ä",#20010)
decl(#20010,#20009)
#20012=@"var;{ö};{#20008}"
variables(#20012,"ö",#20008)
#20013=*
exprs(#20013,78,#20004,1,"\u00f6")
#20014=@"loc,{#10000},1,15,1,15"
locations_default(#20014,#10000,1,15,1,15)
hasLocation(#20013,#20014)
exprContainers(#20013,#20004)
literals("ö","ö",#20013)
decl(#20013,#20012)
#20015=@"var;{arguments};{#20008}"
variables(#20015,"arguments",#20008)
isArgumentsObject(#20015)
#20012=*
tokeninfo(#20012,8,#20001,4,",")
#20013=@"loc,{#10000},1,13,1,13"
locations_default(#20013,#10000,1,13,1,13)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,5,"ö")
#20015=@"loc,{#10000},1,15,1,15"
locations_default(#20015,#10000,1,15,1,15)
hasLocation(#20014,#20015)
#20016=*
stmts(#20016,1,#20004,-2,"{}")
#20017=@"loc,{#10000},1,18,1,19"
locations_default(#20017,#10000,1,18,1,19)
tokeninfo(#20016,8,#20001,6,")")
#20017=@"loc,{#10000},1,16,1,16"
locations_default(#20017,#10000,1,16,1,16)
hasLocation(#20016,#20017)
stmtContainers(#20016,#20004)
numlines(#20004,1,1,0)
#20018=*
lines(#20018,#20001,"function f(ä, ö) {}","
")
hasLocation(#20018,#20005)
numlines(#20001,1,1,0)
#20019=*
tokeninfo(#20019,7,#20001,0,"function")
#20020=@"loc,{#10000},1,1,1,8"
locations_default(#20020,#10000,1,1,1,8)
hasLocation(#20019,#20020)
#20021=*
tokeninfo(#20021,6,#20001,1,"f")
hasLocation(#20021,#20007)
tokeninfo(#20018,8,#20001,7,"{")
#20019=@"loc,{#10000},1,18,1,18"
locations_default(#20019,#10000,1,18,1,18)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,8,"}")
#20021=@"loc,{#10000},1,19,1,19"
locations_default(#20021,#10000,1,19,1,19)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,2,"(")
#20023=@"loc,{#10000},1,11,1,11"
locations_default(#20023,#10000,1,11,1,11)
tokeninfo(#20022,0,#20001,9,"")
#20023=@"loc,{#10000},2,1,2,0"
locations_default(#20023,#10000,2,1,2,0)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,3,"ä")
hasLocation(#20024,#20011)
#20025=*
tokeninfo(#20025,8,#20001,4,",")
#20026=@"loc,{#10000},1,13,1,13"
locations_default(#20026,#10000,1,13,1,13)
hasLocation(#20025,#20026)
toplevels(#20001,0)
#20024=@"loc,{#10000},1,1,2,0"
locations_default(#20024,#10000,1,1,2,0)
hasLocation(#20001,#20024)
#20025=@"var;{f};{#20000}"
variables(#20025,"f",#20000)
#20026=*
stmts(#20026,17,#20001,0,"function f(\u00e4, \u00f6) {}")
hasLocation(#20026,#20003)
stmtContainers(#20026,#20001)
#20027=*
tokeninfo(#20027,6,#20001,5,"ö")
hasLocation(#20027,#20014)
exprs(#20027,78,#20026,-1,"f")
hasLocation(#20027,#20007)
exprContainers(#20027,#20026)
literals("f","f",#20027)
decl(#20027,#20025)
#20028=*
tokeninfo(#20028,8,#20001,6,")")
#20029=@"loc,{#10000},1,16,1,16"
locations_default(#20029,#10000,1,16,1,16)
hasLocation(#20028,#20029)
scopes(#20028,1)
scopenodes(#20026,#20028)
scopenesting(#20028,#20000)
#20029=@"var;{ä};{#20028}"
variables(#20029,"ä",#20028)
#20030=*
tokeninfo(#20030,8,#20001,7,"{")
#20031=@"loc,{#10000},1,18,1,18"
locations_default(#20031,#10000,1,18,1,18)
hasLocation(#20030,#20031)
exprs(#20030,78,#20026,0,"\u00e4")
hasLocation(#20030,#20011)
exprContainers(#20030,#20026)
literals("ä","ä",#20030)
decl(#20030,#20029)
#20031=@"var;{ö};{#20028}"
variables(#20031,"ö",#20028)
#20032=*
tokeninfo(#20032,8,#20001,8,"}")
#20033=@"loc,{#10000},1,19,1,19"
locations_default(#20033,#10000,1,19,1,19)
hasLocation(#20032,#20033)
exprs(#20032,78,#20026,1,"\u00f6")
hasLocation(#20032,#20015)
exprContainers(#20032,#20026)
literals("ö","ö",#20032)
decl(#20032,#20031)
#20033=@"var;{arguments};{#20028}"
variables(#20033,"arguments",#20028)
isArgumentsObject(#20033)
#20034=*
tokeninfo(#20034,0,#20001,9,"")
#20035=@"loc,{#10000},2,1,2,0"
locations_default(#20035,#10000,2,1,2,0)
stmts(#20034,1,#20026,-2,"{}")
#20035=@"loc,{#10000},1,18,1,19"
locations_default(#20035,#10000,1,18,1,19)
hasLocation(#20034,#20035)
stmtContainers(#20034,#20026)
#20036=*
entry_cfg_node(#20036,#20001)
#20037=@"loc,{#10000},1,1,1,0"
@@ -119,21 +118,21 @@ locations_default(#20037,#10000,1,1,1,0)
hasLocation(#20036,#20037)
#20038=*
exit_cfg_node(#20038,#20001)
hasLocation(#20038,#20035)
successor(#20004,#20038)
hasLocation(#20038,#20023)
successor(#20026,#20038)
#20039=*
entry_cfg_node(#20039,#20004)
entry_cfg_node(#20039,#20026)
hasLocation(#20039,#20037)
#20040=*
exit_cfg_node(#20040,#20004)
exit_cfg_node(#20040,#20026)
#20041=@"loc,{#10000},1,20,1,19"
locations_default(#20041,#10000,1,20,1,19)
hasLocation(#20040,#20041)
successor(#20016,#20040)
successor(#20013,#20016)
successor(#20010,#20013)
successor(#20039,#20010)
successor(#20006,#20004)
successor(#20036,#20006)
successor(#20034,#20040)
successor(#20032,#20034)
successor(#20030,#20032)
successor(#20039,#20030)
successor(#20027,#20026)
successor(#20036,#20027)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,417 +9,417 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,14,0"
locations_default(#20002,#10000,1,1,14,0)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"'\ud800';")
#20004=@"loc,{#10000},2,1,2,9"
locations_default(#20004,#10000,2,1,2,9)
hasLocation(#20003,#20004)
stmtContainers(#20003,#20001)
#20005=*
exprs(#20005,4,#20003,0,"'\ud800'")
#20006=@"loc,{#10000},2,1,2,8"
locations_default(#20006,#10000,2,1,2,8)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20003)
exprContainers(#20005,#20001)
literals("?","'\ud800'",#20005)
#20007=*
stmts(#20007,2,#20001,1,"'foo\ud800';")
#20008=@"loc,{#10000},3,1,3,12"
locations_default(#20008,#10000,3,1,3,12)
hasLocation(#20007,#20008)
stmtContainers(#20007,#20001)
#20002=*
comments(#20002,0,#20001," lone surrogate halves","// lone ... halves")
#20003=@"loc,{#10000},1,1,1,24"
locations_default(#20003,#10000,1,1,1,24)
hasLocation(#20002,#20003)
#20004=*
comments(#20004,0,#20001," wrong order","// wrong order")
#20005=@"loc,{#10000},10,1,10,14"
locations_default(#20005,#10000,10,1,10,14)
hasLocation(#20004,#20005)
#20006=*
comments(#20006,0,#20001," OK","// OK")
#20007=@"loc,{#10000},12,1,12,5"
locations_default(#20007,#10000,12,1,12,5)
hasLocation(#20006,#20007)
#20008=*
lines(#20008,#20001,"// lone surrogate halves","
")
hasLocation(#20008,#20003)
#20009=*
exprs(#20009,4,#20007,0,"'foo\ud800'")
#20010=@"loc,{#10000},3,1,3,11"
locations_default(#20010,#10000,3,1,3,11)
lines(#20009,#20001,"'\ud800';","
")
#20010=@"loc,{#10000},2,1,2,9"
locations_default(#20010,#10000,2,1,2,9)
hasLocation(#20009,#20010)
enclosingStmt(#20009,#20007)
exprContainers(#20009,#20001)
literals("foo?","'foo\ud800'",#20009)
#20011=*
stmts(#20011,2,#20001,2,"'\ud800bar';")
#20012=@"loc,{#10000},4,1,4,12"
locations_default(#20012,#10000,4,1,4,12)
lines(#20011,#20001,"'foo\ud800';","
")
#20012=@"loc,{#10000},3,1,3,12"
locations_default(#20012,#10000,3,1,3,12)
hasLocation(#20011,#20012)
stmtContainers(#20011,#20001)
#20013=*
exprs(#20013,4,#20011,0,"'\ud800bar'")
#20014=@"loc,{#10000},4,1,4,11"
locations_default(#20014,#10000,4,1,4,11)
lines(#20013,#20001,"'\ud800bar';","
")
#20014=@"loc,{#10000},4,1,4,12"
locations_default(#20014,#10000,4,1,4,12)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20011)
exprContainers(#20013,#20001)
literals("?bar","'\ud800bar'",#20013)
#20015=*
stmts(#20015,2,#20001,3,"'foo\ud800bar';")
lines(#20015,#20001,"'foo\ud800bar';","
")
#20016=@"loc,{#10000},5,1,5,15"
locations_default(#20016,#10000,5,1,5,15)
hasLocation(#20015,#20016)
stmtContainers(#20015,#20001)
#20017=*
exprs(#20017,4,#20015,0,"'foo\ud800bar'")
#20018=@"loc,{#10000},5,1,5,14"
locations_default(#20018,#10000,5,1,5,14)
lines(#20017,#20001,"/\uD800/;","
")
#20018=@"loc,{#10000},6,1,6,9"
locations_default(#20018,#10000,6,1,6,9)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20015)
exprContainers(#20017,#20001)
literals("foo?bar","'foo\ud800bar'",#20017)
#20019=*
stmts(#20019,2,#20001,4,"/\uD800/;")
#20020=@"loc,{#10000},6,1,6,9"
locations_default(#20020,#10000,6,1,6,9)
lines(#20019,#20001,"/foo\ud800/;","
")
#20020=@"loc,{#10000},7,1,7,12"
locations_default(#20020,#10000,7,1,7,12)
hasLocation(#20019,#20020)
stmtContainers(#20019,#20001)
#20021=*
exprs(#20021,5,#20019,0,"/\uD800/")
#20022=@"loc,{#10000},6,1,6,8"
locations_default(#20022,#10000,6,1,6,8)
lines(#20021,#20001,"/\ud800bar/;","
")
#20022=@"loc,{#10000},8,1,8,12"
locations_default(#20022,#10000,8,1,8,12)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20019)
exprContainers(#20021,#20001)
literals("/\uD800/","/\uD800/",#20021)
#20023=*
regexpterm(#20023,16,#20021,0,"\uD800")
#20024=@"loc,{#10000},6,2,6,7"
locations_default(#20024,#10000,6,2,6,7)
lines(#20023,#20001,"/foo\ud800bar/;","
")
#20024=@"loc,{#10000},9,1,9,15"
locations_default(#20024,#10000,9,1,9,15)
hasLocation(#20023,#20024)
regexpConstValue(#20023,"?")
#20025=*
stmts(#20025,2,#20001,5,"/foo\ud800/;")
#20026=@"loc,{#10000},7,1,7,12"
locations_default(#20026,#10000,7,1,7,12)
hasLocation(#20025,#20026)
stmtContainers(#20025,#20001)
#20027=*
exprs(#20027,5,#20025,0,"/foo\ud800/")
#20028=@"loc,{#10000},7,1,7,11"
locations_default(#20028,#10000,7,1,7,11)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20025)
exprContainers(#20027,#20001)
literals("/foo\ud800/","/foo\ud800/",#20027)
lines(#20025,#20001,"// wrong order","
")
hasLocation(#20025,#20005)
#20026=*
lines(#20026,#20001,"'\udc00\ud800';","
")
#20027=@"loc,{#10000},11,1,11,15"
locations_default(#20027,#10000,11,1,11,15)
hasLocation(#20026,#20027)
#20028=*
lines(#20028,#20001,"// OK","
")
hasLocation(#20028,#20007)
#20029=*
regexpterm(#20029,1,#20027,0,"foo\ud800")
#20030=@"loc,{#10000},7,2,7,10"
locations_default(#20030,#10000,7,2,7,10)
lines(#20029,#20001,"'\uD834\uDF06';","
")
#20030=@"loc,{#10000},13,1,13,15"
locations_default(#20030,#10000,13,1,13,15)
hasLocation(#20029,#20030)
numlines(#20001,13,10,3)
#20031=*
regexpterm(#20031,14,#20029,0,"f")
#20032=@"loc,{#10000},7,2,7,2"
locations_default(#20032,#10000,7,2,7,2)
tokeninfo(#20031,4,#20001,0,"'\ud800'")
#20032=@"loc,{#10000},2,1,2,8"
locations_default(#20032,#10000,2,1,2,8)
hasLocation(#20031,#20032)
regexpConstValue(#20031,"f")
next_token(#20002,#20031)
#20033=*
regexpterm(#20033,14,#20029,1,"o")
#20034=@"loc,{#10000},7,3,7,3"
locations_default(#20034,#10000,7,3,7,3)
tokeninfo(#20033,8,#20001,1,";")
#20034=@"loc,{#10000},2,9,2,9"
locations_default(#20034,#10000,2,9,2,9)
hasLocation(#20033,#20034)
regexpConstValue(#20033,"o")
#20035=*
regexpterm(#20035,14,#20029,2,"o")
#20036=@"loc,{#10000},7,4,7,4"
locations_default(#20036,#10000,7,4,7,4)
tokeninfo(#20035,4,#20001,2,"'foo\ud800'")
#20036=@"loc,{#10000},3,1,3,11"
locations_default(#20036,#10000,3,1,3,11)
hasLocation(#20035,#20036)
regexpConstValue(#20035,"o")
#20037=*
regexpterm(#20037,16,#20029,3,"\ud800")
#20038=@"loc,{#10000},7,5,7,10"
locations_default(#20038,#10000,7,5,7,10)
tokeninfo(#20037,8,#20001,3,";")
#20038=@"loc,{#10000},3,12,3,12"
locations_default(#20038,#10000,3,12,3,12)
hasLocation(#20037,#20038)
regexpConstValue(#20037,"?")
#20039=*
stmts(#20039,2,#20001,6,"/\ud800bar/;")
#20040=@"loc,{#10000},8,1,8,12"
locations_default(#20040,#10000,8,1,8,12)
tokeninfo(#20039,4,#20001,4,"'\ud800bar'")
#20040=@"loc,{#10000},4,1,4,11"
locations_default(#20040,#10000,4,1,4,11)
hasLocation(#20039,#20040)
stmtContainers(#20039,#20001)
#20041=*
exprs(#20041,5,#20039,0,"/\ud800bar/")
#20042=@"loc,{#10000},8,1,8,11"
locations_default(#20042,#10000,8,1,8,11)
tokeninfo(#20041,8,#20001,5,";")
#20042=@"loc,{#10000},4,12,4,12"
locations_default(#20042,#10000,4,12,4,12)
hasLocation(#20041,#20042)
enclosingStmt(#20041,#20039)
exprContainers(#20041,#20001)
literals("/\ud800bar/","/\ud800bar/",#20041)
#20043=*
regexpterm(#20043,1,#20041,0,"\ud800bar")
#20044=@"loc,{#10000},8,2,8,10"
locations_default(#20044,#10000,8,2,8,10)
tokeninfo(#20043,4,#20001,6,"'foo\ud800bar'")
#20044=@"loc,{#10000},5,1,5,14"
locations_default(#20044,#10000,5,1,5,14)
hasLocation(#20043,#20044)
#20045=*
regexpterm(#20045,16,#20043,0,"\ud800")
#20046=@"loc,{#10000},8,2,8,7"
locations_default(#20046,#10000,8,2,8,7)
tokeninfo(#20045,8,#20001,7,";")
#20046=@"loc,{#10000},5,15,5,15"
locations_default(#20046,#10000,5,15,5,15)
hasLocation(#20045,#20046)
regexpConstValue(#20045,"?")
#20047=*
regexpterm(#20047,14,#20043,1,"b")
#20048=@"loc,{#10000},8,8,8,8"
locations_default(#20048,#10000,8,8,8,8)
tokeninfo(#20047,5,#20001,8,"/\uD800/")
#20048=@"loc,{#10000},6,1,6,8"
locations_default(#20048,#10000,6,1,6,8)
hasLocation(#20047,#20048)
regexpConstValue(#20047,"b")
#20049=*
regexpterm(#20049,14,#20043,2,"a")
#20050=@"loc,{#10000},8,9,8,9"
locations_default(#20050,#10000,8,9,8,9)
tokeninfo(#20049,8,#20001,9,";")
#20050=@"loc,{#10000},6,9,6,9"
locations_default(#20050,#10000,6,9,6,9)
hasLocation(#20049,#20050)
regexpConstValue(#20049,"a")
#20051=*
regexpterm(#20051,14,#20043,3,"r")
#20052=@"loc,{#10000},8,10,8,10"
locations_default(#20052,#10000,8,10,8,10)
tokeninfo(#20051,5,#20001,10,"/foo\ud800/")
#20052=@"loc,{#10000},7,1,7,11"
locations_default(#20052,#10000,7,1,7,11)
hasLocation(#20051,#20052)
regexpConstValue(#20051,"r")
#20053=*
stmts(#20053,2,#20001,7,"/foo\ud800bar/;")
#20054=@"loc,{#10000},9,1,9,15"
locations_default(#20054,#10000,9,1,9,15)
tokeninfo(#20053,8,#20001,11,";")
#20054=@"loc,{#10000},7,12,7,12"
locations_default(#20054,#10000,7,12,7,12)
hasLocation(#20053,#20054)
stmtContainers(#20053,#20001)
#20055=*
exprs(#20055,5,#20053,0,"/foo\ud800bar/")
#20056=@"loc,{#10000},9,1,9,14"
locations_default(#20056,#10000,9,1,9,14)
tokeninfo(#20055,5,#20001,12,"/\ud800bar/")
#20056=@"loc,{#10000},8,1,8,11"
locations_default(#20056,#10000,8,1,8,11)
hasLocation(#20055,#20056)
enclosingStmt(#20055,#20053)
exprContainers(#20055,#20001)
literals("/foo\ud800bar/","/foo\ud800bar/",#20055)
#20057=*
regexpterm(#20057,1,#20055,0,"foo\ud800bar")
#20058=@"loc,{#10000},9,2,9,13"
locations_default(#20058,#10000,9,2,9,13)
tokeninfo(#20057,8,#20001,13,";")
#20058=@"loc,{#10000},8,12,8,12"
locations_default(#20058,#10000,8,12,8,12)
hasLocation(#20057,#20058)
#20059=*
regexpterm(#20059,14,#20057,0,"f")
#20060=@"loc,{#10000},9,2,9,2"
locations_default(#20060,#10000,9,2,9,2)
tokeninfo(#20059,5,#20001,14,"/foo\ud800bar/")
#20060=@"loc,{#10000},9,1,9,14"
locations_default(#20060,#10000,9,1,9,14)
hasLocation(#20059,#20060)
regexpConstValue(#20059,"f")
#20061=*
regexpterm(#20061,14,#20057,1,"o")
#20062=@"loc,{#10000},9,3,9,3"
locations_default(#20062,#10000,9,3,9,3)
tokeninfo(#20061,8,#20001,15,";")
#20062=@"loc,{#10000},9,15,9,15"
locations_default(#20062,#10000,9,15,9,15)
hasLocation(#20061,#20062)
regexpConstValue(#20061,"o")
#20063=*
regexpterm(#20063,14,#20057,2,"o")
#20064=@"loc,{#10000},9,4,9,4"
locations_default(#20064,#10000,9,4,9,4)
tokeninfo(#20063,4,#20001,16,"'\udc00\ud800'")
#20064=@"loc,{#10000},11,1,11,14"
locations_default(#20064,#10000,11,1,11,14)
hasLocation(#20063,#20064)
regexpConstValue(#20063,"o")
next_token(#20004,#20063)
#20065=*
regexpterm(#20065,16,#20057,3,"\ud800")
#20066=@"loc,{#10000},9,5,9,10"
locations_default(#20066,#10000,9,5,9,10)
tokeninfo(#20065,8,#20001,17,";")
#20066=@"loc,{#10000},11,15,11,15"
locations_default(#20066,#10000,11,15,11,15)
hasLocation(#20065,#20066)
regexpConstValue(#20065,"?")
#20067=*
regexpterm(#20067,14,#20057,4,"b")
#20068=@"loc,{#10000},9,11,9,11"
locations_default(#20068,#10000,9,11,9,11)
tokeninfo(#20067,4,#20001,18,"'\uD834\uDF06'")
#20068=@"loc,{#10000},13,1,13,14"
locations_default(#20068,#10000,13,1,13,14)
hasLocation(#20067,#20068)
regexpConstValue(#20067,"b")
next_token(#20006,#20067)
#20069=*
regexpterm(#20069,14,#20057,5,"a")
#20070=@"loc,{#10000},9,12,9,12"
locations_default(#20070,#10000,9,12,9,12)
tokeninfo(#20069,8,#20001,19,";")
#20070=@"loc,{#10000},13,15,13,15"
locations_default(#20070,#10000,13,15,13,15)
hasLocation(#20069,#20070)
regexpConstValue(#20069,"a")
#20071=*
regexpterm(#20071,14,#20057,6,"r")
#20072=@"loc,{#10000},9,13,9,13"
locations_default(#20072,#10000,9,13,9,13)
tokeninfo(#20071,0,#20001,20,"")
#20072=@"loc,{#10000},14,1,14,0"
locations_default(#20072,#10000,14,1,14,0)
hasLocation(#20071,#20072)
regexpConstValue(#20071,"r")
#20073=*
stmts(#20073,2,#20001,8,"'\udc00\ud800';")
#20074=@"loc,{#10000},11,1,11,15"
locations_default(#20074,#10000,11,1,11,15)
hasLocation(#20073,#20074)
stmtContainers(#20073,#20001)
toplevels(#20001,0)
#20073=@"loc,{#10000},1,1,14,0"
locations_default(#20073,#10000,1,1,14,0)
hasLocation(#20001,#20073)
#20074=*
stmts(#20074,2,#20001,0,"'\ud800';")
hasLocation(#20074,#20010)
stmtContainers(#20074,#20001)
#20075=*
exprs(#20075,4,#20073,0,"'\udc00\ud800'")
#20076=@"loc,{#10000},11,1,11,14"
locations_default(#20076,#10000,11,1,11,14)
hasLocation(#20075,#20076)
enclosingStmt(#20075,#20073)
exprs(#20075,4,#20074,0,"'\ud800'")
hasLocation(#20075,#20032)
enclosingStmt(#20075,#20074)
exprContainers(#20075,#20001)
literals("??","'\udc00\ud800'",#20075)
literals("?","'\ud800'",#20075)
#20076=*
stmts(#20076,2,#20001,1,"'foo\ud800';")
hasLocation(#20076,#20012)
stmtContainers(#20076,#20001)
#20077=*
stmts(#20077,2,#20001,9,"'\uD834\uDF06';")
#20078=@"loc,{#10000},13,1,13,15"
locations_default(#20078,#10000,13,1,13,15)
hasLocation(#20077,#20078)
stmtContainers(#20077,#20001)
exprs(#20077,4,#20076,0,"'foo\ud800'")
hasLocation(#20077,#20036)
enclosingStmt(#20077,#20076)
exprContainers(#20077,#20001)
literals("foo?","'foo\ud800'",#20077)
#20078=*
stmts(#20078,2,#20001,2,"'\ud800bar';")
hasLocation(#20078,#20014)
stmtContainers(#20078,#20001)
#20079=*
exprs(#20079,4,#20077,0,"'\uD834\uDF06'")
#20080=@"loc,{#10000},13,1,13,14"
locations_default(#20080,#10000,13,1,13,14)
hasLocation(#20079,#20080)
enclosingStmt(#20079,#20077)
exprs(#20079,4,#20078,0,"'\ud800bar'")
hasLocation(#20079,#20040)
enclosingStmt(#20079,#20078)
exprContainers(#20079,#20001)
literals("𝌆","'\uD834\uDF06'",#20079)
literals("?bar","'\ud800bar'",#20079)
#20080=*
stmts(#20080,2,#20001,3,"'foo\ud800bar';")
hasLocation(#20080,#20016)
stmtContainers(#20080,#20001)
#20081=*
comments(#20081,0,#20001," lone surrogate halves","// lone ... halves")
#20082=@"loc,{#10000},1,1,1,24"
locations_default(#20082,#10000,1,1,1,24)
hasLocation(#20081,#20082)
exprs(#20081,4,#20080,0,"'foo\ud800bar'")
hasLocation(#20081,#20044)
enclosingStmt(#20081,#20080)
exprContainers(#20081,#20001)
literals("foo?bar","'foo\ud800bar'",#20081)
#20082=*
stmts(#20082,2,#20001,4,"/\uD800/;")
hasLocation(#20082,#20018)
stmtContainers(#20082,#20001)
#20083=*
comments(#20083,0,#20001," wrong order","// wrong order")
#20084=@"loc,{#10000},10,1,10,14"
locations_default(#20084,#10000,10,1,10,14)
hasLocation(#20083,#20084)
#20085=*
comments(#20085,0,#20001," OK","// OK")
#20086=@"loc,{#10000},12,1,12,5"
locations_default(#20086,#10000,12,1,12,5)
hasLocation(#20085,#20086)
exprs(#20083,5,#20082,0,"/\uD800/")
hasLocation(#20083,#20048)
enclosingStmt(#20083,#20082)
exprContainers(#20083,#20001)
literals("/\uD800/","/\uD800/",#20083)
#20084=*
regexpterm(#20084,16,#20083,0,"\uD800")
#20085=@"loc,{#10000},6,2,6,7"
locations_default(#20085,#10000,6,2,6,7)
hasLocation(#20084,#20085)
regexpConstValue(#20084,"?")
#20086=*
stmts(#20086,2,#20001,5,"/foo\ud800/;")
hasLocation(#20086,#20020)
stmtContainers(#20086,#20001)
#20087=*
lines(#20087,#20001,"// lone surrogate halves","
")
hasLocation(#20087,#20082)
exprs(#20087,5,#20086,0,"/foo\ud800/")
hasLocation(#20087,#20052)
enclosingStmt(#20087,#20086)
exprContainers(#20087,#20001)
literals("/foo\ud800/","/foo\ud800/",#20087)
#20088=*
lines(#20088,#20001,"'\ud800';","
")
hasLocation(#20088,#20004)
#20089=*
lines(#20089,#20001,"'foo\ud800';","
")
hasLocation(#20089,#20008)
regexpterm(#20088,1,#20087,0,"foo\ud800")
#20089=@"loc,{#10000},7,2,7,10"
locations_default(#20089,#10000,7,2,7,10)
hasLocation(#20088,#20089)
#20090=*
lines(#20090,#20001,"'\ud800bar';","
")
hasLocation(#20090,#20012)
#20091=*
lines(#20091,#20001,"'foo\ud800bar';","
")
hasLocation(#20091,#20016)
regexpterm(#20090,14,#20088,0,"f")
#20091=@"loc,{#10000},7,2,7,2"
locations_default(#20091,#10000,7,2,7,2)
hasLocation(#20090,#20091)
regexpConstValue(#20090,"f")
#20092=*
lines(#20092,#20001,"/\uD800/;","
")
hasLocation(#20092,#20020)
#20093=*
lines(#20093,#20001,"/foo\ud800/;","
")
hasLocation(#20093,#20026)
regexpterm(#20092,14,#20088,1,"o")
#20093=@"loc,{#10000},7,3,7,3"
locations_default(#20093,#10000,7,3,7,3)
hasLocation(#20092,#20093)
regexpConstValue(#20092,"o")
#20094=*
lines(#20094,#20001,"/\ud800bar/;","
")
hasLocation(#20094,#20040)
#20095=*
lines(#20095,#20001,"/foo\ud800bar/;","
")
hasLocation(#20095,#20054)
regexpterm(#20094,14,#20088,2,"o")
#20095=@"loc,{#10000},7,4,7,4"
locations_default(#20095,#10000,7,4,7,4)
hasLocation(#20094,#20095)
regexpConstValue(#20094,"o")
#20096=*
lines(#20096,#20001,"// wrong order","
")
hasLocation(#20096,#20084)
#20097=*
lines(#20097,#20001,"'\udc00\ud800';","
")
hasLocation(#20097,#20074)
regexpterm(#20096,16,#20088,3,"\ud800")
#20097=@"loc,{#10000},7,5,7,10"
locations_default(#20097,#10000,7,5,7,10)
hasLocation(#20096,#20097)
regexpConstValue(#20096,"?")
#20098=*
lines(#20098,#20001,"// OK","
")
hasLocation(#20098,#20086)
stmts(#20098,2,#20001,6,"/\ud800bar/;")
hasLocation(#20098,#20022)
stmtContainers(#20098,#20001)
#20099=*
lines(#20099,#20001,"'\uD834\uDF06';","
")
hasLocation(#20099,#20078)
numlines(#20001,13,10,3)
exprs(#20099,5,#20098,0,"/\ud800bar/")
hasLocation(#20099,#20056)
enclosingStmt(#20099,#20098)
exprContainers(#20099,#20001)
literals("/\ud800bar/","/\ud800bar/",#20099)
#20100=*
tokeninfo(#20100,4,#20001,0,"'\ud800'")
hasLocation(#20100,#20006)
next_token(#20081,#20100)
#20101=*
tokeninfo(#20101,8,#20001,1,";")
#20102=@"loc,{#10000},2,9,2,9"
locations_default(#20102,#10000,2,9,2,9)
hasLocation(#20101,#20102)
#20103=*
tokeninfo(#20103,4,#20001,2,"'foo\ud800'")
hasLocation(#20103,#20010)
regexpterm(#20100,1,#20099,0,"\ud800bar")
#20101=@"loc,{#10000},8,2,8,10"
locations_default(#20101,#10000,8,2,8,10)
hasLocation(#20100,#20101)
#20102=*
regexpterm(#20102,16,#20100,0,"\ud800")
#20103=@"loc,{#10000},8,2,8,7"
locations_default(#20103,#10000,8,2,8,7)
hasLocation(#20102,#20103)
regexpConstValue(#20102,"?")
#20104=*
tokeninfo(#20104,8,#20001,3,";")
#20105=@"loc,{#10000},3,12,3,12"
locations_default(#20105,#10000,3,12,3,12)
regexpterm(#20104,14,#20100,1,"b")
#20105=@"loc,{#10000},8,8,8,8"
locations_default(#20105,#10000,8,8,8,8)
hasLocation(#20104,#20105)
regexpConstValue(#20104,"b")
#20106=*
tokeninfo(#20106,4,#20001,4,"'\ud800bar'")
hasLocation(#20106,#20014)
#20107=*
tokeninfo(#20107,8,#20001,5,";")
#20108=@"loc,{#10000},4,12,4,12"
locations_default(#20108,#10000,4,12,4,12)
hasLocation(#20107,#20108)
#20109=*
tokeninfo(#20109,4,#20001,6,"'foo\ud800bar'")
hasLocation(#20109,#20018)
regexpterm(#20106,14,#20100,2,"a")
#20107=@"loc,{#10000},8,9,8,9"
locations_default(#20107,#10000,8,9,8,9)
hasLocation(#20106,#20107)
regexpConstValue(#20106,"a")
#20108=*
regexpterm(#20108,14,#20100,3,"r")
#20109=@"loc,{#10000},8,10,8,10"
locations_default(#20109,#10000,8,10,8,10)
hasLocation(#20108,#20109)
regexpConstValue(#20108,"r")
#20110=*
tokeninfo(#20110,8,#20001,7,";")
#20111=@"loc,{#10000},5,15,5,15"
locations_default(#20111,#10000,5,15,5,15)
hasLocation(#20110,#20111)
stmts(#20110,2,#20001,7,"/foo\ud800bar/;")
hasLocation(#20110,#20024)
stmtContainers(#20110,#20001)
#20111=*
exprs(#20111,5,#20110,0,"/foo\ud800bar/")
hasLocation(#20111,#20060)
enclosingStmt(#20111,#20110)
exprContainers(#20111,#20001)
literals("/foo\ud800bar/","/foo\ud800bar/",#20111)
#20112=*
tokeninfo(#20112,5,#20001,8,"/\uD800/")
hasLocation(#20112,#20022)
#20113=*
tokeninfo(#20113,8,#20001,9,";")
#20114=@"loc,{#10000},6,9,6,9"
locations_default(#20114,#10000,6,9,6,9)
hasLocation(#20113,#20114)
#20115=*
tokeninfo(#20115,5,#20001,10,"/foo\ud800/")
hasLocation(#20115,#20028)
regexpterm(#20112,1,#20111,0,"foo\ud800bar")
#20113=@"loc,{#10000},9,2,9,13"
locations_default(#20113,#10000,9,2,9,13)
hasLocation(#20112,#20113)
#20114=*
regexpterm(#20114,14,#20112,0,"f")
#20115=@"loc,{#10000},9,2,9,2"
locations_default(#20115,#10000,9,2,9,2)
hasLocation(#20114,#20115)
regexpConstValue(#20114,"f")
#20116=*
tokeninfo(#20116,8,#20001,11,";")
#20117=@"loc,{#10000},7,12,7,12"
locations_default(#20117,#10000,7,12,7,12)
regexpterm(#20116,14,#20112,1,"o")
#20117=@"loc,{#10000},9,3,9,3"
locations_default(#20117,#10000,9,3,9,3)
hasLocation(#20116,#20117)
regexpConstValue(#20116,"o")
#20118=*
tokeninfo(#20118,5,#20001,12,"/\ud800bar/")
hasLocation(#20118,#20042)
#20119=*
tokeninfo(#20119,8,#20001,13,";")
#20120=@"loc,{#10000},8,12,8,12"
locations_default(#20120,#10000,8,12,8,12)
hasLocation(#20119,#20120)
#20121=*
tokeninfo(#20121,5,#20001,14,"/foo\ud800bar/")
hasLocation(#20121,#20056)
regexpterm(#20118,14,#20112,2,"o")
#20119=@"loc,{#10000},9,4,9,4"
locations_default(#20119,#10000,9,4,9,4)
hasLocation(#20118,#20119)
regexpConstValue(#20118,"o")
#20120=*
regexpterm(#20120,16,#20112,3,"\ud800")
#20121=@"loc,{#10000},9,5,9,10"
locations_default(#20121,#10000,9,5,9,10)
hasLocation(#20120,#20121)
regexpConstValue(#20120,"?")
#20122=*
tokeninfo(#20122,8,#20001,15,";")
#20123=@"loc,{#10000},9,15,9,15"
locations_default(#20123,#10000,9,15,9,15)
regexpterm(#20122,14,#20112,4,"b")
#20123=@"loc,{#10000},9,11,9,11"
locations_default(#20123,#10000,9,11,9,11)
hasLocation(#20122,#20123)
regexpConstValue(#20122,"b")
#20124=*
tokeninfo(#20124,4,#20001,16,"'\udc00\ud800'")
hasLocation(#20124,#20076)
next_token(#20083,#20124)
#20125=*
tokeninfo(#20125,8,#20001,17,";")
#20126=@"loc,{#10000},11,15,11,15"
locations_default(#20126,#10000,11,15,11,15)
hasLocation(#20125,#20126)
#20127=*
tokeninfo(#20127,4,#20001,18,"'\uD834\uDF06'")
hasLocation(#20127,#20080)
next_token(#20085,#20127)
regexpterm(#20124,14,#20112,5,"a")
#20125=@"loc,{#10000},9,12,9,12"
locations_default(#20125,#10000,9,12,9,12)
hasLocation(#20124,#20125)
regexpConstValue(#20124,"a")
#20126=*
regexpterm(#20126,14,#20112,6,"r")
#20127=@"loc,{#10000},9,13,9,13"
locations_default(#20127,#10000,9,13,9,13)
hasLocation(#20126,#20127)
regexpConstValue(#20126,"r")
#20128=*
tokeninfo(#20128,8,#20001,19,";")
#20129=@"loc,{#10000},13,15,13,15"
locations_default(#20129,#10000,13,15,13,15)
hasLocation(#20128,#20129)
stmts(#20128,2,#20001,8,"'\udc00\ud800';")
hasLocation(#20128,#20027)
stmtContainers(#20128,#20001)
#20129=*
exprs(#20129,4,#20128,0,"'\udc00\ud800'")
hasLocation(#20129,#20064)
enclosingStmt(#20129,#20128)
exprContainers(#20129,#20001)
literals("??","'\udc00\ud800'",#20129)
#20130=*
tokeninfo(#20130,0,#20001,20,"")
#20131=@"loc,{#10000},14,1,14,0"
locations_default(#20131,#10000,14,1,14,0)
hasLocation(#20130,#20131)
stmts(#20130,2,#20001,9,"'\uD834\uDF06';")
hasLocation(#20130,#20030)
stmtContainers(#20130,#20001)
#20131=*
exprs(#20131,4,#20130,0,"'\uD834\uDF06'")
hasLocation(#20131,#20068)
enclosingStmt(#20131,#20130)
exprContainers(#20131,#20001)
literals("𝌆","'\uD834\uDF06'",#20131)
#20132=*
entry_cfg_node(#20132,#20001)
#20133=@"loc,{#10000},1,1,1,0"
@@ -427,27 +427,27 @@ locations_default(#20133,#10000,1,1,1,0)
hasLocation(#20132,#20133)
#20134=*
exit_cfg_node(#20134,#20001)
hasLocation(#20134,#20131)
successor(#20077,#20079)
successor(#20079,#20134)
successor(#20073,#20075)
successor(#20075,#20077)
successor(#20053,#20055)
successor(#20055,#20073)
successor(#20039,#20041)
successor(#20041,#20053)
successor(#20025,#20027)
successor(#20027,#20039)
successor(#20019,#20021)
successor(#20021,#20025)
successor(#20015,#20017)
successor(#20017,#20019)
successor(#20011,#20013)
successor(#20013,#20015)
successor(#20007,#20009)
successor(#20009,#20011)
successor(#20003,#20005)
successor(#20005,#20007)
successor(#20132,#20003)
hasLocation(#20134,#20072)
successor(#20130,#20131)
successor(#20131,#20134)
successor(#20128,#20129)
successor(#20129,#20130)
successor(#20110,#20111)
successor(#20111,#20128)
successor(#20098,#20099)
successor(#20099,#20110)
successor(#20086,#20087)
successor(#20087,#20098)
successor(#20082,#20083)
successor(#20083,#20086)
successor(#20080,#20081)
successor(#20081,#20082)
successor(#20078,#20079)
successor(#20079,#20080)
successor(#20076,#20077)
successor(#20077,#20078)
successor(#20074,#20075)
successor(#20075,#20076)
successor(#20132,#20074)
numlines(#10000,13,10,3)
filetype(#10000,"javascript")

View File

@@ -9,32 +9,32 @@ 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,"""Semml\u00e9""")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,4,#20003,0,"""Semml\u00e9""")
hasLocation(#20004,#20002)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
literals("Semmlé","""Semmlé""",#20004)
#20005=*
lines(#20005,#20001,"""Semmlé""","")
hasLocation(#20005,#20002)
#20002=*
lines(#20002,#20001,"""Semmlé""","")
#20003=@"loc,{#10000},1,1,1,8"
locations_default(#20003,#10000,1,1,1,8)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20006=*
tokeninfo(#20006,4,#20001,0,"""Semmlé""")
hasLocation(#20006,#20002)
#20004=*
tokeninfo(#20004,4,#20001,0,"""Semmlé""")
hasLocation(#20004,#20003)
#20005=*
tokeninfo(#20005,0,#20001,1,"")
#20006=@"loc,{#10000},1,9,1,8"
locations_default(#20006,#10000,1,9,1,8)
hasLocation(#20005,#20006)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20007=*
tokeninfo(#20007,0,#20001,1,"")
#20008=@"loc,{#10000},1,9,1,8"
locations_default(#20008,#10000,1,9,1,8)
hasLocation(#20007,#20008)
stmts(#20007,2,#20001,0,"""Semml\u00e9""")
hasLocation(#20007,#20003)
stmtContainers(#20007,#20001)
#20008=*
exprs(#20008,4,#20007,0,"""Semml\u00e9""")
hasLocation(#20008,#20003)
enclosingStmt(#20008,#20007)
exprContainers(#20008,#20001)
literals("Semmlé","""Semmlé""",#20008)
#20009=*
entry_cfg_node(#20009,#20001)
#20010=@"loc,{#10000},1,1,1,0"
@@ -42,9 +42,9 @@ locations_default(#20010,#10000,1,1,1,0)
hasLocation(#20009,#20010)
#20011=*
exit_cfg_node(#20011,#20001)
hasLocation(#20011,#20008)
successor(#20003,#20004)
successor(#20004,#20011)
successor(#20009,#20003)
hasLocation(#20011,#20006)
successor(#20007,#20008)
successor(#20008,#20011)
successor(#20009,#20007)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,20 +9,20 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,0"
locations_default(#20002,#10000,1,1,1,0)
hasLocation(#20001,#20002)
numlines(#20001,0,0,0)
#20003=*
tokeninfo(#20003,0,#20001,0,"")
hasLocation(#20003,#20002)
#20002=*
tokeninfo(#20002,0,#20001,0,"")
#20003=@"loc,{#10000},1,1,1,0"
locations_default(#20003,#10000,1,1,1,0)
hasLocation(#20002,#20003)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20004=*
entry_cfg_node(#20004,#20001)
hasLocation(#20004,#20002)
hasLocation(#20004,#20003)
#20005=*
exit_cfg_node(#20005,#20001)
hasLocation(#20005,#20002)
hasLocation(#20005,#20003)
successor(#20004,#20005)
numlines(#10000,0,0,0)
filetype(#10000,"javascript")

View File

@@ -9,106 +9,106 @@ 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,"[x=42] = [];")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,47,#20003,0,"[x=42] = []")
#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,67,#20004,0,"[x=42]")
#20007=@"loc,{#10000},1,1,1,6"
locations_default(#20007,#10000,1,1,1,6)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,79,#20006,0,"x")
#20009=@"loc,{#10000},1,2,1,2"
locations_default(#20009,#10000,1,2,1,2)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
literals("x","x",#20008)
#20010=@"var;{x};{#20000}"
variables(#20010,"x",#20000)
bind(#20008,#20010)
#20011=*
exprs(#20011,3,#20006,-2,"42")
#20012=@"loc,{#10000},1,4,1,5"
locations_default(#20012,#10000,1,4,1,5)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20003)
exprContainers(#20011,#20001)
literals("42","42",#20011)
arraySize(#20006,1)
#20013=*
exprs(#20013,7,#20004,1,"[]")
#20014=@"loc,{#10000},1,10,1,11"
locations_default(#20014,#10000,1,10,1,11)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
arraySize(#20013,0)
#20015=*
lines(#20015,#20001,"[x=42] = [];","")
hasLocation(#20015,#20002)
#20002=*
lines(#20002,#20001,"[x=42] = [];","")
#20003=@"loc,{#10000},1,1,1,12"
locations_default(#20003,#10000,1,1,1,12)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,8,#20001,0,"[")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,6,#20001,1,"x")
#20007=@"loc,{#10000},1,2,1,2"
locations_default(#20007,#10000,1,2,1,2)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,2,"=")
#20009=@"loc,{#10000},1,3,1,3"
locations_default(#20009,#10000,1,3,1,3)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,3,#20001,3,"42")
#20011=@"loc,{#10000},1,4,1,5"
locations_default(#20011,#10000,1,4,1,5)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,"]")
#20013=@"loc,{#10000},1,6,1,6"
locations_default(#20013,#10000,1,6,1,6)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"=")
#20015=@"loc,{#10000},1,8,1,8"
locations_default(#20015,#10000,1,8,1,8)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,0,"[")
#20017=@"loc,{#10000},1,1,1,1"
locations_default(#20017,#10000,1,1,1,1)
tokeninfo(#20016,8,#20001,6,"[")
#20017=@"loc,{#10000},1,10,1,10"
locations_default(#20017,#10000,1,10,1,10)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,1,"x")
hasLocation(#20018,#20009)
#20019=*
tokeninfo(#20019,8,#20001,2,"=")
#20020=@"loc,{#10000},1,3,1,3"
locations_default(#20020,#10000,1,3,1,3)
hasLocation(#20019,#20020)
#20021=*
tokeninfo(#20021,3,#20001,3,"42")
hasLocation(#20021,#20012)
tokeninfo(#20018,8,#20001,7,"]")
#20019=@"loc,{#10000},1,11,1,11"
locations_default(#20019,#10000,1,11,1,11)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,8,";")
#20021=@"loc,{#10000},1,12,1,12"
locations_default(#20021,#10000,1,12,1,12)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,4,"]")
#20023=@"loc,{#10000},1,6,1,6"
locations_default(#20023,#10000,1,6,1,6)
tokeninfo(#20022,0,#20001,9,"")
#20023=@"loc,{#10000},1,13,1,12"
locations_default(#20023,#10000,1,13,1,12)
hasLocation(#20022,#20023)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20024=*
tokeninfo(#20024,8,#20001,5,"=")
#20025=@"loc,{#10000},1,8,1,8"
locations_default(#20025,#10000,1,8,1,8)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,6,"[")
#20027=@"loc,{#10000},1,10,1,10"
locations_default(#20027,#10000,1,10,1,10)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,7,"]")
#20029=@"loc,{#10000},1,11,1,11"
locations_default(#20029,#10000,1,11,1,11)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,8,";")
#20031=@"loc,{#10000},1,12,1,12"
locations_default(#20031,#10000,1,12,1,12)
hasLocation(#20030,#20031)
stmts(#20024,2,#20001,0,"[x=42] = [];")
hasLocation(#20024,#20003)
stmtContainers(#20024,#20001)
#20025=*
exprs(#20025,47,#20024,0,"[x=42] = []")
#20026=@"loc,{#10000},1,1,1,11"
locations_default(#20026,#10000,1,1,1,11)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20024)
exprContainers(#20025,#20001)
#20027=*
exprs(#20027,67,#20025,0,"[x=42]")
#20028=@"loc,{#10000},1,1,1,6"
locations_default(#20028,#10000,1,1,1,6)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20024)
exprContainers(#20027,#20001)
#20029=*
exprs(#20029,79,#20027,0,"x")
hasLocation(#20029,#20007)
enclosingStmt(#20029,#20024)
exprContainers(#20029,#20001)
literals("x","x",#20029)
#20030=@"var;{x};{#20000}"
variables(#20030,"x",#20000)
bind(#20029,#20030)
#20031=*
exprs(#20031,3,#20027,-2,"42")
hasLocation(#20031,#20011)
enclosingStmt(#20031,#20024)
exprContainers(#20031,#20001)
literals("42","42",#20031)
arraySize(#20027,1)
#20032=*
tokeninfo(#20032,0,#20001,9,"")
#20033=@"loc,{#10000},1,13,1,12"
locations_default(#20033,#10000,1,13,1,12)
exprs(#20032,7,#20025,1,"[]")
#20033=@"loc,{#10000},1,10,1,11"
locations_default(#20033,#10000,1,10,1,11)
hasLocation(#20032,#20033)
enclosingStmt(#20032,#20024)
exprContainers(#20032,#20001)
arraySize(#20032,0)
#20034=*
entry_cfg_node(#20034,#20001)
#20035=@"loc,{#10000},1,1,1,0"
@@ -116,13 +116,13 @@ locations_default(#20035,#10000,1,1,1,0)
hasLocation(#20034,#20035)
#20036=*
exit_cfg_node(#20036,#20001)
hasLocation(#20036,#20033)
successor(#20003,#20013)
successor(#20006,#20011)
successor(#20008,#20004)
successor(#20011,#20008)
successor(#20013,#20006)
successor(#20004,#20036)
successor(#20034,#20003)
hasLocation(#20036,#20023)
successor(#20024,#20032)
successor(#20027,#20031)
successor(#20029,#20025)
successor(#20031,#20029)
successor(#20032,#20027)
successor(#20025,#20036)
successor(#20034,#20024)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,218 +9,217 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,4,1"
locations_default(#20002,#10000,1,1,4,1)
hasLocation(#20001,#20002)
#20003=@"var;{cdr};{#20000}"
variables(#20003,"cdr",#20000)
#20002=*
lines(#20002,#20001,"function cdr(o) {","
")
#20003=@"loc,{#10000},1,1,1,17"
locations_default(#20003,#10000,1,1,1,17)
hasLocation(#20002,#20003)
#20004=*
stmts(#20004,17,#20001,0,"functio ... n ys;\n}")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,78,#20004,-1,"cdr")
#20006=@"loc,{#10000},1,10,1,12"
locations_default(#20006,#10000,1,10,1,12)
hasLocation(#20005,#20006)
exprContainers(#20005,#20004)
literals("cdr","cdr",#20005)
decl(#20005,#20003)
#20007=*
scopes(#20007,1)
scopenodes(#20004,#20007)
scopenesting(#20007,#20000)
#20008=@"var;{ys};{#20007}"
variables(#20008,"ys",#20007)
#20009=@"var;{o};{#20007}"
variables(#20009,"o",#20007)
#20010=*
exprs(#20010,78,#20004,0,"o")
#20011=@"loc,{#10000},1,14,1,14"
locations_default(#20011,#10000,1,14,1,14)
hasLocation(#20010,#20011)
exprContainers(#20010,#20004)
literals("o","o",#20010)
decl(#20010,#20009)
#20012=@"var;{arguments};{#20007}"
variables(#20012,"arguments",#20007)
isArgumentsObject(#20012)
#20013=*
stmts(#20013,1,#20004,-2,"{\n var ... n ys;\n}")
#20014=@"loc,{#10000},1,17,4,1"
locations_default(#20014,#10000,1,17,4,1)
hasLocation(#20013,#20014)
stmtContainers(#20013,#20004)
#20015=*
stmts(#20015,18,#20013,0,"var [, ...ys] = o;")
#20016=@"loc,{#10000},2,3,2,20"
locations_default(#20016,#10000,2,3,2,20)
hasLocation(#20015,#20016)
stmtContainers(#20015,#20004)
#20017=*
exprs(#20017,64,#20015,0,"[, ...ys] = o")
#20018=@"loc,{#10000},2,7,2,19"
locations_default(#20018,#10000,2,7,2,19)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20015)
exprContainers(#20017,#20004)
#20019=*
exprs(#20019,67,#20017,0,"[, ...ys]")
#20020=@"loc,{#10000},2,7,2,15"
locations_default(#20020,#10000,2,7,2,15)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20015)
exprContainers(#20019,#20004)
#20021=*
exprs(#20021,78,#20019,-1,"ys")
#20022=@"loc,{#10000},2,13,2,14"
locations_default(#20022,#10000,2,13,2,14)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20015)
exprContainers(#20021,#20004)
literals("ys","ys",#20021)
decl(#20021,#20008)
arraySize(#20019,1)
#20023=*
exprs(#20023,79,#20017,1,"o")
#20024=@"loc,{#10000},2,19,2,19"
locations_default(#20024,#10000,2,19,2,19)
hasLocation(#20023,#20024)
enclosingStmt(#20023,#20015)
exprContainers(#20023,#20004)
literals("o","o",#20023)
bind(#20023,#20009)
#20025=*
stmts(#20025,9,#20013,1,"return ys;")
#20026=@"loc,{#10000},3,3,3,12"
locations_default(#20026,#10000,3,3,3,12)
hasLocation(#20025,#20026)
stmtContainers(#20025,#20004)
#20027=*
exprs(#20027,79,#20025,0,"ys")
#20028=@"loc,{#10000},3,10,3,11"
locations_default(#20028,#10000,3,10,3,11)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20025)
exprContainers(#20027,#20004)
literals("ys","ys",#20027)
bind(#20027,#20008)
numlines(#20004,4,4,0)
#20029=*
lines(#20029,#20001,"function cdr(o) {","
lines(#20004,#20001," var [, ...ys] = o;","
")
#20030=@"loc,{#10000},1,1,1,17"
locations_default(#20030,#10000,1,1,1,17)
hasLocation(#20029,#20030)
#20031=*
lines(#20031,#20001," var [, ...ys] = o;","
")
#20032=@"loc,{#10000},2,1,2,20"
locations_default(#20032,#10000,2,1,2,20)
hasLocation(#20031,#20032)
#20005=@"loc,{#10000},2,1,2,20"
locations_default(#20005,#10000,2,1,2,20)
hasLocation(#20004,#20005)
indentation(#10000,2," ",2)
#20033=*
lines(#20033,#20001," return ys;","
#20006=*
lines(#20006,#20001," return ys;","
")
#20034=@"loc,{#10000},3,1,3,12"
locations_default(#20034,#10000,3,1,3,12)
hasLocation(#20033,#20034)
#20007=@"loc,{#10000},3,1,3,12"
locations_default(#20007,#10000,3,1,3,12)
hasLocation(#20006,#20007)
indentation(#10000,3," ",2)
#20035=*
lines(#20035,#20001,"}","")
#20036=@"loc,{#10000},4,1,4,1"
locations_default(#20036,#10000,4,1,4,1)
hasLocation(#20035,#20036)
#20008=*
lines(#20008,#20001,"}","")
#20009=@"loc,{#10000},4,1,4,1"
locations_default(#20009,#10000,4,1,4,1)
hasLocation(#20008,#20009)
numlines(#20001,4,4,0)
#20037=*
tokeninfo(#20037,7,#20001,0,"function")
#20038=@"loc,{#10000},1,1,1,8"
locations_default(#20038,#10000,1,1,1,8)
hasLocation(#20037,#20038)
#20039=*
tokeninfo(#20039,6,#20001,1,"cdr")
hasLocation(#20039,#20006)
#20010=*
tokeninfo(#20010,7,#20001,0,"function")
#20011=@"loc,{#10000},1,1,1,8"
locations_default(#20011,#10000,1,1,1,8)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,1,"cdr")
#20013=@"loc,{#10000},1,10,1,12"
locations_default(#20013,#10000,1,10,1,12)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,2,"(")
#20015=@"loc,{#10000},1,13,1,13"
locations_default(#20015,#10000,1,13,1,13)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,6,#20001,3,"o")
#20017=@"loc,{#10000},1,14,1,14"
locations_default(#20017,#10000,1,14,1,14)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,4,")")
#20019=@"loc,{#10000},1,15,1,15"
locations_default(#20019,#10000,1,15,1,15)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,5,"{")
#20021=@"loc,{#10000},1,17,1,17"
locations_default(#20021,#10000,1,17,1,17)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,7,#20001,6,"var")
#20023=@"loc,{#10000},2,3,2,5"
locations_default(#20023,#10000,2,3,2,5)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,8,#20001,7,"[")
#20025=@"loc,{#10000},2,7,2,7"
locations_default(#20025,#10000,2,7,2,7)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,8,",")
#20027=@"loc,{#10000},2,8,2,8"
locations_default(#20027,#10000,2,8,2,8)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,9,"...")
#20029=@"loc,{#10000},2,10,2,12"
locations_default(#20029,#10000,2,10,2,12)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,6,#20001,10,"ys")
#20031=@"loc,{#10000},2,13,2,14"
locations_default(#20031,#10000,2,13,2,14)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,8,#20001,11,"]")
#20033=@"loc,{#10000},2,15,2,15"
locations_default(#20033,#10000,2,15,2,15)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,8,#20001,12,"=")
#20035=@"loc,{#10000},2,17,2,17"
locations_default(#20035,#10000,2,17,2,17)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,6,#20001,13,"o")
#20037=@"loc,{#10000},2,19,2,19"
locations_default(#20037,#10000,2,19,2,19)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,8,#20001,14,";")
#20039=@"loc,{#10000},2,20,2,20"
locations_default(#20039,#10000,2,20,2,20)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,8,#20001,2,"(")
#20041=@"loc,{#10000},1,13,1,13"
locations_default(#20041,#10000,1,13,1,13)
tokeninfo(#20040,7,#20001,15,"return")
#20041=@"loc,{#10000},3,3,3,8"
locations_default(#20041,#10000,3,3,3,8)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,6,#20001,3,"o")
hasLocation(#20042,#20011)
#20043=*
tokeninfo(#20043,8,#20001,4,")")
#20044=@"loc,{#10000},1,15,1,15"
locations_default(#20044,#10000,1,15,1,15)
hasLocation(#20043,#20044)
#20045=*
tokeninfo(#20045,8,#20001,5,"{")
#20046=@"loc,{#10000},1,17,1,17"
locations_default(#20046,#10000,1,17,1,17)
hasLocation(#20045,#20046)
tokeninfo(#20042,6,#20001,16,"ys")
#20043=@"loc,{#10000},3,10,3,11"
locations_default(#20043,#10000,3,10,3,11)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,8,#20001,17,";")
#20045=@"loc,{#10000},3,12,3,12"
locations_default(#20045,#10000,3,12,3,12)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,8,#20001,18,"}")
hasLocation(#20046,#20009)
#20047=*
tokeninfo(#20047,7,#20001,6,"var")
#20048=@"loc,{#10000},2,3,2,5"
locations_default(#20048,#10000,2,3,2,5)
tokeninfo(#20047,0,#20001,19,"")
#20048=@"loc,{#10000},4,2,4,1"
locations_default(#20048,#10000,4,2,4,1)
hasLocation(#20047,#20048)
#20049=*
tokeninfo(#20049,8,#20001,7,"[")
#20050=@"loc,{#10000},2,7,2,7"
locations_default(#20050,#10000,2,7,2,7)
hasLocation(#20049,#20050)
toplevels(#20001,0)
#20049=@"loc,{#10000},1,1,4,1"
locations_default(#20049,#10000,1,1,4,1)
hasLocation(#20001,#20049)
#20050=@"var;{cdr};{#20000}"
variables(#20050,"cdr",#20000)
#20051=*
tokeninfo(#20051,8,#20001,8,",")
#20052=@"loc,{#10000},2,8,2,8"
locations_default(#20052,#10000,2,8,2,8)
hasLocation(#20051,#20052)
stmts(#20051,17,#20001,0,"functio ... n ys;\n}")
hasLocation(#20051,#20049)
stmtContainers(#20051,#20001)
#20052=*
exprs(#20052,78,#20051,-1,"cdr")
hasLocation(#20052,#20013)
exprContainers(#20052,#20051)
literals("cdr","cdr",#20052)
decl(#20052,#20050)
#20053=*
tokeninfo(#20053,8,#20001,9,"...")
#20054=@"loc,{#10000},2,10,2,12"
locations_default(#20054,#10000,2,10,2,12)
hasLocation(#20053,#20054)
#20055=*
tokeninfo(#20055,6,#20001,10,"ys")
hasLocation(#20055,#20022)
scopes(#20053,1)
scopenodes(#20051,#20053)
scopenesting(#20053,#20000)
#20054=@"var;{ys};{#20053}"
variables(#20054,"ys",#20053)
#20055=@"var;{o};{#20053}"
variables(#20055,"o",#20053)
#20056=*
tokeninfo(#20056,8,#20001,11,"]")
#20057=@"loc,{#10000},2,15,2,15"
locations_default(#20057,#10000,2,15,2,15)
hasLocation(#20056,#20057)
exprs(#20056,78,#20051,0,"o")
hasLocation(#20056,#20017)
exprContainers(#20056,#20051)
literals("o","o",#20056)
decl(#20056,#20055)
#20057=@"var;{arguments};{#20053}"
variables(#20057,"arguments",#20053)
isArgumentsObject(#20057)
#20058=*
tokeninfo(#20058,8,#20001,12,"=")
#20059=@"loc,{#10000},2,17,2,17"
locations_default(#20059,#10000,2,17,2,17)
stmts(#20058,1,#20051,-2,"{\n var ... n ys;\n}")
#20059=@"loc,{#10000},1,17,4,1"
locations_default(#20059,#10000,1,17,4,1)
hasLocation(#20058,#20059)
stmtContainers(#20058,#20051)
#20060=*
tokeninfo(#20060,6,#20001,13,"o")
hasLocation(#20060,#20024)
#20061=*
tokeninfo(#20061,8,#20001,14,";")
#20062=@"loc,{#10000},2,20,2,20"
locations_default(#20062,#10000,2,20,2,20)
hasLocation(#20061,#20062)
#20063=*
tokeninfo(#20063,7,#20001,15,"return")
#20064=@"loc,{#10000},3,3,3,8"
locations_default(#20064,#10000,3,3,3,8)
hasLocation(#20063,#20064)
#20065=*
tokeninfo(#20065,6,#20001,16,"ys")
hasLocation(#20065,#20028)
stmts(#20060,18,#20058,0,"var [, ...ys] = o;")
#20061=@"loc,{#10000},2,3,2,20"
locations_default(#20061,#10000,2,3,2,20)
hasLocation(#20060,#20061)
stmtContainers(#20060,#20051)
#20062=*
exprs(#20062,64,#20060,0,"[, ...ys] = o")
#20063=@"loc,{#10000},2,7,2,19"
locations_default(#20063,#10000,2,7,2,19)
hasLocation(#20062,#20063)
enclosingStmt(#20062,#20060)
exprContainers(#20062,#20051)
#20064=*
exprs(#20064,67,#20062,0,"[, ...ys]")
#20065=@"loc,{#10000},2,7,2,15"
locations_default(#20065,#10000,2,7,2,15)
hasLocation(#20064,#20065)
enclosingStmt(#20064,#20060)
exprContainers(#20064,#20051)
#20066=*
tokeninfo(#20066,8,#20001,17,";")
#20067=@"loc,{#10000},3,12,3,12"
locations_default(#20067,#10000,3,12,3,12)
hasLocation(#20066,#20067)
exprs(#20066,78,#20064,-1,"ys")
hasLocation(#20066,#20031)
enclosingStmt(#20066,#20060)
exprContainers(#20066,#20051)
literals("ys","ys",#20066)
decl(#20066,#20054)
arraySize(#20064,1)
#20067=*
exprs(#20067,79,#20062,1,"o")
hasLocation(#20067,#20037)
enclosingStmt(#20067,#20060)
exprContainers(#20067,#20051)
literals("o","o",#20067)
bind(#20067,#20055)
#20068=*
tokeninfo(#20068,8,#20001,18,"}")
hasLocation(#20068,#20036)
#20069=*
tokeninfo(#20069,0,#20001,19,"")
#20070=@"loc,{#10000},4,2,4,1"
locations_default(#20070,#10000,4,2,4,1)
hasLocation(#20069,#20070)
stmts(#20068,9,#20058,1,"return ys;")
#20069=@"loc,{#10000},3,3,3,12"
locations_default(#20069,#10000,3,3,3,12)
hasLocation(#20068,#20069)
stmtContainers(#20068,#20051)
#20070=*
exprs(#20070,79,#20068,0,"ys")
hasLocation(#20070,#20043)
enclosingStmt(#20070,#20068)
exprContainers(#20070,#20051)
literals("ys","ys",#20070)
bind(#20070,#20054)
#20071=*
entry_cfg_node(#20071,#20001)
#20072=@"loc,{#10000},1,1,1,0"
@@ -228,25 +227,25 @@ locations_default(#20072,#10000,1,1,1,0)
hasLocation(#20071,#20072)
#20073=*
exit_cfg_node(#20073,#20001)
hasLocation(#20073,#20070)
successor(#20004,#20073)
hasLocation(#20073,#20048)
successor(#20051,#20073)
#20074=*
entry_cfg_node(#20074,#20004)
entry_cfg_node(#20074,#20051)
hasLocation(#20074,#20072)
#20075=*
exit_cfg_node(#20075,#20004)
hasLocation(#20075,#20070)
successor(#20013,#20015)
successor(#20027,#20025)
successor(#20025,#20075)
successor(#20015,#20023)
successor(#20019,#20021)
successor(#20021,#20017)
successor(#20023,#20019)
successor(#20017,#20027)
successor(#20010,#20013)
successor(#20074,#20010)
successor(#20005,#20004)
successor(#20071,#20005)
exit_cfg_node(#20075,#20051)
hasLocation(#20075,#20048)
successor(#20058,#20060)
successor(#20070,#20068)
successor(#20068,#20075)
successor(#20060,#20067)
successor(#20064,#20066)
successor(#20066,#20062)
successor(#20067,#20064)
successor(#20062,#20070)
successor(#20056,#20058)
successor(#20074,#20056)
successor(#20052,#20051)
successor(#20071,#20052)
numlines(#10000,4,4,0)
filetype(#10000,"javascript")

View File

@@ -9,464 +9,461 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,3,48"
locations_default(#20002,#10000,1,1,3,48)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"[""a"", "" ... ength);")
#20004=@"loc,{#10000},1,1,1,38"
locations_default(#20004,#10000,1,1,1,38)
hasLocation(#20003,#20004)
stmtContainers(#20003,#20001)
#20005=*
exprs(#20005,13,#20003,0,"[""a"", "" ... length)")
#20006=@"loc,{#10000},1,1,1,37"
locations_default(#20006,#10000,1,1,1,37)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20003)
exprContainers(#20005,#20001)
#20007=*
exprs(#20007,14,#20005,-1,"[""a"", "" ... c""].map")
#20008=@"loc,{#10000},1,1,1,22"
locations_default(#20008,#10000,1,1,1,22)
hasLocation(#20007,#20008)
enclosingStmt(#20007,#20003)
exprContainers(#20007,#20001)
#20009=*
exprs(#20009,7,#20007,0,"[""a"", ""ab"", ""abc""]")
#20010=@"loc,{#10000},1,1,1,18"
locations_default(#20010,#10000,1,1,1,18)
hasLocation(#20009,#20010)
enclosingStmt(#20009,#20003)
exprContainers(#20009,#20001)
#20011=*
exprs(#20011,4,#20009,0,"""a""")
#20012=@"loc,{#10000},1,2,1,4"
locations_default(#20012,#10000,1,2,1,4)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20003)
exprContainers(#20011,#20001)
literals("a","""a""",#20011)
#20013=*
exprs(#20013,4,#20009,1,"""ab""")
#20014=@"loc,{#10000},1,7,1,10"
locations_default(#20014,#10000,1,7,1,10)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
literals("ab","""ab""",#20013)
#20015=*
exprs(#20015,4,#20009,2,"""abc""")
#20016=@"loc,{#10000},1,13,1,17"
locations_default(#20016,#10000,1,13,1,17)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20003)
exprContainers(#20015,#20001)
literals("abc","""abc""",#20015)
arraySize(#20009,3)
#20017=*
exprs(#20017,0,#20007,1,"map")
#20018=@"loc,{#10000},1,20,1,22"
locations_default(#20018,#10000,1,20,1,22)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20003)
exprContainers(#20017,#20001)
literals("map","map",#20017)
#20019=*
exprs(#20019,65,#20005,0,"s => s.length")
#20020=@"loc,{#10000},1,24,1,36"
locations_default(#20020,#10000,1,24,1,36)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20003)
exprContainers(#20019,#20001)
#20021=*
scopes(#20021,1)
scopenodes(#20019,#20021)
scopenesting(#20021,#20000)
#20022=@"var;{s};{#20021}"
variables(#20022,"s",#20021)
#20023=*
exprs(#20023,78,#20019,0,"s")
#20024=@"loc,{#10000},1,24,1,24"
locations_default(#20024,#10000,1,24,1,24)
hasLocation(#20023,#20024)
exprContainers(#20023,#20019)
literals("s","s",#20023)
decl(#20023,#20022)
#20025=*
exprs(#20025,14,#20019,-2,"s.length")
#20026=@"loc,{#10000},1,29,1,36"
locations_default(#20026,#10000,1,29,1,36)
hasLocation(#20025,#20026)
exprContainers(#20025,#20019)
#20027=*
exprs(#20027,79,#20025,0,"s")
#20028=@"loc,{#10000},1,29,1,29"
locations_default(#20028,#10000,1,29,1,29)
hasLocation(#20027,#20028)
exprContainers(#20027,#20019)
literals("s","s",#20027)
bind(#20027,#20022)
#20029=*
exprs(#20029,0,#20025,1,"length")
#20030=@"loc,{#10000},1,31,1,36"
locations_default(#20030,#10000,1,31,1,36)
hasLocation(#20029,#20030)
exprContainers(#20029,#20019)
literals("length","length",#20029)
numlines(#20019,1,1,0)
#20031=*
stmts(#20031,2,#20001,1,"setInte ... 1000);")
#20032=@"loc,{#10000},2,1,2,31"
locations_default(#20032,#10000,2,1,2,31)
hasLocation(#20031,#20032)
stmtContainers(#20031,#20001)
#20033=*
exprs(#20033,13,#20031,0,"setInte ... , 1000)")
#20034=@"loc,{#10000},2,1,2,30"
locations_default(#20034,#10000,2,1,2,30)
hasLocation(#20033,#20034)
enclosingStmt(#20033,#20031)
exprContainers(#20033,#20001)
#20035=*
exprs(#20035,79,#20033,-1,"setInterval")
#20036=@"loc,{#10000},2,1,2,11"
locations_default(#20036,#10000,2,1,2,11)
hasLocation(#20035,#20036)
enclosingStmt(#20035,#20031)
exprContainers(#20035,#20001)
literals("setInterval","setInterval",#20035)
#20037=@"var;{setInterval};{#20000}"
variables(#20037,"setInterval",#20000)
bind(#20035,#20037)
#20038=*
exprs(#20038,65,#20033,0,"() => ++cnt")
#20039=@"loc,{#10000},2,13,2,23"
locations_default(#20039,#10000,2,13,2,23)
hasLocation(#20038,#20039)
enclosingStmt(#20038,#20031)
exprContainers(#20038,#20001)
#20040=*
scopes(#20040,1)
scopenodes(#20038,#20040)
scopenesting(#20040,#20000)
#20041=*
exprs(#20041,59,#20038,-2,"++cnt")
#20042=@"loc,{#10000},2,19,2,23"
locations_default(#20042,#10000,2,19,2,23)
hasLocation(#20041,#20042)
exprContainers(#20041,#20038)
#20043=*
exprs(#20043,79,#20041,0,"cnt")
#20044=@"loc,{#10000},2,21,2,23"
locations_default(#20044,#10000,2,21,2,23)
hasLocation(#20043,#20044)
exprContainers(#20043,#20038)
literals("cnt","cnt",#20043)
#20045=@"var;{cnt};{#20000}"
variables(#20045,"cnt",#20000)
bind(#20043,#20045)
numlines(#20038,1,1,0)
#20046=*
exprs(#20046,3,#20033,1,"1000")
#20047=@"loc,{#10000},2,26,2,29"
locations_default(#20047,#10000,2,26,2,29)
hasLocation(#20046,#20047)
enclosingStmt(#20046,#20031)
exprContainers(#20046,#20001)
literals("1000","1000",#20046)
#20048=*
stmts(#20048,2,#20001,2,"setTime ... 60000);")
#20049=@"loc,{#10000},3,1,3,48"
locations_default(#20049,#10000,3,1,3,48)
hasLocation(#20048,#20049)
stmtContainers(#20048,#20001)
#20050=*
exprs(#20050,13,#20048,0,"setTime ... 60000)")
#20051=@"loc,{#10000},3,1,3,47"
locations_default(#20051,#10000,3,1,3,47)
hasLocation(#20050,#20051)
enclosingStmt(#20050,#20048)
exprContainers(#20050,#20001)
#20052=*
exprs(#20052,79,#20050,-1,"setTimeout")
#20053=@"loc,{#10000},3,1,3,10"
locations_default(#20053,#10000,3,1,3,10)
hasLocation(#20052,#20053)
enclosingStmt(#20052,#20048)
exprContainers(#20052,#20001)
literals("setTimeout","setTimeout",#20052)
#20054=@"var;{setTimeout};{#20000}"
variables(#20054,"setTimeout",#20000)
bind(#20052,#20054)
#20055=*
exprs(#20055,65,#20050,0,"() => { ... p!""); }")
#20056=@"loc,{#10000},3,12,3,39"
locations_default(#20056,#10000,3,12,3,39)
hasLocation(#20055,#20056)
enclosingStmt(#20055,#20048)
exprContainers(#20055,#20001)
#20057=*
scopes(#20057,1)
scopenodes(#20055,#20057)
scopenesting(#20057,#20000)
#20058=*
stmts(#20058,1,#20055,-2,"{ alert ... p!""); }")
#20059=@"loc,{#10000},3,18,3,39"
locations_default(#20059,#10000,3,18,3,39)
hasLocation(#20058,#20059)
stmtContainers(#20058,#20055)
#20060=*
stmts(#20060,2,#20058,0,"alert(""Wake up!"");")
#20061=@"loc,{#10000},3,20,3,37"
locations_default(#20061,#10000,3,20,3,37)
hasLocation(#20060,#20061)
stmtContainers(#20060,#20055)
#20062=*
exprs(#20062,13,#20060,0,"alert(""Wake up!"")")
#20063=@"loc,{#10000},3,20,3,36"
locations_default(#20063,#10000,3,20,3,36)
hasLocation(#20062,#20063)
enclosingStmt(#20062,#20060)
exprContainers(#20062,#20055)
#20064=*
exprs(#20064,79,#20062,-1,"alert")
#20065=@"loc,{#10000},3,20,3,24"
locations_default(#20065,#10000,3,20,3,24)
hasLocation(#20064,#20065)
enclosingStmt(#20064,#20060)
exprContainers(#20064,#20055)
literals("alert","alert",#20064)
#20066=@"var;{alert};{#20000}"
variables(#20066,"alert",#20000)
bind(#20064,#20066)
#20067=*
exprs(#20067,4,#20062,0,"""Wake up!""")
#20068=@"loc,{#10000},3,26,3,35"
locations_default(#20068,#10000,3,26,3,35)
hasLocation(#20067,#20068)
enclosingStmt(#20067,#20060)
exprContainers(#20067,#20055)
literals("Wake up!","""Wake up!""",#20067)
numlines(#20055,1,1,0)
#20069=*
exprs(#20069,3,#20050,1,"60000")
#20070=@"loc,{#10000},3,42,3,46"
locations_default(#20070,#10000,3,42,3,46)
hasLocation(#20069,#20070)
enclosingStmt(#20069,#20048)
exprContainers(#20069,#20001)
literals("60000","60000",#20069)
#20071=*
lines(#20071,#20001,"[""a"", ""ab"", ""abc""].map(s => s.length);","
#20002=*
lines(#20002,#20001,"[""a"", ""ab"", ""abc""].map(s => s.length);","
")
hasLocation(#20071,#20004)
#20072=*
lines(#20072,#20001,"setInterval(() => ++cnt, 1000);","
#20003=@"loc,{#10000},1,1,1,38"
locations_default(#20003,#10000,1,1,1,38)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001,"setInterval(() => ++cnt, 1000);","
")
hasLocation(#20072,#20032)
#20073=*
lines(#20073,#20001,"setTimeout(() => { alert(""Wake up!""); }, 60000);","")
hasLocation(#20073,#20049)
#20005=@"loc,{#10000},2,1,2,31"
locations_default(#20005,#10000,2,1,2,31)
hasLocation(#20004,#20005)
#20006=*
lines(#20006,#20001,"setTimeout(() => { alert(""Wake up!""); }, 60000);","")
#20007=@"loc,{#10000},3,1,3,48"
locations_default(#20007,#10000,3,1,3,48)
hasLocation(#20006,#20007)
numlines(#20001,3,3,0)
#20008=*
tokeninfo(#20008,8,#20001,0,"[")
#20009=@"loc,{#10000},1,1,1,1"
locations_default(#20009,#10000,1,1,1,1)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,4,#20001,1,"""a""")
#20011=@"loc,{#10000},1,2,1,4"
locations_default(#20011,#10000,1,2,1,4)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,2,",")
#20013=@"loc,{#10000},1,5,1,5"
locations_default(#20013,#10000,1,5,1,5)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,4,#20001,3,"""ab""")
#20015=@"loc,{#10000},1,7,1,10"
locations_default(#20015,#10000,1,7,1,10)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,4,",")
#20017=@"loc,{#10000},1,11,1,11"
locations_default(#20017,#10000,1,11,1,11)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,4,#20001,5,"""abc""")
#20019=@"loc,{#10000},1,13,1,17"
locations_default(#20019,#10000,1,13,1,17)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,6,"]")
#20021=@"loc,{#10000},1,18,1,18"
locations_default(#20021,#10000,1,18,1,18)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,7,".")
#20023=@"loc,{#10000},1,19,1,19"
locations_default(#20023,#10000,1,19,1,19)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,8,"map")
#20025=@"loc,{#10000},1,20,1,22"
locations_default(#20025,#10000,1,20,1,22)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,9,"(")
#20027=@"loc,{#10000},1,23,1,23"
locations_default(#20027,#10000,1,23,1,23)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,6,#20001,10,"s")
#20029=@"loc,{#10000},1,24,1,24"
locations_default(#20029,#10000,1,24,1,24)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,11,"=>")
#20031=@"loc,{#10000},1,26,1,27"
locations_default(#20031,#10000,1,26,1,27)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,12,"s")
#20033=@"loc,{#10000},1,29,1,29"
locations_default(#20033,#10000,1,29,1,29)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,8,#20001,13,".")
#20035=@"loc,{#10000},1,30,1,30"
locations_default(#20035,#10000,1,30,1,30)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,6,#20001,14,"length")
#20037=@"loc,{#10000},1,31,1,36"
locations_default(#20037,#10000,1,31,1,36)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,8,#20001,15,")")
#20039=@"loc,{#10000},1,37,1,37"
locations_default(#20039,#10000,1,37,1,37)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,8,#20001,16,";")
#20041=@"loc,{#10000},1,38,1,38"
locations_default(#20041,#10000,1,38,1,38)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,6,#20001,17,"setInterval")
#20043=@"loc,{#10000},2,1,2,11"
locations_default(#20043,#10000,2,1,2,11)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,8,#20001,18,"(")
#20045=@"loc,{#10000},2,12,2,12"
locations_default(#20045,#10000,2,12,2,12)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,8,#20001,19,"(")
#20047=@"loc,{#10000},2,13,2,13"
locations_default(#20047,#10000,2,13,2,13)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,8,#20001,20,")")
#20049=@"loc,{#10000},2,14,2,14"
locations_default(#20049,#10000,2,14,2,14)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,8,#20001,21,"=>")
#20051=@"loc,{#10000},2,16,2,17"
locations_default(#20051,#10000,2,16,2,17)
hasLocation(#20050,#20051)
#20052=*
tokeninfo(#20052,8,#20001,22,"++")
#20053=@"loc,{#10000},2,19,2,20"
locations_default(#20053,#10000,2,19,2,20)
hasLocation(#20052,#20053)
#20054=*
tokeninfo(#20054,6,#20001,23,"cnt")
#20055=@"loc,{#10000},2,21,2,23"
locations_default(#20055,#10000,2,21,2,23)
hasLocation(#20054,#20055)
#20056=*
tokeninfo(#20056,8,#20001,24,",")
#20057=@"loc,{#10000},2,24,2,24"
locations_default(#20057,#10000,2,24,2,24)
hasLocation(#20056,#20057)
#20058=*
tokeninfo(#20058,3,#20001,25,"1000")
#20059=@"loc,{#10000},2,26,2,29"
locations_default(#20059,#10000,2,26,2,29)
hasLocation(#20058,#20059)
#20060=*
tokeninfo(#20060,8,#20001,26,")")
#20061=@"loc,{#10000},2,30,2,30"
locations_default(#20061,#10000,2,30,2,30)
hasLocation(#20060,#20061)
#20062=*
tokeninfo(#20062,8,#20001,27,";")
#20063=@"loc,{#10000},2,31,2,31"
locations_default(#20063,#10000,2,31,2,31)
hasLocation(#20062,#20063)
#20064=*
tokeninfo(#20064,6,#20001,28,"setTimeout")
#20065=@"loc,{#10000},3,1,3,10"
locations_default(#20065,#10000,3,1,3,10)
hasLocation(#20064,#20065)
#20066=*
tokeninfo(#20066,8,#20001,29,"(")
#20067=@"loc,{#10000},3,11,3,11"
locations_default(#20067,#10000,3,11,3,11)
hasLocation(#20066,#20067)
#20068=*
tokeninfo(#20068,8,#20001,30,"(")
#20069=@"loc,{#10000},3,12,3,12"
locations_default(#20069,#10000,3,12,3,12)
hasLocation(#20068,#20069)
#20070=*
tokeninfo(#20070,8,#20001,31,")")
#20071=@"loc,{#10000},3,13,3,13"
locations_default(#20071,#10000,3,13,3,13)
hasLocation(#20070,#20071)
#20072=*
tokeninfo(#20072,8,#20001,32,"=>")
#20073=@"loc,{#10000},3,15,3,16"
locations_default(#20073,#10000,3,15,3,16)
hasLocation(#20072,#20073)
#20074=*
tokeninfo(#20074,8,#20001,0,"[")
#20075=@"loc,{#10000},1,1,1,1"
locations_default(#20075,#10000,1,1,1,1)
tokeninfo(#20074,8,#20001,33,"{")
#20075=@"loc,{#10000},3,18,3,18"
locations_default(#20075,#10000,3,18,3,18)
hasLocation(#20074,#20075)
#20076=*
tokeninfo(#20076,4,#20001,1,"""a""")
hasLocation(#20076,#20012)
#20077=*
tokeninfo(#20077,8,#20001,2,",")
#20078=@"loc,{#10000},1,5,1,5"
locations_default(#20078,#10000,1,5,1,5)
hasLocation(#20077,#20078)
#20079=*
tokeninfo(#20079,4,#20001,3,"""ab""")
hasLocation(#20079,#20014)
tokeninfo(#20076,6,#20001,34,"alert")
#20077=@"loc,{#10000},3,20,3,24"
locations_default(#20077,#10000,3,20,3,24)
hasLocation(#20076,#20077)
#20078=*
tokeninfo(#20078,8,#20001,35,"(")
#20079=@"loc,{#10000},3,25,3,25"
locations_default(#20079,#10000,3,25,3,25)
hasLocation(#20078,#20079)
#20080=*
tokeninfo(#20080,8,#20001,4,",")
#20081=@"loc,{#10000},1,11,1,11"
locations_default(#20081,#10000,1,11,1,11)
tokeninfo(#20080,4,#20001,36,"""Wake up!""")
#20081=@"loc,{#10000},3,26,3,35"
locations_default(#20081,#10000,3,26,3,35)
hasLocation(#20080,#20081)
#20082=*
tokeninfo(#20082,4,#20001,5,"""abc""")
hasLocation(#20082,#20016)
#20083=*
tokeninfo(#20083,8,#20001,6,"]")
#20084=@"loc,{#10000},1,18,1,18"
locations_default(#20084,#10000,1,18,1,18)
hasLocation(#20083,#20084)
#20085=*
tokeninfo(#20085,8,#20001,7,".")
#20086=@"loc,{#10000},1,19,1,19"
locations_default(#20086,#10000,1,19,1,19)
hasLocation(#20085,#20086)
#20087=*
tokeninfo(#20087,6,#20001,8,"map")
hasLocation(#20087,#20018)
tokeninfo(#20082,8,#20001,37,")")
#20083=@"loc,{#10000},3,36,3,36"
locations_default(#20083,#10000,3,36,3,36)
hasLocation(#20082,#20083)
#20084=*
tokeninfo(#20084,8,#20001,38,";")
#20085=@"loc,{#10000},3,37,3,37"
locations_default(#20085,#10000,3,37,3,37)
hasLocation(#20084,#20085)
#20086=*
tokeninfo(#20086,8,#20001,39,"}")
#20087=@"loc,{#10000},3,39,3,39"
locations_default(#20087,#10000,3,39,3,39)
hasLocation(#20086,#20087)
#20088=*
tokeninfo(#20088,8,#20001,9,"(")
#20089=@"loc,{#10000},1,23,1,23"
locations_default(#20089,#10000,1,23,1,23)
tokeninfo(#20088,8,#20001,40,",")
#20089=@"loc,{#10000},3,40,3,40"
locations_default(#20089,#10000,3,40,3,40)
hasLocation(#20088,#20089)
#20090=*
tokeninfo(#20090,6,#20001,10,"s")
hasLocation(#20090,#20024)
#20091=*
tokeninfo(#20091,8,#20001,11,"=>")
#20092=@"loc,{#10000},1,26,1,27"
locations_default(#20092,#10000,1,26,1,27)
hasLocation(#20091,#20092)
#20093=*
tokeninfo(#20093,6,#20001,12,"s")
hasLocation(#20093,#20028)
tokeninfo(#20090,3,#20001,41,"60000")
#20091=@"loc,{#10000},3,42,3,46"
locations_default(#20091,#10000,3,42,3,46)
hasLocation(#20090,#20091)
#20092=*
tokeninfo(#20092,8,#20001,42,")")
#20093=@"loc,{#10000},3,47,3,47"
locations_default(#20093,#10000,3,47,3,47)
hasLocation(#20092,#20093)
#20094=*
tokeninfo(#20094,8,#20001,13,".")
#20095=@"loc,{#10000},1,30,1,30"
locations_default(#20095,#10000,1,30,1,30)
tokeninfo(#20094,8,#20001,43,";")
#20095=@"loc,{#10000},3,48,3,48"
locations_default(#20095,#10000,3,48,3,48)
hasLocation(#20094,#20095)
#20096=*
tokeninfo(#20096,6,#20001,14,"length")
hasLocation(#20096,#20030)
#20097=*
tokeninfo(#20097,8,#20001,15,")")
#20098=@"loc,{#10000},1,37,1,37"
locations_default(#20098,#10000,1,37,1,37)
hasLocation(#20097,#20098)
tokeninfo(#20096,0,#20001,44,"")
#20097=@"loc,{#10000},3,49,3,48"
locations_default(#20097,#10000,3,49,3,48)
hasLocation(#20096,#20097)
toplevels(#20001,0)
#20098=@"loc,{#10000},1,1,3,48"
locations_default(#20098,#10000,1,1,3,48)
hasLocation(#20001,#20098)
#20099=*
tokeninfo(#20099,8,#20001,16,";")
#20100=@"loc,{#10000},1,38,1,38"
locations_default(#20100,#10000,1,38,1,38)
hasLocation(#20099,#20100)
#20101=*
tokeninfo(#20101,6,#20001,17,"setInterval")
hasLocation(#20101,#20036)
stmts(#20099,2,#20001,0,"[""a"", "" ... ength);")
hasLocation(#20099,#20003)
stmtContainers(#20099,#20001)
#20100=*
exprs(#20100,13,#20099,0,"[""a"", "" ... length)")
#20101=@"loc,{#10000},1,1,1,37"
locations_default(#20101,#10000,1,1,1,37)
hasLocation(#20100,#20101)
enclosingStmt(#20100,#20099)
exprContainers(#20100,#20001)
#20102=*
tokeninfo(#20102,8,#20001,18,"(")
#20103=@"loc,{#10000},2,12,2,12"
locations_default(#20103,#10000,2,12,2,12)
exprs(#20102,14,#20100,-1,"[""a"", "" ... c""].map")
#20103=@"loc,{#10000},1,1,1,22"
locations_default(#20103,#10000,1,1,1,22)
hasLocation(#20102,#20103)
enclosingStmt(#20102,#20099)
exprContainers(#20102,#20001)
#20104=*
tokeninfo(#20104,8,#20001,19,"(")
#20105=@"loc,{#10000},2,13,2,13"
locations_default(#20105,#10000,2,13,2,13)
exprs(#20104,7,#20102,0,"[""a"", ""ab"", ""abc""]")
#20105=@"loc,{#10000},1,1,1,18"
locations_default(#20105,#10000,1,1,1,18)
hasLocation(#20104,#20105)
enclosingStmt(#20104,#20099)
exprContainers(#20104,#20001)
#20106=*
tokeninfo(#20106,8,#20001,20,")")
#20107=@"loc,{#10000},2,14,2,14"
locations_default(#20107,#10000,2,14,2,14)
hasLocation(#20106,#20107)
exprs(#20106,4,#20104,0,"""a""")
hasLocation(#20106,#20011)
enclosingStmt(#20106,#20099)
exprContainers(#20106,#20001)
literals("a","""a""",#20106)
#20107=*
exprs(#20107,4,#20104,1,"""ab""")
hasLocation(#20107,#20015)
enclosingStmt(#20107,#20099)
exprContainers(#20107,#20001)
literals("ab","""ab""",#20107)
#20108=*
tokeninfo(#20108,8,#20001,21,"=>")
#20109=@"loc,{#10000},2,16,2,17"
locations_default(#20109,#10000,2,16,2,17)
hasLocation(#20108,#20109)
exprs(#20108,4,#20104,2,"""abc""")
hasLocation(#20108,#20019)
enclosingStmt(#20108,#20099)
exprContainers(#20108,#20001)
literals("abc","""abc""",#20108)
arraySize(#20104,3)
#20109=*
exprs(#20109,0,#20102,1,"map")
hasLocation(#20109,#20025)
enclosingStmt(#20109,#20099)
exprContainers(#20109,#20001)
literals("map","map",#20109)
#20110=*
tokeninfo(#20110,8,#20001,22,"++")
#20111=@"loc,{#10000},2,19,2,20"
locations_default(#20111,#10000,2,19,2,20)
exprs(#20110,65,#20100,0,"s => s.length")
#20111=@"loc,{#10000},1,24,1,36"
locations_default(#20111,#10000,1,24,1,36)
hasLocation(#20110,#20111)
enclosingStmt(#20110,#20099)
exprContainers(#20110,#20001)
#20112=*
tokeninfo(#20112,6,#20001,23,"cnt")
hasLocation(#20112,#20044)
#20113=*
tokeninfo(#20113,8,#20001,24,",")
#20114=@"loc,{#10000},2,24,2,24"
locations_default(#20114,#10000,2,24,2,24)
hasLocation(#20113,#20114)
scopes(#20112,1)
scopenodes(#20110,#20112)
scopenesting(#20112,#20000)
#20113=@"var;{s};{#20112}"
variables(#20113,"s",#20112)
#20114=*
exprs(#20114,78,#20110,0,"s")
hasLocation(#20114,#20029)
exprContainers(#20114,#20110)
literals("s","s",#20114)
decl(#20114,#20113)
#20115=*
tokeninfo(#20115,3,#20001,25,"1000")
hasLocation(#20115,#20047)
#20116=*
tokeninfo(#20116,8,#20001,26,")")
#20117=@"loc,{#10000},2,30,2,30"
locations_default(#20117,#10000,2,30,2,30)
hasLocation(#20116,#20117)
exprs(#20115,14,#20110,-2,"s.length")
#20116=@"loc,{#10000},1,29,1,36"
locations_default(#20116,#10000,1,29,1,36)
hasLocation(#20115,#20116)
exprContainers(#20115,#20110)
#20117=*
exprs(#20117,79,#20115,0,"s")
hasLocation(#20117,#20033)
exprContainers(#20117,#20110)
literals("s","s",#20117)
bind(#20117,#20113)
#20118=*
tokeninfo(#20118,8,#20001,27,";")
#20119=@"loc,{#10000},2,31,2,31"
locations_default(#20119,#10000,2,31,2,31)
hasLocation(#20118,#20119)
exprs(#20118,0,#20115,1,"length")
hasLocation(#20118,#20037)
exprContainers(#20118,#20110)
literals("length","length",#20118)
#20119=*
stmts(#20119,2,#20001,1,"setInte ... 1000);")
hasLocation(#20119,#20005)
stmtContainers(#20119,#20001)
#20120=*
tokeninfo(#20120,6,#20001,28,"setTimeout")
hasLocation(#20120,#20053)
#20121=*
tokeninfo(#20121,8,#20001,29,"(")
#20122=@"loc,{#10000},3,11,3,11"
locations_default(#20122,#10000,3,11,3,11)
hasLocation(#20121,#20122)
#20123=*
tokeninfo(#20123,8,#20001,30,"(")
#20124=@"loc,{#10000},3,12,3,12"
locations_default(#20124,#10000,3,12,3,12)
hasLocation(#20123,#20124)
#20125=*
tokeninfo(#20125,8,#20001,31,")")
#20126=@"loc,{#10000},3,13,3,13"
locations_default(#20126,#10000,3,13,3,13)
hasLocation(#20125,#20126)
exprs(#20120,13,#20119,0,"setInte ... , 1000)")
#20121=@"loc,{#10000},2,1,2,30"
locations_default(#20121,#10000,2,1,2,30)
hasLocation(#20120,#20121)
enclosingStmt(#20120,#20119)
exprContainers(#20120,#20001)
#20122=*
exprs(#20122,79,#20120,-1,"setInterval")
hasLocation(#20122,#20043)
enclosingStmt(#20122,#20119)
exprContainers(#20122,#20001)
literals("setInterval","setInterval",#20122)
#20123=@"var;{setInterval};{#20000}"
variables(#20123,"setInterval",#20000)
bind(#20122,#20123)
#20124=*
exprs(#20124,65,#20120,0,"() => ++cnt")
#20125=@"loc,{#10000},2,13,2,23"
locations_default(#20125,#10000,2,13,2,23)
hasLocation(#20124,#20125)
enclosingStmt(#20124,#20119)
exprContainers(#20124,#20001)
#20126=*
scopes(#20126,1)
scopenodes(#20124,#20126)
scopenesting(#20126,#20000)
#20127=*
tokeninfo(#20127,8,#20001,32,"=>")
#20128=@"loc,{#10000},3,15,3,16"
locations_default(#20128,#10000,3,15,3,16)
exprs(#20127,59,#20124,-2,"++cnt")
#20128=@"loc,{#10000},2,19,2,23"
locations_default(#20128,#10000,2,19,2,23)
hasLocation(#20127,#20128)
exprContainers(#20127,#20124)
#20129=*
tokeninfo(#20129,8,#20001,33,"{")
#20130=@"loc,{#10000},3,18,3,18"
locations_default(#20130,#10000,3,18,3,18)
hasLocation(#20129,#20130)
exprs(#20129,79,#20127,0,"cnt")
hasLocation(#20129,#20055)
exprContainers(#20129,#20124)
literals("cnt","cnt",#20129)
#20130=@"var;{cnt};{#20000}"
variables(#20130,"cnt",#20000)
bind(#20129,#20130)
#20131=*
tokeninfo(#20131,6,#20001,34,"alert")
hasLocation(#20131,#20065)
exprs(#20131,3,#20120,1,"1000")
hasLocation(#20131,#20059)
enclosingStmt(#20131,#20119)
exprContainers(#20131,#20001)
literals("1000","1000",#20131)
#20132=*
tokeninfo(#20132,8,#20001,35,"(")
#20133=@"loc,{#10000},3,25,3,25"
locations_default(#20133,#10000,3,25,3,25)
hasLocation(#20132,#20133)
#20134=*
tokeninfo(#20134,4,#20001,36,"""Wake up!""")
hasLocation(#20134,#20068)
stmts(#20132,2,#20001,2,"setTime ... 60000);")
hasLocation(#20132,#20007)
stmtContainers(#20132,#20001)
#20133=*
exprs(#20133,13,#20132,0,"setTime ... 60000)")
#20134=@"loc,{#10000},3,1,3,47"
locations_default(#20134,#10000,3,1,3,47)
hasLocation(#20133,#20134)
enclosingStmt(#20133,#20132)
exprContainers(#20133,#20001)
#20135=*
tokeninfo(#20135,8,#20001,37,")")
#20136=@"loc,{#10000},3,36,3,36"
locations_default(#20136,#10000,3,36,3,36)
hasLocation(#20135,#20136)
exprs(#20135,79,#20133,-1,"setTimeout")
hasLocation(#20135,#20065)
enclosingStmt(#20135,#20132)
exprContainers(#20135,#20001)
literals("setTimeout","setTimeout",#20135)
#20136=@"var;{setTimeout};{#20000}"
variables(#20136,"setTimeout",#20000)
bind(#20135,#20136)
#20137=*
tokeninfo(#20137,8,#20001,38,";")
#20138=@"loc,{#10000},3,37,3,37"
locations_default(#20138,#10000,3,37,3,37)
exprs(#20137,65,#20133,0,"() => { ... p!""); }")
#20138=@"loc,{#10000},3,12,3,39"
locations_default(#20138,#10000,3,12,3,39)
hasLocation(#20137,#20138)
enclosingStmt(#20137,#20132)
exprContainers(#20137,#20001)
#20139=*
tokeninfo(#20139,8,#20001,39,"}")
#20140=@"loc,{#10000},3,39,3,39"
locations_default(#20140,#10000,3,39,3,39)
hasLocation(#20139,#20140)
#20141=*
tokeninfo(#20141,8,#20001,40,",")
#20142=@"loc,{#10000},3,40,3,40"
locations_default(#20142,#10000,3,40,3,40)
hasLocation(#20141,#20142)
#20143=*
tokeninfo(#20143,3,#20001,41,"60000")
hasLocation(#20143,#20070)
scopes(#20139,1)
scopenodes(#20137,#20139)
scopenesting(#20139,#20000)
#20140=*
stmts(#20140,1,#20137,-2,"{ alert ... p!""); }")
#20141=@"loc,{#10000},3,18,3,39"
locations_default(#20141,#10000,3,18,3,39)
hasLocation(#20140,#20141)
stmtContainers(#20140,#20137)
#20142=*
stmts(#20142,2,#20140,0,"alert(""Wake up!"");")
#20143=@"loc,{#10000},3,20,3,37"
locations_default(#20143,#10000,3,20,3,37)
hasLocation(#20142,#20143)
stmtContainers(#20142,#20137)
#20144=*
tokeninfo(#20144,8,#20001,42,")")
#20145=@"loc,{#10000},3,47,3,47"
locations_default(#20145,#10000,3,47,3,47)
exprs(#20144,13,#20142,0,"alert(""Wake up!"")")
#20145=@"loc,{#10000},3,20,3,36"
locations_default(#20145,#10000,3,20,3,36)
hasLocation(#20144,#20145)
enclosingStmt(#20144,#20142)
exprContainers(#20144,#20137)
#20146=*
tokeninfo(#20146,8,#20001,43,";")
#20147=@"loc,{#10000},3,48,3,48"
locations_default(#20147,#10000,3,48,3,48)
hasLocation(#20146,#20147)
exprs(#20146,79,#20144,-1,"alert")
hasLocation(#20146,#20077)
enclosingStmt(#20146,#20142)
exprContainers(#20146,#20137)
literals("alert","alert",#20146)
#20147=@"var;{alert};{#20000}"
variables(#20147,"alert",#20000)
bind(#20146,#20147)
#20148=*
tokeninfo(#20148,0,#20001,44,"")
#20149=@"loc,{#10000},3,49,3,48"
locations_default(#20149,#10000,3,49,3,48)
hasLocation(#20148,#20149)
exprs(#20148,4,#20144,0,"""Wake up!""")
hasLocation(#20148,#20081)
enclosingStmt(#20148,#20142)
exprContainers(#20148,#20137)
literals("Wake up!","""Wake up!""",#20148)
#20149=*
exprs(#20149,3,#20133,1,"60000")
hasLocation(#20149,#20091)
enclosingStmt(#20149,#20132)
exprContainers(#20149,#20001)
literals("60000","60000",#20149)
#20150=*
entry_cfg_node(#20150,#20001)
#20151=@"loc,{#10000},1,1,1,0"
@@ -474,70 +471,70 @@ locations_default(#20151,#10000,1,1,1,0)
hasLocation(#20150,#20151)
#20152=*
exit_cfg_node(#20152,#20001)
hasLocation(#20152,#20149)
successor(#20048,#20052)
successor(#20069,#20050)
successor(#20055,#20069)
hasLocation(#20152,#20097)
successor(#20132,#20135)
successor(#20149,#20133)
successor(#20137,#20149)
#20153=*
entry_cfg_node(#20153,#20055)
entry_cfg_node(#20153,#20137)
#20154=@"loc,{#10000},3,12,3,11"
locations_default(#20154,#10000,3,12,3,11)
hasLocation(#20153,#20154)
#20155=*
exit_cfg_node(#20155,#20055)
exit_cfg_node(#20155,#20137)
#20156=@"loc,{#10000},3,40,3,39"
locations_default(#20156,#10000,3,40,3,39)
hasLocation(#20155,#20156)
successor(#20058,#20060)
successor(#20060,#20064)
successor(#20067,#20062)
successor(#20064,#20067)
successor(#20062,#20155)
successor(#20153,#20058)
successor(#20052,#20055)
successor(#20050,#20152)
successor(#20031,#20035)
successor(#20046,#20033)
successor(#20038,#20046)
successor(#20140,#20142)
successor(#20142,#20146)
successor(#20148,#20144)
successor(#20146,#20148)
successor(#20144,#20155)
successor(#20153,#20140)
successor(#20135,#20137)
successor(#20133,#20152)
successor(#20119,#20122)
successor(#20131,#20120)
successor(#20124,#20131)
#20157=*
entry_cfg_node(#20157,#20038)
entry_cfg_node(#20157,#20124)
#20158=@"loc,{#10000},2,13,2,12"
locations_default(#20158,#10000,2,13,2,12)
hasLocation(#20157,#20158)
#20159=*
exit_cfg_node(#20159,#20038)
exit_cfg_node(#20159,#20124)
#20160=@"loc,{#10000},2,24,2,23"
locations_default(#20160,#10000,2,24,2,23)
hasLocation(#20159,#20160)
successor(#20043,#20041)
successor(#20041,#20159)
successor(#20157,#20043)
successor(#20035,#20038)
successor(#20033,#20048)
successor(#20003,#20009)
successor(#20019,#20005)
successor(#20129,#20127)
successor(#20127,#20159)
successor(#20157,#20129)
successor(#20122,#20124)
successor(#20120,#20132)
successor(#20099,#20104)
successor(#20110,#20100)
#20161=*
entry_cfg_node(#20161,#20019)
entry_cfg_node(#20161,#20110)
#20162=@"loc,{#10000},1,24,1,23"
locations_default(#20162,#10000,1,24,1,23)
hasLocation(#20161,#20162)
#20163=*
exit_cfg_node(#20163,#20019)
exit_cfg_node(#20163,#20110)
#20164=@"loc,{#10000},1,37,1,36"
locations_default(#20164,#10000,1,37,1,36)
hasLocation(#20163,#20164)
successor(#20029,#20025)
successor(#20027,#20029)
successor(#20025,#20163)
successor(#20023,#20027)
successor(#20161,#20023)
successor(#20017,#20007)
successor(#20009,#20011)
successor(#20015,#20017)
successor(#20013,#20015)
successor(#20011,#20013)
successor(#20007,#20019)
successor(#20005,#20031)
successor(#20150,#20003)
successor(#20118,#20115)
successor(#20117,#20118)
successor(#20115,#20163)
successor(#20114,#20117)
successor(#20161,#20114)
successor(#20109,#20102)
successor(#20104,#20106)
successor(#20108,#20109)
successor(#20107,#20108)
successor(#20106,#20107)
successor(#20102,#20110)
successor(#20100,#20119)
successor(#20150,#20099)
numlines(#10000,3,3,0)
filetype(#10000,"javascript")

View File

@@ -9,404 +9,401 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,8,1"
locations_default(#20002,#10000,1,1,8,1)
hasLocation(#20001,#20002)
#20003=@"var;{A};{#20000}"
variables(#20003,"A",#20000)
#20004=@"local_type_name;{A};{#20000}"
local_type_names(#20004,"A",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20002=*
lines(#20002,#20001,"class A {","
")
#20003=@"loc,{#10000},1,1,1,9"
locations_default(#20003,#10000,1,1,1,9)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001," get x() {","
")
#20005=@"loc,{#10000},2,1,2,11"
locations_default(#20005,#10000,2,1,2,11)
hasLocation(#20004,#20005)
indentation(#10000,2," ",2)
#20006=*
exprs(#20006,78,#20005,0,"A")
#20007=@"loc,{#10000},1,7,1,7"
locations_default(#20007,#10000,1,7,1,7)
lines(#20006,#20001," return this._x;","
")
#20007=@"loc,{#10000},3,1,3,19"
locations_default(#20007,#10000,3,1,3,19)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20005)
exprContainers(#20006,#20001)
literals("A","A",#20006)
decl(#20006,#20003)
typedecl(#20006,#20004)
indentation(#10000,3," ",4)
#20008=*
scopes(#20008,10)
scopenodes(#20005,#20008)
scopenesting(#20008,#20000)
#20009=*
properties(#20009,#20005,2,1,"get x() ... _x;\n }")
#20010=@"loc,{#10000},2,3,4,3"
locations_default(#20010,#10000,2,3,4,3)
hasLocation(#20009,#20010)
#20011=*
exprs(#20011,0,#20009,0,"x")
#20012=@"loc,{#10000},2,7,2,7"
locations_default(#20012,#10000,2,7,2,7)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20005)
exprContainers(#20011,#20001)
literals("x","x",#20011)
#20013=*
exprs(#20013,9,#20009,1,"() {\n ... _x;\n }")
#20014=@"loc,{#10000},2,8,4,3"
locations_default(#20014,#10000,2,8,4,3)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20005)
exprContainers(#20013,#20001)
#20015=*
scopes(#20015,1)
scopenodes(#20013,#20015)
scopenesting(#20015,#20008)
#20016=@"var;{arguments};{#20015}"
variables(#20016,"arguments",#20015)
isArgumentsObject(#20016)
#20017=*
stmts(#20017,1,#20013,-2,"{\n r ... _x;\n }")
#20018=@"loc,{#10000},2,11,4,3"
locations_default(#20018,#10000,2,11,4,3)
hasLocation(#20017,#20018)
stmtContainers(#20017,#20013)
#20019=*
stmts(#20019,9,#20017,0,"return this._x;")
#20020=@"loc,{#10000},3,5,3,19"
locations_default(#20020,#10000,3,5,3,19)
hasLocation(#20019,#20020)
stmtContainers(#20019,#20013)
#20021=*
exprs(#20021,14,#20019,0,"this._x")
#20022=@"loc,{#10000},3,12,3,18"
locations_default(#20022,#10000,3,12,3,18)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20019)
exprContainers(#20021,#20013)
#20023=*
exprs(#20023,6,#20021,0,"this")
#20024=@"loc,{#10000},3,12,3,15"
locations_default(#20024,#10000,3,12,3,15)
hasLocation(#20023,#20024)
enclosingStmt(#20023,#20019)
exprContainers(#20023,#20013)
#20025=*
exprs(#20025,0,#20021,1,"_x")
#20026=@"loc,{#10000},3,17,3,18"
locations_default(#20026,#10000,3,17,3,18)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20019)
exprContainers(#20025,#20013)
literals("_x","_x",#20025)
numlines(#20013,3,3,0)
isMethod(#20009)
#20027=*
properties(#20027,#20005,3,2,"set x(v ... +v;\n }")
#20028=@"loc,{#10000},5,3,7,3"
locations_default(#20028,#10000,5,3,7,3)
hasLocation(#20027,#20028)
#20029=*
exprs(#20029,0,#20027,0,"x")
#20030=@"loc,{#10000},5,7,5,7"
locations_default(#20030,#10000,5,7,5,7)
hasLocation(#20029,#20030)
enclosingStmt(#20029,#20005)
exprContainers(#20029,#20001)
literals("x","x",#20029)
#20031=*
exprs(#20031,9,#20027,1,"(v) {\n ... +v;\n }")
#20032=@"loc,{#10000},5,8,7,3"
locations_default(#20032,#10000,5,8,7,3)
hasLocation(#20031,#20032)
enclosingStmt(#20031,#20005)
exprContainers(#20031,#20001)
#20033=*
scopes(#20033,1)
scopenodes(#20031,#20033)
scopenesting(#20033,#20008)
#20034=@"var;{v};{#20033}"
variables(#20034,"v",#20033)
#20035=*
exprs(#20035,78,#20031,0,"v")
#20036=@"loc,{#10000},5,9,5,9"
locations_default(#20036,#10000,5,9,5,9)
hasLocation(#20035,#20036)
exprContainers(#20035,#20031)
literals("v","v",#20035)
decl(#20035,#20034)
#20037=@"var;{arguments};{#20033}"
variables(#20037,"arguments",#20033)
isArgumentsObject(#20037)
lines(#20008,#20001," }","
")
#20009=@"loc,{#10000},4,1,4,3"
locations_default(#20009,#10000,4,1,4,3)
hasLocation(#20008,#20009)
indentation(#10000,4," ",2)
#20010=*
lines(#20010,#20001," set x(v) {","
")
#20011=@"loc,{#10000},5,1,5,12"
locations_default(#20011,#10000,5,1,5,12)
hasLocation(#20010,#20011)
indentation(#10000,5," ",2)
#20012=*
lines(#20012,#20001," this._x = +v;","
")
#20013=@"loc,{#10000},6,1,6,17"
locations_default(#20013,#10000,6,1,6,17)
hasLocation(#20012,#20013)
indentation(#10000,6," ",4)
#20014=*
lines(#20014,#20001," }","
")
#20015=@"loc,{#10000},7,1,7,3"
locations_default(#20015,#10000,7,1,7,3)
hasLocation(#20014,#20015)
indentation(#10000,7," ",2)
#20016=*
lines(#20016,#20001,"}","")
#20017=@"loc,{#10000},8,1,8,1"
locations_default(#20017,#10000,8,1,8,1)
hasLocation(#20016,#20017)
numlines(#20001,8,8,0)
#20018=*
tokeninfo(#20018,7,#20001,0,"class")
#20019=@"loc,{#10000},1,1,1,5"
locations_default(#20019,#10000,1,1,1,5)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,6,#20001,1,"A")
#20021=@"loc,{#10000},1,7,1,7"
locations_default(#20021,#10000,1,7,1,7)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,2,"{")
#20023=@"loc,{#10000},1,9,1,9"
locations_default(#20023,#10000,1,9,1,9)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,3,"get")
#20025=@"loc,{#10000},2,3,2,5"
locations_default(#20025,#10000,2,3,2,5)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,6,#20001,4,"x")
#20027=@"loc,{#10000},2,7,2,7"
locations_default(#20027,#10000,2,7,2,7)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,5,"(")
#20029=@"loc,{#10000},2,8,2,8"
locations_default(#20029,#10000,2,8,2,8)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,6,")")
#20031=@"loc,{#10000},2,9,2,9"
locations_default(#20031,#10000,2,9,2,9)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,8,#20001,7,"{")
#20033=@"loc,{#10000},2,11,2,11"
locations_default(#20033,#10000,2,11,2,11)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,7,#20001,8,"return")
#20035=@"loc,{#10000},3,5,3,10"
locations_default(#20035,#10000,3,5,3,10)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,7,#20001,9,"this")
#20037=@"loc,{#10000},3,12,3,15"
locations_default(#20037,#10000,3,12,3,15)
hasLocation(#20036,#20037)
#20038=*
stmts(#20038,1,#20031,-2,"{\n t ... +v;\n }")
#20039=@"loc,{#10000},5,12,7,3"
locations_default(#20039,#10000,5,12,7,3)
tokeninfo(#20038,8,#20001,10,".")
#20039=@"loc,{#10000},3,16,3,16"
locations_default(#20039,#10000,3,16,3,16)
hasLocation(#20038,#20039)
stmtContainers(#20038,#20031)
#20040=*
stmts(#20040,2,#20038,0,"this._x = +v;")
#20041=@"loc,{#10000},6,5,6,17"
locations_default(#20041,#10000,6,5,6,17)
tokeninfo(#20040,6,#20001,11,"_x")
#20041=@"loc,{#10000},3,17,3,18"
locations_default(#20041,#10000,3,17,3,18)
hasLocation(#20040,#20041)
stmtContainers(#20040,#20031)
#20042=*
exprs(#20042,47,#20040,0,"this._x = +v")
#20043=@"loc,{#10000},6,5,6,16"
locations_default(#20043,#10000,6,5,6,16)
tokeninfo(#20042,8,#20001,12,";")
#20043=@"loc,{#10000},3,19,3,19"
locations_default(#20043,#10000,3,19,3,19)
hasLocation(#20042,#20043)
enclosingStmt(#20042,#20040)
exprContainers(#20042,#20031)
#20044=*
exprs(#20044,14,#20042,0,"this._x")
#20045=@"loc,{#10000},6,5,6,11"
locations_default(#20045,#10000,6,5,6,11)
tokeninfo(#20044,8,#20001,13,"}")
#20045=@"loc,{#10000},4,3,4,3"
locations_default(#20045,#10000,4,3,4,3)
hasLocation(#20044,#20045)
enclosingStmt(#20044,#20040)
exprContainers(#20044,#20031)
#20046=*
exprs(#20046,6,#20044,0,"this")
#20047=@"loc,{#10000},6,5,6,8"
locations_default(#20047,#10000,6,5,6,8)
tokeninfo(#20046,6,#20001,14,"set")
#20047=@"loc,{#10000},5,3,5,5"
locations_default(#20047,#10000,5,3,5,5)
hasLocation(#20046,#20047)
enclosingStmt(#20046,#20040)
exprContainers(#20046,#20031)
#20048=*
exprs(#20048,0,#20044,1,"_x")
#20049=@"loc,{#10000},6,10,6,11"
locations_default(#20049,#10000,6,10,6,11)
tokeninfo(#20048,6,#20001,15,"x")
#20049=@"loc,{#10000},5,7,5,7"
locations_default(#20049,#10000,5,7,5,7)
hasLocation(#20048,#20049)
enclosingStmt(#20048,#20040)
exprContainers(#20048,#20031)
literals("_x","_x",#20048)
#20050=*
exprs(#20050,17,#20042,1,"+v")
#20051=@"loc,{#10000},6,15,6,16"
locations_default(#20051,#10000,6,15,6,16)
tokeninfo(#20050,8,#20001,16,"(")
#20051=@"loc,{#10000},5,8,5,8"
locations_default(#20051,#10000,5,8,5,8)
hasLocation(#20050,#20051)
enclosingStmt(#20050,#20040)
exprContainers(#20050,#20031)
#20052=*
exprs(#20052,79,#20050,0,"v")
#20053=@"loc,{#10000},6,16,6,16"
locations_default(#20053,#10000,6,16,6,16)
tokeninfo(#20052,6,#20001,17,"v")
#20053=@"loc,{#10000},5,9,5,9"
locations_default(#20053,#10000,5,9,5,9)
hasLocation(#20052,#20053)
enclosingStmt(#20052,#20040)
exprContainers(#20052,#20031)
literals("v","v",#20052)
bind(#20052,#20034)
numlines(#20031,3,3,0)
isMethod(#20027)
#20054=*
properties(#20054,#20005,4,0,"constructor() {}")
#20055=@"loc,{#10000},1,9,1,8"
locations_default(#20055,#10000,1,9,1,8)
tokeninfo(#20054,8,#20001,18,")")
#20055=@"loc,{#10000},5,10,5,10"
locations_default(#20055,#10000,5,10,5,10)
hasLocation(#20054,#20055)
#20056=*
exprs(#20056,0,#20054,0,"constructor")
hasLocation(#20056,#20055)
enclosingStmt(#20056,#20005)
exprContainers(#20056,#20001)
literals("constructor","constructor",#20056)
#20057=*
exprs(#20057,9,#20054,1,"() {}")
hasLocation(#20057,#20055)
enclosingStmt(#20057,#20005)
exprContainers(#20057,#20001)
tokeninfo(#20056,8,#20001,19,"{")
#20057=@"loc,{#10000},5,12,5,12"
locations_default(#20057,#10000,5,12,5,12)
hasLocation(#20056,#20057)
#20058=*
scopes(#20058,1)
scopenodes(#20057,#20058)
scopenesting(#20058,#20008)
#20059=@"var;{arguments};{#20058}"
variables(#20059,"arguments",#20058)
isArgumentsObject(#20059)
tokeninfo(#20058,7,#20001,20,"this")
#20059=@"loc,{#10000},6,5,6,8"
locations_default(#20059,#10000,6,5,6,8)
hasLocation(#20058,#20059)
#20060=*
stmts(#20060,1,#20057,-2,"{}")
hasLocation(#20060,#20055)
stmtContainers(#20060,#20057)
numlines(#20057,1,0,0)
isMethod(#20054)
#20061=*
lines(#20061,#20001,"class A {","
")
#20062=@"loc,{#10000},1,1,1,9"
locations_default(#20062,#10000,1,1,1,9)
hasLocation(#20061,#20062)
#20063=*
lines(#20063,#20001," get x() {","
")
#20064=@"loc,{#10000},2,1,2,11"
locations_default(#20064,#10000,2,1,2,11)
hasLocation(#20063,#20064)
indentation(#10000,2," ",2)
#20065=*
lines(#20065,#20001," return this._x;","
")
#20066=@"loc,{#10000},3,1,3,19"
locations_default(#20066,#10000,3,1,3,19)
hasLocation(#20065,#20066)
indentation(#10000,3," ",4)
#20067=*
lines(#20067,#20001," }","
")
#20068=@"loc,{#10000},4,1,4,3"
locations_default(#20068,#10000,4,1,4,3)
hasLocation(#20067,#20068)
indentation(#10000,4," ",2)
#20069=*
lines(#20069,#20001," set x(v) {","
")
#20070=@"loc,{#10000},5,1,5,12"
locations_default(#20070,#10000,5,1,5,12)
hasLocation(#20069,#20070)
indentation(#10000,5," ",2)
#20071=*
lines(#20071,#20001," this._x = +v;","
")
#20072=@"loc,{#10000},6,1,6,17"
locations_default(#20072,#10000,6,1,6,17)
hasLocation(#20071,#20072)
indentation(#10000,6," ",4)
#20073=*
lines(#20073,#20001," }","
")
#20074=@"loc,{#10000},7,1,7,3"
locations_default(#20074,#10000,7,1,7,3)
hasLocation(#20073,#20074)
indentation(#10000,7," ",2)
tokeninfo(#20060,8,#20001,21,".")
#20061=@"loc,{#10000},6,9,6,9"
locations_default(#20061,#10000,6,9,6,9)
hasLocation(#20060,#20061)
#20062=*
tokeninfo(#20062,6,#20001,22,"_x")
#20063=@"loc,{#10000},6,10,6,11"
locations_default(#20063,#10000,6,10,6,11)
hasLocation(#20062,#20063)
#20064=*
tokeninfo(#20064,8,#20001,23,"=")
#20065=@"loc,{#10000},6,13,6,13"
locations_default(#20065,#10000,6,13,6,13)
hasLocation(#20064,#20065)
#20066=*
tokeninfo(#20066,8,#20001,24,"+")
#20067=@"loc,{#10000},6,15,6,15"
locations_default(#20067,#10000,6,15,6,15)
hasLocation(#20066,#20067)
#20068=*
tokeninfo(#20068,6,#20001,25,"v")
#20069=@"loc,{#10000},6,16,6,16"
locations_default(#20069,#10000,6,16,6,16)
hasLocation(#20068,#20069)
#20070=*
tokeninfo(#20070,8,#20001,26,";")
#20071=@"loc,{#10000},6,17,6,17"
locations_default(#20071,#10000,6,17,6,17)
hasLocation(#20070,#20071)
#20072=*
tokeninfo(#20072,8,#20001,27,"}")
#20073=@"loc,{#10000},7,3,7,3"
locations_default(#20073,#10000,7,3,7,3)
hasLocation(#20072,#20073)
#20074=*
tokeninfo(#20074,8,#20001,28,"}")
hasLocation(#20074,#20017)
#20075=*
lines(#20075,#20001,"}","")
#20076=@"loc,{#10000},8,1,8,1"
locations_default(#20076,#10000,8,1,8,1)
tokeninfo(#20075,0,#20001,29,"")
#20076=@"loc,{#10000},8,2,8,1"
locations_default(#20076,#10000,8,2,8,1)
hasLocation(#20075,#20076)
numlines(#20001,8,8,0)
#20077=*
tokeninfo(#20077,7,#20001,0,"class")
#20078=@"loc,{#10000},1,1,1,5"
locations_default(#20078,#10000,1,1,1,5)
hasLocation(#20077,#20078)
#20079=*
tokeninfo(#20079,6,#20001,1,"A")
hasLocation(#20079,#20007)
toplevels(#20001,0)
#20077=@"loc,{#10000},1,1,8,1"
locations_default(#20077,#10000,1,1,8,1)
hasLocation(#20001,#20077)
#20078=@"var;{A};{#20000}"
variables(#20078,"A",#20000)
#20079=@"local_type_name;{A};{#20000}"
local_type_names(#20079,"A",#20000)
#20080=*
tokeninfo(#20080,8,#20001,2,"{")
#20081=@"loc,{#10000},1,9,1,9"
locations_default(#20081,#10000,1,9,1,9)
hasLocation(#20080,#20081)
stmts(#20080,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20080,#20077)
stmtContainers(#20080,#20001)
#20081=*
exprs(#20081,78,#20080,0,"A")
hasLocation(#20081,#20021)
enclosingStmt(#20081,#20080)
exprContainers(#20081,#20001)
literals("A","A",#20081)
decl(#20081,#20078)
typedecl(#20081,#20079)
#20082=*
tokeninfo(#20082,6,#20001,3,"get")
#20083=@"loc,{#10000},2,3,2,5"
locations_default(#20083,#10000,2,3,2,5)
hasLocation(#20082,#20083)
#20084=*
tokeninfo(#20084,6,#20001,4,"x")
hasLocation(#20084,#20012)
scopes(#20082,10)
scopenodes(#20080,#20082)
scopenesting(#20082,#20000)
#20083=*
properties(#20083,#20080,2,1,"get x() ... _x;\n }")
#20084=@"loc,{#10000},2,3,4,3"
locations_default(#20084,#10000,2,3,4,3)
hasLocation(#20083,#20084)
#20085=*
tokeninfo(#20085,8,#20001,5,"(")
#20086=@"loc,{#10000},2,8,2,8"
locations_default(#20086,#10000,2,8,2,8)
hasLocation(#20085,#20086)
#20087=*
tokeninfo(#20087,8,#20001,6,")")
#20088=@"loc,{#10000},2,9,2,9"
locations_default(#20088,#10000,2,9,2,9)
hasLocation(#20087,#20088)
#20089=*
tokeninfo(#20089,8,#20001,7,"{")
#20090=@"loc,{#10000},2,11,2,11"
locations_default(#20090,#10000,2,11,2,11)
hasLocation(#20089,#20090)
#20091=*
tokeninfo(#20091,7,#20001,8,"return")
#20092=@"loc,{#10000},3,5,3,10"
locations_default(#20092,#10000,3,5,3,10)
hasLocation(#20091,#20092)
#20093=*
tokeninfo(#20093,7,#20001,9,"this")
hasLocation(#20093,#20024)
exprs(#20085,0,#20083,0,"x")
hasLocation(#20085,#20027)
enclosingStmt(#20085,#20080)
exprContainers(#20085,#20001)
literals("x","x",#20085)
#20086=*
exprs(#20086,9,#20083,1,"() {\n ... _x;\n }")
#20087=@"loc,{#10000},2,8,4,3"
locations_default(#20087,#10000,2,8,4,3)
hasLocation(#20086,#20087)
enclosingStmt(#20086,#20080)
exprContainers(#20086,#20001)
#20088=*
scopes(#20088,1)
scopenodes(#20086,#20088)
scopenesting(#20088,#20082)
#20089=@"var;{arguments};{#20088}"
variables(#20089,"arguments",#20088)
isArgumentsObject(#20089)
#20090=*
stmts(#20090,1,#20086,-2,"{\n r ... _x;\n }")
#20091=@"loc,{#10000},2,11,4,3"
locations_default(#20091,#10000,2,11,4,3)
hasLocation(#20090,#20091)
stmtContainers(#20090,#20086)
#20092=*
stmts(#20092,9,#20090,0,"return this._x;")
#20093=@"loc,{#10000},3,5,3,19"
locations_default(#20093,#10000,3,5,3,19)
hasLocation(#20092,#20093)
stmtContainers(#20092,#20086)
#20094=*
tokeninfo(#20094,8,#20001,10,".")
#20095=@"loc,{#10000},3,16,3,16"
locations_default(#20095,#10000,3,16,3,16)
exprs(#20094,14,#20092,0,"this._x")
#20095=@"loc,{#10000},3,12,3,18"
locations_default(#20095,#10000,3,12,3,18)
hasLocation(#20094,#20095)
enclosingStmt(#20094,#20092)
exprContainers(#20094,#20086)
#20096=*
tokeninfo(#20096,6,#20001,11,"_x")
hasLocation(#20096,#20026)
exprs(#20096,6,#20094,0,"this")
hasLocation(#20096,#20037)
enclosingStmt(#20096,#20092)
exprContainers(#20096,#20086)
#20097=*
tokeninfo(#20097,8,#20001,12,";")
#20098=@"loc,{#10000},3,19,3,19"
locations_default(#20098,#10000,3,19,3,19)
hasLocation(#20097,#20098)
#20099=*
tokeninfo(#20099,8,#20001,13,"}")
#20100=@"loc,{#10000},4,3,4,3"
locations_default(#20100,#10000,4,3,4,3)
hasLocation(#20099,#20100)
exprs(#20097,0,#20094,1,"_x")
hasLocation(#20097,#20041)
enclosingStmt(#20097,#20092)
exprContainers(#20097,#20086)
literals("_x","_x",#20097)
isMethod(#20083)
#20098=*
properties(#20098,#20080,3,2,"set x(v ... +v;\n }")
#20099=@"loc,{#10000},5,3,7,3"
locations_default(#20099,#10000,5,3,7,3)
hasLocation(#20098,#20099)
#20100=*
exprs(#20100,0,#20098,0,"x")
hasLocation(#20100,#20049)
enclosingStmt(#20100,#20080)
exprContainers(#20100,#20001)
literals("x","x",#20100)
#20101=*
tokeninfo(#20101,6,#20001,14,"set")
#20102=@"loc,{#10000},5,3,5,5"
locations_default(#20102,#10000,5,3,5,5)
exprs(#20101,9,#20098,1,"(v) {\n ... +v;\n }")
#20102=@"loc,{#10000},5,8,7,3"
locations_default(#20102,#10000,5,8,7,3)
hasLocation(#20101,#20102)
enclosingStmt(#20101,#20080)
exprContainers(#20101,#20001)
#20103=*
tokeninfo(#20103,6,#20001,15,"x")
hasLocation(#20103,#20030)
#20104=*
tokeninfo(#20104,8,#20001,16,"(")
#20105=@"loc,{#10000},5,8,5,8"
locations_default(#20105,#10000,5,8,5,8)
hasLocation(#20104,#20105)
#20106=*
tokeninfo(#20106,6,#20001,17,"v")
hasLocation(#20106,#20036)
scopes(#20103,1)
scopenodes(#20101,#20103)
scopenesting(#20103,#20082)
#20104=@"var;{v};{#20103}"
variables(#20104,"v",#20103)
#20105=*
exprs(#20105,78,#20101,0,"v")
hasLocation(#20105,#20053)
exprContainers(#20105,#20101)
literals("v","v",#20105)
decl(#20105,#20104)
#20106=@"var;{arguments};{#20103}"
variables(#20106,"arguments",#20103)
isArgumentsObject(#20106)
#20107=*
tokeninfo(#20107,8,#20001,18,")")
#20108=@"loc,{#10000},5,10,5,10"
locations_default(#20108,#10000,5,10,5,10)
stmts(#20107,1,#20101,-2,"{\n t ... +v;\n }")
#20108=@"loc,{#10000},5,12,7,3"
locations_default(#20108,#10000,5,12,7,3)
hasLocation(#20107,#20108)
stmtContainers(#20107,#20101)
#20109=*
tokeninfo(#20109,8,#20001,19,"{")
#20110=@"loc,{#10000},5,12,5,12"
locations_default(#20110,#10000,5,12,5,12)
stmts(#20109,2,#20107,0,"this._x = +v;")
#20110=@"loc,{#10000},6,5,6,17"
locations_default(#20110,#10000,6,5,6,17)
hasLocation(#20109,#20110)
stmtContainers(#20109,#20101)
#20111=*
tokeninfo(#20111,7,#20001,20,"this")
hasLocation(#20111,#20047)
#20112=*
tokeninfo(#20112,8,#20001,21,".")
#20113=@"loc,{#10000},6,9,6,9"
locations_default(#20113,#10000,6,9,6,9)
hasLocation(#20112,#20113)
#20114=*
tokeninfo(#20114,6,#20001,22,"_x")
hasLocation(#20114,#20049)
exprs(#20111,47,#20109,0,"this._x = +v")
#20112=@"loc,{#10000},6,5,6,16"
locations_default(#20112,#10000,6,5,6,16)
hasLocation(#20111,#20112)
enclosingStmt(#20111,#20109)
exprContainers(#20111,#20101)
#20113=*
exprs(#20113,14,#20111,0,"this._x")
#20114=@"loc,{#10000},6,5,6,11"
locations_default(#20114,#10000,6,5,6,11)
hasLocation(#20113,#20114)
enclosingStmt(#20113,#20109)
exprContainers(#20113,#20101)
#20115=*
tokeninfo(#20115,8,#20001,23,"=")
#20116=@"loc,{#10000},6,13,6,13"
locations_default(#20116,#10000,6,13,6,13)
hasLocation(#20115,#20116)
exprs(#20115,6,#20113,0,"this")
hasLocation(#20115,#20059)
enclosingStmt(#20115,#20109)
exprContainers(#20115,#20101)
#20116=*
exprs(#20116,0,#20113,1,"_x")
hasLocation(#20116,#20063)
enclosingStmt(#20116,#20109)
exprContainers(#20116,#20101)
literals("_x","_x",#20116)
#20117=*
tokeninfo(#20117,8,#20001,24,"+")
#20118=@"loc,{#10000},6,15,6,15"
locations_default(#20118,#10000,6,15,6,15)
exprs(#20117,17,#20111,1,"+v")
#20118=@"loc,{#10000},6,15,6,16"
locations_default(#20118,#10000,6,15,6,16)
hasLocation(#20117,#20118)
enclosingStmt(#20117,#20109)
exprContainers(#20117,#20101)
#20119=*
tokeninfo(#20119,6,#20001,25,"v")
hasLocation(#20119,#20053)
exprs(#20119,79,#20117,0,"v")
hasLocation(#20119,#20069)
enclosingStmt(#20119,#20109)
exprContainers(#20119,#20101)
literals("v","v",#20119)
bind(#20119,#20104)
isMethod(#20098)
#20120=*
tokeninfo(#20120,8,#20001,26,";")
#20121=@"loc,{#10000},6,17,6,17"
locations_default(#20121,#10000,6,17,6,17)
properties(#20120,#20080,4,0,"constructor() {}")
#20121=@"loc,{#10000},1,9,1,8"
locations_default(#20121,#10000,1,9,1,8)
hasLocation(#20120,#20121)
#20122=*
tokeninfo(#20122,8,#20001,27,"}")
#20123=@"loc,{#10000},7,3,7,3"
locations_default(#20123,#10000,7,3,7,3)
hasLocation(#20122,#20123)
exprs(#20122,0,#20120,0,"constructor")
hasLocation(#20122,#20121)
enclosingStmt(#20122,#20080)
exprContainers(#20122,#20001)
literals("constructor","constructor",#20122)
#20123=*
exprs(#20123,9,#20120,1,"() {}")
hasLocation(#20123,#20121)
enclosingStmt(#20123,#20080)
exprContainers(#20123,#20001)
#20124=*
tokeninfo(#20124,8,#20001,28,"}")
hasLocation(#20124,#20076)
#20125=*
tokeninfo(#20125,0,#20001,29,"")
#20126=@"loc,{#10000},8,2,8,1"
locations_default(#20126,#10000,8,2,8,1)
hasLocation(#20125,#20126)
scopes(#20124,1)
scopenodes(#20123,#20124)
scopenesting(#20124,#20082)
#20125=@"var;{arguments};{#20124}"
variables(#20125,"arguments",#20124)
isArgumentsObject(#20125)
#20126=*
stmts(#20126,1,#20123,-2,"{}")
hasLocation(#20126,#20121)
stmtContainers(#20126,#20123)
isMethod(#20120)
#20127=*
entry_cfg_node(#20127,#20001)
#20128=@"loc,{#10000},1,1,1,0"
@@ -414,62 +411,62 @@ locations_default(#20128,#10000,1,1,1,0)
hasLocation(#20127,#20128)
#20129=*
exit_cfg_node(#20129,#20001)
hasLocation(#20129,#20126)
successor(#20057,#20054)
hasLocation(#20129,#20076)
successor(#20123,#20120)
#20130=*
entry_cfg_node(#20130,#20057)
hasLocation(#20130,#20055)
entry_cfg_node(#20130,#20123)
hasLocation(#20130,#20121)
#20131=*
exit_cfg_node(#20131,#20057)
hasLocation(#20131,#20055)
successor(#20060,#20131)
successor(#20130,#20060)
successor(#20056,#20057)
successor(#20054,#20005)
successor(#20031,#20027)
exit_cfg_node(#20131,#20123)
hasLocation(#20131,#20121)
successor(#20126,#20131)
successor(#20130,#20126)
successor(#20122,#20123)
successor(#20120,#20080)
successor(#20101,#20098)
#20132=*
entry_cfg_node(#20132,#20031)
entry_cfg_node(#20132,#20101)
#20133=@"loc,{#10000},5,8,5,7"
locations_default(#20133,#10000,5,8,5,7)
hasLocation(#20132,#20133)
#20134=*
exit_cfg_node(#20134,#20031)
exit_cfg_node(#20134,#20101)
#20135=@"loc,{#10000},7,4,7,3"
locations_default(#20135,#10000,7,4,7,3)
hasLocation(#20134,#20135)
successor(#20038,#20040)
successor(#20040,#20046)
successor(#20052,#20050)
successor(#20050,#20042)
successor(#20048,#20044)
successor(#20046,#20048)
successor(#20044,#20052)
successor(#20042,#20134)
successor(#20035,#20038)
successor(#20132,#20035)
successor(#20029,#20031)
successor(#20027,#20056)
successor(#20013,#20009)
successor(#20107,#20109)
successor(#20109,#20115)
successor(#20119,#20117)
successor(#20117,#20111)
successor(#20116,#20113)
successor(#20115,#20116)
successor(#20113,#20119)
successor(#20111,#20134)
successor(#20105,#20107)
successor(#20132,#20105)
successor(#20100,#20101)
successor(#20098,#20122)
successor(#20086,#20083)
#20136=*
entry_cfg_node(#20136,#20013)
entry_cfg_node(#20136,#20086)
#20137=@"loc,{#10000},2,8,2,7"
locations_default(#20137,#10000,2,8,2,7)
hasLocation(#20136,#20137)
#20138=*
exit_cfg_node(#20138,#20013)
exit_cfg_node(#20138,#20086)
#20139=@"loc,{#10000},4,4,4,3"
locations_default(#20139,#10000,4,4,4,3)
hasLocation(#20138,#20139)
successor(#20017,#20023)
successor(#20025,#20021)
successor(#20023,#20025)
successor(#20021,#20019)
successor(#20019,#20138)
successor(#20136,#20017)
successor(#20011,#20013)
successor(#20009,#20029)
successor(#20006,#20011)
successor(#20005,#20129)
successor(#20127,#20006)
successor(#20090,#20096)
successor(#20097,#20094)
successor(#20096,#20097)
successor(#20094,#20092)
successor(#20092,#20138)
successor(#20136,#20090)
successor(#20085,#20086)
successor(#20083,#20100)
successor(#20081,#20085)
successor(#20080,#20129)
successor(#20127,#20081)
numlines(#10000,8,8,0)
filetype(#10000,"javascript")

View File

@@ -9,225 +9,224 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,5,1"
locations_default(#20002,#10000,1,1,5,1)
hasLocation(#20001,#20002)
#20003=@"var;{A};{#20000}"
variables(#20003,"A",#20000)
#20004=@"local_type_name;{A};{#20000}"
local_type_names(#20004,"A",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20002=*
lines(#20002,#20001,"class A {","
")
#20003=@"loc,{#10000},1,1,1,9"
locations_default(#20003,#10000,1,1,1,9)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001," constructor(x) {","
")
#20005=@"loc,{#10000},2,1,2,18"
locations_default(#20005,#10000,2,1,2,18)
hasLocation(#20004,#20005)
indentation(#10000,2," ",2)
#20006=*
exprs(#20006,78,#20005,0,"A")
#20007=@"loc,{#10000},1,7,1,7"
locations_default(#20007,#10000,1,7,1,7)
lines(#20006,#20001," this.x = x;","
")
#20007=@"loc,{#10000},3,1,3,15"
locations_default(#20007,#10000,3,1,3,15)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20005)
exprContainers(#20006,#20001)
literals("A","A",#20006)
decl(#20006,#20003)
typedecl(#20006,#20004)
indentation(#10000,3," ",4)
#20008=*
scopes(#20008,10)
scopenodes(#20005,#20008)
scopenesting(#20008,#20000)
#20009=*
properties(#20009,#20005,2,0,"constru ... x;\n }")
#20010=@"loc,{#10000},2,3,4,3"
locations_default(#20010,#10000,2,3,4,3)
hasLocation(#20009,#20010)
#20011=*
exprs(#20011,0,#20009,0,"constructor")
#20012=@"loc,{#10000},2,3,2,13"
locations_default(#20012,#10000,2,3,2,13)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20005)
exprContainers(#20011,#20001)
literals("constructor","constructor",#20011)
#20013=*
exprs(#20013,9,#20009,1,"(x) {\n ... x;\n }")
#20014=@"loc,{#10000},2,14,4,3"
locations_default(#20014,#10000,2,14,4,3)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20005)
exprContainers(#20013,#20001)
#20015=*
scopes(#20015,1)
scopenodes(#20013,#20015)
scopenesting(#20015,#20008)
#20016=@"var;{x};{#20015}"
variables(#20016,"x",#20015)
#20017=*
exprs(#20017,78,#20013,0,"x")
#20018=@"loc,{#10000},2,15,2,15"
locations_default(#20018,#10000,2,15,2,15)
hasLocation(#20017,#20018)
exprContainers(#20017,#20013)
literals("x","x",#20017)
decl(#20017,#20016)
#20019=@"var;{arguments};{#20015}"
variables(#20019,"arguments",#20015)
isArgumentsObject(#20019)
lines(#20008,#20001," }","
")
#20009=@"loc,{#10000},4,1,4,3"
locations_default(#20009,#10000,4,1,4,3)
hasLocation(#20008,#20009)
indentation(#10000,4," ",2)
#20010=*
lines(#20010,#20001,"}","")
#20011=@"loc,{#10000},5,1,5,1"
locations_default(#20011,#10000,5,1,5,1)
hasLocation(#20010,#20011)
numlines(#20001,5,5,0)
#20012=*
tokeninfo(#20012,7,#20001,0,"class")
#20013=@"loc,{#10000},1,1,1,5"
locations_default(#20013,#10000,1,1,1,5)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,1,"A")
#20015=@"loc,{#10000},1,7,1,7"
locations_default(#20015,#10000,1,7,1,7)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,2,"{")
#20017=@"loc,{#10000},1,9,1,9"
locations_default(#20017,#10000,1,9,1,9)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,3,"constructor")
#20019=@"loc,{#10000},2,3,2,13"
locations_default(#20019,#10000,2,3,2,13)
hasLocation(#20018,#20019)
#20020=*
stmts(#20020,1,#20013,-2,"{\n t ... x;\n }")
#20021=@"loc,{#10000},2,18,4,3"
locations_default(#20021,#10000,2,18,4,3)
tokeninfo(#20020,8,#20001,4,"(")
#20021=@"loc,{#10000},2,14,2,14"
locations_default(#20021,#10000,2,14,2,14)
hasLocation(#20020,#20021)
stmtContainers(#20020,#20013)
#20022=*
stmts(#20022,2,#20020,0,"this.x = x;")
#20023=@"loc,{#10000},3,5,3,15"
locations_default(#20023,#10000,3,5,3,15)
tokeninfo(#20022,6,#20001,5,"x")
#20023=@"loc,{#10000},2,15,2,15"
locations_default(#20023,#10000,2,15,2,15)
hasLocation(#20022,#20023)
stmtContainers(#20022,#20013)
#20024=*
exprs(#20024,47,#20022,0,"this.x = x")
#20025=@"loc,{#10000},3,5,3,14"
locations_default(#20025,#10000,3,5,3,14)
tokeninfo(#20024,8,#20001,6,")")
#20025=@"loc,{#10000},2,16,2,16"
locations_default(#20025,#10000,2,16,2,16)
hasLocation(#20024,#20025)
enclosingStmt(#20024,#20022)
exprContainers(#20024,#20013)
#20026=*
exprs(#20026,14,#20024,0,"this.x")
#20027=@"loc,{#10000},3,5,3,10"
locations_default(#20027,#10000,3,5,3,10)
tokeninfo(#20026,8,#20001,7,"{")
#20027=@"loc,{#10000},2,18,2,18"
locations_default(#20027,#10000,2,18,2,18)
hasLocation(#20026,#20027)
enclosingStmt(#20026,#20022)
exprContainers(#20026,#20013)
#20028=*
exprs(#20028,6,#20026,0,"this")
tokeninfo(#20028,7,#20001,8,"this")
#20029=@"loc,{#10000},3,5,3,8"
locations_default(#20029,#10000,3,5,3,8)
hasLocation(#20028,#20029)
enclosingStmt(#20028,#20022)
exprContainers(#20028,#20013)
#20030=*
exprs(#20030,0,#20026,1,"x")
#20031=@"loc,{#10000},3,10,3,10"
locations_default(#20031,#10000,3,10,3,10)
tokeninfo(#20030,8,#20001,9,".")
#20031=@"loc,{#10000},3,9,3,9"
locations_default(#20031,#10000,3,9,3,9)
hasLocation(#20030,#20031)
enclosingStmt(#20030,#20022)
exprContainers(#20030,#20013)
literals("x","x",#20030)
#20032=*
exprs(#20032,79,#20024,1,"x")
#20033=@"loc,{#10000},3,14,3,14"
locations_default(#20033,#10000,3,14,3,14)
tokeninfo(#20032,6,#20001,10,"x")
#20033=@"loc,{#10000},3,10,3,10"
locations_default(#20033,#10000,3,10,3,10)
hasLocation(#20032,#20033)
enclosingStmt(#20032,#20022)
exprContainers(#20032,#20013)
literals("x","x",#20032)
bind(#20032,#20016)
numlines(#20013,3,3,0)
isMethod(#20009)
#20034=*
lines(#20034,#20001,"class A {","
")
#20035=@"loc,{#10000},1,1,1,9"
locations_default(#20035,#10000,1,1,1,9)
tokeninfo(#20034,8,#20001,11,"=")
#20035=@"loc,{#10000},3,12,3,12"
locations_default(#20035,#10000,3,12,3,12)
hasLocation(#20034,#20035)
#20036=*
lines(#20036,#20001," constructor(x) {","
")
#20037=@"loc,{#10000},2,1,2,18"
locations_default(#20037,#10000,2,1,2,18)
tokeninfo(#20036,6,#20001,12,"x")
#20037=@"loc,{#10000},3,14,3,14"
locations_default(#20037,#10000,3,14,3,14)
hasLocation(#20036,#20037)
indentation(#10000,2," ",2)
#20038=*
lines(#20038,#20001," this.x = x;","
")
#20039=@"loc,{#10000},3,1,3,15"
locations_default(#20039,#10000,3,1,3,15)
tokeninfo(#20038,8,#20001,13,";")
#20039=@"loc,{#10000},3,15,3,15"
locations_default(#20039,#10000,3,15,3,15)
hasLocation(#20038,#20039)
indentation(#10000,3," ",4)
#20040=*
lines(#20040,#20001," }","
")
#20041=@"loc,{#10000},4,1,4,3"
locations_default(#20041,#10000,4,1,4,3)
tokeninfo(#20040,8,#20001,14,"}")
#20041=@"loc,{#10000},4,3,4,3"
locations_default(#20041,#10000,4,3,4,3)
hasLocation(#20040,#20041)
indentation(#10000,4," ",2)
#20042=*
lines(#20042,#20001,"}","")
#20043=@"loc,{#10000},5,1,5,1"
locations_default(#20043,#10000,5,1,5,1)
hasLocation(#20042,#20043)
numlines(#20001,5,5,0)
#20044=*
tokeninfo(#20044,7,#20001,0,"class")
#20045=@"loc,{#10000},1,1,1,5"
locations_default(#20045,#10000,1,1,1,5)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,6,#20001,1,"A")
hasLocation(#20046,#20007)
#20047=*
tokeninfo(#20047,8,#20001,2,"{")
#20048=@"loc,{#10000},1,9,1,9"
locations_default(#20048,#10000,1,9,1,9)
hasLocation(#20047,#20048)
tokeninfo(#20042,8,#20001,15,"}")
hasLocation(#20042,#20011)
#20043=*
tokeninfo(#20043,0,#20001,16,"")
#20044=@"loc,{#10000},5,2,5,1"
locations_default(#20044,#10000,5,2,5,1)
hasLocation(#20043,#20044)
toplevels(#20001,0)
#20045=@"loc,{#10000},1,1,5,1"
locations_default(#20045,#10000,1,1,5,1)
hasLocation(#20001,#20045)
#20046=@"var;{A};{#20000}"
variables(#20046,"A",#20000)
#20047=@"local_type_name;{A};{#20000}"
local_type_names(#20047,"A",#20000)
#20048=*
stmts(#20048,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20048,#20045)
stmtContainers(#20048,#20001)
#20049=*
tokeninfo(#20049,6,#20001,3,"constructor")
hasLocation(#20049,#20012)
exprs(#20049,78,#20048,0,"A")
hasLocation(#20049,#20015)
enclosingStmt(#20049,#20048)
exprContainers(#20049,#20001)
literals("A","A",#20049)
decl(#20049,#20046)
typedecl(#20049,#20047)
#20050=*
tokeninfo(#20050,8,#20001,4,"(")
#20051=@"loc,{#10000},2,14,2,14"
locations_default(#20051,#10000,2,14,2,14)
hasLocation(#20050,#20051)
#20052=*
tokeninfo(#20052,6,#20001,5,"x")
hasLocation(#20052,#20018)
scopes(#20050,10)
scopenodes(#20048,#20050)
scopenesting(#20050,#20000)
#20051=*
properties(#20051,#20048,2,0,"constru ... x;\n }")
#20052=@"loc,{#10000},2,3,4,3"
locations_default(#20052,#10000,2,3,4,3)
hasLocation(#20051,#20052)
#20053=*
tokeninfo(#20053,8,#20001,6,")")
#20054=@"loc,{#10000},2,16,2,16"
locations_default(#20054,#10000,2,16,2,16)
hasLocation(#20053,#20054)
#20055=*
tokeninfo(#20055,8,#20001,7,"{")
#20056=@"loc,{#10000},2,18,2,18"
locations_default(#20056,#10000,2,18,2,18)
hasLocation(#20055,#20056)
#20057=*
tokeninfo(#20057,7,#20001,8,"this")
hasLocation(#20057,#20029)
exprs(#20053,0,#20051,0,"constructor")
hasLocation(#20053,#20019)
enclosingStmt(#20053,#20048)
exprContainers(#20053,#20001)
literals("constructor","constructor",#20053)
#20054=*
exprs(#20054,9,#20051,1,"(x) {\n ... x;\n }")
#20055=@"loc,{#10000},2,14,4,3"
locations_default(#20055,#10000,2,14,4,3)
hasLocation(#20054,#20055)
enclosingStmt(#20054,#20048)
exprContainers(#20054,#20001)
#20056=*
scopes(#20056,1)
scopenodes(#20054,#20056)
scopenesting(#20056,#20050)
#20057=@"var;{x};{#20056}"
variables(#20057,"x",#20056)
#20058=*
tokeninfo(#20058,8,#20001,9,".")
#20059=@"loc,{#10000},3,9,3,9"
locations_default(#20059,#10000,3,9,3,9)
hasLocation(#20058,#20059)
exprs(#20058,78,#20054,0,"x")
hasLocation(#20058,#20023)
exprContainers(#20058,#20054)
literals("x","x",#20058)
decl(#20058,#20057)
#20059=@"var;{arguments};{#20056}"
variables(#20059,"arguments",#20056)
isArgumentsObject(#20059)
#20060=*
tokeninfo(#20060,6,#20001,10,"x")
hasLocation(#20060,#20031)
#20061=*
tokeninfo(#20061,8,#20001,11,"=")
#20062=@"loc,{#10000},3,12,3,12"
locations_default(#20062,#10000,3,12,3,12)
hasLocation(#20061,#20062)
#20063=*
tokeninfo(#20063,6,#20001,12,"x")
hasLocation(#20063,#20033)
stmts(#20060,1,#20054,-2,"{\n t ... x;\n }")
#20061=@"loc,{#10000},2,18,4,3"
locations_default(#20061,#10000,2,18,4,3)
hasLocation(#20060,#20061)
stmtContainers(#20060,#20054)
#20062=*
stmts(#20062,2,#20060,0,"this.x = x;")
#20063=@"loc,{#10000},3,5,3,15"
locations_default(#20063,#10000,3,5,3,15)
hasLocation(#20062,#20063)
stmtContainers(#20062,#20054)
#20064=*
tokeninfo(#20064,8,#20001,13,";")
#20065=@"loc,{#10000},3,15,3,15"
locations_default(#20065,#10000,3,15,3,15)
exprs(#20064,47,#20062,0,"this.x = x")
#20065=@"loc,{#10000},3,5,3,14"
locations_default(#20065,#10000,3,5,3,14)
hasLocation(#20064,#20065)
enclosingStmt(#20064,#20062)
exprContainers(#20064,#20054)
#20066=*
tokeninfo(#20066,8,#20001,14,"}")
#20067=@"loc,{#10000},4,3,4,3"
locations_default(#20067,#10000,4,3,4,3)
exprs(#20066,14,#20064,0,"this.x")
#20067=@"loc,{#10000},3,5,3,10"
locations_default(#20067,#10000,3,5,3,10)
hasLocation(#20066,#20067)
enclosingStmt(#20066,#20062)
exprContainers(#20066,#20054)
#20068=*
tokeninfo(#20068,8,#20001,15,"}")
hasLocation(#20068,#20043)
exprs(#20068,6,#20066,0,"this")
hasLocation(#20068,#20029)
enclosingStmt(#20068,#20062)
exprContainers(#20068,#20054)
#20069=*
tokeninfo(#20069,0,#20001,16,"")
#20070=@"loc,{#10000},5,2,5,1"
locations_default(#20070,#10000,5,2,5,1)
hasLocation(#20069,#20070)
exprs(#20069,0,#20066,1,"x")
hasLocation(#20069,#20033)
enclosingStmt(#20069,#20062)
exprContainers(#20069,#20054)
literals("x","x",#20069)
#20070=*
exprs(#20070,79,#20064,1,"x")
hasLocation(#20070,#20037)
enclosingStmt(#20070,#20062)
exprContainers(#20070,#20054)
literals("x","x",#20070)
bind(#20070,#20057)
isMethod(#20051)
#20071=*
entry_cfg_node(#20071,#20001)
#20072=@"loc,{#10000},1,1,1,0"
@@ -235,31 +234,31 @@ locations_default(#20072,#10000,1,1,1,0)
hasLocation(#20071,#20072)
#20073=*
exit_cfg_node(#20073,#20001)
hasLocation(#20073,#20070)
successor(#20013,#20009)
hasLocation(#20073,#20044)
successor(#20054,#20051)
#20074=*
entry_cfg_node(#20074,#20013)
entry_cfg_node(#20074,#20054)
#20075=@"loc,{#10000},2,14,2,13"
locations_default(#20075,#10000,2,14,2,13)
hasLocation(#20074,#20075)
#20076=*
exit_cfg_node(#20076,#20013)
exit_cfg_node(#20076,#20054)
#20077=@"loc,{#10000},4,4,4,3"
locations_default(#20077,#10000,4,4,4,3)
hasLocation(#20076,#20077)
successor(#20020,#20022)
successor(#20022,#20028)
successor(#20032,#20024)
successor(#20030,#20026)
successor(#20028,#20030)
successor(#20026,#20032)
successor(#20024,#20076)
successor(#20017,#20020)
successor(#20074,#20017)
successor(#20011,#20013)
successor(#20009,#20005)
successor(#20006,#20011)
successor(#20005,#20073)
successor(#20071,#20006)
successor(#20060,#20062)
successor(#20062,#20068)
successor(#20070,#20064)
successor(#20069,#20066)
successor(#20068,#20069)
successor(#20066,#20070)
successor(#20064,#20076)
successor(#20058,#20060)
successor(#20074,#20058)
successor(#20053,#20054)
successor(#20051,#20048)
successor(#20049,#20053)
successor(#20048,#20073)
successor(#20071,#20049)
numlines(#10000,5,5,0)
filetype(#10000,"javascript")

View File

@@ -9,142 +9,141 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,29"
locations_default(#20002,#10000,1,1,1,29)
hasLocation(#20001,#20002)
#20003=@"var;{Point};{#20000}"
variables(#20003,"Point",#20000)
#20004=@"local_type_name;{Point};{#20000}"
local_type_names(#20004,"Point",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class P ... ject {}")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20002=*
lines(#20002,#20001,"class Point extends Object {}","")
#20003=@"loc,{#10000},1,1,1,29"
locations_default(#20003,#10000,1,1,1,29)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"class")
#20005=@"loc,{#10000},1,1,1,5"
locations_default(#20005,#10000,1,1,1,5)
hasLocation(#20004,#20005)
#20006=*
exprs(#20006,78,#20005,0,"Point")
tokeninfo(#20006,6,#20001,1,"Point")
#20007=@"loc,{#10000},1,7,1,11"
locations_default(#20007,#10000,1,7,1,11)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20005)
exprContainers(#20006,#20001)
literals("Point","Point",#20006)
decl(#20006,#20003)
typedecl(#20006,#20004)
#20008=*
scopes(#20008,10)
scopenodes(#20005,#20008)
scopenesting(#20008,#20000)
#20009=*
exprs(#20009,79,#20005,1,"Object")
#20010=@"loc,{#10000},1,21,1,26"
locations_default(#20010,#10000,1,21,1,26)
hasLocation(#20009,#20010)
enclosingStmt(#20009,#20005)
exprContainers(#20009,#20001)
literals("Object","Object",#20009)
#20011=@"var;{Object};{#20000}"
variables(#20011,"Object",#20000)
bind(#20009,#20011)
tokeninfo(#20008,7,#20001,2,"extends")
#20009=@"loc,{#10000},1,13,1,19"
locations_default(#20009,#10000,1,13,1,19)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"Object")
#20011=@"loc,{#10000},1,21,1,26"
locations_default(#20011,#10000,1,21,1,26)
hasLocation(#20010,#20011)
#20012=*
properties(#20012,#20005,2,0,"constru ... rgs); }")
#20013=@"loc,{#10000},1,28,1,27"
locations_default(#20013,#10000,1,28,1,27)
tokeninfo(#20012,8,#20001,4,"{")
#20013=@"loc,{#10000},1,28,1,28"
locations_default(#20013,#10000,1,28,1,28)
hasLocation(#20012,#20013)
#20014=*
exprs(#20014,0,#20012,0,"constructor")
hasLocation(#20014,#20013)
enclosingStmt(#20014,#20005)
exprContainers(#20014,#20001)
literals("constructor","constructor",#20014)
#20015=*
exprs(#20015,9,#20012,1,"(...arg ... rgs); }")
hasLocation(#20015,#20013)
enclosingStmt(#20015,#20005)
exprContainers(#20015,#20001)
tokeninfo(#20014,8,#20001,5,"}")
#20015=@"loc,{#10000},1,29,1,29"
locations_default(#20015,#10000,1,29,1,29)
hasLocation(#20014,#20015)
#20016=*
scopes(#20016,1)
scopenodes(#20015,#20016)
scopenesting(#20016,#20008)
#20017=@"var;{args};{#20016}"
variables(#20017,"args",#20016)
#20018=*
exprs(#20018,78,#20015,0,"args")
hasLocation(#20018,#20013)
exprContainers(#20018,#20015)
literals("args","args",#20018)
decl(#20018,#20017)
#20019=@"var;{arguments};{#20016}"
variables(#20019,"arguments",#20016)
isArgumentsObject(#20019)
hasRestParameter(#20015)
tokeninfo(#20016,0,#20001,6,"")
#20017=@"loc,{#10000},1,30,1,29"
locations_default(#20017,#10000,1,30,1,29)
hasLocation(#20016,#20017)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20018=@"var;{Point};{#20000}"
variables(#20018,"Point",#20000)
#20019=@"local_type_name;{Point};{#20000}"
local_type_names(#20019,"Point",#20000)
#20020=*
stmts(#20020,1,#20015,-2,"{ super(...args); }")
hasLocation(#20020,#20013)
stmtContainers(#20020,#20015)
stmts(#20020,26,#20001,0,"class P ... ject {}")
hasLocation(#20020,#20003)
stmtContainers(#20020,#20001)
#20021=*
stmts(#20021,2,#20020,0,"super(...args);")
hasLocation(#20021,#20013)
stmtContainers(#20021,#20015)
exprs(#20021,78,#20020,0,"Point")
hasLocation(#20021,#20007)
enclosingStmt(#20021,#20020)
exprContainers(#20021,#20001)
literals("Point","Point",#20021)
decl(#20021,#20018)
typedecl(#20021,#20019)
#20022=*
exprs(#20022,13,#20021,0,"super(...args)")
hasLocation(#20022,#20013)
enclosingStmt(#20022,#20021)
exprContainers(#20022,#20015)
scopes(#20022,10)
scopenodes(#20020,#20022)
scopenesting(#20022,#20000)
#20023=*
exprs(#20023,81,#20022,-1,"super")
hasLocation(#20023,#20013)
enclosingStmt(#20023,#20021)
exprContainers(#20023,#20015)
#20024=*
exprs(#20024,66,#20022,0,"...args")
hasLocation(#20024,#20013)
enclosingStmt(#20024,#20021)
exprContainers(#20024,#20015)
exprs(#20023,79,#20020,1,"Object")
hasLocation(#20023,#20011)
enclosingStmt(#20023,#20020)
exprContainers(#20023,#20001)
literals("Object","Object",#20023)
#20024=@"var;{Object};{#20000}"
variables(#20024,"Object",#20000)
bind(#20023,#20024)
#20025=*
exprs(#20025,79,#20024,0,"args")
hasLocation(#20025,#20013)
enclosingStmt(#20025,#20021)
exprContainers(#20025,#20015)
literals("args","args",#20025)
bind(#20025,#20017)
numlines(#20015,1,0,0)
isMethod(#20012)
#20026=*
lines(#20026,#20001,"class Point extends Object {}","")
hasLocation(#20026,#20002)
numlines(#20001,1,1,0)
properties(#20025,#20020,2,0,"constru ... rgs); }")
#20026=@"loc,{#10000},1,28,1,27"
locations_default(#20026,#10000,1,28,1,27)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,7,#20001,0,"class")
#20028=@"loc,{#10000},1,1,1,5"
locations_default(#20028,#10000,1,1,1,5)
hasLocation(#20027,#20028)
exprs(#20027,0,#20025,0,"constructor")
hasLocation(#20027,#20026)
enclosingStmt(#20027,#20020)
exprContainers(#20027,#20001)
literals("constructor","constructor",#20027)
#20028=*
exprs(#20028,9,#20025,1,"(...arg ... rgs); }")
hasLocation(#20028,#20026)
enclosingStmt(#20028,#20020)
exprContainers(#20028,#20001)
#20029=*
tokeninfo(#20029,6,#20001,1,"Point")
hasLocation(#20029,#20007)
#20030=*
tokeninfo(#20030,7,#20001,2,"extends")
#20031=@"loc,{#10000},1,13,1,19"
locations_default(#20031,#10000,1,13,1,19)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,3,"Object")
hasLocation(#20032,#20010)
scopes(#20029,1)
scopenodes(#20028,#20029)
scopenesting(#20029,#20022)
#20030=@"var;{args};{#20029}"
variables(#20030,"args",#20029)
#20031=*
exprs(#20031,78,#20028,0,"args")
hasLocation(#20031,#20026)
exprContainers(#20031,#20028)
literals("args","args",#20031)
decl(#20031,#20030)
#20032=@"var;{arguments};{#20029}"
variables(#20032,"arguments",#20029)
isArgumentsObject(#20032)
hasRestParameter(#20028)
#20033=*
tokeninfo(#20033,8,#20001,4,"{")
#20034=@"loc,{#10000},1,28,1,28"
locations_default(#20034,#10000,1,28,1,28)
hasLocation(#20033,#20034)
stmts(#20033,1,#20028,-2,"{ super(...args); }")
hasLocation(#20033,#20026)
stmtContainers(#20033,#20028)
#20034=*
stmts(#20034,2,#20033,0,"super(...args);")
hasLocation(#20034,#20026)
stmtContainers(#20034,#20028)
#20035=*
tokeninfo(#20035,8,#20001,5,"}")
#20036=@"loc,{#10000},1,29,1,29"
locations_default(#20036,#10000,1,29,1,29)
hasLocation(#20035,#20036)
exprs(#20035,13,#20034,0,"super(...args)")
hasLocation(#20035,#20026)
enclosingStmt(#20035,#20034)
exprContainers(#20035,#20028)
#20036=*
exprs(#20036,81,#20035,-1,"super")
hasLocation(#20036,#20026)
enclosingStmt(#20036,#20034)
exprContainers(#20036,#20028)
#20037=*
tokeninfo(#20037,0,#20001,6,"")
#20038=@"loc,{#10000},1,30,1,29"
locations_default(#20038,#10000,1,30,1,29)
hasLocation(#20037,#20038)
exprs(#20037,66,#20035,0,"...args")
hasLocation(#20037,#20026)
enclosingStmt(#20037,#20034)
exprContainers(#20037,#20028)
#20038=*
exprs(#20038,79,#20037,0,"args")
hasLocation(#20038,#20026)
enclosingStmt(#20038,#20034)
exprContainers(#20038,#20028)
literals("args","args",#20038)
bind(#20038,#20030)
isMethod(#20025)
#20039=*
entry_cfg_node(#20039,#20001)
#20040=@"loc,{#10000},1,1,1,0"
@@ -152,27 +151,27 @@ locations_default(#20040,#10000,1,1,1,0)
hasLocation(#20039,#20040)
#20041=*
exit_cfg_node(#20041,#20001)
hasLocation(#20041,#20038)
successor(#20015,#20012)
hasLocation(#20041,#20017)
successor(#20028,#20025)
#20042=*
entry_cfg_node(#20042,#20015)
hasLocation(#20042,#20013)
entry_cfg_node(#20042,#20028)
hasLocation(#20042,#20026)
#20043=*
exit_cfg_node(#20043,#20015)
hasLocation(#20043,#20013)
successor(#20020,#20021)
exit_cfg_node(#20043,#20028)
hasLocation(#20043,#20026)
successor(#20033,#20034)
successor(#20034,#20036)
successor(#20038,#20037)
successor(#20037,#20035)
successor(#20036,#20038)
successor(#20035,#20043)
successor(#20031,#20033)
successor(#20042,#20031)
successor(#20027,#20028)
successor(#20025,#20020)
successor(#20023,#20027)
successor(#20021,#20023)
successor(#20025,#20024)
successor(#20024,#20022)
successor(#20023,#20025)
successor(#20022,#20043)
successor(#20018,#20020)
successor(#20042,#20018)
successor(#20014,#20015)
successor(#20012,#20005)
successor(#20009,#20014)
successor(#20006,#20009)
successor(#20005,#20041)
successor(#20039,#20006)
successor(#20020,#20041)
successor(#20039,#20021)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,244 +9,243 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,55"
locations_default(#20002,#10000,1,1,1,55)
hasLocation(#20001,#20002)
#20003=@"var;{Point};{#20000}"
variables(#20003,"Point",#20000)
#20004=@"local_type_name;{Point};{#20000}"
local_type_names(#20004,"Point",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class P ... ray) {}")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20002=*
lines(#20002,#20001,"class Point extends (Math.random() ? Object : Array) {}","")
#20003=@"loc,{#10000},1,1,1,55"
locations_default(#20003,#10000,1,1,1,55)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"class")
#20005=@"loc,{#10000},1,1,1,5"
locations_default(#20005,#10000,1,1,1,5)
hasLocation(#20004,#20005)
#20006=*
exprs(#20006,78,#20005,0,"Point")
tokeninfo(#20006,6,#20001,1,"Point")
#20007=@"loc,{#10000},1,7,1,11"
locations_default(#20007,#10000,1,7,1,11)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20005)
exprContainers(#20006,#20001)
literals("Point","Point",#20006)
decl(#20006,#20003)
typedecl(#20006,#20004)
#20008=*
scopes(#20008,10)
scopenodes(#20005,#20008)
scopenesting(#20008,#20000)
#20009=*
exprs(#20009,63,#20005,1,"(Math.r ... Array)")
#20010=@"loc,{#10000},1,21,1,52"
locations_default(#20010,#10000,1,21,1,52)
hasLocation(#20009,#20010)
enclosingStmt(#20009,#20005)
exprContainers(#20009,#20001)
#20011=*
exprs(#20011,11,#20009,0,"Math.ra ... : Array")
#20012=@"loc,{#10000},1,22,1,51"
locations_default(#20012,#10000,1,22,1,51)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20005)
exprContainers(#20011,#20001)
#20013=*
exprs(#20013,13,#20011,0,"Math.random()")
#20014=@"loc,{#10000},1,22,1,34"
locations_default(#20014,#10000,1,22,1,34)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20005)
exprContainers(#20013,#20001)
#20015=*
exprs(#20015,14,#20013,-1,"Math.random")
#20016=@"loc,{#10000},1,22,1,32"
locations_default(#20016,#10000,1,22,1,32)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20005)
exprContainers(#20015,#20001)
#20017=*
exprs(#20017,79,#20015,0,"Math")
#20018=@"loc,{#10000},1,22,1,25"
locations_default(#20018,#10000,1,22,1,25)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20005)
exprContainers(#20017,#20001)
literals("Math","Math",#20017)
#20019=@"var;{Math};{#20000}"
variables(#20019,"Math",#20000)
bind(#20017,#20019)
tokeninfo(#20008,7,#20001,2,"extends")
#20009=@"loc,{#10000},1,13,1,19"
locations_default(#20009,#10000,1,13,1,19)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"(")
#20011=@"loc,{#10000},1,21,1,21"
locations_default(#20011,#10000,1,21,1,21)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,4,"Math")
#20013=@"loc,{#10000},1,22,1,25"
locations_default(#20013,#10000,1,22,1,25)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,".")
#20015=@"loc,{#10000},1,26,1,26"
locations_default(#20015,#10000,1,26,1,26)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,6,#20001,6,"random")
#20017=@"loc,{#10000},1,27,1,32"
locations_default(#20017,#10000,1,27,1,32)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,7,"(")
#20019=@"loc,{#10000},1,33,1,33"
locations_default(#20019,#10000,1,33,1,33)
hasLocation(#20018,#20019)
#20020=*
exprs(#20020,0,#20015,1,"random")
#20021=@"loc,{#10000},1,27,1,32"
locations_default(#20021,#10000,1,27,1,32)
tokeninfo(#20020,8,#20001,8,")")
#20021=@"loc,{#10000},1,34,1,34"
locations_default(#20021,#10000,1,34,1,34)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20005)
exprContainers(#20020,#20001)
literals("random","random",#20020)
#20022=*
exprs(#20022,79,#20011,1,"Object")
#20023=@"loc,{#10000},1,38,1,43"
locations_default(#20023,#10000,1,38,1,43)
tokeninfo(#20022,8,#20001,9,"?")
#20023=@"loc,{#10000},1,36,1,36"
locations_default(#20023,#10000,1,36,1,36)
hasLocation(#20022,#20023)
enclosingStmt(#20022,#20005)
exprContainers(#20022,#20001)
literals("Object","Object",#20022)
#20024=@"var;{Object};{#20000}"
variables(#20024,"Object",#20000)
bind(#20022,#20024)
#20025=*
exprs(#20025,79,#20011,2,"Array")
#20026=@"loc,{#10000},1,47,1,51"
locations_default(#20026,#10000,1,47,1,51)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20005)
exprContainers(#20025,#20001)
literals("Array","Array",#20025)
#20027=@"var;{Array};{#20000}"
variables(#20027,"Array",#20000)
bind(#20025,#20027)
#20024=*
tokeninfo(#20024,6,#20001,10,"Object")
#20025=@"loc,{#10000},1,38,1,43"
locations_default(#20025,#10000,1,38,1,43)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,11,":")
#20027=@"loc,{#10000},1,45,1,45"
locations_default(#20027,#10000,1,45,1,45)
hasLocation(#20026,#20027)
#20028=*
properties(#20028,#20005,2,0,"constru ... rgs); }")
#20029=@"loc,{#10000},1,54,1,53"
locations_default(#20029,#10000,1,54,1,53)
tokeninfo(#20028,6,#20001,12,"Array")
#20029=@"loc,{#10000},1,47,1,51"
locations_default(#20029,#10000,1,47,1,51)
hasLocation(#20028,#20029)
#20030=*
exprs(#20030,0,#20028,0,"constructor")
hasLocation(#20030,#20029)
enclosingStmt(#20030,#20005)
exprContainers(#20030,#20001)
literals("constructor","constructor",#20030)
#20031=*
exprs(#20031,9,#20028,1,"(...arg ... rgs); }")
hasLocation(#20031,#20029)
enclosingStmt(#20031,#20005)
exprContainers(#20031,#20001)
tokeninfo(#20030,8,#20001,13,")")
#20031=@"loc,{#10000},1,52,1,52"
locations_default(#20031,#10000,1,52,1,52)
hasLocation(#20030,#20031)
#20032=*
scopes(#20032,1)
scopenodes(#20031,#20032)
scopenesting(#20032,#20008)
#20033=@"var;{args};{#20032}"
variables(#20033,"args",#20032)
tokeninfo(#20032,8,#20001,14,"{")
#20033=@"loc,{#10000},1,54,1,54"
locations_default(#20033,#10000,1,54,1,54)
hasLocation(#20032,#20033)
#20034=*
exprs(#20034,78,#20031,0,"args")
hasLocation(#20034,#20029)
exprContainers(#20034,#20031)
literals("args","args",#20034)
decl(#20034,#20033)
#20035=@"var;{arguments};{#20032}"
variables(#20035,"arguments",#20032)
isArgumentsObject(#20035)
hasRestParameter(#20031)
tokeninfo(#20034,8,#20001,15,"}")
#20035=@"loc,{#10000},1,55,1,55"
locations_default(#20035,#10000,1,55,1,55)
hasLocation(#20034,#20035)
#20036=*
stmts(#20036,1,#20031,-2,"{ super(...args); }")
hasLocation(#20036,#20029)
stmtContainers(#20036,#20031)
#20037=*
stmts(#20037,2,#20036,0,"super(...args);")
hasLocation(#20037,#20029)
stmtContainers(#20037,#20031)
#20038=*
exprs(#20038,13,#20037,0,"super(...args)")
hasLocation(#20038,#20029)
enclosingStmt(#20038,#20037)
exprContainers(#20038,#20031)
#20039=*
exprs(#20039,81,#20038,-1,"super")
hasLocation(#20039,#20029)
enclosingStmt(#20039,#20037)
exprContainers(#20039,#20031)
tokeninfo(#20036,0,#20001,16,"")
#20037=@"loc,{#10000},1,56,1,55"
locations_default(#20037,#10000,1,56,1,55)
hasLocation(#20036,#20037)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20038=@"var;{Point};{#20000}"
variables(#20038,"Point",#20000)
#20039=@"local_type_name;{Point};{#20000}"
local_type_names(#20039,"Point",#20000)
#20040=*
exprs(#20040,66,#20038,0,"...args")
hasLocation(#20040,#20029)
enclosingStmt(#20040,#20037)
exprContainers(#20040,#20031)
stmts(#20040,26,#20001,0,"class P ... ray) {}")
hasLocation(#20040,#20003)
stmtContainers(#20040,#20001)
#20041=*
exprs(#20041,79,#20040,0,"args")
hasLocation(#20041,#20029)
enclosingStmt(#20041,#20037)
exprContainers(#20041,#20031)
literals("args","args",#20041)
bind(#20041,#20033)
numlines(#20031,1,0,0)
isMethod(#20028)
exprs(#20041,78,#20040,0,"Point")
hasLocation(#20041,#20007)
enclosingStmt(#20041,#20040)
exprContainers(#20041,#20001)
literals("Point","Point",#20041)
decl(#20041,#20038)
typedecl(#20041,#20039)
#20042=*
lines(#20042,#20001,"class Point extends (Math.random() ? Object : Array) {}","")
hasLocation(#20042,#20002)
numlines(#20001,1,1,0)
scopes(#20042,10)
scopenodes(#20040,#20042)
scopenesting(#20042,#20000)
#20043=*
tokeninfo(#20043,7,#20001,0,"class")
#20044=@"loc,{#10000},1,1,1,5"
locations_default(#20044,#10000,1,1,1,5)
exprs(#20043,63,#20040,1,"(Math.r ... Array)")
#20044=@"loc,{#10000},1,21,1,52"
locations_default(#20044,#10000,1,21,1,52)
hasLocation(#20043,#20044)
enclosingStmt(#20043,#20040)
exprContainers(#20043,#20001)
#20045=*
tokeninfo(#20045,6,#20001,1,"Point")
hasLocation(#20045,#20007)
#20046=*
tokeninfo(#20046,7,#20001,2,"extends")
#20047=@"loc,{#10000},1,13,1,19"
locations_default(#20047,#10000,1,13,1,19)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,8,#20001,3,"(")
#20049=@"loc,{#10000},1,21,1,21"
locations_default(#20049,#10000,1,21,1,21)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,6,#20001,4,"Math")
hasLocation(#20050,#20018)
exprs(#20045,11,#20043,0,"Math.ra ... : Array")
#20046=@"loc,{#10000},1,22,1,51"
locations_default(#20046,#10000,1,22,1,51)
hasLocation(#20045,#20046)
enclosingStmt(#20045,#20040)
exprContainers(#20045,#20001)
#20047=*
exprs(#20047,13,#20045,0,"Math.random()")
#20048=@"loc,{#10000},1,22,1,34"
locations_default(#20048,#10000,1,22,1,34)
hasLocation(#20047,#20048)
enclosingStmt(#20047,#20040)
exprContainers(#20047,#20001)
#20049=*
exprs(#20049,14,#20047,-1,"Math.random")
#20050=@"loc,{#10000},1,22,1,32"
locations_default(#20050,#10000,1,22,1,32)
hasLocation(#20049,#20050)
enclosingStmt(#20049,#20040)
exprContainers(#20049,#20001)
#20051=*
tokeninfo(#20051,8,#20001,5,".")
#20052=@"loc,{#10000},1,26,1,26"
locations_default(#20052,#10000,1,26,1,26)
hasLocation(#20051,#20052)
exprs(#20051,79,#20049,0,"Math")
hasLocation(#20051,#20013)
enclosingStmt(#20051,#20040)
exprContainers(#20051,#20001)
literals("Math","Math",#20051)
#20052=@"var;{Math};{#20000}"
variables(#20052,"Math",#20000)
bind(#20051,#20052)
#20053=*
tokeninfo(#20053,6,#20001,6,"random")
hasLocation(#20053,#20021)
exprs(#20053,0,#20049,1,"random")
hasLocation(#20053,#20017)
enclosingStmt(#20053,#20040)
exprContainers(#20053,#20001)
literals("random","random",#20053)
#20054=*
tokeninfo(#20054,8,#20001,7,"(")
#20055=@"loc,{#10000},1,33,1,33"
locations_default(#20055,#10000,1,33,1,33)
hasLocation(#20054,#20055)
exprs(#20054,79,#20045,1,"Object")
hasLocation(#20054,#20025)
enclosingStmt(#20054,#20040)
exprContainers(#20054,#20001)
literals("Object","Object",#20054)
#20055=@"var;{Object};{#20000}"
variables(#20055,"Object",#20000)
bind(#20054,#20055)
#20056=*
tokeninfo(#20056,8,#20001,8,")")
#20057=@"loc,{#10000},1,34,1,34"
locations_default(#20057,#10000,1,34,1,34)
hasLocation(#20056,#20057)
exprs(#20056,79,#20045,2,"Array")
hasLocation(#20056,#20029)
enclosingStmt(#20056,#20040)
exprContainers(#20056,#20001)
literals("Array","Array",#20056)
#20057=@"var;{Array};{#20000}"
variables(#20057,"Array",#20000)
bind(#20056,#20057)
#20058=*
tokeninfo(#20058,8,#20001,9,"?")
#20059=@"loc,{#10000},1,36,1,36"
locations_default(#20059,#10000,1,36,1,36)
properties(#20058,#20040,2,0,"constru ... rgs); }")
#20059=@"loc,{#10000},1,54,1,53"
locations_default(#20059,#10000,1,54,1,53)
hasLocation(#20058,#20059)
#20060=*
tokeninfo(#20060,6,#20001,10,"Object")
hasLocation(#20060,#20023)
exprs(#20060,0,#20058,0,"constructor")
hasLocation(#20060,#20059)
enclosingStmt(#20060,#20040)
exprContainers(#20060,#20001)
literals("constructor","constructor",#20060)
#20061=*
tokeninfo(#20061,8,#20001,11,":")
#20062=@"loc,{#10000},1,45,1,45"
locations_default(#20062,#10000,1,45,1,45)
hasLocation(#20061,#20062)
#20063=*
tokeninfo(#20063,6,#20001,12,"Array")
hasLocation(#20063,#20026)
exprs(#20061,9,#20058,1,"(...arg ... rgs); }")
hasLocation(#20061,#20059)
enclosingStmt(#20061,#20040)
exprContainers(#20061,#20001)
#20062=*
scopes(#20062,1)
scopenodes(#20061,#20062)
scopenesting(#20062,#20042)
#20063=@"var;{args};{#20062}"
variables(#20063,"args",#20062)
#20064=*
tokeninfo(#20064,8,#20001,13,")")
#20065=@"loc,{#10000},1,52,1,52"
locations_default(#20065,#10000,1,52,1,52)
hasLocation(#20064,#20065)
exprs(#20064,78,#20061,0,"args")
hasLocation(#20064,#20059)
exprContainers(#20064,#20061)
literals("args","args",#20064)
decl(#20064,#20063)
#20065=@"var;{arguments};{#20062}"
variables(#20065,"arguments",#20062)
isArgumentsObject(#20065)
hasRestParameter(#20061)
#20066=*
tokeninfo(#20066,8,#20001,14,"{")
#20067=@"loc,{#10000},1,54,1,54"
locations_default(#20067,#10000,1,54,1,54)
hasLocation(#20066,#20067)
stmts(#20066,1,#20061,-2,"{ super(...args); }")
hasLocation(#20066,#20059)
stmtContainers(#20066,#20061)
#20067=*
stmts(#20067,2,#20066,0,"super(...args);")
hasLocation(#20067,#20059)
stmtContainers(#20067,#20061)
#20068=*
tokeninfo(#20068,8,#20001,15,"}")
#20069=@"loc,{#10000},1,55,1,55"
locations_default(#20069,#10000,1,55,1,55)
hasLocation(#20068,#20069)
exprs(#20068,13,#20067,0,"super(...args)")
hasLocation(#20068,#20059)
enclosingStmt(#20068,#20067)
exprContainers(#20068,#20061)
#20069=*
exprs(#20069,81,#20068,-1,"super")
hasLocation(#20069,#20059)
enclosingStmt(#20069,#20067)
exprContainers(#20069,#20061)
#20070=*
tokeninfo(#20070,0,#20001,16,"")
#20071=@"loc,{#10000},1,56,1,55"
locations_default(#20071,#10000,1,56,1,55)
hasLocation(#20070,#20071)
exprs(#20070,66,#20068,0,"...args")
hasLocation(#20070,#20059)
enclosingStmt(#20070,#20067)
exprContainers(#20070,#20061)
#20071=*
exprs(#20071,79,#20070,0,"args")
hasLocation(#20071,#20059)
enclosingStmt(#20071,#20067)
exprContainers(#20071,#20061)
literals("args","args",#20071)
bind(#20071,#20063)
isMethod(#20058)
#20072=*
entry_cfg_node(#20072,#20001)
#20073=@"loc,{#10000},1,1,1,0"
@@ -254,43 +253,43 @@ locations_default(#20073,#10000,1,1,1,0)
hasLocation(#20072,#20073)
#20074=*
exit_cfg_node(#20074,#20001)
hasLocation(#20074,#20071)
successor(#20031,#20028)
hasLocation(#20074,#20037)
successor(#20061,#20058)
#20075=*
entry_cfg_node(#20075,#20031)
hasLocation(#20075,#20029)
entry_cfg_node(#20075,#20061)
hasLocation(#20075,#20059)
#20076=*
exit_cfg_node(#20076,#20031)
hasLocation(#20076,#20029)
successor(#20036,#20037)
successor(#20037,#20039)
successor(#20041,#20040)
successor(#20040,#20038)
successor(#20039,#20041)
successor(#20038,#20076)
successor(#20034,#20036)
successor(#20075,#20034)
successor(#20030,#20031)
successor(#20028,#20005)
successor(#20009,#20011)
successor(#20011,#20017)
successor(#20020,#20015)
successor(#20017,#20020)
successor(#20015,#20013)
exit_cfg_node(#20076,#20061)
hasLocation(#20076,#20059)
successor(#20066,#20067)
successor(#20067,#20069)
successor(#20071,#20070)
successor(#20070,#20068)
successor(#20069,#20071)
successor(#20068,#20076)
successor(#20064,#20066)
successor(#20075,#20064)
successor(#20060,#20061)
successor(#20058,#20040)
successor(#20043,#20045)
successor(#20045,#20051)
successor(#20053,#20049)
successor(#20051,#20053)
successor(#20049,#20047)
#20077=*
guard_node(#20077,1,#20013)
hasLocation(#20077,#20014)
successor(#20077,#20022)
guard_node(#20077,1,#20047)
hasLocation(#20077,#20048)
successor(#20077,#20054)
#20078=*
guard_node(#20078,0,#20013)
hasLocation(#20078,#20014)
successor(#20078,#20025)
successor(#20013,#20077)
successor(#20013,#20078)
successor(#20022,#20030)
successor(#20025,#20030)
successor(#20006,#20009)
successor(#20005,#20074)
successor(#20072,#20006)
guard_node(#20078,0,#20047)
hasLocation(#20078,#20048)
successor(#20078,#20056)
successor(#20047,#20077)
successor(#20047,#20078)
successor(#20054,#20060)
successor(#20056,#20060)
successor(#20041,#20043)
successor(#20040,#20074)
successor(#20072,#20041)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,222 +9,220 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,5,1"
locations_default(#20002,#10000,1,1,5,1)
hasLocation(#20001,#20002)
#20003=@"var;{A};{#20000}"
variables(#20003,"A",#20000)
#20004=@"local_type_name;{A};{#20000}"
local_type_names(#20004,"A",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20006=*
exprs(#20006,78,#20005,0,"A")
#20007=@"loc,{#10000},1,7,1,7"
locations_default(#20007,#10000,1,7,1,7)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20005)
exprContainers(#20006,#20001)
literals("A","A",#20006)
decl(#20006,#20003)
typedecl(#20006,#20004)
#20008=*
scopes(#20008,10)
scopenodes(#20005,#20008)
scopenesting(#20008,#20000)
#20009=*
properties(#20009,#20005,2,0,"getX() ... .x;\n }")
#20010=@"loc,{#10000},2,3,4,3"
locations_default(#20010,#10000,2,3,4,3)
hasLocation(#20009,#20010)
#20011=*
exprs(#20011,0,#20009,0,"getX")
#20012=@"loc,{#10000},2,3,2,6"
locations_default(#20012,#10000,2,3,2,6)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20005)
exprContainers(#20011,#20001)
literals("getX","getX",#20011)
#20013=*
exprs(#20013,9,#20009,1,"() {\n ... .x;\n }")
#20014=@"loc,{#10000},2,7,4,3"
locations_default(#20014,#10000,2,7,4,3)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20005)
exprContainers(#20013,#20001)
#20015=*
scopes(#20015,1)
scopenodes(#20013,#20015)
scopenesting(#20015,#20008)
#20016=@"var;{arguments};{#20015}"
variables(#20016,"arguments",#20015)
isArgumentsObject(#20016)
#20017=*
stmts(#20017,1,#20013,-2,"{\n r ... .x;\n }")
#20018=@"loc,{#10000},2,10,4,3"
locations_default(#20018,#10000,2,10,4,3)
hasLocation(#20017,#20018)
stmtContainers(#20017,#20013)
#20019=*
stmts(#20019,9,#20017,0,"return this.x;")
#20020=@"loc,{#10000},3,5,3,18"
locations_default(#20020,#10000,3,5,3,18)
hasLocation(#20019,#20020)
stmtContainers(#20019,#20013)
#20021=*
exprs(#20021,14,#20019,0,"this.x")
#20022=@"loc,{#10000},3,12,3,17"
locations_default(#20022,#10000,3,12,3,17)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20019)
exprContainers(#20021,#20013)
#20023=*
exprs(#20023,6,#20021,0,"this")
#20024=@"loc,{#10000},3,12,3,15"
locations_default(#20024,#10000,3,12,3,15)
hasLocation(#20023,#20024)
enclosingStmt(#20023,#20019)
exprContainers(#20023,#20013)
#20025=*
exprs(#20025,0,#20021,1,"x")
#20026=@"loc,{#10000},3,17,3,17"
locations_default(#20026,#10000,3,17,3,17)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20019)
exprContainers(#20025,#20013)
literals("x","x",#20025)
numlines(#20013,3,3,0)
isMethod(#20009)
#20027=*
properties(#20027,#20005,3,0,"constructor() {}")
#20028=@"loc,{#10000},1,9,1,8"
locations_default(#20028,#10000,1,9,1,8)
hasLocation(#20027,#20028)
#20029=*
exprs(#20029,0,#20027,0,"constructor")
hasLocation(#20029,#20028)
enclosingStmt(#20029,#20005)
exprContainers(#20029,#20001)
literals("constructor","constructor",#20029)
#20030=*
exprs(#20030,9,#20027,1,"() {}")
hasLocation(#20030,#20028)
enclosingStmt(#20030,#20005)
exprContainers(#20030,#20001)
#20031=*
scopes(#20031,1)
scopenodes(#20030,#20031)
scopenesting(#20031,#20008)
#20032=@"var;{arguments};{#20031}"
variables(#20032,"arguments",#20031)
isArgumentsObject(#20032)
#20033=*
stmts(#20033,1,#20030,-2,"{}")
hasLocation(#20033,#20028)
stmtContainers(#20033,#20030)
numlines(#20030,1,0,0)
isMethod(#20027)
#20034=*
lines(#20034,#20001,"class A {","
#20002=*
lines(#20002,#20001,"class A {","
")
#20035=@"loc,{#10000},1,1,1,9"
locations_default(#20035,#10000,1,1,1,9)
#20003=@"loc,{#10000},1,1,1,9"
locations_default(#20003,#10000,1,1,1,9)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001," getX() {","
")
#20005=@"loc,{#10000},2,1,2,10"
locations_default(#20005,#10000,2,1,2,10)
hasLocation(#20004,#20005)
indentation(#10000,2," ",2)
#20006=*
lines(#20006,#20001," return this.x;","
")
#20007=@"loc,{#10000},3,1,3,18"
locations_default(#20007,#10000,3,1,3,18)
hasLocation(#20006,#20007)
indentation(#10000,3," ",4)
#20008=*
lines(#20008,#20001," }","
")
#20009=@"loc,{#10000},4,1,4,3"
locations_default(#20009,#10000,4,1,4,3)
hasLocation(#20008,#20009)
indentation(#10000,4," ",2)
#20010=*
lines(#20010,#20001,"}","")
#20011=@"loc,{#10000},5,1,5,1"
locations_default(#20011,#10000,5,1,5,1)
hasLocation(#20010,#20011)
numlines(#20001,5,5,0)
#20012=*
tokeninfo(#20012,7,#20001,0,"class")
#20013=@"loc,{#10000},1,1,1,5"
locations_default(#20013,#10000,1,1,1,5)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,1,"A")
#20015=@"loc,{#10000},1,7,1,7"
locations_default(#20015,#10000,1,7,1,7)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,2,"{")
#20017=@"loc,{#10000},1,9,1,9"
locations_default(#20017,#10000,1,9,1,9)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,3,"getX")
#20019=@"loc,{#10000},2,3,2,6"
locations_default(#20019,#10000,2,3,2,6)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,4,"(")
#20021=@"loc,{#10000},2,7,2,7"
locations_default(#20021,#10000,2,7,2,7)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,5,")")
#20023=@"loc,{#10000},2,8,2,8"
locations_default(#20023,#10000,2,8,2,8)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,8,#20001,6,"{")
#20025=@"loc,{#10000},2,10,2,10"
locations_default(#20025,#10000,2,10,2,10)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,7,#20001,7,"return")
#20027=@"loc,{#10000},3,5,3,10"
locations_default(#20027,#10000,3,5,3,10)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,7,#20001,8,"this")
#20029=@"loc,{#10000},3,12,3,15"
locations_default(#20029,#10000,3,12,3,15)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,9,".")
#20031=@"loc,{#10000},3,16,3,16"
locations_default(#20031,#10000,3,16,3,16)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,10,"x")
#20033=@"loc,{#10000},3,17,3,17"
locations_default(#20033,#10000,3,17,3,17)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,8,#20001,11,";")
#20035=@"loc,{#10000},3,18,3,18"
locations_default(#20035,#10000,3,18,3,18)
hasLocation(#20034,#20035)
#20036=*
lines(#20036,#20001," getX() {","
")
#20037=@"loc,{#10000},2,1,2,10"
locations_default(#20037,#10000,2,1,2,10)
tokeninfo(#20036,8,#20001,12,"}")
#20037=@"loc,{#10000},4,3,4,3"
locations_default(#20037,#10000,4,3,4,3)
hasLocation(#20036,#20037)
indentation(#10000,2," ",2)
#20038=*
lines(#20038,#20001," return this.x;","
")
#20039=@"loc,{#10000},3,1,3,18"
locations_default(#20039,#10000,3,1,3,18)
hasLocation(#20038,#20039)
indentation(#10000,3," ",4)
#20040=*
lines(#20040,#20001," }","
")
#20041=@"loc,{#10000},4,1,4,3"
locations_default(#20041,#10000,4,1,4,3)
hasLocation(#20040,#20041)
indentation(#10000,4," ",2)
#20042=*
lines(#20042,#20001,"}","")
#20043=@"loc,{#10000},5,1,5,1"
locations_default(#20043,#10000,5,1,5,1)
hasLocation(#20042,#20043)
numlines(#20001,5,5,0)
tokeninfo(#20038,8,#20001,13,"}")
hasLocation(#20038,#20011)
#20039=*
tokeninfo(#20039,0,#20001,14,"")
#20040=@"loc,{#10000},5,2,5,1"
locations_default(#20040,#10000,5,2,5,1)
hasLocation(#20039,#20040)
toplevels(#20001,0)
#20041=@"loc,{#10000},1,1,5,1"
locations_default(#20041,#10000,1,1,5,1)
hasLocation(#20001,#20041)
#20042=@"var;{A};{#20000}"
variables(#20042,"A",#20000)
#20043=@"local_type_name;{A};{#20000}"
local_type_names(#20043,"A",#20000)
#20044=*
tokeninfo(#20044,7,#20001,0,"class")
#20045=@"loc,{#10000},1,1,1,5"
locations_default(#20045,#10000,1,1,1,5)
hasLocation(#20044,#20045)
stmts(#20044,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20044,#20041)
stmtContainers(#20044,#20001)
#20045=*
exprs(#20045,78,#20044,0,"A")
hasLocation(#20045,#20015)
enclosingStmt(#20045,#20044)
exprContainers(#20045,#20001)
literals("A","A",#20045)
decl(#20045,#20042)
typedecl(#20045,#20043)
#20046=*
tokeninfo(#20046,6,#20001,1,"A")
hasLocation(#20046,#20007)
scopes(#20046,10)
scopenodes(#20044,#20046)
scopenesting(#20046,#20000)
#20047=*
tokeninfo(#20047,8,#20001,2,"{")
#20048=@"loc,{#10000},1,9,1,9"
locations_default(#20048,#10000,1,9,1,9)
properties(#20047,#20044,2,0,"getX() ... .x;\n }")
#20048=@"loc,{#10000},2,3,4,3"
locations_default(#20048,#10000,2,3,4,3)
hasLocation(#20047,#20048)
#20049=*
tokeninfo(#20049,6,#20001,3,"getX")
hasLocation(#20049,#20012)
exprs(#20049,0,#20047,0,"getX")
hasLocation(#20049,#20019)
enclosingStmt(#20049,#20044)
exprContainers(#20049,#20001)
literals("getX","getX",#20049)
#20050=*
tokeninfo(#20050,8,#20001,4,"(")
#20051=@"loc,{#10000},2,7,2,7"
locations_default(#20051,#10000,2,7,2,7)
exprs(#20050,9,#20047,1,"() {\n ... .x;\n }")
#20051=@"loc,{#10000},2,7,4,3"
locations_default(#20051,#10000,2,7,4,3)
hasLocation(#20050,#20051)
enclosingStmt(#20050,#20044)
exprContainers(#20050,#20001)
#20052=*
tokeninfo(#20052,8,#20001,5,")")
#20053=@"loc,{#10000},2,8,2,8"
locations_default(#20053,#10000,2,8,2,8)
hasLocation(#20052,#20053)
scopes(#20052,1)
scopenodes(#20050,#20052)
scopenesting(#20052,#20046)
#20053=@"var;{arguments};{#20052}"
variables(#20053,"arguments",#20052)
isArgumentsObject(#20053)
#20054=*
tokeninfo(#20054,8,#20001,6,"{")
#20055=@"loc,{#10000},2,10,2,10"
locations_default(#20055,#10000,2,10,2,10)
stmts(#20054,1,#20050,-2,"{\n r ... .x;\n }")
#20055=@"loc,{#10000},2,10,4,3"
locations_default(#20055,#10000,2,10,4,3)
hasLocation(#20054,#20055)
stmtContainers(#20054,#20050)
#20056=*
tokeninfo(#20056,7,#20001,7,"return")
#20057=@"loc,{#10000},3,5,3,10"
locations_default(#20057,#10000,3,5,3,10)
stmts(#20056,9,#20054,0,"return this.x;")
#20057=@"loc,{#10000},3,5,3,18"
locations_default(#20057,#10000,3,5,3,18)
hasLocation(#20056,#20057)
stmtContainers(#20056,#20050)
#20058=*
tokeninfo(#20058,7,#20001,8,"this")
hasLocation(#20058,#20024)
#20059=*
tokeninfo(#20059,8,#20001,9,".")
#20060=@"loc,{#10000},3,16,3,16"
locations_default(#20060,#10000,3,16,3,16)
hasLocation(#20059,#20060)
exprs(#20058,14,#20056,0,"this.x")
#20059=@"loc,{#10000},3,12,3,17"
locations_default(#20059,#10000,3,12,3,17)
hasLocation(#20058,#20059)
enclosingStmt(#20058,#20056)
exprContainers(#20058,#20050)
#20060=*
exprs(#20060,6,#20058,0,"this")
hasLocation(#20060,#20029)
enclosingStmt(#20060,#20056)
exprContainers(#20060,#20050)
#20061=*
tokeninfo(#20061,6,#20001,10,"x")
hasLocation(#20061,#20026)
exprs(#20061,0,#20058,1,"x")
hasLocation(#20061,#20033)
enclosingStmt(#20061,#20056)
exprContainers(#20061,#20050)
literals("x","x",#20061)
isMethod(#20047)
#20062=*
tokeninfo(#20062,8,#20001,11,";")
#20063=@"loc,{#10000},3,18,3,18"
locations_default(#20063,#10000,3,18,3,18)
properties(#20062,#20044,3,0,"constructor() {}")
#20063=@"loc,{#10000},1,9,1,8"
locations_default(#20063,#10000,1,9,1,8)
hasLocation(#20062,#20063)
#20064=*
tokeninfo(#20064,8,#20001,12,"}")
#20065=@"loc,{#10000},4,3,4,3"
locations_default(#20065,#10000,4,3,4,3)
hasLocation(#20064,#20065)
exprs(#20064,0,#20062,0,"constructor")
hasLocation(#20064,#20063)
enclosingStmt(#20064,#20044)
exprContainers(#20064,#20001)
literals("constructor","constructor",#20064)
#20065=*
exprs(#20065,9,#20062,1,"() {}")
hasLocation(#20065,#20063)
enclosingStmt(#20065,#20044)
exprContainers(#20065,#20001)
#20066=*
tokeninfo(#20066,8,#20001,13,"}")
hasLocation(#20066,#20043)
#20067=*
tokeninfo(#20067,0,#20001,14,"")
#20068=@"loc,{#10000},5,2,5,1"
locations_default(#20068,#10000,5,2,5,1)
hasLocation(#20067,#20068)
scopes(#20066,1)
scopenodes(#20065,#20066)
scopenesting(#20066,#20046)
#20067=@"var;{arguments};{#20066}"
variables(#20067,"arguments",#20066)
isArgumentsObject(#20067)
#20068=*
stmts(#20068,1,#20065,-2,"{}")
hasLocation(#20068,#20063)
stmtContainers(#20068,#20065)
isMethod(#20062)
#20069=*
entry_cfg_node(#20069,#20001)
#20070=@"loc,{#10000},1,1,1,0"
@@ -232,39 +230,39 @@ locations_default(#20070,#10000,1,1,1,0)
hasLocation(#20069,#20070)
#20071=*
exit_cfg_node(#20071,#20001)
hasLocation(#20071,#20068)
successor(#20030,#20027)
hasLocation(#20071,#20040)
successor(#20065,#20062)
#20072=*
entry_cfg_node(#20072,#20030)
hasLocation(#20072,#20028)
entry_cfg_node(#20072,#20065)
hasLocation(#20072,#20063)
#20073=*
exit_cfg_node(#20073,#20030)
hasLocation(#20073,#20028)
successor(#20033,#20073)
successor(#20072,#20033)
successor(#20029,#20030)
successor(#20027,#20005)
successor(#20013,#20009)
exit_cfg_node(#20073,#20065)
hasLocation(#20073,#20063)
successor(#20068,#20073)
successor(#20072,#20068)
successor(#20064,#20065)
successor(#20062,#20044)
successor(#20050,#20047)
#20074=*
entry_cfg_node(#20074,#20013)
entry_cfg_node(#20074,#20050)
#20075=@"loc,{#10000},2,7,2,6"
locations_default(#20075,#10000,2,7,2,6)
hasLocation(#20074,#20075)
#20076=*
exit_cfg_node(#20076,#20013)
exit_cfg_node(#20076,#20050)
#20077=@"loc,{#10000},4,4,4,3"
locations_default(#20077,#10000,4,4,4,3)
hasLocation(#20076,#20077)
successor(#20017,#20023)
successor(#20025,#20021)
successor(#20023,#20025)
successor(#20021,#20019)
successor(#20019,#20076)
successor(#20074,#20017)
successor(#20011,#20013)
successor(#20009,#20029)
successor(#20006,#20011)
successor(#20005,#20071)
successor(#20069,#20006)
successor(#20054,#20060)
successor(#20061,#20058)
successor(#20060,#20061)
successor(#20058,#20056)
successor(#20056,#20076)
successor(#20074,#20054)
successor(#20049,#20050)
successor(#20047,#20064)
successor(#20045,#20049)
successor(#20044,#20071)
successor(#20069,#20045)
numlines(#10000,5,5,0)
filetype(#10000,"javascript")

View File

@@ -9,206 +9,204 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,5,1"
locations_default(#20002,#10000,1,1,5,1)
hasLocation(#20001,#20002)
#20003=@"var;{A};{#20000}"
variables(#20003,"A",#20000)
#20004=@"local_type_name;{A};{#20000}"
local_type_names(#20004,"A",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20006=*
exprs(#20006,78,#20005,0,"A")
#20007=@"loc,{#10000},1,7,1,7"
locations_default(#20007,#10000,1,7,1,7)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20005)
exprContainers(#20006,#20001)
literals("A","A",#20006)
decl(#20006,#20003)
typedecl(#20006,#20004)
#20008=*
scopes(#20008,10)
scopenodes(#20005,#20008)
scopenesting(#20008,#20000)
#20009=*
properties(#20009,#20005,2,0,"static ... A"";\n }")
#20010=@"loc,{#10000},2,3,4,3"
locations_default(#20010,#10000,2,3,4,3)
hasLocation(#20009,#20010)
#20011=*
exprs(#20011,0,#20009,0,"className")
#20012=@"loc,{#10000},2,10,2,18"
locations_default(#20012,#10000,2,10,2,18)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20005)
exprContainers(#20011,#20001)
literals("className","className",#20011)
#20013=*
exprs(#20013,9,#20009,1,"() {\n ... A"";\n }")
#20014=@"loc,{#10000},2,19,4,3"
locations_default(#20014,#10000,2,19,4,3)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20005)
exprContainers(#20013,#20001)
#20015=*
scopes(#20015,1)
scopenodes(#20013,#20015)
scopenesting(#20015,#20008)
#20016=@"var;{arguments};{#20015}"
variables(#20016,"arguments",#20015)
isArgumentsObject(#20016)
#20017=*
stmts(#20017,1,#20013,-2,"{\n r ... A"";\n }")
#20018=@"loc,{#10000},2,22,4,3"
locations_default(#20018,#10000,2,22,4,3)
hasLocation(#20017,#20018)
stmtContainers(#20017,#20013)
#20019=*
stmts(#20019,9,#20017,0,"return ""A"";")
#20020=@"loc,{#10000},3,5,3,15"
locations_default(#20020,#10000,3,5,3,15)
hasLocation(#20019,#20020)
stmtContainers(#20019,#20013)
#20021=*
exprs(#20021,4,#20019,0,"""A""")
#20022=@"loc,{#10000},3,12,3,14"
locations_default(#20022,#10000,3,12,3,14)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20019)
exprContainers(#20021,#20013)
literals("A","""A""",#20021)
numlines(#20013,3,3,0)
isMethod(#20009)
isStatic(#20009)
#20023=*
properties(#20023,#20005,3,0,"constructor() {}")
#20024=@"loc,{#10000},1,9,1,8"
locations_default(#20024,#10000,1,9,1,8)
hasLocation(#20023,#20024)
#20025=*
exprs(#20025,0,#20023,0,"constructor")
hasLocation(#20025,#20024)
enclosingStmt(#20025,#20005)
exprContainers(#20025,#20001)
literals("constructor","constructor",#20025)
#20026=*
exprs(#20026,9,#20023,1,"() {}")
hasLocation(#20026,#20024)
enclosingStmt(#20026,#20005)
exprContainers(#20026,#20001)
#20027=*
scopes(#20027,1)
scopenodes(#20026,#20027)
scopenesting(#20027,#20008)
#20028=@"var;{arguments};{#20027}"
variables(#20028,"arguments",#20027)
isArgumentsObject(#20028)
#20029=*
stmts(#20029,1,#20026,-2,"{}")
hasLocation(#20029,#20024)
stmtContainers(#20029,#20026)
numlines(#20026,1,0,0)
isMethod(#20023)
#20030=*
lines(#20030,#20001,"class A {","
#20002=*
lines(#20002,#20001,"class A {","
")
#20031=@"loc,{#10000},1,1,1,9"
locations_default(#20031,#10000,1,1,1,9)
#20003=@"loc,{#10000},1,1,1,9"
locations_default(#20003,#10000,1,1,1,9)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001," static className() {","
")
#20005=@"loc,{#10000},2,1,2,22"
locations_default(#20005,#10000,2,1,2,22)
hasLocation(#20004,#20005)
indentation(#10000,2," ",2)
#20006=*
lines(#20006,#20001," return ""A"";","
")
#20007=@"loc,{#10000},3,1,3,15"
locations_default(#20007,#10000,3,1,3,15)
hasLocation(#20006,#20007)
indentation(#10000,3," ",4)
#20008=*
lines(#20008,#20001," }","
")
#20009=@"loc,{#10000},4,1,4,3"
locations_default(#20009,#10000,4,1,4,3)
hasLocation(#20008,#20009)
indentation(#10000,4," ",2)
#20010=*
lines(#20010,#20001,"}","")
#20011=@"loc,{#10000},5,1,5,1"
locations_default(#20011,#10000,5,1,5,1)
hasLocation(#20010,#20011)
numlines(#20001,5,5,0)
#20012=*
tokeninfo(#20012,7,#20001,0,"class")
#20013=@"loc,{#10000},1,1,1,5"
locations_default(#20013,#10000,1,1,1,5)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,1,"A")
#20015=@"loc,{#10000},1,7,1,7"
locations_default(#20015,#10000,1,7,1,7)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,2,"{")
#20017=@"loc,{#10000},1,9,1,9"
locations_default(#20017,#10000,1,9,1,9)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,3,"static")
#20019=@"loc,{#10000},2,3,2,8"
locations_default(#20019,#10000,2,3,2,8)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,6,#20001,4,"className")
#20021=@"loc,{#10000},2,10,2,18"
locations_default(#20021,#10000,2,10,2,18)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,5,"(")
#20023=@"loc,{#10000},2,19,2,19"
locations_default(#20023,#10000,2,19,2,19)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,8,#20001,6,")")
#20025=@"loc,{#10000},2,20,2,20"
locations_default(#20025,#10000,2,20,2,20)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,7,"{")
#20027=@"loc,{#10000},2,22,2,22"
locations_default(#20027,#10000,2,22,2,22)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,7,#20001,8,"return")
#20029=@"loc,{#10000},3,5,3,10"
locations_default(#20029,#10000,3,5,3,10)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,4,#20001,9,"""A""")
#20031=@"loc,{#10000},3,12,3,14"
locations_default(#20031,#10000,3,12,3,14)
hasLocation(#20030,#20031)
#20032=*
lines(#20032,#20001," static className() {","
")
#20033=@"loc,{#10000},2,1,2,22"
locations_default(#20033,#10000,2,1,2,22)
tokeninfo(#20032,8,#20001,10,";")
#20033=@"loc,{#10000},3,15,3,15"
locations_default(#20033,#10000,3,15,3,15)
hasLocation(#20032,#20033)
indentation(#10000,2," ",2)
#20034=*
lines(#20034,#20001," return ""A"";","
")
#20035=@"loc,{#10000},3,1,3,15"
locations_default(#20035,#10000,3,1,3,15)
tokeninfo(#20034,8,#20001,11,"}")
#20035=@"loc,{#10000},4,3,4,3"
locations_default(#20035,#10000,4,3,4,3)
hasLocation(#20034,#20035)
indentation(#10000,3," ",4)
#20036=*
lines(#20036,#20001," }","
")
#20037=@"loc,{#10000},4,1,4,3"
locations_default(#20037,#10000,4,1,4,3)
hasLocation(#20036,#20037)
indentation(#10000,4," ",2)
#20038=*
lines(#20038,#20001,"}","")
#20039=@"loc,{#10000},5,1,5,1"
locations_default(#20039,#10000,5,1,5,1)
hasLocation(#20038,#20039)
numlines(#20001,5,5,0)
#20040=*
tokeninfo(#20040,7,#20001,0,"class")
#20041=@"loc,{#10000},1,1,1,5"
locations_default(#20041,#10000,1,1,1,5)
hasLocation(#20040,#20041)
tokeninfo(#20036,8,#20001,12,"}")
hasLocation(#20036,#20011)
#20037=*
tokeninfo(#20037,0,#20001,13,"")
#20038=@"loc,{#10000},5,2,5,1"
locations_default(#20038,#10000,5,2,5,1)
hasLocation(#20037,#20038)
toplevels(#20001,0)
#20039=@"loc,{#10000},1,1,5,1"
locations_default(#20039,#10000,1,1,5,1)
hasLocation(#20001,#20039)
#20040=@"var;{A};{#20000}"
variables(#20040,"A",#20000)
#20041=@"local_type_name;{A};{#20000}"
local_type_names(#20041,"A",#20000)
#20042=*
tokeninfo(#20042,6,#20001,1,"A")
hasLocation(#20042,#20007)
stmts(#20042,26,#20001,0,"class A ... ;\n }\n}")
hasLocation(#20042,#20039)
stmtContainers(#20042,#20001)
#20043=*
tokeninfo(#20043,8,#20001,2,"{")
#20044=@"loc,{#10000},1,9,1,9"
locations_default(#20044,#10000,1,9,1,9)
hasLocation(#20043,#20044)
exprs(#20043,78,#20042,0,"A")
hasLocation(#20043,#20015)
enclosingStmt(#20043,#20042)
exprContainers(#20043,#20001)
literals("A","A",#20043)
decl(#20043,#20040)
typedecl(#20043,#20041)
#20044=*
scopes(#20044,10)
scopenodes(#20042,#20044)
scopenesting(#20044,#20000)
#20045=*
tokeninfo(#20045,6,#20001,3,"static")
#20046=@"loc,{#10000},2,3,2,8"
locations_default(#20046,#10000,2,3,2,8)
properties(#20045,#20042,2,0,"static ... A"";\n }")
#20046=@"loc,{#10000},2,3,4,3"
locations_default(#20046,#10000,2,3,4,3)
hasLocation(#20045,#20046)
#20047=*
tokeninfo(#20047,6,#20001,4,"className")
hasLocation(#20047,#20012)
exprs(#20047,0,#20045,0,"className")
hasLocation(#20047,#20021)
enclosingStmt(#20047,#20042)
exprContainers(#20047,#20001)
literals("className","className",#20047)
#20048=*
tokeninfo(#20048,8,#20001,5,"(")
#20049=@"loc,{#10000},2,19,2,19"
locations_default(#20049,#10000,2,19,2,19)
exprs(#20048,9,#20045,1,"() {\n ... A"";\n }")
#20049=@"loc,{#10000},2,19,4,3"
locations_default(#20049,#10000,2,19,4,3)
hasLocation(#20048,#20049)
enclosingStmt(#20048,#20042)
exprContainers(#20048,#20001)
#20050=*
tokeninfo(#20050,8,#20001,6,")")
#20051=@"loc,{#10000},2,20,2,20"
locations_default(#20051,#10000,2,20,2,20)
hasLocation(#20050,#20051)
scopes(#20050,1)
scopenodes(#20048,#20050)
scopenesting(#20050,#20044)
#20051=@"var;{arguments};{#20050}"
variables(#20051,"arguments",#20050)
isArgumentsObject(#20051)
#20052=*
tokeninfo(#20052,8,#20001,7,"{")
#20053=@"loc,{#10000},2,22,2,22"
locations_default(#20053,#10000,2,22,2,22)
stmts(#20052,1,#20048,-2,"{\n r ... A"";\n }")
#20053=@"loc,{#10000},2,22,4,3"
locations_default(#20053,#10000,2,22,4,3)
hasLocation(#20052,#20053)
stmtContainers(#20052,#20048)
#20054=*
tokeninfo(#20054,7,#20001,8,"return")
#20055=@"loc,{#10000},3,5,3,10"
locations_default(#20055,#10000,3,5,3,10)
stmts(#20054,9,#20052,0,"return ""A"";")
#20055=@"loc,{#10000},3,5,3,15"
locations_default(#20055,#10000,3,5,3,15)
hasLocation(#20054,#20055)
stmtContainers(#20054,#20048)
#20056=*
tokeninfo(#20056,4,#20001,9,"""A""")
hasLocation(#20056,#20022)
exprs(#20056,4,#20054,0,"""A""")
hasLocation(#20056,#20031)
enclosingStmt(#20056,#20054)
exprContainers(#20056,#20048)
literals("A","""A""",#20056)
isMethod(#20045)
isStatic(#20045)
#20057=*
tokeninfo(#20057,8,#20001,10,";")
#20058=@"loc,{#10000},3,15,3,15"
locations_default(#20058,#10000,3,15,3,15)
properties(#20057,#20042,3,0,"constructor() {}")
#20058=@"loc,{#10000},1,9,1,8"
locations_default(#20058,#10000,1,9,1,8)
hasLocation(#20057,#20058)
#20059=*
tokeninfo(#20059,8,#20001,11,"}")
#20060=@"loc,{#10000},4,3,4,3"
locations_default(#20060,#10000,4,3,4,3)
hasLocation(#20059,#20060)
exprs(#20059,0,#20057,0,"constructor")
hasLocation(#20059,#20058)
enclosingStmt(#20059,#20042)
exprContainers(#20059,#20001)
literals("constructor","constructor",#20059)
#20060=*
exprs(#20060,9,#20057,1,"() {}")
hasLocation(#20060,#20058)
enclosingStmt(#20060,#20042)
exprContainers(#20060,#20001)
#20061=*
tokeninfo(#20061,8,#20001,12,"}")
hasLocation(#20061,#20039)
#20062=*
tokeninfo(#20062,0,#20001,13,"")
#20063=@"loc,{#10000},5,2,5,1"
locations_default(#20063,#10000,5,2,5,1)
hasLocation(#20062,#20063)
scopes(#20061,1)
scopenodes(#20060,#20061)
scopenesting(#20061,#20044)
#20062=@"var;{arguments};{#20061}"
variables(#20062,"arguments",#20061)
isArgumentsObject(#20062)
#20063=*
stmts(#20063,1,#20060,-2,"{}")
hasLocation(#20063,#20058)
stmtContainers(#20063,#20060)
isMethod(#20057)
#20064=*
entry_cfg_node(#20064,#20001)
#20065=@"loc,{#10000},1,1,1,0"
@@ -216,37 +214,37 @@ locations_default(#20065,#10000,1,1,1,0)
hasLocation(#20064,#20065)
#20066=*
exit_cfg_node(#20066,#20001)
hasLocation(#20066,#20063)
successor(#20026,#20023)
hasLocation(#20066,#20038)
successor(#20060,#20057)
#20067=*
entry_cfg_node(#20067,#20026)
hasLocation(#20067,#20024)
entry_cfg_node(#20067,#20060)
hasLocation(#20067,#20058)
#20068=*
exit_cfg_node(#20068,#20026)
hasLocation(#20068,#20024)
successor(#20029,#20068)
successor(#20067,#20029)
successor(#20025,#20026)
successor(#20023,#20005)
successor(#20013,#20009)
exit_cfg_node(#20068,#20060)
hasLocation(#20068,#20058)
successor(#20063,#20068)
successor(#20067,#20063)
successor(#20059,#20060)
successor(#20057,#20042)
successor(#20048,#20045)
#20069=*
entry_cfg_node(#20069,#20013)
entry_cfg_node(#20069,#20048)
#20070=@"loc,{#10000},2,19,2,18"
locations_default(#20070,#10000,2,19,2,18)
hasLocation(#20069,#20070)
#20071=*
exit_cfg_node(#20071,#20013)
exit_cfg_node(#20071,#20048)
#20072=@"loc,{#10000},4,4,4,3"
locations_default(#20072,#10000,4,4,4,3)
hasLocation(#20071,#20072)
successor(#20017,#20021)
successor(#20021,#20019)
successor(#20019,#20071)
successor(#20069,#20017)
successor(#20011,#20013)
successor(#20009,#20025)
successor(#20006,#20011)
successor(#20005,#20066)
successor(#20064,#20006)
successor(#20052,#20056)
successor(#20056,#20054)
successor(#20054,#20071)
successor(#20069,#20052)
successor(#20047,#20048)
successor(#20045,#20059)
successor(#20043,#20047)
successor(#20042,#20066)
successor(#20064,#20043)
numlines(#10000,5,5,0)
filetype(#10000,"javascript")

View File

@@ -9,88 +9,87 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,14"
locations_default(#20002,#10000,1,1,1,14)
hasLocation(#20001,#20002)
#20003=@"var;{Point};{#20000}"
variables(#20003,"Point",#20000)
#20004=@"local_type_name;{Point};{#20000}"
local_type_names(#20004,"Point",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class Point {}")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20002=*
lines(#20002,#20001,"class Point {}","")
#20003=@"loc,{#10000},1,1,1,14"
locations_default(#20003,#10000,1,1,1,14)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"class")
#20005=@"loc,{#10000},1,1,1,5"
locations_default(#20005,#10000,1,1,1,5)
hasLocation(#20004,#20005)
#20006=*
exprs(#20006,78,#20005,0,"Point")
tokeninfo(#20006,6,#20001,1,"Point")
#20007=@"loc,{#10000},1,7,1,11"
locations_default(#20007,#10000,1,7,1,11)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20005)
exprContainers(#20006,#20001)
literals("Point","Point",#20006)
decl(#20006,#20003)
typedecl(#20006,#20004)
#20008=*
scopes(#20008,10)
scopenodes(#20005,#20008)
scopenesting(#20008,#20000)
#20009=*
properties(#20009,#20005,2,0,"constructor() {}")
#20010=@"loc,{#10000},1,13,1,12"
locations_default(#20010,#10000,1,13,1,12)
hasLocation(#20009,#20010)
#20011=*
exprs(#20011,0,#20009,0,"constructor")
hasLocation(#20011,#20010)
enclosingStmt(#20011,#20005)
exprContainers(#20011,#20001)
literals("constructor","constructor",#20011)
tokeninfo(#20008,8,#20001,2,"{")
#20009=@"loc,{#10000},1,13,1,13"
locations_default(#20009,#10000,1,13,1,13)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"}")
#20011=@"loc,{#10000},1,14,1,14"
locations_default(#20011,#10000,1,14,1,14)
hasLocation(#20010,#20011)
#20012=*
exprs(#20012,9,#20009,1,"() {}")
hasLocation(#20012,#20010)
enclosingStmt(#20012,#20005)
exprContainers(#20012,#20001)
#20013=*
scopes(#20013,1)
scopenodes(#20012,#20013)
scopenesting(#20013,#20008)
#20014=@"var;{arguments};{#20013}"
variables(#20014,"arguments",#20013)
isArgumentsObject(#20014)
#20015=*
stmts(#20015,1,#20012,-2,"{}")
hasLocation(#20015,#20010)
stmtContainers(#20015,#20012)
numlines(#20012,1,0,0)
isMethod(#20009)
tokeninfo(#20012,0,#20001,4,"")
#20013=@"loc,{#10000},1,15,1,14"
locations_default(#20013,#10000,1,15,1,14)
hasLocation(#20012,#20013)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20014=@"var;{Point};{#20000}"
variables(#20014,"Point",#20000)
#20015=@"local_type_name;{Point};{#20000}"
local_type_names(#20015,"Point",#20000)
#20016=*
lines(#20016,#20001,"class Point {}","")
hasLocation(#20016,#20002)
numlines(#20001,1,1,0)
stmts(#20016,26,#20001,0,"class Point {}")
hasLocation(#20016,#20003)
stmtContainers(#20016,#20001)
#20017=*
tokeninfo(#20017,7,#20001,0,"class")
#20018=@"loc,{#10000},1,1,1,5"
locations_default(#20018,#10000,1,1,1,5)
hasLocation(#20017,#20018)
exprs(#20017,78,#20016,0,"Point")
hasLocation(#20017,#20007)
enclosingStmt(#20017,#20016)
exprContainers(#20017,#20001)
literals("Point","Point",#20017)
decl(#20017,#20014)
typedecl(#20017,#20015)
#20018=*
scopes(#20018,10)
scopenodes(#20016,#20018)
scopenesting(#20018,#20000)
#20019=*
tokeninfo(#20019,6,#20001,1,"Point")
hasLocation(#20019,#20007)
#20020=*
tokeninfo(#20020,8,#20001,2,"{")
#20021=@"loc,{#10000},1,13,1,13"
locations_default(#20021,#10000,1,13,1,13)
hasLocation(#20020,#20021)
properties(#20019,#20016,2,0,"constructor() {}")
#20020=@"loc,{#10000},1,13,1,12"
locations_default(#20020,#10000,1,13,1,12)
hasLocation(#20019,#20020)
#20021=*
exprs(#20021,0,#20019,0,"constructor")
hasLocation(#20021,#20020)
enclosingStmt(#20021,#20016)
exprContainers(#20021,#20001)
literals("constructor","constructor",#20021)
#20022=*
tokeninfo(#20022,8,#20001,3,"}")
#20023=@"loc,{#10000},1,14,1,14"
locations_default(#20023,#10000,1,14,1,14)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,0,#20001,4,"")
#20025=@"loc,{#10000},1,15,1,14"
locations_default(#20025,#10000,1,15,1,14)
hasLocation(#20024,#20025)
exprs(#20022,9,#20019,1,"() {}")
hasLocation(#20022,#20020)
enclosingStmt(#20022,#20016)
exprContainers(#20022,#20001)
#20023=*
scopes(#20023,1)
scopenodes(#20022,#20023)
scopenesting(#20023,#20018)
#20024=@"var;{arguments};{#20023}"
variables(#20024,"arguments",#20023)
isArgumentsObject(#20024)
#20025=*
stmts(#20025,1,#20022,-2,"{}")
hasLocation(#20025,#20020)
stmtContainers(#20025,#20022)
isMethod(#20019)
#20026=*
entry_cfg_node(#20026,#20001)
#20027=@"loc,{#10000},1,1,1,0"
@@ -98,20 +97,20 @@ locations_default(#20027,#10000,1,1,1,0)
hasLocation(#20026,#20027)
#20028=*
exit_cfg_node(#20028,#20001)
hasLocation(#20028,#20025)
successor(#20012,#20009)
hasLocation(#20028,#20013)
successor(#20022,#20019)
#20029=*
entry_cfg_node(#20029,#20012)
hasLocation(#20029,#20010)
entry_cfg_node(#20029,#20022)
hasLocation(#20029,#20020)
#20030=*
exit_cfg_node(#20030,#20012)
hasLocation(#20030,#20010)
successor(#20015,#20030)
successor(#20029,#20015)
successor(#20011,#20012)
successor(#20009,#20005)
successor(#20006,#20011)
successor(#20005,#20028)
successor(#20026,#20006)
exit_cfg_node(#20030,#20022)
hasLocation(#20030,#20020)
successor(#20025,#20030)
successor(#20029,#20025)
successor(#20021,#20022)
successor(#20019,#20016)
successor(#20017,#20021)
successor(#20016,#20028)
successor(#20026,#20017)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,110 +9,109 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,16"
locations_default(#20002,#10000,1,1,1,16)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"(class Point {})")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20002=*
lines(#20002,#20001,"(class Point {})","")
#20003=@"loc,{#10000},1,1,1,16"
locations_default(#20003,#10000,1,1,1,16)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
exprs(#20004,63,#20003,0,"(class Point {})")
hasLocation(#20004,#20002)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20005=*
exprs(#20005,80,#20004,0,"class Point {}")
#20006=@"loc,{#10000},1,2,1,15"
locations_default(#20006,#10000,1,2,1,15)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20003)
exprContainers(#20005,#20001)
#20007=*
scopes(#20007,8)
scopenodes(#20005,#20007)
scopenesting(#20007,#20000)
#20008=@"var;{Point};{#20007}"
variables(#20008,"Point",#20007)
#20009=@"local_type_name;{Point};{#20007}"
local_type_names(#20009,"Point",#20007)
tokeninfo(#20004,8,#20001,0,"(")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"class")
#20007=@"loc,{#10000},1,2,1,6"
locations_default(#20007,#10000,1,2,1,6)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"Point")
#20009=@"loc,{#10000},1,8,1,12"
locations_default(#20009,#10000,1,8,1,12)
hasLocation(#20008,#20009)
#20010=*
exprs(#20010,78,#20005,0,"Point")
#20011=@"loc,{#10000},1,8,1,12"
locations_default(#20011,#10000,1,8,1,12)
tokeninfo(#20010,8,#20001,3,"{")
#20011=@"loc,{#10000},1,14,1,14"
locations_default(#20011,#10000,1,14,1,14)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20003)
exprContainers(#20010,#20001)
literals("Point","Point",#20010)
decl(#20010,#20008)
typedecl(#20010,#20009)
#20012=*
properties(#20012,#20005,2,0,"constructor() {}")
#20013=@"loc,{#10000},1,14,1,13"
locations_default(#20013,#10000,1,14,1,13)
tokeninfo(#20012,8,#20001,4,"}")
#20013=@"loc,{#10000},1,15,1,15"
locations_default(#20013,#10000,1,15,1,15)
hasLocation(#20012,#20013)
#20014=*
exprs(#20014,0,#20012,0,"constructor")
hasLocation(#20014,#20013)
enclosingStmt(#20014,#20003)
exprContainers(#20014,#20001)
literals("constructor","constructor",#20014)
#20015=*
exprs(#20015,9,#20012,1,"() {}")
hasLocation(#20015,#20013)
enclosingStmt(#20015,#20003)
exprContainers(#20015,#20001)
tokeninfo(#20014,8,#20001,5,")")
#20015=@"loc,{#10000},1,16,1,16"
locations_default(#20015,#10000,1,16,1,16)
hasLocation(#20014,#20015)
#20016=*
scopes(#20016,1)
scopenodes(#20015,#20016)
scopenesting(#20016,#20007)
#20017=@"var;{arguments};{#20016}"
variables(#20017,"arguments",#20016)
isArgumentsObject(#20017)
tokeninfo(#20016,0,#20001,6,"")
#20017=@"loc,{#10000},1,17,1,16"
locations_default(#20017,#10000,1,17,1,16)
hasLocation(#20016,#20017)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20018=*
stmts(#20018,1,#20015,-2,"{}")
hasLocation(#20018,#20013)
stmtContainers(#20018,#20015)
numlines(#20015,1,0,0)
isMethod(#20012)
stmts(#20018,2,#20001,0,"(class Point {})")
hasLocation(#20018,#20003)
stmtContainers(#20018,#20001)
#20019=*
lines(#20019,#20001,"(class Point {})","")
hasLocation(#20019,#20002)
numlines(#20001,1,1,0)
exprs(#20019,63,#20018,0,"(class Point {})")
hasLocation(#20019,#20003)
enclosingStmt(#20019,#20018)
exprContainers(#20019,#20001)
#20020=*
tokeninfo(#20020,8,#20001,0,"(")
#20021=@"loc,{#10000},1,1,1,1"
locations_default(#20021,#10000,1,1,1,1)
exprs(#20020,80,#20019,0,"class Point {}")
#20021=@"loc,{#10000},1,2,1,15"
locations_default(#20021,#10000,1,2,1,15)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20018)
exprContainers(#20020,#20001)
#20022=*
tokeninfo(#20022,7,#20001,1,"class")
#20023=@"loc,{#10000},1,2,1,6"
locations_default(#20023,#10000,1,2,1,6)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,2,"Point")
hasLocation(#20024,#20011)
scopes(#20022,8)
scopenodes(#20020,#20022)
scopenesting(#20022,#20000)
#20023=@"var;{Point};{#20022}"
variables(#20023,"Point",#20022)
#20024=@"local_type_name;{Point};{#20022}"
local_type_names(#20024,"Point",#20022)
#20025=*
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,8,#20001,4,"}")
#20028=@"loc,{#10000},1,15,1,15"
locations_default(#20028,#10000,1,15,1,15)
hasLocation(#20027,#20028)
exprs(#20025,78,#20020,0,"Point")
hasLocation(#20025,#20009)
enclosingStmt(#20025,#20018)
exprContainers(#20025,#20001)
literals("Point","Point",#20025)
decl(#20025,#20023)
typedecl(#20025,#20024)
#20026=*
properties(#20026,#20020,2,0,"constructor() {}")
#20027=@"loc,{#10000},1,14,1,13"
locations_default(#20027,#10000,1,14,1,13)
hasLocation(#20026,#20027)
#20028=*
exprs(#20028,0,#20026,0,"constructor")
hasLocation(#20028,#20027)
enclosingStmt(#20028,#20018)
exprContainers(#20028,#20001)
literals("constructor","constructor",#20028)
#20029=*
tokeninfo(#20029,8,#20001,5,")")
#20030=@"loc,{#10000},1,16,1,16"
locations_default(#20030,#10000,1,16,1,16)
hasLocation(#20029,#20030)
#20031=*
tokeninfo(#20031,0,#20001,6,"")
#20032=@"loc,{#10000},1,17,1,16"
locations_default(#20032,#10000,1,17,1,16)
hasLocation(#20031,#20032)
exprs(#20029,9,#20026,1,"() {}")
hasLocation(#20029,#20027)
enclosingStmt(#20029,#20018)
exprContainers(#20029,#20001)
#20030=*
scopes(#20030,1)
scopenodes(#20029,#20030)
scopenesting(#20030,#20022)
#20031=@"var;{arguments};{#20030}"
variables(#20031,"arguments",#20030)
isArgumentsObject(#20031)
#20032=*
stmts(#20032,1,#20029,-2,"{}")
hasLocation(#20032,#20027)
stmtContainers(#20032,#20029)
isMethod(#20026)
#20033=*
entry_cfg_node(#20033,#20001)
#20034=@"loc,{#10000},1,1,1,0"
@@ -120,22 +119,22 @@ locations_default(#20034,#10000,1,1,1,0)
hasLocation(#20033,#20034)
#20035=*
exit_cfg_node(#20035,#20001)
hasLocation(#20035,#20032)
successor(#20003,#20004)
successor(#20004,#20010)
successor(#20015,#20012)
hasLocation(#20035,#20017)
successor(#20018,#20019)
successor(#20019,#20025)
successor(#20029,#20026)
#20036=*
entry_cfg_node(#20036,#20015)
hasLocation(#20036,#20013)
entry_cfg_node(#20036,#20029)
hasLocation(#20036,#20027)
#20037=*
exit_cfg_node(#20037,#20015)
hasLocation(#20037,#20013)
successor(#20018,#20037)
successor(#20036,#20018)
successor(#20014,#20015)
successor(#20012,#20005)
successor(#20010,#20014)
successor(#20005,#20035)
successor(#20033,#20003)
exit_cfg_node(#20037,#20029)
hasLocation(#20037,#20027)
successor(#20032,#20037)
successor(#20036,#20032)
successor(#20028,#20029)
successor(#20026,#20020)
successor(#20025,#20028)
successor(#20020,#20035)
successor(#20033,#20018)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,89 +9,88 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,16"
locations_default(#20002,#10000,1,1,1,16)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"(class {})")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,63,#20003,0,"(class {})")
hasLocation(#20004,#20002)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20005=*
exprs(#20005,80,#20004,0,"class {}")
#20006=@"loc,{#10000},1,2,1,15"
locations_default(#20006,#10000,1,2,1,15)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20003)
exprContainers(#20005,#20001)
#20007=*
properties(#20007,#20005,2,0,"constructor() {}")
#20008=@"loc,{#10000},1,14,1,13"
locations_default(#20008,#10000,1,14,1,13)
hasLocation(#20007,#20008)
#20009=*
exprs(#20009,0,#20007,0,"constructor")
hasLocation(#20009,#20008)
enclosingStmt(#20009,#20003)
exprContainers(#20009,#20001)
literals("constructor","constructor",#20009)
#20010=*
exprs(#20010,9,#20007,1,"() {}")
hasLocation(#20010,#20008)
enclosingStmt(#20010,#20003)
exprContainers(#20010,#20001)
#20011=*
scopes(#20011,1)
scopenodes(#20010,#20011)
scopenesting(#20011,#20000)
#20012=@"var;{arguments};{#20011}"
variables(#20012,"arguments",#20011)
isArgumentsObject(#20012)
#20013=*
stmts(#20013,1,#20010,-2,"{}")
hasLocation(#20013,#20008)
stmtContainers(#20013,#20010)
numlines(#20010,1,0,0)
isMethod(#20007)
#20014=*
lines(#20014,#20001,"(class {})","")
hasLocation(#20014,#20002)
#20002=*
lines(#20002,#20001,"(class {})","")
#20003=@"loc,{#10000},1,1,1,16"
locations_default(#20003,#10000,1,1,1,16)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20015=*
tokeninfo(#20015,8,#20001,0,"(")
#20016=@"loc,{#10000},1,1,1,1"
locations_default(#20016,#10000,1,1,1,1)
hasLocation(#20015,#20016)
#20004=*
tokeninfo(#20004,8,#20001,0,"(")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"class")
#20007=@"loc,{#10000},1,2,1,6"
locations_default(#20007,#10000,1,2,1,6)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,2,"{")
#20009=@"loc,{#10000},1,14,1,14"
locations_default(#20009,#10000,1,14,1,14)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"}")
#20011=@"loc,{#10000},1,15,1,15"
locations_default(#20011,#10000,1,15,1,15)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,")")
#20013=@"loc,{#10000},1,16,1,16"
locations_default(#20013,#10000,1,16,1,16)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,0,#20001,5,"")
#20015=@"loc,{#10000},1,17,1,16"
locations_default(#20015,#10000,1,17,1,16)
hasLocation(#20014,#20015)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20016=*
stmts(#20016,2,#20001,0,"(class {})")
hasLocation(#20016,#20003)
stmtContainers(#20016,#20001)
#20017=*
tokeninfo(#20017,7,#20001,1,"class")
#20018=@"loc,{#10000},1,2,1,6"
locations_default(#20018,#10000,1,2,1,6)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,8,#20001,2,"{")
#20020=@"loc,{#10000},1,14,1,14"
locations_default(#20020,#10000,1,14,1,14)
hasLocation(#20019,#20020)
#20021=*
tokeninfo(#20021,8,#20001,3,"}")
#20022=@"loc,{#10000},1,15,1,15"
locations_default(#20022,#10000,1,15,1,15)
hasLocation(#20021,#20022)
exprs(#20017,63,#20016,0,"(class {})")
hasLocation(#20017,#20003)
enclosingStmt(#20017,#20016)
exprContainers(#20017,#20001)
#20018=*
exprs(#20018,80,#20017,0,"class {}")
#20019=@"loc,{#10000},1,2,1,15"
locations_default(#20019,#10000,1,2,1,15)
hasLocation(#20018,#20019)
enclosingStmt(#20018,#20016)
exprContainers(#20018,#20001)
#20020=*
properties(#20020,#20018,2,0,"constructor() {}")
#20021=@"loc,{#10000},1,14,1,13"
locations_default(#20021,#10000,1,14,1,13)
hasLocation(#20020,#20021)
#20022=*
exprs(#20022,0,#20020,0,"constructor")
hasLocation(#20022,#20021)
enclosingStmt(#20022,#20016)
exprContainers(#20022,#20001)
literals("constructor","constructor",#20022)
#20023=*
tokeninfo(#20023,8,#20001,4,")")
#20024=@"loc,{#10000},1,16,1,16"
locations_default(#20024,#10000,1,16,1,16)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,0,#20001,5,"")
#20026=@"loc,{#10000},1,17,1,16"
locations_default(#20026,#10000,1,17,1,16)
hasLocation(#20025,#20026)
exprs(#20023,9,#20020,1,"() {}")
hasLocation(#20023,#20021)
enclosingStmt(#20023,#20016)
exprContainers(#20023,#20001)
#20024=*
scopes(#20024,1)
scopenodes(#20023,#20024)
scopenesting(#20024,#20000)
#20025=@"var;{arguments};{#20024}"
variables(#20025,"arguments",#20024)
isArgumentsObject(#20025)
#20026=*
stmts(#20026,1,#20023,-2,"{}")
hasLocation(#20026,#20021)
stmtContainers(#20026,#20023)
isMethod(#20020)
#20027=*
entry_cfg_node(#20027,#20001)
#20028=@"loc,{#10000},1,1,1,0"
@@ -99,21 +98,21 @@ locations_default(#20028,#10000,1,1,1,0)
hasLocation(#20027,#20028)
#20029=*
exit_cfg_node(#20029,#20001)
hasLocation(#20029,#20026)
successor(#20003,#20004)
successor(#20004,#20009)
successor(#20010,#20007)
hasLocation(#20029,#20015)
successor(#20016,#20017)
successor(#20017,#20022)
successor(#20023,#20020)
#20030=*
entry_cfg_node(#20030,#20010)
hasLocation(#20030,#20008)
entry_cfg_node(#20030,#20023)
hasLocation(#20030,#20021)
#20031=*
exit_cfg_node(#20031,#20010)
hasLocation(#20031,#20008)
successor(#20013,#20031)
successor(#20030,#20013)
successor(#20009,#20010)
successor(#20007,#20005)
successor(#20005,#20029)
successor(#20027,#20003)
exit_cfg_node(#20031,#20023)
hasLocation(#20031,#20021)
successor(#20026,#20031)
successor(#20030,#20026)
successor(#20022,#20023)
successor(#20020,#20018)
successor(#20018,#20029)
successor(#20027,#20016)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,124 +9,124 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,13"
locations_default(#20002,#10000,1,1,1,13)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"[o.x] = [42];")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20004=*
exprs(#20004,47,#20003,0,"[o.x] = [42]")
#20005=@"loc,{#10000},1,1,1,12"
locations_default(#20005,#10000,1,1,1,12)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,67,#20004,0,"[o.x]")
#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,14,#20006,0,"o.x")
#20009=@"loc,{#10000},1,2,1,4"
locations_default(#20009,#10000,1,2,1,4)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
#20010=*
exprs(#20010,79,#20008,0,"o")
#20011=@"loc,{#10000},1,2,1,2"
locations_default(#20011,#10000,1,2,1,2)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20003)
exprContainers(#20010,#20001)
literals("o","o",#20010)
#20012=@"var;{o};{#20000}"
variables(#20012,"o",#20000)
bind(#20010,#20012)
#20013=*
exprs(#20013,0,#20008,1,"x")
#20014=@"loc,{#10000},1,4,1,4"
locations_default(#20014,#10000,1,4,1,4)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20003)
exprContainers(#20013,#20001)
literals("x","x",#20013)
arraySize(#20006,1)
#20015=*
exprs(#20015,7,#20004,1,"[42]")
#20016=@"loc,{#10000},1,9,1,12"
locations_default(#20016,#10000,1,9,1,12)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20003)
exprContainers(#20015,#20001)
#20017=*
exprs(#20017,3,#20015,0,"42")
#20018=@"loc,{#10000},1,10,1,11"
locations_default(#20018,#10000,1,10,1,11)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20003)
exprContainers(#20017,#20001)
literals("42","42",#20017)
arraySize(#20015,1)
#20019=*
lines(#20019,#20001,"[o.x] = [42];","")
hasLocation(#20019,#20002)
#20002=*
lines(#20002,#20001,"[o.x] = [42];","")
#20003=@"loc,{#10000},1,1,1,13"
locations_default(#20003,#10000,1,1,1,13)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,8,#20001,0,"[")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,6,#20001,1,"o")
#20007=@"loc,{#10000},1,2,1,2"
locations_default(#20007,#10000,1,2,1,2)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,2,".")
#20009=@"loc,{#10000},1,3,1,3"
locations_default(#20009,#10000,1,3,1,3)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"x")
#20011=@"loc,{#10000},1,4,1,4"
locations_default(#20011,#10000,1,4,1,4)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,"]")
#20013=@"loc,{#10000},1,5,1,5"
locations_default(#20013,#10000,1,5,1,5)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"=")
#20015=@"loc,{#10000},1,7,1,7"
locations_default(#20015,#10000,1,7,1,7)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,"[")
#20017=@"loc,{#10000},1,9,1,9"
locations_default(#20017,#10000,1,9,1,9)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,3,#20001,7,"42")
#20019=@"loc,{#10000},1,10,1,11"
locations_default(#20019,#10000,1,10,1,11)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,0,"[")
#20021=@"loc,{#10000},1,1,1,1"
locations_default(#20021,#10000,1,1,1,1)
tokeninfo(#20020,8,#20001,8,"]")
#20021=@"loc,{#10000},1,12,1,12"
locations_default(#20021,#10000,1,12,1,12)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,1,"o")
hasLocation(#20022,#20011)
#20023=*
tokeninfo(#20023,8,#20001,2,".")
#20024=@"loc,{#10000},1,3,1,3"
locations_default(#20024,#10000,1,3,1,3)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,6,#20001,3,"x")
hasLocation(#20025,#20014)
tokeninfo(#20022,8,#20001,9,";")
#20023=@"loc,{#10000},1,13,1,13"
locations_default(#20023,#10000,1,13,1,13)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,0,#20001,10,"")
#20025=@"loc,{#10000},1,14,1,13"
locations_default(#20025,#10000,1,14,1,13)
hasLocation(#20024,#20025)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20026=*
tokeninfo(#20026,8,#20001,4,"]")
#20027=@"loc,{#10000},1,5,1,5"
locations_default(#20027,#10000,1,5,1,5)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,5,"=")
#20029=@"loc,{#10000},1,7,1,7"
locations_default(#20029,#10000,1,7,1,7)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,6,"[")
#20031=@"loc,{#10000},1,9,1,9"
locations_default(#20031,#10000,1,9,1,9)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,3,#20001,7,"42")
hasLocation(#20032,#20018)
stmts(#20026,2,#20001,0,"[o.x] = [42];")
hasLocation(#20026,#20003)
stmtContainers(#20026,#20001)
#20027=*
exprs(#20027,47,#20026,0,"[o.x] = [42]")
#20028=@"loc,{#10000},1,1,1,12"
locations_default(#20028,#10000,1,1,1,12)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20026)
exprContainers(#20027,#20001)
#20029=*
exprs(#20029,67,#20027,0,"[o.x]")
#20030=@"loc,{#10000},1,1,1,5"
locations_default(#20030,#10000,1,1,1,5)
hasLocation(#20029,#20030)
enclosingStmt(#20029,#20026)
exprContainers(#20029,#20001)
#20031=*
exprs(#20031,14,#20029,0,"o.x")
#20032=@"loc,{#10000},1,2,1,4"
locations_default(#20032,#10000,1,2,1,4)
hasLocation(#20031,#20032)
enclosingStmt(#20031,#20026)
exprContainers(#20031,#20001)
#20033=*
tokeninfo(#20033,8,#20001,8,"]")
#20034=@"loc,{#10000},1,12,1,12"
locations_default(#20034,#10000,1,12,1,12)
hasLocation(#20033,#20034)
exprs(#20033,79,#20031,0,"o")
hasLocation(#20033,#20007)
enclosingStmt(#20033,#20026)
exprContainers(#20033,#20001)
literals("o","o",#20033)
#20034=@"var;{o};{#20000}"
variables(#20034,"o",#20000)
bind(#20033,#20034)
#20035=*
tokeninfo(#20035,8,#20001,9,";")
#20036=@"loc,{#10000},1,13,1,13"
locations_default(#20036,#10000,1,13,1,13)
hasLocation(#20035,#20036)
#20037=*
tokeninfo(#20037,0,#20001,10,"")
#20038=@"loc,{#10000},1,14,1,13"
locations_default(#20038,#10000,1,14,1,13)
hasLocation(#20037,#20038)
exprs(#20035,0,#20031,1,"x")
hasLocation(#20035,#20011)
enclosingStmt(#20035,#20026)
exprContainers(#20035,#20001)
literals("x","x",#20035)
arraySize(#20029,1)
#20036=*
exprs(#20036,7,#20027,1,"[42]")
#20037=@"loc,{#10000},1,9,1,12"
locations_default(#20037,#10000,1,9,1,12)
hasLocation(#20036,#20037)
enclosingStmt(#20036,#20026)
exprContainers(#20036,#20001)
#20038=*
exprs(#20038,3,#20036,0,"42")
hasLocation(#20038,#20019)
enclosingStmt(#20038,#20026)
exprContainers(#20038,#20001)
literals("42","42",#20038)
arraySize(#20036,1)
#20039=*
entry_cfg_node(#20039,#20001)
#20040=@"loc,{#10000},1,1,1,0"
@@ -134,15 +134,15 @@ locations_default(#20040,#10000,1,1,1,0)
hasLocation(#20039,#20040)
#20041=*
exit_cfg_node(#20041,#20001)
hasLocation(#20041,#20038)
successor(#20003,#20015)
successor(#20006,#20010)
successor(#20013,#20008)
successor(#20010,#20013)
successor(#20008,#20004)
successor(#20015,#20017)
successor(#20017,#20006)
successor(#20004,#20041)
successor(#20039,#20003)
hasLocation(#20041,#20025)
successor(#20026,#20036)
successor(#20029,#20033)
successor(#20035,#20031)
successor(#20033,#20035)
successor(#20031,#20027)
successor(#20036,#20038)
successor(#20038,#20029)
successor(#20027,#20041)
successor(#20039,#20026)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,146 +9,146 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,17"
locations_default(#20002,#10000,1,1,1,17)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"({ x: o.x } = q);")
hasLocation(#20003,#20002)
stmtContainers(#20003,#20001)
#20002=*
lines(#20002,#20001,"({ x: o.x } = q);","")
#20003=@"loc,{#10000},1,1,1,17"
locations_default(#20003,#10000,1,1,1,17)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
exprs(#20004,63,#20003,0,"({ x: o.x } = q)")
#20005=@"loc,{#10000},1,1,1,16"
locations_default(#20005,#10000,1,1,1,16)
tokeninfo(#20004,8,#20001,0,"(")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
enclosingStmt(#20004,#20003)
exprContainers(#20004,#20001)
#20006=*
exprs(#20006,47,#20004,0,"{ x: o.x } = q")
#20007=@"loc,{#10000},1,2,1,15"
locations_default(#20007,#10000,1,2,1,15)
tokeninfo(#20006,8,#20001,1,"{")
#20007=@"loc,{#10000},1,2,1,2"
locations_default(#20007,#10000,1,2,1,2)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20003)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,68,#20006,0,"{ x: o.x }")
#20009=@"loc,{#10000},1,2,1,11"
locations_default(#20009,#10000,1,2,1,11)
tokeninfo(#20008,6,#20001,2,"x")
#20009=@"loc,{#10000},1,4,1,4"
locations_default(#20009,#10000,1,4,1,4)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20003)
exprContainers(#20008,#20001)
#20010=*
properties(#20010,#20008,0,0,"x: o.x")
#20011=@"loc,{#10000},1,4,1,9"
locations_default(#20011,#10000,1,4,1,9)
tokeninfo(#20010,8,#20001,3,":")
#20011=@"loc,{#10000},1,5,1,5"
locations_default(#20011,#10000,1,5,1,5)
hasLocation(#20010,#20011)
#20012=*
exprs(#20012,0,#20010,0,"x")
#20013=@"loc,{#10000},1,4,1,4"
locations_default(#20013,#10000,1,4,1,4)
tokeninfo(#20012,6,#20001,4,"o")
#20013=@"loc,{#10000},1,7,1,7"
locations_default(#20013,#10000,1,7,1,7)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20003)
exprContainers(#20012,#20001)
literals("x","x",#20012)
#20014=*
exprs(#20014,14,#20010,1,"o.x")
#20015=@"loc,{#10000},1,7,1,9"
locations_default(#20015,#10000,1,7,1,9)
tokeninfo(#20014,8,#20001,5,".")
#20015=@"loc,{#10000},1,8,1,8"
locations_default(#20015,#10000,1,8,1,8)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20003)
exprContainers(#20014,#20001)
#20016=*
exprs(#20016,79,#20014,0,"o")
#20017=@"loc,{#10000},1,7,1,7"
locations_default(#20017,#10000,1,7,1,7)
tokeninfo(#20016,6,#20001,6,"x")
#20017=@"loc,{#10000},1,9,1,9"
locations_default(#20017,#10000,1,9,1,9)
hasLocation(#20016,#20017)
enclosingStmt(#20016,#20003)
exprContainers(#20016,#20001)
literals("o","o",#20016)
#20018=@"var;{o};{#20000}"
variables(#20018,"o",#20000)
bind(#20016,#20018)
#20019=*
exprs(#20019,0,#20014,1,"x")
#20020=@"loc,{#10000},1,9,1,9"
locations_default(#20020,#10000,1,9,1,9)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20003)
exprContainers(#20019,#20001)
literals("x","x",#20019)
#20021=*
exprs(#20021,79,#20006,1,"q")
#20022=@"loc,{#10000},1,15,1,15"
locations_default(#20022,#10000,1,15,1,15)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20003)
exprContainers(#20021,#20001)
literals("q","q",#20021)
#20023=@"var;{q};{#20000}"
variables(#20023,"q",#20000)
bind(#20021,#20023)
#20018=*
tokeninfo(#20018,8,#20001,7,"}")
#20019=@"loc,{#10000},1,11,1,11"
locations_default(#20019,#10000,1,11,1,11)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,8,"=")
#20021=@"loc,{#10000},1,13,1,13"
locations_default(#20021,#10000,1,13,1,13)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,9,"q")
#20023=@"loc,{#10000},1,15,1,15"
locations_default(#20023,#10000,1,15,1,15)
hasLocation(#20022,#20023)
#20024=*
lines(#20024,#20001,"({ x: o.x } = q);","")
hasLocation(#20024,#20002)
numlines(#20001,1,1,0)
#20025=*
tokeninfo(#20025,8,#20001,0,"(")
#20026=@"loc,{#10000},1,1,1,1"
locations_default(#20026,#10000,1,1,1,1)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,8,#20001,1,"{")
#20028=@"loc,{#10000},1,2,1,2"
locations_default(#20028,#10000,1,2,1,2)
hasLocation(#20027,#20028)
#20029=*
tokeninfo(#20029,6,#20001,2,"x")
hasLocation(#20029,#20013)
tokeninfo(#20024,8,#20001,10,")")
#20025=@"loc,{#10000},1,16,1,16"
locations_default(#20025,#10000,1,16,1,16)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,11,";")
#20027=@"loc,{#10000},1,17,1,17"
locations_default(#20027,#10000,1,17,1,17)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,0,#20001,12,"")
#20029=@"loc,{#10000},1,18,1,17"
locations_default(#20029,#10000,1,18,1,17)
hasLocation(#20028,#20029)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20030=*
tokeninfo(#20030,8,#20001,3,":")
#20031=@"loc,{#10000},1,5,1,5"
locations_default(#20031,#10000,1,5,1,5)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,4,"o")
hasLocation(#20032,#20017)
stmts(#20030,2,#20001,0,"({ x: o.x } = q);")
hasLocation(#20030,#20003)
stmtContainers(#20030,#20001)
#20031=*
exprs(#20031,63,#20030,0,"({ x: o.x } = q)")
#20032=@"loc,{#10000},1,1,1,16"
locations_default(#20032,#10000,1,1,1,16)
hasLocation(#20031,#20032)
enclosingStmt(#20031,#20030)
exprContainers(#20031,#20001)
#20033=*
tokeninfo(#20033,8,#20001,5,".")
#20034=@"loc,{#10000},1,8,1,8"
locations_default(#20034,#10000,1,8,1,8)
exprs(#20033,47,#20031,0,"{ x: o.x } = q")
#20034=@"loc,{#10000},1,2,1,15"
locations_default(#20034,#10000,1,2,1,15)
hasLocation(#20033,#20034)
enclosingStmt(#20033,#20030)
exprContainers(#20033,#20001)
#20035=*
tokeninfo(#20035,6,#20001,6,"x")
hasLocation(#20035,#20020)
#20036=*
tokeninfo(#20036,8,#20001,7,"}")
#20037=@"loc,{#10000},1,11,1,11"
locations_default(#20037,#10000,1,11,1,11)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,8,#20001,8,"=")
#20039=@"loc,{#10000},1,13,1,13"
locations_default(#20039,#10000,1,13,1,13)
hasLocation(#20038,#20039)
exprs(#20035,68,#20033,0,"{ x: o.x }")
#20036=@"loc,{#10000},1,2,1,11"
locations_default(#20036,#10000,1,2,1,11)
hasLocation(#20035,#20036)
enclosingStmt(#20035,#20030)
exprContainers(#20035,#20001)
#20037=*
properties(#20037,#20035,0,0,"x: o.x")
#20038=@"loc,{#10000},1,4,1,9"
locations_default(#20038,#10000,1,4,1,9)
hasLocation(#20037,#20038)
#20039=*
exprs(#20039,0,#20037,0,"x")
hasLocation(#20039,#20009)
enclosingStmt(#20039,#20030)
exprContainers(#20039,#20001)
literals("x","x",#20039)
#20040=*
tokeninfo(#20040,6,#20001,9,"q")
hasLocation(#20040,#20022)
#20041=*
tokeninfo(#20041,8,#20001,10,")")
#20042=@"loc,{#10000},1,16,1,16"
locations_default(#20042,#10000,1,16,1,16)
hasLocation(#20041,#20042)
#20043=*
tokeninfo(#20043,8,#20001,11,";")
#20044=@"loc,{#10000},1,17,1,17"
locations_default(#20044,#10000,1,17,1,17)
hasLocation(#20043,#20044)
exprs(#20040,14,#20037,1,"o.x")
#20041=@"loc,{#10000},1,7,1,9"
locations_default(#20041,#10000,1,7,1,9)
hasLocation(#20040,#20041)
enclosingStmt(#20040,#20030)
exprContainers(#20040,#20001)
#20042=*
exprs(#20042,79,#20040,0,"o")
hasLocation(#20042,#20013)
enclosingStmt(#20042,#20030)
exprContainers(#20042,#20001)
literals("o","o",#20042)
#20043=@"var;{o};{#20000}"
variables(#20043,"o",#20000)
bind(#20042,#20043)
#20044=*
exprs(#20044,0,#20040,1,"x")
hasLocation(#20044,#20017)
enclosingStmt(#20044,#20030)
exprContainers(#20044,#20001)
literals("x","x",#20044)
#20045=*
tokeninfo(#20045,0,#20001,12,"")
#20046=@"loc,{#10000},1,18,1,17"
locations_default(#20046,#10000,1,18,1,17)
hasLocation(#20045,#20046)
exprs(#20045,79,#20033,1,"q")
hasLocation(#20045,#20023)
enclosingStmt(#20045,#20030)
exprContainers(#20045,#20001)
literals("q","q",#20045)
#20046=@"var;{q};{#20000}"
variables(#20046,"q",#20000)
bind(#20045,#20046)
#20047=*
entry_cfg_node(#20047,#20001)
#20048=@"loc,{#10000},1,1,1,0"
@@ -156,17 +156,17 @@ locations_default(#20048,#10000,1,1,1,0)
hasLocation(#20047,#20048)
#20049=*
exit_cfg_node(#20049,#20001)
hasLocation(#20049,#20046)
successor(#20003,#20004)
successor(#20004,#20021)
successor(#20008,#20012)
successor(#20019,#20014)
successor(#20016,#20019)
successor(#20014,#20010)
successor(#20012,#20016)
successor(#20010,#20006)
successor(#20021,#20008)
successor(#20006,#20049)
successor(#20047,#20003)
hasLocation(#20049,#20029)
successor(#20030,#20031)
successor(#20031,#20045)
successor(#20035,#20039)
successor(#20044,#20040)
successor(#20042,#20044)
successor(#20040,#20037)
successor(#20039,#20042)
successor(#20037,#20033)
successor(#20045,#20035)
successor(#20033,#20049)
successor(#20047,#20030)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,73 +9,73 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=@"var;{x};{#20000}"
variables(#20003,"x",#20000)
#20002=*
lines(#20002,#20001,"const x = 23;","
")
#20003=@"loc,{#10000},1,1,1,13"
locations_default(#20003,#10000,1,1,1,13)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
stmts(#20004,22,#20001,0,"const x = 23;")
#20005=@"loc,{#10000},1,1,1,13"
locations_default(#20005,#10000,1,1,1,13)
tokeninfo(#20004,7,#20001,0,"const")
#20005=@"loc,{#10000},1,1,1,5"
locations_default(#20005,#10000,1,1,1,5)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,64,#20004,0,"x = 23")
#20007=@"loc,{#10000},1,7,1,12"
locations_default(#20007,#10000,1,7,1,12)
tokeninfo(#20006,6,#20001,1,"x")
#20007=@"loc,{#10000},1,7,1,7"
locations_default(#20007,#10000,1,7,1,7)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,78,#20006,0,"x")
#20009=@"loc,{#10000},1,7,1,7"
locations_default(#20009,#10000,1,7,1,7)
tokeninfo(#20008,8,#20001,2,"=")
#20009=@"loc,{#10000},1,9,1,9"
locations_default(#20009,#10000,1,9,1,9)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20004)
exprContainers(#20008,#20001)
literals("x","x",#20008)
decl(#20008,#20003)
#20010=*
exprs(#20010,3,#20006,1,"23")
tokeninfo(#20010,3,#20001,3,"23")
#20011=@"loc,{#10000},1,11,1,12"
locations_default(#20011,#10000,1,11,1,12)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20004)
exprContainers(#20010,#20001)
literals("23","23",#20010)
#20012=*
lines(#20012,#20001,"const x = 23;","
")
hasLocation(#20012,#20005)
numlines(#20001,1,1,0)
#20013=*
tokeninfo(#20013,7,#20001,0,"const")
#20014=@"loc,{#10000},1,1,1,5"
locations_default(#20014,#10000,1,1,1,5)
hasLocation(#20013,#20014)
#20015=*
tokeninfo(#20015,6,#20001,1,"x")
hasLocation(#20015,#20009)
#20016=*
tokeninfo(#20016,8,#20001,2,"=")
#20017=@"loc,{#10000},1,9,1,9"
locations_default(#20017,#10000,1,9,1,9)
hasLocation(#20016,#20017)
tokeninfo(#20012,8,#20001,4,";")
#20013=@"loc,{#10000},1,13,1,13"
locations_default(#20013,#10000,1,13,1,13)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,0,#20001,5,"")
#20015=@"loc,{#10000},2,1,2,0"
locations_default(#20015,#10000,2,1,2,0)
hasLocation(#20014,#20015)
toplevels(#20001,0)
#20016=@"loc,{#10000},1,1,2,0"
locations_default(#20016,#10000,1,1,2,0)
hasLocation(#20001,#20016)
#20017=@"var;{x};{#20000}"
variables(#20017,"x",#20000)
#20018=*
tokeninfo(#20018,3,#20001,3,"23")
hasLocation(#20018,#20011)
stmts(#20018,22,#20001,0,"const x = 23;")
hasLocation(#20018,#20003)
stmtContainers(#20018,#20001)
#20019=*
tokeninfo(#20019,8,#20001,4,";")
#20020=@"loc,{#10000},1,13,1,13"
locations_default(#20020,#10000,1,13,1,13)
exprs(#20019,64,#20018,0,"x = 23")
#20020=@"loc,{#10000},1,7,1,12"
locations_default(#20020,#10000,1,7,1,12)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20018)
exprContainers(#20019,#20001)
#20021=*
tokeninfo(#20021,0,#20001,5,"")
#20022=@"loc,{#10000},2,1,2,0"
locations_default(#20022,#10000,2,1,2,0)
hasLocation(#20021,#20022)
exprs(#20021,78,#20019,0,"x")
hasLocation(#20021,#20007)
enclosingStmt(#20021,#20018)
exprContainers(#20021,#20001)
literals("x","x",#20021)
decl(#20021,#20017)
#20022=*
exprs(#20022,3,#20019,1,"23")
hasLocation(#20022,#20011)
enclosingStmt(#20022,#20018)
exprContainers(#20022,#20001)
literals("23","23",#20022)
#20023=*
entry_cfg_node(#20023,#20001)
#20024=@"loc,{#10000},1,1,1,0"
@@ -83,11 +83,11 @@ locations_default(#20024,#10000,1,1,1,0)
hasLocation(#20023,#20024)
#20025=*
exit_cfg_node(#20025,#20001)
hasLocation(#20025,#20022)
successor(#20004,#20008)
successor(#20010,#20006)
successor(#20008,#20010)
successor(#20006,#20025)
successor(#20023,#20004)
hasLocation(#20025,#20015)
successor(#20018,#20021)
successor(#20022,#20019)
successor(#20021,#20022)
successor(#20019,#20025)
successor(#20023,#20018)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,143 +9,142 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,24"
locations_default(#20002,#10000,1,1,1,24)
hasLocation(#20001,#20002)
#20003=@"var;{f};{#20000}"
variables(#20003,"f",#20000)
#20004=*
stmts(#20004,17,#20001,0,"functio ... +19) {}")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,78,#20004,-1,"f")
#20006=@"loc,{#10000},1,10,1,10"
locations_default(#20006,#10000,1,10,1,10)
hasLocation(#20005,#20006)
exprContainers(#20005,#20004)
literals("f","f",#20005)
decl(#20005,#20003)
#20007=*
scopes(#20007,1)
scopenodes(#20004,#20007)
scopenesting(#20007,#20000)
#20008=@"var;{x};{#20007}"
variables(#20008,"x",#20007)
#20009=*
exprs(#20009,78,#20004,0,"x")
#20010=@"loc,{#10000},1,12,1,12"
locations_default(#20010,#10000,1,12,1,12)
hasLocation(#20009,#20010)
exprContainers(#20009,#20004)
literals("x","x",#20009)
decl(#20009,#20008)
#20011=@"var;{y};{#20007}"
variables(#20011,"y",#20007)
#20012=*
exprs(#20012,78,#20004,1,"y")
#20013=@"loc,{#10000},1,15,1,15"
locations_default(#20013,#10000,1,15,1,15)
hasLocation(#20012,#20013)
exprContainers(#20012,#20004)
literals("y","y",#20012)
decl(#20012,#20011)
#20014=@"var;{arguments};{#20007}"
variables(#20014,"arguments",#20007)
isArgumentsObject(#20014)
#20015=*
exprs(#20015,34,#20004,-9,"x+19")
#20016=@"loc,{#10000},1,17,1,20"
locations_default(#20016,#10000,1,17,1,20)
hasLocation(#20015,#20016)
exprContainers(#20015,#20004)
#20017=*
exprs(#20017,79,#20015,0,"x")
#20018=@"loc,{#10000},1,17,1,17"
locations_default(#20018,#10000,1,17,1,17)
hasLocation(#20017,#20018)
exprContainers(#20017,#20004)
literals("x","x",#20017)
bind(#20017,#20008)
#20019=*
exprs(#20019,3,#20015,1,"19")
#20020=@"loc,{#10000},1,19,1,20"
locations_default(#20020,#10000,1,19,1,20)
hasLocation(#20019,#20020)
exprContainers(#20019,#20004)
literals("19","19",#20019)
#20021=*
stmts(#20021,1,#20004,-2,"{}")
#20022=@"loc,{#10000},1,23,1,24"
locations_default(#20022,#10000,1,23,1,24)
hasLocation(#20021,#20022)
stmtContainers(#20021,#20004)
numlines(#20004,1,1,0)
#20023=*
lines(#20023,#20001,"function f(x, y=x+19) {}","")
hasLocation(#20023,#20002)
#20002=*
lines(#20002,#20001,"function f(x, y=x+19) {}","")
#20003=@"loc,{#10000},1,1,1,24"
locations_default(#20003,#10000,1,1,1,24)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"function")
#20005=@"loc,{#10000},1,1,1,8"
locations_default(#20005,#10000,1,1,1,8)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,6,#20001,1,"f")
#20007=@"loc,{#10000},1,10,1,10"
locations_default(#20007,#10000,1,10,1,10)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,2,"(")
#20009=@"loc,{#10000},1,11,1,11"
locations_default(#20009,#10000,1,11,1,11)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"x")
#20011=@"loc,{#10000},1,12,1,12"
locations_default(#20011,#10000,1,12,1,12)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,",")
#20013=@"loc,{#10000},1,13,1,13"
locations_default(#20013,#10000,1,13,1,13)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,5,"y")
#20015=@"loc,{#10000},1,15,1,15"
locations_default(#20015,#10000,1,15,1,15)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,"=")
#20017=@"loc,{#10000},1,16,1,16"
locations_default(#20017,#10000,1,16,1,16)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,7,"x")
#20019=@"loc,{#10000},1,17,1,17"
locations_default(#20019,#10000,1,17,1,17)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,8,"+")
#20021=@"loc,{#10000},1,18,1,18"
locations_default(#20021,#10000,1,18,1,18)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,3,#20001,9,"19")
#20023=@"loc,{#10000},1,19,1,20"
locations_default(#20023,#10000,1,19,1,20)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,7,#20001,0,"function")
#20025=@"loc,{#10000},1,1,1,8"
locations_default(#20025,#10000,1,1,1,8)
tokeninfo(#20024,8,#20001,10,")")
#20025=@"loc,{#10000},1,21,1,21"
locations_default(#20025,#10000,1,21,1,21)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,6,#20001,1,"f")
hasLocation(#20026,#20006)
#20027=*
tokeninfo(#20027,8,#20001,2,"(")
#20028=@"loc,{#10000},1,11,1,11"
locations_default(#20028,#10000,1,11,1,11)
hasLocation(#20027,#20028)
#20029=*
tokeninfo(#20029,6,#20001,3,"x")
hasLocation(#20029,#20010)
tokeninfo(#20026,8,#20001,11,"{")
#20027=@"loc,{#10000},1,23,1,23"
locations_default(#20027,#10000,1,23,1,23)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,12,"}")
#20029=@"loc,{#10000},1,24,1,24"
locations_default(#20029,#10000,1,24,1,24)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,4,",")
#20031=@"loc,{#10000},1,13,1,13"
locations_default(#20031,#10000,1,13,1,13)
tokeninfo(#20030,0,#20001,13,"")
#20031=@"loc,{#10000},1,25,1,24"
locations_default(#20031,#10000,1,25,1,24)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,5,"y")
hasLocation(#20032,#20013)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20032=@"var;{f};{#20000}"
variables(#20032,"f",#20000)
#20033=*
tokeninfo(#20033,8,#20001,6,"=")
#20034=@"loc,{#10000},1,16,1,16"
locations_default(#20034,#10000,1,16,1,16)
hasLocation(#20033,#20034)
stmts(#20033,17,#20001,0,"functio ... +19) {}")
hasLocation(#20033,#20003)
stmtContainers(#20033,#20001)
#20034=*
exprs(#20034,78,#20033,-1,"f")
hasLocation(#20034,#20007)
exprContainers(#20034,#20033)
literals("f","f",#20034)
decl(#20034,#20032)
#20035=*
tokeninfo(#20035,6,#20001,7,"x")
hasLocation(#20035,#20018)
#20036=*
tokeninfo(#20036,8,#20001,8,"+")
#20037=@"loc,{#10000},1,18,1,18"
locations_default(#20037,#10000,1,18,1,18)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,3,#20001,9,"19")
hasLocation(#20038,#20020)
scopes(#20035,1)
scopenodes(#20033,#20035)
scopenesting(#20035,#20000)
#20036=@"var;{x};{#20035}"
variables(#20036,"x",#20035)
#20037=*
exprs(#20037,78,#20033,0,"x")
hasLocation(#20037,#20011)
exprContainers(#20037,#20033)
literals("x","x",#20037)
decl(#20037,#20036)
#20038=@"var;{y};{#20035}"
variables(#20038,"y",#20035)
#20039=*
tokeninfo(#20039,8,#20001,10,")")
#20040=@"loc,{#10000},1,21,1,21"
locations_default(#20040,#10000,1,21,1,21)
hasLocation(#20039,#20040)
exprs(#20039,78,#20033,1,"y")
hasLocation(#20039,#20015)
exprContainers(#20039,#20033)
literals("y","y",#20039)
decl(#20039,#20038)
#20040=@"var;{arguments};{#20035}"
variables(#20040,"arguments",#20035)
isArgumentsObject(#20040)
#20041=*
tokeninfo(#20041,8,#20001,11,"{")
#20042=@"loc,{#10000},1,23,1,23"
locations_default(#20042,#10000,1,23,1,23)
exprs(#20041,34,#20033,-9,"x+19")
#20042=@"loc,{#10000},1,17,1,20"
locations_default(#20042,#10000,1,17,1,20)
hasLocation(#20041,#20042)
exprContainers(#20041,#20033)
#20043=*
tokeninfo(#20043,8,#20001,12,"}")
#20044=@"loc,{#10000},1,24,1,24"
locations_default(#20044,#10000,1,24,1,24)
hasLocation(#20043,#20044)
exprs(#20043,79,#20041,0,"x")
hasLocation(#20043,#20019)
exprContainers(#20043,#20033)
literals("x","x",#20043)
bind(#20043,#20036)
#20044=*
exprs(#20044,3,#20041,1,"19")
hasLocation(#20044,#20023)
exprContainers(#20044,#20033)
literals("19","19",#20044)
#20045=*
tokeninfo(#20045,0,#20001,13,"")
#20046=@"loc,{#10000},1,25,1,24"
locations_default(#20046,#10000,1,25,1,24)
stmts(#20045,1,#20033,-2,"{}")
#20046=@"loc,{#10000},1,23,1,24"
locations_default(#20046,#10000,1,23,1,24)
hasLocation(#20045,#20046)
stmtContainers(#20045,#20033)
#20047=*
entry_cfg_node(#20047,#20001)
#20048=@"loc,{#10000},1,1,1,0"
@@ -153,22 +152,22 @@ locations_default(#20048,#10000,1,1,1,0)
hasLocation(#20047,#20048)
#20049=*
exit_cfg_node(#20049,#20001)
hasLocation(#20049,#20046)
successor(#20004,#20049)
hasLocation(#20049,#20031)
successor(#20033,#20049)
#20050=*
entry_cfg_node(#20050,#20004)
entry_cfg_node(#20050,#20033)
hasLocation(#20050,#20048)
#20051=*
exit_cfg_node(#20051,#20004)
hasLocation(#20051,#20046)
successor(#20021,#20051)
successor(#20012,#20021)
successor(#20019,#20015)
successor(#20017,#20019)
successor(#20015,#20012)
successor(#20009,#20017)
successor(#20050,#20009)
successor(#20005,#20004)
successor(#20047,#20005)
exit_cfg_node(#20051,#20033)
hasLocation(#20051,#20031)
successor(#20045,#20051)
successor(#20039,#20045)
successor(#20044,#20041)
successor(#20043,#20044)
successor(#20041,#20039)
successor(#20037,#20043)
successor(#20050,#20037)
successor(#20034,#20033)
successor(#20047,#20034)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,154 +9,153 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,3,1"
locations_default(#20002,#10000,1,1,3,1)
hasLocation(#20001,#20002)
#20003=@"var;{f};{#20000}"
variables(#20003,"f",#20000)
#20004=*
stmts(#20004,17,#20001,0,"functio ... g();\n}")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,78,#20004,-1,"f")
#20006=@"loc,{#10000},1,11,1,11"
locations_default(#20006,#10000,1,11,1,11)
hasLocation(#20005,#20006)
exprContainers(#20005,#20004)
literals("f","f",#20005)
decl(#20005,#20003)
#20007=*
scopes(#20007,1)
scopenodes(#20004,#20007)
scopenesting(#20007,#20000)
#20008=@"var;{arguments};{#20007}"
variables(#20008,"arguments",#20007)
isArgumentsObject(#20008)
isGenerator(#20004)
#20009=*
stmts(#20009,1,#20004,-2,"{\n yield* g();\n}")
#20010=@"loc,{#10000},1,15,3,1"
locations_default(#20010,#10000,1,15,3,1)
hasLocation(#20009,#20010)
stmtContainers(#20009,#20004)
#20011=*
stmts(#20011,2,#20009,0,"yield* g();")
#20012=@"loc,{#10000},2,5,2,15"
locations_default(#20012,#10000,2,5,2,15)
hasLocation(#20011,#20012)
stmtContainers(#20011,#20004)
#20013=*
exprs(#20013,69,#20011,0,"yield* g()")
#20014=@"loc,{#10000},2,5,2,14"
locations_default(#20014,#10000,2,5,2,14)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20011)
exprContainers(#20013,#20004)
#20015=*
exprs(#20015,13,#20013,0,"g()")
#20016=@"loc,{#10000},2,12,2,14"
locations_default(#20016,#10000,2,12,2,14)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20011)
exprContainers(#20015,#20004)
#20017=*
exprs(#20017,79,#20015,-1,"g")
#20018=@"loc,{#10000},2,12,2,12"
locations_default(#20018,#10000,2,12,2,12)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20011)
exprContainers(#20017,#20004)
literals("g","g",#20017)
#20019=@"var;{g};{#20000}"
variables(#20019,"g",#20000)
bind(#20017,#20019)
isDelegating(#20013)
numlines(#20004,3,3,0)
#20020=*
lines(#20020,#20001,"function* f() {","
#20002=*
lines(#20002,#20001,"function* f() {","
")
#20021=@"loc,{#10000},1,1,1,15"
locations_default(#20021,#10000,1,1,1,15)
#20003=@"loc,{#10000},1,1,1,15"
locations_default(#20003,#10000,1,1,1,15)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001," yield* g();","
")
#20005=@"loc,{#10000},2,1,2,15"
locations_default(#20005,#10000,2,1,2,15)
hasLocation(#20004,#20005)
indentation(#10000,2," ",4)
#20006=*
lines(#20006,#20001,"}","")
#20007=@"loc,{#10000},3,1,3,1"
locations_default(#20007,#10000,3,1,3,1)
hasLocation(#20006,#20007)
numlines(#20001,3,3,0)
#20008=*
tokeninfo(#20008,7,#20001,0,"function")
#20009=@"loc,{#10000},1,1,1,8"
locations_default(#20009,#10000,1,1,1,8)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,1,"*")
#20011=@"loc,{#10000},1,9,1,9"
locations_default(#20011,#10000,1,9,1,9)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,2,"f")
#20013=@"loc,{#10000},1,11,1,11"
locations_default(#20013,#10000,1,11,1,11)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,3,"(")
#20015=@"loc,{#10000},1,12,1,12"
locations_default(#20015,#10000,1,12,1,12)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,4,")")
#20017=@"loc,{#10000},1,13,1,13"
locations_default(#20017,#10000,1,13,1,13)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,5,"{")
#20019=@"loc,{#10000},1,15,1,15"
locations_default(#20019,#10000,1,15,1,15)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,7,#20001,6,"yield")
#20021=@"loc,{#10000},2,5,2,9"
locations_default(#20021,#10000,2,5,2,9)
hasLocation(#20020,#20021)
#20022=*
lines(#20022,#20001," yield* g();","
")
#20023=@"loc,{#10000},2,1,2,15"
locations_default(#20023,#10000,2,1,2,15)
tokeninfo(#20022,8,#20001,7,"*")
#20023=@"loc,{#10000},2,10,2,10"
locations_default(#20023,#10000,2,10,2,10)
hasLocation(#20022,#20023)
indentation(#10000,2," ",4)
#20024=*
lines(#20024,#20001,"}","")
#20025=@"loc,{#10000},3,1,3,1"
locations_default(#20025,#10000,3,1,3,1)
tokeninfo(#20024,6,#20001,8,"g")
#20025=@"loc,{#10000},2,12,2,12"
locations_default(#20025,#10000,2,12,2,12)
hasLocation(#20024,#20025)
numlines(#20001,3,3,0)
#20026=*
tokeninfo(#20026,7,#20001,0,"function")
#20027=@"loc,{#10000},1,1,1,8"
locations_default(#20027,#10000,1,1,1,8)
tokeninfo(#20026,8,#20001,9,"(")
#20027=@"loc,{#10000},2,13,2,13"
locations_default(#20027,#10000,2,13,2,13)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,1,"*")
#20029=@"loc,{#10000},1,9,1,9"
locations_default(#20029,#10000,1,9,1,9)
tokeninfo(#20028,8,#20001,10,")")
#20029=@"loc,{#10000},2,14,2,14"
locations_default(#20029,#10000,2,14,2,14)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,6,#20001,2,"f")
hasLocation(#20030,#20006)
#20031=*
tokeninfo(#20031,8,#20001,3,"(")
#20032=@"loc,{#10000},1,12,1,12"
locations_default(#20032,#10000,1,12,1,12)
hasLocation(#20031,#20032)
tokeninfo(#20030,8,#20001,11,";")
#20031=@"loc,{#10000},2,15,2,15"
locations_default(#20031,#10000,2,15,2,15)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,8,#20001,12,"}")
hasLocation(#20032,#20007)
#20033=*
tokeninfo(#20033,8,#20001,4,")")
#20034=@"loc,{#10000},1,13,1,13"
locations_default(#20034,#10000,1,13,1,13)
tokeninfo(#20033,0,#20001,13,"")
#20034=@"loc,{#10000},3,2,3,1"
locations_default(#20034,#10000,3,2,3,1)
hasLocation(#20033,#20034)
#20035=*
tokeninfo(#20035,8,#20001,5,"{")
#20036=@"loc,{#10000},1,15,1,15"
locations_default(#20036,#10000,1,15,1,15)
hasLocation(#20035,#20036)
toplevels(#20001,0)
#20035=@"loc,{#10000},1,1,3,1"
locations_default(#20035,#10000,1,1,3,1)
hasLocation(#20001,#20035)
#20036=@"var;{f};{#20000}"
variables(#20036,"f",#20000)
#20037=*
tokeninfo(#20037,7,#20001,6,"yield")
#20038=@"loc,{#10000},2,5,2,9"
locations_default(#20038,#10000,2,5,2,9)
hasLocation(#20037,#20038)
stmts(#20037,17,#20001,0,"functio ... g();\n}")
hasLocation(#20037,#20035)
stmtContainers(#20037,#20001)
#20038=*
exprs(#20038,78,#20037,-1,"f")
hasLocation(#20038,#20013)
exprContainers(#20038,#20037)
literals("f","f",#20038)
decl(#20038,#20036)
#20039=*
tokeninfo(#20039,8,#20001,7,"*")
#20040=@"loc,{#10000},2,10,2,10"
locations_default(#20040,#10000,2,10,2,10)
hasLocation(#20039,#20040)
scopes(#20039,1)
scopenodes(#20037,#20039)
scopenesting(#20039,#20000)
#20040=@"var;{arguments};{#20039}"
variables(#20040,"arguments",#20039)
isArgumentsObject(#20040)
isGenerator(#20037)
#20041=*
tokeninfo(#20041,6,#20001,8,"g")
hasLocation(#20041,#20018)
#20042=*
tokeninfo(#20042,8,#20001,9,"(")
#20043=@"loc,{#10000},2,13,2,13"
locations_default(#20043,#10000,2,13,2,13)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,8,#20001,10,")")
#20045=@"loc,{#10000},2,14,2,14"
locations_default(#20045,#10000,2,14,2,14)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,8,#20001,11,";")
#20047=@"loc,{#10000},2,15,2,15"
locations_default(#20047,#10000,2,15,2,15)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,8,#20001,12,"}")
hasLocation(#20048,#20025)
stmts(#20041,1,#20037,-2,"{\n yield* g();\n}")
#20042=@"loc,{#10000},1,15,3,1"
locations_default(#20042,#10000,1,15,3,1)
hasLocation(#20041,#20042)
stmtContainers(#20041,#20037)
#20043=*
stmts(#20043,2,#20041,0,"yield* g();")
#20044=@"loc,{#10000},2,5,2,15"
locations_default(#20044,#10000,2,5,2,15)
hasLocation(#20043,#20044)
stmtContainers(#20043,#20037)
#20045=*
exprs(#20045,69,#20043,0,"yield* g()")
#20046=@"loc,{#10000},2,5,2,14"
locations_default(#20046,#10000,2,5,2,14)
hasLocation(#20045,#20046)
enclosingStmt(#20045,#20043)
exprContainers(#20045,#20037)
#20047=*
exprs(#20047,13,#20045,0,"g()")
#20048=@"loc,{#10000},2,12,2,14"
locations_default(#20048,#10000,2,12,2,14)
hasLocation(#20047,#20048)
enclosingStmt(#20047,#20043)
exprContainers(#20047,#20037)
#20049=*
tokeninfo(#20049,0,#20001,13,"")
#20050=@"loc,{#10000},3,2,3,1"
locations_default(#20050,#10000,3,2,3,1)
hasLocation(#20049,#20050)
exprs(#20049,79,#20047,-1,"g")
hasLocation(#20049,#20025)
enclosingStmt(#20049,#20043)
exprContainers(#20049,#20037)
literals("g","g",#20049)
#20050=@"var;{g};{#20000}"
variables(#20050,"g",#20000)
bind(#20049,#20050)
isDelegating(#20045)
#20051=*
entry_cfg_node(#20051,#20001)
#20052=@"loc,{#10000},1,1,1,0"
@@ -164,21 +163,21 @@ locations_default(#20052,#10000,1,1,1,0)
hasLocation(#20051,#20052)
#20053=*
exit_cfg_node(#20053,#20001)
hasLocation(#20053,#20050)
successor(#20004,#20053)
hasLocation(#20053,#20034)
successor(#20037,#20053)
#20054=*
entry_cfg_node(#20054,#20004)
entry_cfg_node(#20054,#20037)
hasLocation(#20054,#20052)
#20055=*
exit_cfg_node(#20055,#20004)
hasLocation(#20055,#20050)
successor(#20009,#20011)
successor(#20011,#20017)
successor(#20017,#20015)
successor(#20015,#20013)
successor(#20013,#20055)
successor(#20054,#20009)
successor(#20005,#20004)
successor(#20051,#20005)
exit_cfg_node(#20055,#20037)
hasLocation(#20055,#20034)
successor(#20041,#20043)
successor(#20043,#20049)
successor(#20049,#20047)
successor(#20047,#20045)
successor(#20045,#20055)
successor(#20054,#20041)
successor(#20038,#20037)
successor(#20051,#20038)
numlines(#10000,3,3,0)
filetype(#10000,"javascript")

View File

@@ -9,86 +9,86 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,18"
locations_default(#20002,#10000,1,1,1,18)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{x};{#20003}"
variables(#20004,"x",#20003)
#20005=*
stmts(#20005,30,#20001,0,"export var x = 23;")
hasLocation(#20005,#20002)
stmtContainers(#20005,#20001)
#20002=*
lines(#20002,#20001,"export var x = 23;","")
#20003=@"loc,{#10000},1,1,1,18"
locations_default(#20003,#10000,1,1,1,18)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
stmts(#20006,18,#20005,-1,"var x = 23;")
#20007=@"loc,{#10000},1,8,1,18"
locations_default(#20007,#10000,1,8,1,18)
tokeninfo(#20006,7,#20001,1,"var")
#20007=@"loc,{#10000},1,8,1,10"
locations_default(#20007,#10000,1,8,1,10)
hasLocation(#20006,#20007)
stmtContainers(#20006,#20001)
#20008=*
exprs(#20008,64,#20006,0,"x = 23")
#20009=@"loc,{#10000},1,12,1,17"
locations_default(#20009,#10000,1,12,1,17)
tokeninfo(#20008,6,#20001,2,"x")
#20009=@"loc,{#10000},1,12,1,12"
locations_default(#20009,#10000,1,12,1,12)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20006)
exprContainers(#20008,#20001)
#20010=*
exprs(#20010,78,#20008,0,"x")
#20011=@"loc,{#10000},1,12,1,12"
locations_default(#20011,#10000,1,12,1,12)
tokeninfo(#20010,8,#20001,3,"=")
#20011=@"loc,{#10000},1,14,1,14"
locations_default(#20011,#10000,1,14,1,14)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20006)
exprContainers(#20010,#20001)
literals("x","x",#20010)
decl(#20010,#20004)
#20012=*
exprs(#20012,3,#20008,1,"23")
tokeninfo(#20012,3,#20001,4,"23")
#20013=@"loc,{#10000},1,16,1,17"
locations_default(#20013,#10000,1,16,1,17)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20006)
exprContainers(#20012,#20001)
literals("23","23",#20012)
#20014=*
lines(#20014,#20001,"export var x = 23;","")
hasLocation(#20014,#20002)
numlines(#20001,1,1,0)
#20015=*
tokeninfo(#20015,7,#20001,0,"export")
#20016=@"loc,{#10000},1,1,1,6"
locations_default(#20016,#10000,1,1,1,6)
hasLocation(#20015,#20016)
#20017=*
tokeninfo(#20017,7,#20001,1,"var")
#20018=@"loc,{#10000},1,8,1,10"
locations_default(#20018,#10000,1,8,1,10)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,6,#20001,2,"x")
hasLocation(#20019,#20011)
tokeninfo(#20014,8,#20001,5,";")
#20015=@"loc,{#10000},1,18,1,18"
locations_default(#20015,#10000,1,18,1,18)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,0,#20001,6,"")
#20017=@"loc,{#10000},1,19,1,18"
locations_default(#20017,#10000,1,19,1,18)
hasLocation(#20016,#20017)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20018=@"module;{#10000},1,1"
scopes(#20018,3)
scopenodes(#20001,#20018)
scopenesting(#20018,#20000)
isModule(#20001)
#20019=@"var;{x};{#20018}"
variables(#20019,"x",#20018)
#20020=*
tokeninfo(#20020,8,#20001,3,"=")
#20021=@"loc,{#10000},1,14,1,14"
locations_default(#20021,#10000,1,14,1,14)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,3,#20001,4,"23")
hasLocation(#20022,#20013)
stmts(#20020,30,#20001,0,"export var x = 23;")
hasLocation(#20020,#20003)
stmtContainers(#20020,#20001)
#20021=*
stmts(#20021,18,#20020,-1,"var x = 23;")
#20022=@"loc,{#10000},1,8,1,18"
locations_default(#20022,#10000,1,8,1,18)
hasLocation(#20021,#20022)
stmtContainers(#20021,#20001)
#20023=*
tokeninfo(#20023,8,#20001,5,";")
#20024=@"loc,{#10000},1,18,1,18"
locations_default(#20024,#10000,1,18,1,18)
exprs(#20023,64,#20021,0,"x = 23")
#20024=@"loc,{#10000},1,12,1,17"
locations_default(#20024,#10000,1,12,1,17)
hasLocation(#20023,#20024)
enclosingStmt(#20023,#20021)
exprContainers(#20023,#20001)
#20025=*
tokeninfo(#20025,0,#20001,6,"")
#20026=@"loc,{#10000},1,19,1,18"
locations_default(#20026,#10000,1,19,1,18)
hasLocation(#20025,#20026)
exprs(#20025,78,#20023,0,"x")
hasLocation(#20025,#20009)
enclosingStmt(#20025,#20021)
exprContainers(#20025,#20001)
literals("x","x",#20025)
decl(#20025,#20019)
#20026=*
exprs(#20026,3,#20023,1,"23")
hasLocation(#20026,#20013)
enclosingStmt(#20026,#20021)
exprContainers(#20026,#20001)
literals("23","23",#20026)
#20027=*
entry_cfg_node(#20027,#20001)
#20028=@"loc,{#10000},1,1,1,0"
@@ -96,12 +96,12 @@ locations_default(#20028,#10000,1,1,1,0)
hasLocation(#20027,#20028)
#20029=*
exit_cfg_node(#20029,#20001)
hasLocation(#20029,#20026)
successor(#20005,#20006)
successor(#20006,#20010)
successor(#20012,#20008)
successor(#20010,#20012)
successor(#20008,#20029)
successor(#20027,#20005)
hasLocation(#20029,#20017)
successor(#20020,#20021)
successor(#20021,#20025)
successor(#20026,#20023)
successor(#20025,#20026)
successor(#20023,#20029)
successor(#20027,#20020)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,128 +9,127 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{f};{#20003}"
variables(#20004,"f",#20003)
#20005=*
stmts(#20005,29,#20001,0,"export ... f () {}")
#20006=@"loc,{#10000},1,1,1,31"
locations_default(#20006,#10000,1,1,1,31)
hasLocation(#20005,#20006)
stmtContainers(#20005,#20001)
#20007=*
stmts(#20007,17,#20005,0,"function f () {}")
#20008=@"loc,{#10000},1,16,1,31"
locations_default(#20008,#10000,1,16,1,31)
hasLocation(#20007,#20008)
stmtContainers(#20007,#20001)
#20009=*
exprs(#20009,78,#20007,-1,"f")
#20010=@"loc,{#10000},1,25,1,25"
locations_default(#20010,#10000,1,25,1,25)
hasLocation(#20009,#20010)
exprContainers(#20009,#20007)
literals("f","f",#20009)
decl(#20009,#20004)
#20011=*
scopes(#20011,1)
scopenodes(#20007,#20011)
scopenesting(#20011,#20003)
#20012=@"var;{arguments};{#20011}"
variables(#20012,"arguments",#20011)
isArgumentsObject(#20012)
#20013=*
stmts(#20013,1,#20007,-2,"{}")
#20014=@"loc,{#10000},1,30,1,31"
locations_default(#20014,#10000,1,30,1,31)
hasLocation(#20013,#20014)
stmtContainers(#20013,#20007)
numlines(#20007,1,1,0)
#20015=*
stmts(#20015,2,#20001,1,"[,]")
#20016=@"loc,{#10000},1,33,1,35"
locations_default(#20016,#10000,1,33,1,35)
hasLocation(#20015,#20016)
stmtContainers(#20015,#20001)
#20017=*
exprs(#20017,7,#20015,0,"[,]")
hasLocation(#20017,#20016)
enclosingStmt(#20017,#20015)
exprContainers(#20017,#20001)
arraySize(#20017,1)
#20018=*
lines(#20018,#20001,"export default function f () {} [,]","
#20002=*
lines(#20002,#20001,"export default function f () {} [,]","
")
#20019=@"loc,{#10000},1,1,1,35"
locations_default(#20019,#10000,1,1,1,35)
hasLocation(#20018,#20019)
#20003=@"loc,{#10000},1,1,1,35"
locations_default(#20003,#10000,1,1,1,35)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"default")
#20007=@"loc,{#10000},1,8,1,14"
locations_default(#20007,#10000,1,8,1,14)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,7,#20001,2,"function")
#20009=@"loc,{#10000},1,16,1,23"
locations_default(#20009,#10000,1,16,1,23)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"f")
#20011=@"loc,{#10000},1,25,1,25"
locations_default(#20011,#10000,1,25,1,25)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,"(")
#20013=@"loc,{#10000},1,27,1,27"
locations_default(#20013,#10000,1,27,1,27)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,")")
#20015=@"loc,{#10000},1,28,1,28"
locations_default(#20015,#10000,1,28,1,28)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,"{")
#20017=@"loc,{#10000},1,30,1,30"
locations_default(#20017,#10000,1,30,1,30)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,7,"}")
#20019=@"loc,{#10000},1,31,1,31"
locations_default(#20019,#10000,1,31,1,31)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,7,#20001,0,"export")
#20021=@"loc,{#10000},1,1,1,6"
locations_default(#20021,#10000,1,1,1,6)
tokeninfo(#20020,8,#20001,8,"[")
#20021=@"loc,{#10000},1,33,1,33"
locations_default(#20021,#10000,1,33,1,33)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,7,#20001,1,"default")
#20023=@"loc,{#10000},1,8,1,14"
locations_default(#20023,#10000,1,8,1,14)
tokeninfo(#20022,8,#20001,9,",")
#20023=@"loc,{#10000},1,34,1,34"
locations_default(#20023,#10000,1,34,1,34)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,7,#20001,2,"function")
#20025=@"loc,{#10000},1,16,1,23"
locations_default(#20025,#10000,1,16,1,23)
tokeninfo(#20024,8,#20001,10,"]")
#20025=@"loc,{#10000},1,35,1,35"
locations_default(#20025,#10000,1,35,1,35)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,6,#20001,3,"f")
hasLocation(#20026,#20010)
#20027=*
tokeninfo(#20027,8,#20001,4,"(")
#20028=@"loc,{#10000},1,27,1,27"
locations_default(#20028,#10000,1,27,1,27)
hasLocation(#20027,#20028)
#20029=*
tokeninfo(#20029,8,#20001,5,")")
#20030=@"loc,{#10000},1,28,1,28"
locations_default(#20030,#10000,1,28,1,28)
hasLocation(#20029,#20030)
tokeninfo(#20026,0,#20001,11,"")
#20027=@"loc,{#10000},2,1,2,0"
locations_default(#20027,#10000,2,1,2,0)
hasLocation(#20026,#20027)
toplevels(#20001,0)
#20028=@"loc,{#10000},1,1,2,0"
locations_default(#20028,#10000,1,1,2,0)
hasLocation(#20001,#20028)
#20029=@"module;{#10000},1,1"
scopes(#20029,3)
scopenodes(#20001,#20029)
scopenesting(#20029,#20000)
isModule(#20001)
#20030=@"var;{f};{#20029}"
variables(#20030,"f",#20029)
#20031=*
tokeninfo(#20031,8,#20001,6,"{")
#20032=@"loc,{#10000},1,30,1,30"
locations_default(#20032,#10000,1,30,1,30)
stmts(#20031,29,#20001,0,"export ... f () {}")
#20032=@"loc,{#10000},1,1,1,31"
locations_default(#20032,#10000,1,1,1,31)
hasLocation(#20031,#20032)
stmtContainers(#20031,#20001)
#20033=*
tokeninfo(#20033,8,#20001,7,"}")
#20034=@"loc,{#10000},1,31,1,31"
locations_default(#20034,#10000,1,31,1,31)
stmts(#20033,17,#20031,0,"function f () {}")
#20034=@"loc,{#10000},1,16,1,31"
locations_default(#20034,#10000,1,16,1,31)
hasLocation(#20033,#20034)
stmtContainers(#20033,#20001)
#20035=*
tokeninfo(#20035,8,#20001,8,"[")
#20036=@"loc,{#10000},1,33,1,33"
locations_default(#20036,#10000,1,33,1,33)
hasLocation(#20035,#20036)
#20037=*
tokeninfo(#20037,8,#20001,9,",")
#20038=@"loc,{#10000},1,34,1,34"
locations_default(#20038,#10000,1,34,1,34)
hasLocation(#20037,#20038)
#20039=*
tokeninfo(#20039,8,#20001,10,"]")
#20040=@"loc,{#10000},1,35,1,35"
locations_default(#20040,#10000,1,35,1,35)
hasLocation(#20039,#20040)
#20041=*
tokeninfo(#20041,0,#20001,11,"")
#20042=@"loc,{#10000},2,1,2,0"
locations_default(#20042,#10000,2,1,2,0)
hasLocation(#20041,#20042)
exprs(#20035,78,#20033,-1,"f")
hasLocation(#20035,#20011)
exprContainers(#20035,#20033)
literals("f","f",#20035)
decl(#20035,#20030)
#20036=*
scopes(#20036,1)
scopenodes(#20033,#20036)
scopenesting(#20036,#20029)
#20037=@"var;{arguments};{#20036}"
variables(#20037,"arguments",#20036)
isArgumentsObject(#20037)
#20038=*
stmts(#20038,1,#20033,-2,"{}")
#20039=@"loc,{#10000},1,30,1,31"
locations_default(#20039,#10000,1,30,1,31)
hasLocation(#20038,#20039)
stmtContainers(#20038,#20033)
#20040=*
stmts(#20040,2,#20001,1,"[,]")
#20041=@"loc,{#10000},1,33,1,35"
locations_default(#20041,#10000,1,33,1,35)
hasLocation(#20040,#20041)
stmtContainers(#20040,#20001)
#20042=*
exprs(#20042,7,#20040,0,"[,]")
hasLocation(#20042,#20041)
enclosingStmt(#20042,#20040)
exprContainers(#20042,#20001)
arraySize(#20042,1)
#20043=*
entry_cfg_node(#20043,#20001)
#20044=@"loc,{#10000},1,1,1,0"
@@ -138,24 +137,24 @@ locations_default(#20044,#10000,1,1,1,0)
hasLocation(#20043,#20044)
#20045=*
exit_cfg_node(#20045,#20001)
hasLocation(#20045,#20042)
successor(#20015,#20017)
successor(#20017,#20045)
successor(#20005,#20007)
successor(#20007,#20015)
hasLocation(#20045,#20027)
successor(#20040,#20042)
successor(#20042,#20045)
successor(#20031,#20033)
successor(#20033,#20040)
#20046=*
entry_cfg_node(#20046,#20007)
entry_cfg_node(#20046,#20033)
#20047=@"loc,{#10000},1,16,1,15"
locations_default(#20047,#10000,1,16,1,15)
hasLocation(#20046,#20047)
#20048=*
exit_cfg_node(#20048,#20007)
exit_cfg_node(#20048,#20033)
#20049=@"loc,{#10000},1,32,1,31"
locations_default(#20049,#10000,1,32,1,31)
hasLocation(#20048,#20049)
successor(#20013,#20048)
successor(#20046,#20013)
successor(#20009,#20005)
successor(#20043,#20009)
successor(#20038,#20048)
successor(#20046,#20038)
successor(#20035,#20031)
successor(#20043,#20035)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,92 +9,91 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20002=*
lines(#20002,#20001,"export default class {}","
")
#20003=@"loc,{#10000},1,1,1,23"
locations_default(#20003,#10000,1,1,1,23)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
stmts(#20004,29,#20001,0,"export ... lass {}")
#20005=@"loc,{#10000},1,1,1,23"
locations_default(#20005,#10000,1,1,1,23)
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,80,#20004,0,"class {}")
#20007=@"loc,{#10000},1,16,1,23"
locations_default(#20007,#10000,1,16,1,23)
tokeninfo(#20006,7,#20001,1,"default")
#20007=@"loc,{#10000},1,8,1,14"
locations_default(#20007,#10000,1,8,1,14)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
#20008=*
properties(#20008,#20006,2,0,"constructor() {}")
#20009=@"loc,{#10000},1,22,1,21"
locations_default(#20009,#10000,1,22,1,21)
tokeninfo(#20008,7,#20001,2,"class")
#20009=@"loc,{#10000},1,16,1,20"
locations_default(#20009,#10000,1,16,1,20)
hasLocation(#20008,#20009)
#20010=*
exprs(#20010,0,#20008,0,"constructor")
hasLocation(#20010,#20009)
enclosingStmt(#20010,#20004)
exprContainers(#20010,#20001)
literals("constructor","constructor",#20010)
#20011=*
exprs(#20011,9,#20008,1,"() {}")
hasLocation(#20011,#20009)
enclosingStmt(#20011,#20004)
exprContainers(#20011,#20001)
tokeninfo(#20010,8,#20001,3,"{")
#20011=@"loc,{#10000},1,22,1,22"
locations_default(#20011,#10000,1,22,1,22)
hasLocation(#20010,#20011)
#20012=*
scopes(#20012,1)
scopenodes(#20011,#20012)
scopenesting(#20012,#20003)
#20013=@"var;{arguments};{#20012}"
variables(#20013,"arguments",#20012)
isArgumentsObject(#20013)
tokeninfo(#20012,8,#20001,4,"}")
#20013=@"loc,{#10000},1,23,1,23"
locations_default(#20013,#10000,1,23,1,23)
hasLocation(#20012,#20013)
#20014=*
stmts(#20014,1,#20011,-2,"{}")
hasLocation(#20014,#20009)
stmtContainers(#20014,#20011)
numlines(#20011,1,0,0)
isMethod(#20008)
#20015=*
lines(#20015,#20001,"export default class {}","
")
hasLocation(#20015,#20005)
numlines(#20001,1,1,0)
#20016=*
tokeninfo(#20016,7,#20001,0,"export")
#20017=@"loc,{#10000},1,1,1,6"
locations_default(#20017,#10000,1,1,1,6)
hasLocation(#20016,#20017)
tokeninfo(#20014,0,#20001,5,"")
#20015=@"loc,{#10000},2,1,2,0"
locations_default(#20015,#10000,2,1,2,0)
hasLocation(#20014,#20015)
toplevels(#20001,0)
#20016=@"loc,{#10000},1,1,2,0"
locations_default(#20016,#10000,1,1,2,0)
hasLocation(#20001,#20016)
#20017=@"module;{#10000},1,1"
scopes(#20017,3)
scopenodes(#20001,#20017)
scopenesting(#20017,#20000)
isModule(#20001)
#20018=*
tokeninfo(#20018,7,#20001,1,"default")
#20019=@"loc,{#10000},1,8,1,14"
locations_default(#20019,#10000,1,8,1,14)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,7,#20001,2,"class")
#20021=@"loc,{#10000},1,16,1,20"
locations_default(#20021,#10000,1,16,1,20)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,3,"{")
#20023=@"loc,{#10000},1,22,1,22"
locations_default(#20023,#10000,1,22,1,22)
hasLocation(#20022,#20023)
stmts(#20018,29,#20001,0,"export ... lass {}")
hasLocation(#20018,#20003)
stmtContainers(#20018,#20001)
#20019=*
exprs(#20019,80,#20018,0,"class {}")
#20020=@"loc,{#10000},1,16,1,23"
locations_default(#20020,#10000,1,16,1,23)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20018)
exprContainers(#20019,#20001)
#20021=*
properties(#20021,#20019,2,0,"constructor() {}")
#20022=@"loc,{#10000},1,22,1,21"
locations_default(#20022,#10000,1,22,1,21)
hasLocation(#20021,#20022)
#20023=*
exprs(#20023,0,#20021,0,"constructor")
hasLocation(#20023,#20022)
enclosingStmt(#20023,#20018)
exprContainers(#20023,#20001)
literals("constructor","constructor",#20023)
#20024=*
tokeninfo(#20024,8,#20001,4,"}")
#20025=@"loc,{#10000},1,23,1,23"
locations_default(#20025,#10000,1,23,1,23)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,0,#20001,5,"")
#20027=@"loc,{#10000},2,1,2,0"
locations_default(#20027,#10000,2,1,2,0)
hasLocation(#20026,#20027)
exprs(#20024,9,#20021,1,"() {}")
hasLocation(#20024,#20022)
enclosingStmt(#20024,#20018)
exprContainers(#20024,#20001)
#20025=*
scopes(#20025,1)
scopenodes(#20024,#20025)
scopenesting(#20025,#20017)
#20026=@"var;{arguments};{#20025}"
variables(#20026,"arguments",#20025)
isArgumentsObject(#20026)
#20027=*
stmts(#20027,1,#20024,-2,"{}")
hasLocation(#20027,#20022)
stmtContainers(#20027,#20024)
isMethod(#20021)
#20028=*
entry_cfg_node(#20028,#20001)
#20029=@"loc,{#10000},1,1,1,0"
@@ -102,20 +101,20 @@ locations_default(#20029,#10000,1,1,1,0)
hasLocation(#20028,#20029)
#20030=*
exit_cfg_node(#20030,#20001)
hasLocation(#20030,#20027)
successor(#20004,#20010)
successor(#20011,#20008)
hasLocation(#20030,#20015)
successor(#20018,#20023)
successor(#20024,#20021)
#20031=*
entry_cfg_node(#20031,#20011)
hasLocation(#20031,#20009)
entry_cfg_node(#20031,#20024)
hasLocation(#20031,#20022)
#20032=*
exit_cfg_node(#20032,#20011)
hasLocation(#20032,#20009)
successor(#20014,#20032)
successor(#20031,#20014)
successor(#20010,#20011)
successor(#20008,#20006)
successor(#20006,#20030)
successor(#20028,#20004)
exit_cfg_node(#20032,#20024)
hasLocation(#20032,#20022)
successor(#20027,#20032)
successor(#20031,#20027)
successor(#20023,#20024)
successor(#20021,#20019)
successor(#20019,#20030)
successor(#20028,#20018)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,102 +9,101 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,23"
locations_default(#20002,#10000,1,1,1,23)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{f};{#20003}"
variables(#20004,"f",#20003)
#20005=*
stmts(#20005,30,#20001,0,"export ... f() {}")
#20006=@"loc,{#10000},1,1,1,22"
locations_default(#20006,#10000,1,1,1,22)
hasLocation(#20005,#20006)
stmtContainers(#20005,#20001)
#20007=*
stmts(#20007,17,#20005,-1,"function f() {}")
#20008=@"loc,{#10000},1,8,1,22"
locations_default(#20008,#10000,1,8,1,22)
hasLocation(#20007,#20008)
stmtContainers(#20007,#20001)
#20009=*
exprs(#20009,78,#20007,-1,"f")
#20010=@"loc,{#10000},1,17,1,17"
locations_default(#20010,#10000,1,17,1,17)
hasLocation(#20009,#20010)
exprContainers(#20009,#20007)
literals("f","f",#20009)
decl(#20009,#20004)
#20011=*
scopes(#20011,1)
scopenodes(#20007,#20011)
scopenesting(#20011,#20003)
#20012=@"var;{arguments};{#20011}"
variables(#20012,"arguments",#20011)
isArgumentsObject(#20012)
#20013=*
stmts(#20013,1,#20007,-2,"{}")
#20014=@"loc,{#10000},1,21,1,22"
locations_default(#20014,#10000,1,21,1,22)
hasLocation(#20013,#20014)
stmtContainers(#20013,#20007)
numlines(#20007,1,1,0)
#20015=*
stmts(#20015,0,#20001,1,";")
#20016=@"loc,{#10000},1,23,1,23"
locations_default(#20016,#10000,1,23,1,23)
hasLocation(#20015,#20016)
stmtContainers(#20015,#20001)
#20017=*
lines(#20017,#20001,"export function f() {};","")
hasLocation(#20017,#20002)
#20002=*
lines(#20002,#20001,"export function f() {};","")
#20003=@"loc,{#10000},1,1,1,23"
locations_default(#20003,#10000,1,1,1,23)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"function")
#20007=@"loc,{#10000},1,8,1,15"
locations_default(#20007,#10000,1,8,1,15)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"f")
#20009=@"loc,{#10000},1,17,1,17"
locations_default(#20009,#10000,1,17,1,17)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"(")
#20011=@"loc,{#10000},1,18,1,18"
locations_default(#20011,#10000,1,18,1,18)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,")")
#20013=@"loc,{#10000},1,19,1,19"
locations_default(#20013,#10000,1,19,1,19)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"{")
#20015=@"loc,{#10000},1,21,1,21"
locations_default(#20015,#10000,1,21,1,21)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,"}")
#20017=@"loc,{#10000},1,22,1,22"
locations_default(#20017,#10000,1,22,1,22)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,7,#20001,0,"export")
#20019=@"loc,{#10000},1,1,1,6"
locations_default(#20019,#10000,1,1,1,6)
tokeninfo(#20018,8,#20001,7,";")
#20019=@"loc,{#10000},1,23,1,23"
locations_default(#20019,#10000,1,23,1,23)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,7,#20001,1,"function")
#20021=@"loc,{#10000},1,8,1,15"
locations_default(#20021,#10000,1,8,1,15)
tokeninfo(#20020,0,#20001,8,"")
#20021=@"loc,{#10000},1,24,1,23"
locations_default(#20021,#10000,1,24,1,23)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,2,"f")
hasLocation(#20022,#20010)
#20023=*
tokeninfo(#20023,8,#20001,3,"(")
#20024=@"loc,{#10000},1,18,1,18"
locations_default(#20024,#10000,1,18,1,18)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,8,#20001,4,")")
#20026=@"loc,{#10000},1,19,1,19"
locations_default(#20026,#10000,1,19,1,19)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,8,#20001,5,"{")
#20028=@"loc,{#10000},1,21,1,21"
locations_default(#20028,#10000,1,21,1,21)
hasLocation(#20027,#20028)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20022=@"module;{#10000},1,1"
scopes(#20022,3)
scopenodes(#20001,#20022)
scopenesting(#20022,#20000)
isModule(#20001)
#20023=@"var;{f};{#20022}"
variables(#20023,"f",#20022)
#20024=*
stmts(#20024,30,#20001,0,"export ... f() {}")
#20025=@"loc,{#10000},1,1,1,22"
locations_default(#20025,#10000,1,1,1,22)
hasLocation(#20024,#20025)
stmtContainers(#20024,#20001)
#20026=*
stmts(#20026,17,#20024,-1,"function f() {}")
#20027=@"loc,{#10000},1,8,1,22"
locations_default(#20027,#10000,1,8,1,22)
hasLocation(#20026,#20027)
stmtContainers(#20026,#20001)
#20028=*
exprs(#20028,78,#20026,-1,"f")
hasLocation(#20028,#20009)
exprContainers(#20028,#20026)
literals("f","f",#20028)
decl(#20028,#20023)
#20029=*
tokeninfo(#20029,8,#20001,6,"}")
#20030=@"loc,{#10000},1,22,1,22"
locations_default(#20030,#10000,1,22,1,22)
hasLocation(#20029,#20030)
scopes(#20029,1)
scopenodes(#20026,#20029)
scopenesting(#20029,#20022)
#20030=@"var;{arguments};{#20029}"
variables(#20030,"arguments",#20029)
isArgumentsObject(#20030)
#20031=*
tokeninfo(#20031,8,#20001,7,";")
hasLocation(#20031,#20016)
#20032=*
tokeninfo(#20032,0,#20001,8,"")
#20033=@"loc,{#10000},1,24,1,23"
locations_default(#20033,#10000,1,24,1,23)
hasLocation(#20032,#20033)
stmts(#20031,1,#20026,-2,"{}")
#20032=@"loc,{#10000},1,21,1,22"
locations_default(#20032,#10000,1,21,1,22)
hasLocation(#20031,#20032)
stmtContainers(#20031,#20026)
#20033=*
stmts(#20033,0,#20001,1,";")
hasLocation(#20033,#20019)
stmtContainers(#20033,#20001)
#20034=*
entry_cfg_node(#20034,#20001)
#20035=@"loc,{#10000},1,1,1,0"
@@ -112,23 +111,23 @@ locations_default(#20035,#10000,1,1,1,0)
hasLocation(#20034,#20035)
#20036=*
exit_cfg_node(#20036,#20001)
hasLocation(#20036,#20033)
successor(#20015,#20036)
successor(#20005,#20007)
successor(#20007,#20015)
hasLocation(#20036,#20021)
successor(#20033,#20036)
successor(#20024,#20026)
successor(#20026,#20033)
#20037=*
entry_cfg_node(#20037,#20007)
entry_cfg_node(#20037,#20026)
#20038=@"loc,{#10000},1,8,1,7"
locations_default(#20038,#10000,1,8,1,7)
hasLocation(#20037,#20038)
#20039=*
exit_cfg_node(#20039,#20007)
exit_cfg_node(#20039,#20026)
#20040=@"loc,{#10000},1,23,1,22"
locations_default(#20040,#10000,1,23,1,22)
hasLocation(#20039,#20040)
successor(#20013,#20039)
successor(#20037,#20013)
successor(#20009,#20005)
successor(#20034,#20009)
successor(#20031,#20039)
successor(#20037,#20031)
successor(#20028,#20024)
successor(#20034,#20028)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,107 +9,106 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,31"
locations_default(#20002,#10000,1,1,1,31)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{f};{#20003}"
variables(#20004,"f",#20003)
#20005=*
stmts(#20005,29,#20001,0,"export ... f() {}")
#20006=@"loc,{#10000},1,1,1,30"
locations_default(#20006,#10000,1,1,1,30)
hasLocation(#20005,#20006)
stmtContainers(#20005,#20001)
#20007=*
stmts(#20007,17,#20005,0,"function f() {}")
#20008=@"loc,{#10000},1,16,1,30"
locations_default(#20008,#10000,1,16,1,30)
hasLocation(#20007,#20008)
stmtContainers(#20007,#20001)
#20009=*
exprs(#20009,78,#20007,-1,"f")
#20010=@"loc,{#10000},1,25,1,25"
locations_default(#20010,#10000,1,25,1,25)
hasLocation(#20009,#20010)
exprContainers(#20009,#20007)
literals("f","f",#20009)
decl(#20009,#20004)
#20011=*
scopes(#20011,1)
scopenodes(#20007,#20011)
scopenesting(#20011,#20003)
#20012=@"var;{arguments};{#20011}"
variables(#20012,"arguments",#20011)
isArgumentsObject(#20012)
#20013=*
stmts(#20013,1,#20007,-2,"{}")
#20014=@"loc,{#10000},1,29,1,30"
locations_default(#20014,#10000,1,29,1,30)
hasLocation(#20013,#20014)
stmtContainers(#20013,#20007)
numlines(#20007,1,1,0)
#20015=*
stmts(#20015,0,#20001,1,";")
#20016=@"loc,{#10000},1,31,1,31"
locations_default(#20016,#10000,1,31,1,31)
hasLocation(#20015,#20016)
stmtContainers(#20015,#20001)
#20017=*
lines(#20017,#20001,"export default function f() {};","")
hasLocation(#20017,#20002)
#20002=*
lines(#20002,#20001,"export default function f() {};","")
#20003=@"loc,{#10000},1,1,1,31"
locations_default(#20003,#10000,1,1,1,31)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"default")
#20007=@"loc,{#10000},1,8,1,14"
locations_default(#20007,#10000,1,8,1,14)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,7,#20001,2,"function")
#20009=@"loc,{#10000},1,16,1,23"
locations_default(#20009,#10000,1,16,1,23)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"f")
#20011=@"loc,{#10000},1,25,1,25"
locations_default(#20011,#10000,1,25,1,25)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,"(")
#20013=@"loc,{#10000},1,26,1,26"
locations_default(#20013,#10000,1,26,1,26)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,")")
#20015=@"loc,{#10000},1,27,1,27"
locations_default(#20015,#10000,1,27,1,27)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,"{")
#20017=@"loc,{#10000},1,29,1,29"
locations_default(#20017,#10000,1,29,1,29)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,7,#20001,0,"export")
#20019=@"loc,{#10000},1,1,1,6"
locations_default(#20019,#10000,1,1,1,6)
tokeninfo(#20018,8,#20001,7,"}")
#20019=@"loc,{#10000},1,30,1,30"
locations_default(#20019,#10000,1,30,1,30)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,7,#20001,1,"default")
#20021=@"loc,{#10000},1,8,1,14"
locations_default(#20021,#10000,1,8,1,14)
tokeninfo(#20020,8,#20001,8,";")
#20021=@"loc,{#10000},1,31,1,31"
locations_default(#20021,#10000,1,31,1,31)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,7,#20001,2,"function")
#20023=@"loc,{#10000},1,16,1,23"
locations_default(#20023,#10000,1,16,1,23)
tokeninfo(#20022,0,#20001,9,"")
#20023=@"loc,{#10000},1,32,1,31"
locations_default(#20023,#10000,1,32,1,31)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,3,"f")
hasLocation(#20024,#20010)
#20025=*
tokeninfo(#20025,8,#20001,4,"(")
#20026=@"loc,{#10000},1,26,1,26"
locations_default(#20026,#10000,1,26,1,26)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,8,#20001,5,")")
#20028=@"loc,{#10000},1,27,1,27"
locations_default(#20028,#10000,1,27,1,27)
hasLocation(#20027,#20028)
#20029=*
tokeninfo(#20029,8,#20001,6,"{")
#20030=@"loc,{#10000},1,29,1,29"
locations_default(#20030,#10000,1,29,1,29)
hasLocation(#20029,#20030)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20024=@"module;{#10000},1,1"
scopes(#20024,3)
scopenodes(#20001,#20024)
scopenesting(#20024,#20000)
isModule(#20001)
#20025=@"var;{f};{#20024}"
variables(#20025,"f",#20024)
#20026=*
stmts(#20026,29,#20001,0,"export ... f() {}")
#20027=@"loc,{#10000},1,1,1,30"
locations_default(#20027,#10000,1,1,1,30)
hasLocation(#20026,#20027)
stmtContainers(#20026,#20001)
#20028=*
stmts(#20028,17,#20026,0,"function f() {}")
#20029=@"loc,{#10000},1,16,1,30"
locations_default(#20029,#10000,1,16,1,30)
hasLocation(#20028,#20029)
stmtContainers(#20028,#20001)
#20030=*
exprs(#20030,78,#20028,-1,"f")
hasLocation(#20030,#20011)
exprContainers(#20030,#20028)
literals("f","f",#20030)
decl(#20030,#20025)
#20031=*
tokeninfo(#20031,8,#20001,7,"}")
#20032=@"loc,{#10000},1,30,1,30"
locations_default(#20032,#10000,1,30,1,30)
hasLocation(#20031,#20032)
scopes(#20031,1)
scopenodes(#20028,#20031)
scopenesting(#20031,#20024)
#20032=@"var;{arguments};{#20031}"
variables(#20032,"arguments",#20031)
isArgumentsObject(#20032)
#20033=*
tokeninfo(#20033,8,#20001,8,";")
hasLocation(#20033,#20016)
#20034=*
tokeninfo(#20034,0,#20001,9,"")
#20035=@"loc,{#10000},1,32,1,31"
locations_default(#20035,#10000,1,32,1,31)
hasLocation(#20034,#20035)
stmts(#20033,1,#20028,-2,"{}")
#20034=@"loc,{#10000},1,29,1,30"
locations_default(#20034,#10000,1,29,1,30)
hasLocation(#20033,#20034)
stmtContainers(#20033,#20028)
#20035=*
stmts(#20035,0,#20001,1,";")
hasLocation(#20035,#20021)
stmtContainers(#20035,#20001)
#20036=*
entry_cfg_node(#20036,#20001)
#20037=@"loc,{#10000},1,1,1,0"
@@ -117,23 +116,23 @@ locations_default(#20037,#10000,1,1,1,0)
hasLocation(#20036,#20037)
#20038=*
exit_cfg_node(#20038,#20001)
hasLocation(#20038,#20035)
successor(#20015,#20038)
successor(#20005,#20007)
successor(#20007,#20015)
hasLocation(#20038,#20023)
successor(#20035,#20038)
successor(#20026,#20028)
successor(#20028,#20035)
#20039=*
entry_cfg_node(#20039,#20007)
entry_cfg_node(#20039,#20028)
#20040=@"loc,{#10000},1,16,1,15"
locations_default(#20040,#10000,1,16,1,15)
hasLocation(#20039,#20040)
#20041=*
exit_cfg_node(#20041,#20007)
exit_cfg_node(#20041,#20028)
#20042=@"loc,{#10000},1,31,1,30"
locations_default(#20042,#10000,1,31,1,30)
hasLocation(#20041,#20042)
successor(#20013,#20041)
successor(#20039,#20013)
successor(#20009,#20005)
successor(#20036,#20009)
successor(#20033,#20041)
successor(#20039,#20033)
successor(#20030,#20026)
successor(#20036,#20030)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,95 +9,94 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,30"
locations_default(#20002,#10000,1,1,1,30)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=*
stmts(#20004,29,#20001,0,"export ... n () {}")
#20005=@"loc,{#10000},1,1,1,29"
locations_default(#20005,#10000,1,1,1,29)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,9,#20004,0,"function () {}")
#20007=@"loc,{#10000},1,16,1,29"
locations_default(#20007,#10000,1,16,1,29)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
#20008=*
scopes(#20008,1)
scopenodes(#20006,#20008)
scopenesting(#20008,#20003)
#20009=@"var;{arguments};{#20008}"
variables(#20009,"arguments",#20008)
isArgumentsObject(#20009)
#20010=*
stmts(#20010,1,#20006,-2,"{}")
#20011=@"loc,{#10000},1,28,1,29"
locations_default(#20011,#10000,1,28,1,29)
hasLocation(#20010,#20011)
stmtContainers(#20010,#20006)
numlines(#20006,1,1,0)
#20012=*
stmts(#20012,0,#20001,1,";")
#20013=@"loc,{#10000},1,30,1,30"
locations_default(#20013,#10000,1,30,1,30)
hasLocation(#20012,#20013)
stmtContainers(#20012,#20001)
#20014=*
lines(#20014,#20001,"export default function () {};","")
hasLocation(#20014,#20002)
#20002=*
lines(#20002,#20001,"export default function () {};","")
#20003=@"loc,{#10000},1,1,1,30"
locations_default(#20003,#10000,1,1,1,30)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20015=*
tokeninfo(#20015,7,#20001,0,"export")
#20016=@"loc,{#10000},1,1,1,6"
locations_default(#20016,#10000,1,1,1,6)
hasLocation(#20015,#20016)
#20017=*
tokeninfo(#20017,7,#20001,1,"default")
#20018=@"loc,{#10000},1,8,1,14"
locations_default(#20018,#10000,1,8,1,14)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,7,#20001,2,"function")
#20020=@"loc,{#10000},1,16,1,23"
locations_default(#20020,#10000,1,16,1,23)
hasLocation(#20019,#20020)
#20021=*
tokeninfo(#20021,8,#20001,3,"(")
#20022=@"loc,{#10000},1,25,1,25"
locations_default(#20022,#10000,1,25,1,25)
hasLocation(#20021,#20022)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,7,#20001,1,"default")
#20007=@"loc,{#10000},1,8,1,14"
locations_default(#20007,#10000,1,8,1,14)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,7,#20001,2,"function")
#20009=@"loc,{#10000},1,16,1,23"
locations_default(#20009,#10000,1,16,1,23)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"(")
#20011=@"loc,{#10000},1,25,1,25"
locations_default(#20011,#10000,1,25,1,25)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,")")
#20013=@"loc,{#10000},1,26,1,26"
locations_default(#20013,#10000,1,26,1,26)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"{")
#20015=@"loc,{#10000},1,28,1,28"
locations_default(#20015,#10000,1,28,1,28)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,"}")
#20017=@"loc,{#10000},1,29,1,29"
locations_default(#20017,#10000,1,29,1,29)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,7,";")
#20019=@"loc,{#10000},1,30,1,30"
locations_default(#20019,#10000,1,30,1,30)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,0,#20001,8,"")
#20021=@"loc,{#10000},1,31,1,30"
locations_default(#20021,#10000,1,31,1,30)
hasLocation(#20020,#20021)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20022=@"module;{#10000},1,1"
scopes(#20022,3)
scopenodes(#20001,#20022)
scopenesting(#20022,#20000)
isModule(#20001)
#20023=*
tokeninfo(#20023,8,#20001,4,")")
#20024=@"loc,{#10000},1,26,1,26"
locations_default(#20024,#10000,1,26,1,26)
stmts(#20023,29,#20001,0,"export ... n () {}")
#20024=@"loc,{#10000},1,1,1,29"
locations_default(#20024,#10000,1,1,1,29)
hasLocation(#20023,#20024)
stmtContainers(#20023,#20001)
#20025=*
tokeninfo(#20025,8,#20001,5,"{")
#20026=@"loc,{#10000},1,28,1,28"
locations_default(#20026,#10000,1,28,1,28)
exprs(#20025,9,#20023,0,"function () {}")
#20026=@"loc,{#10000},1,16,1,29"
locations_default(#20026,#10000,1,16,1,29)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20023)
exprContainers(#20025,#20001)
#20027=*
tokeninfo(#20027,8,#20001,6,"}")
#20028=@"loc,{#10000},1,29,1,29"
locations_default(#20028,#10000,1,29,1,29)
hasLocation(#20027,#20028)
scopes(#20027,1)
scopenodes(#20025,#20027)
scopenesting(#20027,#20022)
#20028=@"var;{arguments};{#20027}"
variables(#20028,"arguments",#20027)
isArgumentsObject(#20028)
#20029=*
tokeninfo(#20029,8,#20001,7,";")
hasLocation(#20029,#20013)
#20030=*
tokeninfo(#20030,0,#20001,8,"")
#20031=@"loc,{#10000},1,31,1,30"
locations_default(#20031,#10000,1,31,1,30)
hasLocation(#20030,#20031)
stmts(#20029,1,#20025,-2,"{}")
#20030=@"loc,{#10000},1,28,1,29"
locations_default(#20030,#10000,1,28,1,29)
hasLocation(#20029,#20030)
stmtContainers(#20029,#20025)
#20031=*
stmts(#20031,0,#20001,1,";")
hasLocation(#20031,#20019)
stmtContainers(#20031,#20001)
#20032=*
entry_cfg_node(#20032,#20001)
#20033=@"loc,{#10000},1,1,1,0"
@@ -105,22 +104,22 @@ locations_default(#20033,#10000,1,1,1,0)
hasLocation(#20032,#20033)
#20034=*
exit_cfg_node(#20034,#20001)
hasLocation(#20034,#20031)
successor(#20012,#20034)
successor(#20004,#20006)
successor(#20006,#20012)
hasLocation(#20034,#20021)
successor(#20031,#20034)
successor(#20023,#20025)
successor(#20025,#20031)
#20035=*
entry_cfg_node(#20035,#20006)
entry_cfg_node(#20035,#20025)
#20036=@"loc,{#10000},1,16,1,15"
locations_default(#20036,#10000,1,16,1,15)
hasLocation(#20035,#20036)
#20037=*
exit_cfg_node(#20037,#20006)
exit_cfg_node(#20037,#20025)
#20038=@"loc,{#10000},1,30,1,29"
locations_default(#20038,#10000,1,30,1,29)
hasLocation(#20037,#20038)
successor(#20010,#20037)
successor(#20035,#20010)
successor(#20032,#20004)
successor(#20029,#20037)
successor(#20035,#20029)
successor(#20032,#20023)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,212 +9,212 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,21"
locations_default(#20002,#10000,1,1,2,21)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{x};{#20003}"
variables(#20004,"x",#20003)
#20005=@"var;{y};{#20003}"
variables(#20005,"y",#20003)
#20002=*
lines(#20002,#20001,"var x = 23, y = 42;","
")
#20003=@"loc,{#10000},1,1,1,19"
locations_default(#20003,#10000,1,1,1,19)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001,"export { x, y as z };","")
#20005=@"loc,{#10000},2,1,2,21"
locations_default(#20005,#10000,2,1,2,21)
hasLocation(#20004,#20005)
numlines(#20001,2,2,0)
#20006=*
stmts(#20006,18,#20001,0,"var x = 23, y = 42;")
#20007=@"loc,{#10000},1,1,1,19"
locations_default(#20007,#10000,1,1,1,19)
tokeninfo(#20006,7,#20001,0,"var")
#20007=@"loc,{#10000},1,1,1,3"
locations_default(#20007,#10000,1,1,1,3)
hasLocation(#20006,#20007)
stmtContainers(#20006,#20001)
#20008=*
exprs(#20008,64,#20006,0,"x = 23")
#20009=@"loc,{#10000},1,5,1,10"
locations_default(#20009,#10000,1,5,1,10)
tokeninfo(#20008,6,#20001,1,"x")
#20009=@"loc,{#10000},1,5,1,5"
locations_default(#20009,#10000,1,5,1,5)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20006)
exprContainers(#20008,#20001)
#20010=*
exprs(#20010,78,#20008,0,"x")
#20011=@"loc,{#10000},1,5,1,5"
locations_default(#20011,#10000,1,5,1,5)
tokeninfo(#20010,8,#20001,2,"=")
#20011=@"loc,{#10000},1,7,1,7"
locations_default(#20011,#10000,1,7,1,7)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20006)
exprContainers(#20010,#20001)
literals("x","x",#20010)
decl(#20010,#20004)
#20012=*
exprs(#20012,3,#20008,1,"23")
tokeninfo(#20012,3,#20001,3,"23")
#20013=@"loc,{#10000},1,9,1,10"
locations_default(#20013,#10000,1,9,1,10)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20006)
exprContainers(#20012,#20001)
literals("23","23",#20012)
#20014=*
exprs(#20014,64,#20006,1,"y = 42")
#20015=@"loc,{#10000},1,13,1,18"
locations_default(#20015,#10000,1,13,1,18)
tokeninfo(#20014,8,#20001,4,",")
#20015=@"loc,{#10000},1,11,1,11"
locations_default(#20015,#10000,1,11,1,11)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20006)
exprContainers(#20014,#20001)
#20016=*
exprs(#20016,78,#20014,0,"y")
tokeninfo(#20016,6,#20001,5,"y")
#20017=@"loc,{#10000},1,13,1,13"
locations_default(#20017,#10000,1,13,1,13)
hasLocation(#20016,#20017)
enclosingStmt(#20016,#20006)
exprContainers(#20016,#20001)
literals("y","y",#20016)
decl(#20016,#20005)
#20018=*
exprs(#20018,3,#20014,1,"42")
#20019=@"loc,{#10000},1,17,1,18"
locations_default(#20019,#10000,1,17,1,18)
tokeninfo(#20018,8,#20001,6,"=")
#20019=@"loc,{#10000},1,15,1,15"
locations_default(#20019,#10000,1,15,1,15)
hasLocation(#20018,#20019)
enclosingStmt(#20018,#20006)
exprContainers(#20018,#20001)
literals("42","42",#20018)
#20020=*
stmts(#20020,30,#20001,1,"export ... as z };")
#20021=@"loc,{#10000},2,1,2,21"
locations_default(#20021,#10000,2,1,2,21)
tokeninfo(#20020,3,#20001,7,"42")
#20021=@"loc,{#10000},1,17,1,18"
locations_default(#20021,#10000,1,17,1,18)
hasLocation(#20020,#20021)
stmtContainers(#20020,#20001)
#20022=*
exprs(#20022,86,#20020,0,"x")
#20023=@"loc,{#10000},2,10,2,10"
locations_default(#20023,#10000,2,10,2,10)
tokeninfo(#20022,8,#20001,8,";")
#20023=@"loc,{#10000},1,19,1,19"
locations_default(#20023,#10000,1,19,1,19)
hasLocation(#20022,#20023)
enclosingStmt(#20022,#20020)
exprContainers(#20022,#20001)
#20024=*
exprs(#20024,103,#20022,0,"x")
hasLocation(#20024,#20023)
enclosingStmt(#20024,#20020)
exprContainers(#20024,#20001)
literals("x","x",#20024)
bind(#20024,#20004)
#20025=*
exprs(#20025,0,#20022,1,"x")
hasLocation(#20025,#20023)
enclosingStmt(#20025,#20020)
exprContainers(#20025,#20001)
literals("x","x",#20025)
tokeninfo(#20024,7,#20001,9,"export")
#20025=@"loc,{#10000},2,1,2,6"
locations_default(#20025,#10000,2,1,2,6)
hasLocation(#20024,#20025)
#20026=*
exprs(#20026,86,#20020,1,"y as z")
#20027=@"loc,{#10000},2,13,2,18"
locations_default(#20027,#10000,2,13,2,18)
tokeninfo(#20026,8,#20001,10,"{")
#20027=@"loc,{#10000},2,8,2,8"
locations_default(#20027,#10000,2,8,2,8)
hasLocation(#20026,#20027)
enclosingStmt(#20026,#20020)
exprContainers(#20026,#20001)
#20028=*
exprs(#20028,103,#20026,0,"y")
#20029=@"loc,{#10000},2,13,2,13"
locations_default(#20029,#10000,2,13,2,13)
tokeninfo(#20028,6,#20001,11,"x")
#20029=@"loc,{#10000},2,10,2,10"
locations_default(#20029,#10000,2,10,2,10)
hasLocation(#20028,#20029)
enclosingStmt(#20028,#20020)
exprContainers(#20028,#20001)
literals("y","y",#20028)
bind(#20028,#20005)
#20030=*
exprs(#20030,0,#20026,1,"z")
#20031=@"loc,{#10000},2,18,2,18"
locations_default(#20031,#10000,2,18,2,18)
tokeninfo(#20030,8,#20001,12,",")
#20031=@"loc,{#10000},2,11,2,11"
locations_default(#20031,#10000,2,11,2,11)
hasLocation(#20030,#20031)
enclosingStmt(#20030,#20020)
exprContainers(#20030,#20001)
literals("z","z",#20030)
#20032=*
lines(#20032,#20001,"var x = 23, y = 42;","
")
hasLocation(#20032,#20007)
#20033=*
lines(#20033,#20001,"export { x, y as z };","")
hasLocation(#20033,#20021)
numlines(#20001,2,2,0)
tokeninfo(#20032,6,#20001,13,"y")
#20033=@"loc,{#10000},2,13,2,13"
locations_default(#20033,#10000,2,13,2,13)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,7,#20001,0,"var")
#20035=@"loc,{#10000},1,1,1,3"
locations_default(#20035,#10000,1,1,1,3)
tokeninfo(#20034,6,#20001,14,"as")
#20035=@"loc,{#10000},2,15,2,16"
locations_default(#20035,#10000,2,15,2,16)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,6,#20001,1,"x")
hasLocation(#20036,#20011)
#20037=*
tokeninfo(#20037,8,#20001,2,"=")
#20038=@"loc,{#10000},1,7,1,7"
locations_default(#20038,#10000,1,7,1,7)
hasLocation(#20037,#20038)
#20039=*
tokeninfo(#20039,3,#20001,3,"23")
hasLocation(#20039,#20013)
tokeninfo(#20036,6,#20001,15,"z")
#20037=@"loc,{#10000},2,18,2,18"
locations_default(#20037,#10000,2,18,2,18)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,8,#20001,16,"}")
#20039=@"loc,{#10000},2,20,2,20"
locations_default(#20039,#10000,2,20,2,20)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,8,#20001,4,",")
#20041=@"loc,{#10000},1,11,1,11"
locations_default(#20041,#10000,1,11,1,11)
tokeninfo(#20040,8,#20001,17,";")
#20041=@"loc,{#10000},2,21,2,21"
locations_default(#20041,#10000,2,21,2,21)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,6,#20001,5,"y")
hasLocation(#20042,#20017)
#20043=*
tokeninfo(#20043,8,#20001,6,"=")
#20044=@"loc,{#10000},1,15,1,15"
locations_default(#20044,#10000,1,15,1,15)
hasLocation(#20043,#20044)
#20045=*
tokeninfo(#20045,3,#20001,7,"42")
hasLocation(#20045,#20019)
#20046=*
tokeninfo(#20046,8,#20001,8,";")
#20047=@"loc,{#10000},1,19,1,19"
locations_default(#20047,#10000,1,19,1,19)
hasLocation(#20046,#20047)
tokeninfo(#20042,0,#20001,18,"")
#20043=@"loc,{#10000},2,22,2,21"
locations_default(#20043,#10000,2,22,2,21)
hasLocation(#20042,#20043)
toplevels(#20001,0)
#20044=@"loc,{#10000},1,1,2,21"
locations_default(#20044,#10000,1,1,2,21)
hasLocation(#20001,#20044)
#20045=@"module;{#10000},1,1"
scopes(#20045,3)
scopenodes(#20001,#20045)
scopenesting(#20045,#20000)
isModule(#20001)
#20046=@"var;{x};{#20045}"
variables(#20046,"x",#20045)
#20047=@"var;{y};{#20045}"
variables(#20047,"y",#20045)
#20048=*
tokeninfo(#20048,7,#20001,9,"export")
#20049=@"loc,{#10000},2,1,2,6"
locations_default(#20049,#10000,2,1,2,6)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,8,#20001,10,"{")
#20051=@"loc,{#10000},2,8,2,8"
locations_default(#20051,#10000,2,8,2,8)
hasLocation(#20050,#20051)
stmts(#20048,18,#20001,0,"var x = 23, y = 42;")
hasLocation(#20048,#20003)
stmtContainers(#20048,#20001)
#20049=*
exprs(#20049,64,#20048,0,"x = 23")
#20050=@"loc,{#10000},1,5,1,10"
locations_default(#20050,#10000,1,5,1,10)
hasLocation(#20049,#20050)
enclosingStmt(#20049,#20048)
exprContainers(#20049,#20001)
#20051=*
exprs(#20051,78,#20049,0,"x")
hasLocation(#20051,#20009)
enclosingStmt(#20051,#20048)
exprContainers(#20051,#20001)
literals("x","x",#20051)
decl(#20051,#20046)
#20052=*
tokeninfo(#20052,6,#20001,11,"x")
hasLocation(#20052,#20023)
exprs(#20052,3,#20049,1,"23")
hasLocation(#20052,#20013)
enclosingStmt(#20052,#20048)
exprContainers(#20052,#20001)
literals("23","23",#20052)
#20053=*
tokeninfo(#20053,8,#20001,12,",")
#20054=@"loc,{#10000},2,11,2,11"
locations_default(#20054,#10000,2,11,2,11)
exprs(#20053,64,#20048,1,"y = 42")
#20054=@"loc,{#10000},1,13,1,18"
locations_default(#20054,#10000,1,13,1,18)
hasLocation(#20053,#20054)
enclosingStmt(#20053,#20048)
exprContainers(#20053,#20001)
#20055=*
tokeninfo(#20055,6,#20001,13,"y")
hasLocation(#20055,#20029)
exprs(#20055,78,#20053,0,"y")
hasLocation(#20055,#20017)
enclosingStmt(#20055,#20048)
exprContainers(#20055,#20001)
literals("y","y",#20055)
decl(#20055,#20047)
#20056=*
tokeninfo(#20056,6,#20001,14,"as")
#20057=@"loc,{#10000},2,15,2,16"
locations_default(#20057,#10000,2,15,2,16)
hasLocation(#20056,#20057)
exprs(#20056,3,#20053,1,"42")
hasLocation(#20056,#20021)
enclosingStmt(#20056,#20048)
exprContainers(#20056,#20001)
literals("42","42",#20056)
#20057=*
stmts(#20057,30,#20001,1,"export ... as z };")
hasLocation(#20057,#20005)
stmtContainers(#20057,#20001)
#20058=*
tokeninfo(#20058,6,#20001,15,"z")
hasLocation(#20058,#20031)
exprs(#20058,86,#20057,0,"x")
hasLocation(#20058,#20029)
enclosingStmt(#20058,#20057)
exprContainers(#20058,#20001)
#20059=*
tokeninfo(#20059,8,#20001,16,"}")
#20060=@"loc,{#10000},2,20,2,20"
locations_default(#20060,#10000,2,20,2,20)
hasLocation(#20059,#20060)
exprs(#20059,103,#20058,0,"x")
hasLocation(#20059,#20029)
enclosingStmt(#20059,#20057)
exprContainers(#20059,#20001)
literals("x","x",#20059)
bind(#20059,#20046)
#20060=*
exprs(#20060,0,#20058,1,"x")
hasLocation(#20060,#20029)
enclosingStmt(#20060,#20057)
exprContainers(#20060,#20001)
literals("x","x",#20060)
#20061=*
tokeninfo(#20061,8,#20001,17,";")
#20062=@"loc,{#10000},2,21,2,21"
locations_default(#20062,#10000,2,21,2,21)
exprs(#20061,86,#20057,1,"y as z")
#20062=@"loc,{#10000},2,13,2,18"
locations_default(#20062,#10000,2,13,2,18)
hasLocation(#20061,#20062)
enclosingStmt(#20061,#20057)
exprContainers(#20061,#20001)
#20063=*
tokeninfo(#20063,0,#20001,18,"")
#20064=@"loc,{#10000},2,22,2,21"
locations_default(#20064,#10000,2,22,2,21)
hasLocation(#20063,#20064)
exprs(#20063,103,#20061,0,"y")
hasLocation(#20063,#20033)
enclosingStmt(#20063,#20057)
exprContainers(#20063,#20001)
literals("y","y",#20063)
bind(#20063,#20047)
#20064=*
exprs(#20064,0,#20061,1,"z")
hasLocation(#20064,#20037)
enclosingStmt(#20064,#20057)
exprContainers(#20064,#20001)
literals("z","z",#20064)
#20065=*
entry_cfg_node(#20065,#20001)
#20066=@"loc,{#10000},1,1,1,0"
@@ -222,21 +222,21 @@ locations_default(#20066,#10000,1,1,1,0)
hasLocation(#20065,#20066)
#20067=*
exit_cfg_node(#20067,#20001)
hasLocation(#20067,#20064)
successor(#20020,#20022)
successor(#20026,#20028)
successor(#20030,#20067)
successor(#20028,#20030)
successor(#20022,#20024)
successor(#20025,#20026)
successor(#20024,#20025)
successor(#20006,#20010)
successor(#20018,#20014)
successor(#20016,#20018)
successor(#20014,#20020)
successor(#20012,#20008)
successor(#20010,#20012)
successor(#20008,#20016)
successor(#20065,#20006)
hasLocation(#20067,#20043)
successor(#20057,#20058)
successor(#20061,#20063)
successor(#20064,#20067)
successor(#20063,#20064)
successor(#20058,#20059)
successor(#20060,#20061)
successor(#20059,#20060)
successor(#20048,#20051)
successor(#20056,#20053)
successor(#20055,#20056)
successor(#20053,#20057)
successor(#20052,#20049)
successor(#20051,#20052)
successor(#20049,#20055)
successor(#20065,#20048)
numlines(#10000,2,2,0)
filetype(#10000,"javascript")

View File

@@ -9,59 +9,59 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,20"
locations_default(#20002,#10000,1,1,1,20)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=*
stmts(#20004,28,#20001,0,"export * from 'foo';")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,4,#20004,0,"'foo'")
#20006=@"loc,{#10000},1,15,1,19"
locations_default(#20006,#10000,1,15,1,19)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20004)
exprContainers(#20005,#20001)
literals("foo","'foo'",#20005)
#20007=*
lines(#20007,#20001,"export * from 'foo';","")
hasLocation(#20007,#20002)
#20002=*
lines(#20002,#20001,"export * from 'foo';","")
#20003=@"loc,{#10000},1,1,1,20"
locations_default(#20003,#10000,1,1,1,20)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,8,#20001,1,"*")
#20007=@"loc,{#10000},1,8,1,8"
locations_default(#20007,#10000,1,8,1,8)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,7,#20001,0,"export")
#20009=@"loc,{#10000},1,1,1,6"
locations_default(#20009,#10000,1,1,1,6)
tokeninfo(#20008,6,#20001,2,"from")
#20009=@"loc,{#10000},1,10,1,13"
locations_default(#20009,#10000,1,10,1,13)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,1,"*")
#20011=@"loc,{#10000},1,8,1,8"
locations_default(#20011,#10000,1,8,1,8)
tokeninfo(#20010,4,#20001,3,"'foo'")
#20011=@"loc,{#10000},1,15,1,19"
locations_default(#20011,#10000,1,15,1,19)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,2,"from")
#20013=@"loc,{#10000},1,10,1,13"
locations_default(#20013,#10000,1,10,1,13)
tokeninfo(#20012,8,#20001,4,";")
#20013=@"loc,{#10000},1,20,1,20"
locations_default(#20013,#10000,1,20,1,20)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,4,#20001,3,"'foo'")
hasLocation(#20014,#20006)
#20015=*
tokeninfo(#20015,8,#20001,4,";")
#20016=@"loc,{#10000},1,20,1,20"
locations_default(#20016,#10000,1,20,1,20)
hasLocation(#20015,#20016)
tokeninfo(#20014,0,#20001,5,"")
#20015=@"loc,{#10000},1,21,1,20"
locations_default(#20015,#10000,1,21,1,20)
hasLocation(#20014,#20015)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20016=@"module;{#10000},1,1"
scopes(#20016,3)
scopenodes(#20001,#20016)
scopenesting(#20016,#20000)
isModule(#20001)
#20017=*
tokeninfo(#20017,0,#20001,5,"")
#20018=@"loc,{#10000},1,21,1,20"
locations_default(#20018,#10000,1,21,1,20)
hasLocation(#20017,#20018)
stmts(#20017,28,#20001,0,"export * from 'foo';")
hasLocation(#20017,#20003)
stmtContainers(#20017,#20001)
#20018=*
exprs(#20018,4,#20017,0,"'foo'")
hasLocation(#20018,#20011)
enclosingStmt(#20018,#20017)
exprContainers(#20018,#20001)
literals("foo","'foo'",#20018)
#20019=*
entry_cfg_node(#20019,#20001)
#20020=@"loc,{#10000},1,1,1,0"
@@ -69,9 +69,9 @@ locations_default(#20020,#10000,1,1,1,0)
hasLocation(#20019,#20020)
#20021=*
exit_cfg_node(#20021,#20001)
hasLocation(#20021,#20018)
successor(#20004,#20005)
successor(#20005,#20021)
successor(#20019,#20004)
hasLocation(#20021,#20015)
successor(#20017,#20018)
successor(#20018,#20021)
successor(#20019,#20017)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,125 +9,125 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,32"
locations_default(#20002,#10000,1,1,1,32)
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 ... 'foo';")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,4,#20004,-2,"'foo'")
#20006=@"loc,{#10000},1,27,1,31"
locations_default(#20006,#10000,1,27,1,31)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20004)
exprContainers(#20005,#20001)
literals("foo","'foo'",#20005)
#20007=*
exprs(#20007,86,#20004,0,"x")
#20008=@"loc,{#10000},1,10,1,10"
locations_default(#20008,#10000,1,10,1,10)
hasLocation(#20007,#20008)
enclosingStmt(#20007,#20004)
exprContainers(#20007,#20001)
#20009=*
exprs(#20009,0,#20007,0,"x")
hasLocation(#20009,#20008)
enclosingStmt(#20009,#20004)
exprContainers(#20009,#20001)
literals("x","x",#20009)
#20010=*
exprs(#20010,0,#20007,1,"x")
hasLocation(#20010,#20008)
enclosingStmt(#20010,#20004)
exprContainers(#20010,#20001)
literals("x","x",#20010)
#20011=*
exprs(#20011,86,#20004,1,"y as z")
#20012=@"loc,{#10000},1,13,1,18"
locations_default(#20012,#10000,1,13,1,18)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20004)
exprContainers(#20011,#20001)
#20013=*
exprs(#20013,0,#20011,0,"y")
#20014=@"loc,{#10000},1,13,1,13"
locations_default(#20014,#10000,1,13,1,13)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20004)
exprContainers(#20013,#20001)
literals("y","y",#20013)
#20015=*
exprs(#20015,0,#20011,1,"z")
#20016=@"loc,{#10000},1,18,1,18"
locations_default(#20016,#10000,1,18,1,18)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20004)
exprContainers(#20015,#20001)
literals("z","z",#20015)
#20017=*
lines(#20017,#20001,"export { x, y as z } from 'foo';","")
hasLocation(#20017,#20002)
#20002=*
lines(#20002,#20001,"export { x, y as z } from 'foo';","")
#20003=@"loc,{#10000},1,1,1,32"
locations_default(#20003,#10000,1,1,1,32)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,8,#20001,1,"{")
#20007=@"loc,{#10000},1,8,1,8"
locations_default(#20007,#10000,1,8,1,8)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"x")
#20009=@"loc,{#10000},1,10,1,10"
locations_default(#20009,#10000,1,10,1,10)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,",")
#20011=@"loc,{#10000},1,11,1,11"
locations_default(#20011,#10000,1,11,1,11)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,4,"y")
#20013=@"loc,{#10000},1,13,1,13"
locations_default(#20013,#10000,1,13,1,13)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,5,"as")
#20015=@"loc,{#10000},1,15,1,16"
locations_default(#20015,#10000,1,15,1,16)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,6,#20001,6,"z")
#20017=@"loc,{#10000},1,18,1,18"
locations_default(#20017,#10000,1,18,1,18)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,7,#20001,0,"export")
#20019=@"loc,{#10000},1,1,1,6"
locations_default(#20019,#10000,1,1,1,6)
tokeninfo(#20018,8,#20001,7,"}")
#20019=@"loc,{#10000},1,20,1,20"
locations_default(#20019,#10000,1,20,1,20)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,1,"{")
#20021=@"loc,{#10000},1,8,1,8"
locations_default(#20021,#10000,1,8,1,8)
tokeninfo(#20020,6,#20001,8,"from")
#20021=@"loc,{#10000},1,22,1,25"
locations_default(#20021,#10000,1,22,1,25)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,2,"x")
hasLocation(#20022,#20008)
#20023=*
tokeninfo(#20023,8,#20001,3,",")
#20024=@"loc,{#10000},1,11,1,11"
locations_default(#20024,#10000,1,11,1,11)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,6,#20001,4,"y")
hasLocation(#20025,#20014)
tokeninfo(#20022,4,#20001,9,"'foo'")
#20023=@"loc,{#10000},1,27,1,31"
locations_default(#20023,#10000,1,27,1,31)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,8,#20001,10,";")
#20025=@"loc,{#10000},1,32,1,32"
locations_default(#20025,#10000,1,32,1,32)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,6,#20001,5,"as")
#20027=@"loc,{#10000},1,15,1,16"
locations_default(#20027,#10000,1,15,1,16)
tokeninfo(#20026,0,#20001,11,"")
#20027=@"loc,{#10000},1,33,1,32"
locations_default(#20027,#10000,1,33,1,32)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,6,#20001,6,"z")
hasLocation(#20028,#20016)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20028=@"module;{#10000},1,1"
scopes(#20028,3)
scopenodes(#20001,#20028)
scopenesting(#20028,#20000)
isModule(#20001)
#20029=*
tokeninfo(#20029,8,#20001,7,"}")
#20030=@"loc,{#10000},1,20,1,20"
locations_default(#20030,#10000,1,20,1,20)
hasLocation(#20029,#20030)
stmts(#20029,30,#20001,0,"export ... 'foo';")
hasLocation(#20029,#20003)
stmtContainers(#20029,#20001)
#20030=*
exprs(#20030,4,#20029,-2,"'foo'")
hasLocation(#20030,#20023)
enclosingStmt(#20030,#20029)
exprContainers(#20030,#20001)
literals("foo","'foo'",#20030)
#20031=*
tokeninfo(#20031,6,#20001,8,"from")
#20032=@"loc,{#10000},1,22,1,25"
locations_default(#20032,#10000,1,22,1,25)
hasLocation(#20031,#20032)
exprs(#20031,86,#20029,0,"x")
hasLocation(#20031,#20009)
enclosingStmt(#20031,#20029)
exprContainers(#20031,#20001)
#20032=*
exprs(#20032,0,#20031,0,"x")
hasLocation(#20032,#20009)
enclosingStmt(#20032,#20029)
exprContainers(#20032,#20001)
literals("x","x",#20032)
#20033=*
tokeninfo(#20033,4,#20001,9,"'foo'")
hasLocation(#20033,#20006)
exprs(#20033,0,#20031,1,"x")
hasLocation(#20033,#20009)
enclosingStmt(#20033,#20029)
exprContainers(#20033,#20001)
literals("x","x",#20033)
#20034=*
tokeninfo(#20034,8,#20001,10,";")
#20035=@"loc,{#10000},1,32,1,32"
locations_default(#20035,#10000,1,32,1,32)
exprs(#20034,86,#20029,1,"y as z")
#20035=@"loc,{#10000},1,13,1,18"
locations_default(#20035,#10000,1,13,1,18)
hasLocation(#20034,#20035)
enclosingStmt(#20034,#20029)
exprContainers(#20034,#20001)
#20036=*
tokeninfo(#20036,0,#20001,11,"")
#20037=@"loc,{#10000},1,33,1,32"
locations_default(#20037,#10000,1,33,1,32)
hasLocation(#20036,#20037)
exprs(#20036,0,#20034,0,"y")
hasLocation(#20036,#20013)
enclosingStmt(#20036,#20029)
exprContainers(#20036,#20001)
literals("y","y",#20036)
#20037=*
exprs(#20037,0,#20034,1,"z")
hasLocation(#20037,#20017)
enclosingStmt(#20037,#20029)
exprContainers(#20037,#20001)
literals("z","z",#20037)
#20038=*
entry_cfg_node(#20038,#20001)
#20039=@"loc,{#10000},1,1,1,0"
@@ -135,15 +135,15 @@ locations_default(#20039,#10000,1,1,1,0)
hasLocation(#20038,#20039)
#20040=*
exit_cfg_node(#20040,#20001)
hasLocation(#20040,#20037)
successor(#20004,#20005)
successor(#20011,#20013)
successor(#20015,#20040)
successor(#20013,#20015)
successor(#20007,#20009)
successor(#20010,#20011)
successor(#20009,#20010)
successor(#20005,#20007)
successor(#20038,#20004)
hasLocation(#20040,#20027)
successor(#20029,#20030)
successor(#20034,#20036)
successor(#20037,#20040)
successor(#20036,#20037)
successor(#20031,#20032)
successor(#20033,#20034)
successor(#20032,#20033)
successor(#20030,#20031)
successor(#20038,#20029)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,109 +9,109 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,19"
locations_default(#20002,#10000,1,1,2,19)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=*
stmts(#20004,2,#20001,0,"foo = 42;")
#20005=@"loc,{#10000},1,1,1,9"
locations_default(#20005,#10000,1,1,1,9)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,47,#20004,0,"foo = 42")
#20007=@"loc,{#10000},1,1,1,8"
locations_default(#20007,#10000,1,1,1,8)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,79,#20006,0,"foo")
#20009=@"loc,{#10000},1,1,1,3"
locations_default(#20009,#10000,1,1,1,3)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20004)
exprContainers(#20008,#20001)
literals("foo","foo",#20008)
#20010=@"var;{foo};{#20000}"
variables(#20010,"foo",#20000)
bind(#20008,#20010)
#20011=*
exprs(#20011,3,#20006,1,"42")
#20012=@"loc,{#10000},1,7,1,8"
locations_default(#20012,#10000,1,7,1,8)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20004)
exprContainers(#20011,#20001)
literals("42","42",#20011)
#20013=*
stmts(#20013,29,#20001,1,"export default foo;")
#20014=@"loc,{#10000},2,1,2,19"
locations_default(#20014,#10000,2,1,2,19)
hasLocation(#20013,#20014)
stmtContainers(#20013,#20001)
#20015=*
exprs(#20015,103,#20013,0,"foo")
#20016=@"loc,{#10000},2,16,2,18"
locations_default(#20016,#10000,2,16,2,18)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20013)
exprContainers(#20015,#20001)
literals("foo","foo",#20015)
bind(#20015,#20010)
#20017=*
lines(#20017,#20001,"foo = 42;","
#20002=*
lines(#20002,#20001,"foo = 42;","
")
hasLocation(#20017,#20005)
#20018=*
lines(#20018,#20001,"export default foo;","")
hasLocation(#20018,#20014)
#20003=@"loc,{#10000},1,1,1,9"
locations_default(#20003,#10000,1,1,1,9)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001,"export default foo;","")
#20005=@"loc,{#10000},2,1,2,19"
locations_default(#20005,#10000,2,1,2,19)
hasLocation(#20004,#20005)
numlines(#20001,2,2,0)
#20019=*
tokeninfo(#20019,6,#20001,0,"foo")
hasLocation(#20019,#20009)
#20006=*
tokeninfo(#20006,6,#20001,0,"foo")
#20007=@"loc,{#10000},1,1,1,3"
locations_default(#20007,#10000,1,1,1,3)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,1,"=")
#20009=@"loc,{#10000},1,5,1,5"
locations_default(#20009,#10000,1,5,1,5)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,3,#20001,2,"42")
#20011=@"loc,{#10000},1,7,1,8"
locations_default(#20011,#10000,1,7,1,8)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,3,";")
#20013=@"loc,{#10000},1,9,1,9"
locations_default(#20013,#10000,1,9,1,9)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,7,#20001,4,"export")
#20015=@"loc,{#10000},2,1,2,6"
locations_default(#20015,#10000,2,1,2,6)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,7,#20001,5,"default")
#20017=@"loc,{#10000},2,8,2,14"
locations_default(#20017,#10000,2,8,2,14)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,6,"foo")
#20019=@"loc,{#10000},2,16,2,18"
locations_default(#20019,#10000,2,16,2,18)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,1,"=")
#20021=@"loc,{#10000},1,5,1,5"
locations_default(#20021,#10000,1,5,1,5)
tokeninfo(#20020,8,#20001,7,";")
#20021=@"loc,{#10000},2,19,2,19"
locations_default(#20021,#10000,2,19,2,19)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,3,#20001,2,"42")
hasLocation(#20022,#20012)
#20023=*
tokeninfo(#20023,8,#20001,3,";")
#20024=@"loc,{#10000},1,9,1,9"
locations_default(#20024,#10000,1,9,1,9)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,7,#20001,4,"export")
#20026=@"loc,{#10000},2,1,2,6"
locations_default(#20026,#10000,2,1,2,6)
hasLocation(#20025,#20026)
tokeninfo(#20022,0,#20001,8,"")
#20023=@"loc,{#10000},2,20,2,19"
locations_default(#20023,#10000,2,20,2,19)
hasLocation(#20022,#20023)
toplevels(#20001,0)
#20024=@"loc,{#10000},1,1,2,19"
locations_default(#20024,#10000,1,1,2,19)
hasLocation(#20001,#20024)
#20025=@"module;{#10000},1,1"
scopes(#20025,3)
scopenodes(#20001,#20025)
scopenesting(#20025,#20000)
isModule(#20001)
#20026=*
stmts(#20026,2,#20001,0,"foo = 42;")
hasLocation(#20026,#20003)
stmtContainers(#20026,#20001)
#20027=*
tokeninfo(#20027,7,#20001,5,"default")
#20028=@"loc,{#10000},2,8,2,14"
locations_default(#20028,#10000,2,8,2,14)
exprs(#20027,47,#20026,0,"foo = 42")
#20028=@"loc,{#10000},1,1,1,8"
locations_default(#20028,#10000,1,1,1,8)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20026)
exprContainers(#20027,#20001)
#20029=*
tokeninfo(#20029,6,#20001,6,"foo")
hasLocation(#20029,#20016)
#20030=*
tokeninfo(#20030,8,#20001,7,";")
#20031=@"loc,{#10000},2,19,2,19"
locations_default(#20031,#10000,2,19,2,19)
hasLocation(#20030,#20031)
exprs(#20029,79,#20027,0,"foo")
hasLocation(#20029,#20007)
enclosingStmt(#20029,#20026)
exprContainers(#20029,#20001)
literals("foo","foo",#20029)
#20030=@"var;{foo};{#20000}"
variables(#20030,"foo",#20000)
bind(#20029,#20030)
#20031=*
exprs(#20031,3,#20027,1,"42")
hasLocation(#20031,#20011)
enclosingStmt(#20031,#20026)
exprContainers(#20031,#20001)
literals("42","42",#20031)
#20032=*
tokeninfo(#20032,0,#20001,8,"")
#20033=@"loc,{#10000},2,20,2,19"
locations_default(#20033,#10000,2,20,2,19)
hasLocation(#20032,#20033)
stmts(#20032,29,#20001,1,"export default foo;")
hasLocation(#20032,#20005)
stmtContainers(#20032,#20001)
#20033=*
exprs(#20033,103,#20032,0,"foo")
hasLocation(#20033,#20019)
enclosingStmt(#20033,#20032)
exprContainers(#20033,#20001)
literals("foo","foo",#20033)
bind(#20033,#20030)
#20034=*
entry_cfg_node(#20034,#20001)
#20035=@"loc,{#10000},1,1,1,0"
@@ -119,13 +119,13 @@ locations_default(#20035,#10000,1,1,1,0)
hasLocation(#20034,#20035)
#20036=*
exit_cfg_node(#20036,#20001)
hasLocation(#20036,#20033)
successor(#20013,#20015)
successor(#20015,#20036)
successor(#20004,#20008)
successor(#20011,#20006)
successor(#20008,#20011)
successor(#20006,#20013)
successor(#20034,#20004)
hasLocation(#20036,#20023)
successor(#20032,#20033)
successor(#20033,#20036)
successor(#20026,#20029)
successor(#20031,#20027)
successor(#20029,#20031)
successor(#20027,#20032)
successor(#20034,#20026)
numlines(#10000,2,2,0)
filetype(#10000,"javascript")

View File

@@ -9,141 +9,140 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{C};{#20003}"
variables(#20004,"C",#20003)
#20005=@"local_type_name;{C};{#20003}"
local_type_names(#20005,"C",#20003)
#20002=*
lines(#20002,#20001,"export default class C {} [,]","
")
#20003=@"loc,{#10000},1,1,1,29"
locations_default(#20003,#10000,1,1,1,29)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"export")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
stmts(#20006,29,#20001,0,"export ... ss C {}")
#20007=@"loc,{#10000},1,1,1,25"
locations_default(#20007,#10000,1,1,1,25)
tokeninfo(#20006,7,#20001,1,"default")
#20007=@"loc,{#10000},1,8,1,14"
locations_default(#20007,#10000,1,8,1,14)
hasLocation(#20006,#20007)
stmtContainers(#20006,#20001)
#20008=*
stmts(#20008,26,#20006,0,"class C {}")
#20009=@"loc,{#10000},1,16,1,25"
locations_default(#20009,#10000,1,16,1,25)
tokeninfo(#20008,7,#20001,2,"class")
#20009=@"loc,{#10000},1,16,1,20"
locations_default(#20009,#10000,1,16,1,20)
hasLocation(#20008,#20009)
stmtContainers(#20008,#20001)
#20010=*
exprs(#20010,78,#20008,0,"C")
tokeninfo(#20010,6,#20001,3,"C")
#20011=@"loc,{#10000},1,22,1,22"
locations_default(#20011,#10000,1,22,1,22)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20008)
exprContainers(#20010,#20001)
literals("C","C",#20010)
decl(#20010,#20004)
typedecl(#20010,#20005)
#20012=*
scopes(#20012,10)
scopenodes(#20008,#20012)
scopenesting(#20012,#20003)
#20013=*
properties(#20013,#20008,2,0,"constructor() {}")
#20014=@"loc,{#10000},1,24,1,23"
locations_default(#20014,#10000,1,24,1,23)
hasLocation(#20013,#20014)
#20015=*
exprs(#20015,0,#20013,0,"constructor")
hasLocation(#20015,#20014)
enclosingStmt(#20015,#20008)
exprContainers(#20015,#20001)
literals("constructor","constructor",#20015)
tokeninfo(#20012,8,#20001,4,"{")
#20013=@"loc,{#10000},1,24,1,24"
locations_default(#20013,#10000,1,24,1,24)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"}")
#20015=@"loc,{#10000},1,25,1,25"
locations_default(#20015,#10000,1,25,1,25)
hasLocation(#20014,#20015)
#20016=*
exprs(#20016,9,#20013,1,"() {}")
hasLocation(#20016,#20014)
enclosingStmt(#20016,#20008)
exprContainers(#20016,#20001)
#20017=*
scopes(#20017,1)
scopenodes(#20016,#20017)
scopenesting(#20017,#20012)
#20018=@"var;{arguments};{#20017}"
variables(#20018,"arguments",#20017)
isArgumentsObject(#20018)
#20019=*
stmts(#20019,1,#20016,-2,"{}")
hasLocation(#20019,#20014)
stmtContainers(#20019,#20016)
numlines(#20016,1,0,0)
isMethod(#20013)
tokeninfo(#20016,8,#20001,6,"[")
#20017=@"loc,{#10000},1,27,1,27"
locations_default(#20017,#10000,1,27,1,27)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,7,",")
#20019=@"loc,{#10000},1,28,1,28"
locations_default(#20019,#10000,1,28,1,28)
hasLocation(#20018,#20019)
#20020=*
stmts(#20020,2,#20001,1,"[,]")
#20021=@"loc,{#10000},1,27,1,29"
locations_default(#20021,#10000,1,27,1,29)
tokeninfo(#20020,8,#20001,8,"]")
#20021=@"loc,{#10000},1,29,1,29"
locations_default(#20021,#10000,1,29,1,29)
hasLocation(#20020,#20021)
stmtContainers(#20020,#20001)
#20022=*
exprs(#20022,7,#20020,0,"[,]")
hasLocation(#20022,#20021)
enclosingStmt(#20022,#20020)
exprContainers(#20022,#20001)
arraySize(#20022,1)
#20023=*
lines(#20023,#20001,"export default class C {} [,]","
")
#20024=@"loc,{#10000},1,1,1,29"
locations_default(#20024,#10000,1,1,1,29)
hasLocation(#20023,#20024)
numlines(#20001,1,1,0)
#20025=*
tokeninfo(#20025,7,#20001,0,"export")
#20026=@"loc,{#10000},1,1,1,6"
locations_default(#20026,#10000,1,1,1,6)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,7,#20001,1,"default")
#20028=@"loc,{#10000},1,8,1,14"
locations_default(#20028,#10000,1,8,1,14)
hasLocation(#20027,#20028)
#20029=*
tokeninfo(#20029,7,#20001,2,"class")
#20030=@"loc,{#10000},1,16,1,20"
locations_default(#20030,#10000,1,16,1,20)
hasLocation(#20029,#20030)
#20031=*
tokeninfo(#20031,6,#20001,3,"C")
hasLocation(#20031,#20011)
tokeninfo(#20022,0,#20001,9,"")
#20023=@"loc,{#10000},2,1,2,0"
locations_default(#20023,#10000,2,1,2,0)
hasLocation(#20022,#20023)
toplevels(#20001,0)
#20024=@"loc,{#10000},1,1,2,0"
locations_default(#20024,#10000,1,1,2,0)
hasLocation(#20001,#20024)
#20025=@"module;{#10000},1,1"
scopes(#20025,3)
scopenodes(#20001,#20025)
scopenesting(#20025,#20000)
isModule(#20001)
#20026=@"var;{C};{#20025}"
variables(#20026,"C",#20025)
#20027=@"local_type_name;{C};{#20025}"
local_type_names(#20027,"C",#20025)
#20028=*
stmts(#20028,29,#20001,0,"export ... ss C {}")
#20029=@"loc,{#10000},1,1,1,25"
locations_default(#20029,#10000,1,1,1,25)
hasLocation(#20028,#20029)
stmtContainers(#20028,#20001)
#20030=*
stmts(#20030,26,#20028,0,"class C {}")
#20031=@"loc,{#10000},1,16,1,25"
locations_default(#20031,#10000,1,16,1,25)
hasLocation(#20030,#20031)
stmtContainers(#20030,#20001)
#20032=*
tokeninfo(#20032,8,#20001,4,"{")
#20033=@"loc,{#10000},1,24,1,24"
locations_default(#20033,#10000,1,24,1,24)
hasLocation(#20032,#20033)
exprs(#20032,78,#20030,0,"C")
hasLocation(#20032,#20011)
enclosingStmt(#20032,#20030)
exprContainers(#20032,#20001)
literals("C","C",#20032)
decl(#20032,#20026)
typedecl(#20032,#20027)
#20033=*
scopes(#20033,10)
scopenodes(#20030,#20033)
scopenesting(#20033,#20025)
#20034=*
tokeninfo(#20034,8,#20001,5,"}")
#20035=@"loc,{#10000},1,25,1,25"
locations_default(#20035,#10000,1,25,1,25)
properties(#20034,#20030,2,0,"constructor() {}")
#20035=@"loc,{#10000},1,24,1,23"
locations_default(#20035,#10000,1,24,1,23)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,8,#20001,6,"[")
#20037=@"loc,{#10000},1,27,1,27"
locations_default(#20037,#10000,1,27,1,27)
hasLocation(#20036,#20037)
exprs(#20036,0,#20034,0,"constructor")
hasLocation(#20036,#20035)
enclosingStmt(#20036,#20030)
exprContainers(#20036,#20001)
literals("constructor","constructor",#20036)
#20037=*
exprs(#20037,9,#20034,1,"() {}")
hasLocation(#20037,#20035)
enclosingStmt(#20037,#20030)
exprContainers(#20037,#20001)
#20038=*
tokeninfo(#20038,8,#20001,7,",")
#20039=@"loc,{#10000},1,28,1,28"
locations_default(#20039,#10000,1,28,1,28)
hasLocation(#20038,#20039)
scopes(#20038,1)
scopenodes(#20037,#20038)
scopenesting(#20038,#20033)
#20039=@"var;{arguments};{#20038}"
variables(#20039,"arguments",#20038)
isArgumentsObject(#20039)
#20040=*
tokeninfo(#20040,8,#20001,8,"]")
#20041=@"loc,{#10000},1,29,1,29"
locations_default(#20041,#10000,1,29,1,29)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,0,#20001,9,"")
#20043=@"loc,{#10000},2,1,2,0"
locations_default(#20043,#10000,2,1,2,0)
hasLocation(#20042,#20043)
stmts(#20040,1,#20037,-2,"{}")
hasLocation(#20040,#20035)
stmtContainers(#20040,#20037)
isMethod(#20034)
#20041=*
stmts(#20041,2,#20001,1,"[,]")
#20042=@"loc,{#10000},1,27,1,29"
locations_default(#20042,#10000,1,27,1,29)
hasLocation(#20041,#20042)
stmtContainers(#20041,#20001)
#20043=*
exprs(#20043,7,#20041,0,"[,]")
hasLocation(#20043,#20042)
enclosingStmt(#20043,#20041)
exprContainers(#20043,#20001)
arraySize(#20043,1)
#20044=*
entry_cfg_node(#20044,#20001)
#20045=@"loc,{#10000},1,1,1,0"
@@ -151,23 +150,23 @@ locations_default(#20045,#10000,1,1,1,0)
hasLocation(#20044,#20045)
#20046=*
exit_cfg_node(#20046,#20001)
hasLocation(#20046,#20043)
successor(#20020,#20022)
successor(#20022,#20046)
successor(#20006,#20010)
successor(#20016,#20013)
hasLocation(#20046,#20023)
successor(#20041,#20043)
successor(#20043,#20046)
successor(#20028,#20032)
successor(#20037,#20034)
#20047=*
entry_cfg_node(#20047,#20016)
hasLocation(#20047,#20014)
entry_cfg_node(#20047,#20037)
hasLocation(#20047,#20035)
#20048=*
exit_cfg_node(#20048,#20016)
hasLocation(#20048,#20014)
successor(#20019,#20048)
successor(#20047,#20019)
successor(#20015,#20016)
successor(#20013,#20008)
successor(#20010,#20015)
successor(#20008,#20020)
successor(#20044,#20006)
exit_cfg_node(#20048,#20037)
hasLocation(#20048,#20035)
successor(#20040,#20048)
successor(#20047,#20040)
successor(#20036,#20037)
successor(#20034,#20030)
successor(#20032,#20036)
successor(#20030,#20041)
successor(#20044,#20028)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,415 +9,414 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,8,0"
locations_default(#20002,#10000,1,1,8,0)
hasLocation(#20001,#20002)
#20003=@"var;{f};{#20000}"
variables(#20003,"f",#20000)
#20002=*
lines(#20002,#20001,"for (let x of [1,2,3]) {","
")
#20003=@"loc,{#10000},1,1,1,24"
locations_default(#20003,#10000,1,1,1,24)
hasLocation(#20002,#20003)
#20004=*
stmts(#20004,21,#20001,0,"for (le ... x+1;\n}")
#20005=@"loc,{#10000},1,1,3,1"
locations_default(#20005,#10000,1,1,3,1)
lines(#20004,#20001," let y = x+1;","
")
#20005=@"loc,{#10000},2,1,2,16"
locations_default(#20005,#10000,2,1,2,16)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
#20006=*
exprs(#20006,7,#20004,1,"[1,2,3]")
#20007=@"loc,{#10000},1,15,1,21"
locations_default(#20007,#10000,1,15,1,21)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,3,#20006,0,"1")
#20009=@"loc,{#10000},1,16,1,16"
locations_default(#20009,#10000,1,16,1,16)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20004)
exprContainers(#20008,#20001)
literals("1","1",#20008)
#20010=*
exprs(#20010,3,#20006,1,"2")
#20011=@"loc,{#10000},1,18,1,18"
locations_default(#20011,#10000,1,18,1,18)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20004)
exprContainers(#20010,#20001)
literals("2","2",#20010)
#20012=*
exprs(#20012,3,#20006,2,"3")
#20013=@"loc,{#10000},1,20,1,20"
locations_default(#20013,#10000,1,20,1,20)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20004)
exprContainers(#20012,#20001)
literals("3","3",#20012)
arraySize(#20006,3)
#20014=*
scopes(#20014,6)
scopenodes(#20004,#20014)
scopenesting(#20014,#20000)
#20015=@"var;{x};{#20014}"
variables(#20015,"x",#20014)
#20016=*
stmts(#20016,23,#20004,0,"let x")
#20017=@"loc,{#10000},1,6,1,10"
locations_default(#20017,#10000,1,6,1,10)
hasLocation(#20016,#20017)
stmtContainers(#20016,#20001)
#20018=*
exprs(#20018,64,#20016,0,"x")
#20019=@"loc,{#10000},1,10,1,10"
locations_default(#20019,#10000,1,10,1,10)
hasLocation(#20018,#20019)
enclosingStmt(#20018,#20016)
exprContainers(#20018,#20001)
#20020=*
exprs(#20020,78,#20018,0,"x")
hasLocation(#20020,#20019)
enclosingStmt(#20020,#20016)
exprContainers(#20020,#20001)
literals("x","x",#20020)
decl(#20020,#20015)
#20021=*
stmts(#20021,1,#20004,2,"{\n let y = x+1;\n}")
#20022=@"loc,{#10000},1,24,3,1"
locations_default(#20022,#10000,1,24,3,1)
hasLocation(#20021,#20022)
stmtContainers(#20021,#20001)
#20023=*
scopes(#20023,4)
scopenodes(#20021,#20023)
scopenesting(#20023,#20014)
#20024=@"var;{y};{#20023}"
variables(#20024,"y",#20023)
#20025=*
stmts(#20025,23,#20021,0,"let y = x+1;")
#20026=@"loc,{#10000},2,5,2,16"
locations_default(#20026,#10000,2,5,2,16)
hasLocation(#20025,#20026)
stmtContainers(#20025,#20001)
#20027=*
exprs(#20027,64,#20025,0,"y = x+1")
#20028=@"loc,{#10000},2,9,2,15"
locations_default(#20028,#10000,2,9,2,15)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20025)
exprContainers(#20027,#20001)
#20029=*
exprs(#20029,78,#20027,0,"y")
#20030=@"loc,{#10000},2,9,2,9"
locations_default(#20030,#10000,2,9,2,9)
hasLocation(#20029,#20030)
enclosingStmt(#20029,#20025)
exprContainers(#20029,#20001)
literals("y","y",#20029)
decl(#20029,#20024)
#20031=*
exprs(#20031,34,#20027,1,"x+1")
#20032=@"loc,{#10000},2,13,2,15"
locations_default(#20032,#10000,2,13,2,15)
hasLocation(#20031,#20032)
enclosingStmt(#20031,#20025)
exprContainers(#20031,#20001)
#20033=*
exprs(#20033,79,#20031,0,"x")
#20034=@"loc,{#10000},2,13,2,13"
locations_default(#20034,#10000,2,13,2,13)
hasLocation(#20033,#20034)
enclosingStmt(#20033,#20025)
exprContainers(#20033,#20001)
literals("x","x",#20033)
bind(#20033,#20015)
#20035=*
exprs(#20035,3,#20031,1,"1")
#20036=@"loc,{#10000},2,15,2,15"
locations_default(#20036,#10000,2,15,2,15)
hasLocation(#20035,#20036)
enclosingStmt(#20035,#20025)
exprContainers(#20035,#20001)
literals("1","1",#20035)
#20037=*
stmts(#20037,17,#20001,1,"functio ... []);\n}")
#20038=@"loc,{#10000},5,1,7,1"
locations_default(#20038,#10000,5,1,7,1)
hasLocation(#20037,#20038)
stmtContainers(#20037,#20001)
#20039=*
exprs(#20039,78,#20037,-1,"f")
#20040=@"loc,{#10000},5,10,5,10"
locations_default(#20040,#10000,5,10,5,10)
hasLocation(#20039,#20040)
exprContainers(#20039,#20037)
literals("f","f",#20039)
decl(#20039,#20003)
#20041=*
scopes(#20041,1)
scopenodes(#20037,#20041)
scopenesting(#20041,#20000)
#20042=@"var;{x};{#20041}"
variables(#20042,"x",#20041)
#20043=@"var;{arguments};{#20041}"
variables(#20043,"arguments",#20041)
isArgumentsObject(#20043)
#20044=*
stmts(#20044,1,#20037,-2,"{\n f ... []);\n}")
#20045=@"loc,{#10000},5,14,7,1"
locations_default(#20045,#10000,5,14,7,1)
hasLocation(#20044,#20045)
stmtContainers(#20044,#20037)
#20046=*
stmts(#20046,21,#20044,0,"for (var x of []);")
#20047=@"loc,{#10000},6,5,6,22"
locations_default(#20047,#10000,6,5,6,22)
hasLocation(#20046,#20047)
stmtContainers(#20046,#20037)
#20048=*
exprs(#20048,7,#20046,1,"[]")
#20049=@"loc,{#10000},6,19,6,20"
locations_default(#20049,#10000,6,19,6,20)
hasLocation(#20048,#20049)
enclosingStmt(#20048,#20046)
exprContainers(#20048,#20037)
arraySize(#20048,0)
#20050=*
stmts(#20050,18,#20046,0,"var x")
#20051=@"loc,{#10000},6,10,6,14"
locations_default(#20051,#10000,6,10,6,14)
hasLocation(#20050,#20051)
stmtContainers(#20050,#20037)
#20052=*
exprs(#20052,64,#20050,0,"x")
#20053=@"loc,{#10000},6,14,6,14"
locations_default(#20053,#10000,6,14,6,14)
hasLocation(#20052,#20053)
enclosingStmt(#20052,#20050)
exprContainers(#20052,#20037)
#20054=*
exprs(#20054,78,#20052,0,"x")
hasLocation(#20054,#20053)
enclosingStmt(#20054,#20050)
exprContainers(#20054,#20037)
literals("x","x",#20054)
decl(#20054,#20042)
#20055=*
stmts(#20055,0,#20046,2,";")
#20056=@"loc,{#10000},6,22,6,22"
locations_default(#20056,#10000,6,22,6,22)
hasLocation(#20055,#20056)
stmtContainers(#20055,#20037)
numlines(#20037,3,3,0)
#20057=*
lines(#20057,#20001,"for (let x of [1,2,3]) {","
")
#20058=@"loc,{#10000},1,1,1,24"
locations_default(#20058,#10000,1,1,1,24)
hasLocation(#20057,#20058)
#20059=*
lines(#20059,#20001," let y = x+1;","
")
#20060=@"loc,{#10000},2,1,2,16"
locations_default(#20060,#10000,2,1,2,16)
hasLocation(#20059,#20060)
indentation(#10000,2," ",4)
#20061=*
lines(#20061,#20001,"}","
#20006=*
lines(#20006,#20001,"}","
")
#20062=@"loc,{#10000},3,1,3,1"
locations_default(#20062,#10000,3,1,3,1)
#20007=@"loc,{#10000},3,1,3,1"
locations_default(#20007,#10000,3,1,3,1)
hasLocation(#20006,#20007)
#20008=*
lines(#20008,#20001,"","
")
#20009=@"loc,{#10000},4,1,4,0"
locations_default(#20009,#10000,4,1,4,0)
hasLocation(#20008,#20009)
#20010=*
lines(#20010,#20001,"function f() {","
")
#20011=@"loc,{#10000},5,1,5,14"
locations_default(#20011,#10000,5,1,5,14)
hasLocation(#20010,#20011)
#20012=*
lines(#20012,#20001," for (var x of []);","
")
#20013=@"loc,{#10000},6,1,6,22"
locations_default(#20013,#10000,6,1,6,22)
hasLocation(#20012,#20013)
indentation(#10000,6," ",4)
#20014=*
lines(#20014,#20001,"}","
")
#20015=@"loc,{#10000},7,1,7,1"
locations_default(#20015,#10000,7,1,7,1)
hasLocation(#20014,#20015)
numlines(#20001,7,6,0)
#20016=*
tokeninfo(#20016,7,#20001,0,"for")
#20017=@"loc,{#10000},1,1,1,3"
locations_default(#20017,#10000,1,1,1,3)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,1,"(")
#20019=@"loc,{#10000},1,5,1,5"
locations_default(#20019,#10000,1,5,1,5)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,7,#20001,2,"let")
#20021=@"loc,{#10000},1,6,1,8"
locations_default(#20021,#10000,1,6,1,8)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,3,"x")
#20023=@"loc,{#10000},1,10,1,10"
locations_default(#20023,#10000,1,10,1,10)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,4,"of")
#20025=@"loc,{#10000},1,12,1,13"
locations_default(#20025,#10000,1,12,1,13)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,5,"[")
#20027=@"loc,{#10000},1,15,1,15"
locations_default(#20027,#10000,1,15,1,15)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,3,#20001,6,"1")
#20029=@"loc,{#10000},1,16,1,16"
locations_default(#20029,#10000,1,16,1,16)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,7,",")
#20031=@"loc,{#10000},1,17,1,17"
locations_default(#20031,#10000,1,17,1,17)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,3,#20001,8,"2")
#20033=@"loc,{#10000},1,18,1,18"
locations_default(#20033,#10000,1,18,1,18)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,8,#20001,9,",")
#20035=@"loc,{#10000},1,19,1,19"
locations_default(#20035,#10000,1,19,1,19)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,3,#20001,10,"3")
#20037=@"loc,{#10000},1,20,1,20"
locations_default(#20037,#10000,1,20,1,20)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,8,#20001,11,"]")
#20039=@"loc,{#10000},1,21,1,21"
locations_default(#20039,#10000,1,21,1,21)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,8,#20001,12,")")
#20041=@"loc,{#10000},1,22,1,22"
locations_default(#20041,#10000,1,22,1,22)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,8,#20001,13,"{")
#20043=@"loc,{#10000},1,24,1,24"
locations_default(#20043,#10000,1,24,1,24)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,7,#20001,14,"let")
#20045=@"loc,{#10000},2,5,2,7"
locations_default(#20045,#10000,2,5,2,7)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,6,#20001,15,"y")
#20047=@"loc,{#10000},2,9,2,9"
locations_default(#20047,#10000,2,9,2,9)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,8,#20001,16,"=")
#20049=@"loc,{#10000},2,11,2,11"
locations_default(#20049,#10000,2,11,2,11)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,6,#20001,17,"x")
#20051=@"loc,{#10000},2,13,2,13"
locations_default(#20051,#10000,2,13,2,13)
hasLocation(#20050,#20051)
#20052=*
tokeninfo(#20052,8,#20001,18,"+")
#20053=@"loc,{#10000},2,14,2,14"
locations_default(#20053,#10000,2,14,2,14)
hasLocation(#20052,#20053)
#20054=*
tokeninfo(#20054,3,#20001,19,"1")
#20055=@"loc,{#10000},2,15,2,15"
locations_default(#20055,#10000,2,15,2,15)
hasLocation(#20054,#20055)
#20056=*
tokeninfo(#20056,8,#20001,20,";")
#20057=@"loc,{#10000},2,16,2,16"
locations_default(#20057,#10000,2,16,2,16)
hasLocation(#20056,#20057)
#20058=*
tokeninfo(#20058,8,#20001,21,"}")
hasLocation(#20058,#20007)
#20059=*
tokeninfo(#20059,7,#20001,22,"function")
#20060=@"loc,{#10000},5,1,5,8"
locations_default(#20060,#10000,5,1,5,8)
hasLocation(#20059,#20060)
#20061=*
tokeninfo(#20061,6,#20001,23,"f")
#20062=@"loc,{#10000},5,10,5,10"
locations_default(#20062,#10000,5,10,5,10)
hasLocation(#20061,#20062)
#20063=*
lines(#20063,#20001,"","
")
#20064=@"loc,{#10000},4,1,4,0"
locations_default(#20064,#10000,4,1,4,0)
tokeninfo(#20063,8,#20001,24,"(")
#20064=@"loc,{#10000},5,11,5,11"
locations_default(#20064,#10000,5,11,5,11)
hasLocation(#20063,#20064)
#20065=*
lines(#20065,#20001,"function f() {","
")
#20066=@"loc,{#10000},5,1,5,14"
locations_default(#20066,#10000,5,1,5,14)
tokeninfo(#20065,8,#20001,25,")")
#20066=@"loc,{#10000},5,12,5,12"
locations_default(#20066,#10000,5,12,5,12)
hasLocation(#20065,#20066)
#20067=*
lines(#20067,#20001," for (var x of []);","
")
#20068=@"loc,{#10000},6,1,6,22"
locations_default(#20068,#10000,6,1,6,22)
tokeninfo(#20067,8,#20001,26,"{")
#20068=@"loc,{#10000},5,14,5,14"
locations_default(#20068,#10000,5,14,5,14)
hasLocation(#20067,#20068)
indentation(#10000,6," ",4)
#20069=*
lines(#20069,#20001,"}","
")
#20070=@"loc,{#10000},7,1,7,1"
locations_default(#20070,#10000,7,1,7,1)
tokeninfo(#20069,7,#20001,27,"for")
#20070=@"loc,{#10000},6,5,6,7"
locations_default(#20070,#10000,6,5,6,7)
hasLocation(#20069,#20070)
numlines(#20001,7,6,0)
#20071=*
tokeninfo(#20071,7,#20001,0,"for")
#20072=@"loc,{#10000},1,1,1,3"
locations_default(#20072,#10000,1,1,1,3)
tokeninfo(#20071,8,#20001,28,"(")
#20072=@"loc,{#10000},6,9,6,9"
locations_default(#20072,#10000,6,9,6,9)
hasLocation(#20071,#20072)
#20073=*
tokeninfo(#20073,8,#20001,1,"(")
#20074=@"loc,{#10000},1,5,1,5"
locations_default(#20074,#10000,1,5,1,5)
tokeninfo(#20073,7,#20001,29,"var")
#20074=@"loc,{#10000},6,10,6,12"
locations_default(#20074,#10000,6,10,6,12)
hasLocation(#20073,#20074)
#20075=*
tokeninfo(#20075,7,#20001,2,"let")
#20076=@"loc,{#10000},1,6,1,8"
locations_default(#20076,#10000,1,6,1,8)
tokeninfo(#20075,6,#20001,30,"x")
#20076=@"loc,{#10000},6,14,6,14"
locations_default(#20076,#10000,6,14,6,14)
hasLocation(#20075,#20076)
#20077=*
tokeninfo(#20077,6,#20001,3,"x")
hasLocation(#20077,#20019)
#20078=*
tokeninfo(#20078,6,#20001,4,"of")
#20079=@"loc,{#10000},1,12,1,13"
locations_default(#20079,#10000,1,12,1,13)
hasLocation(#20078,#20079)
#20080=*
tokeninfo(#20080,8,#20001,5,"[")
#20081=@"loc,{#10000},1,15,1,15"
locations_default(#20081,#10000,1,15,1,15)
hasLocation(#20080,#20081)
#20082=*
tokeninfo(#20082,3,#20001,6,"1")
hasLocation(#20082,#20009)
tokeninfo(#20077,6,#20001,31,"of")
#20078=@"loc,{#10000},6,16,6,17"
locations_default(#20078,#10000,6,16,6,17)
hasLocation(#20077,#20078)
#20079=*
tokeninfo(#20079,8,#20001,32,"[")
#20080=@"loc,{#10000},6,19,6,19"
locations_default(#20080,#10000,6,19,6,19)
hasLocation(#20079,#20080)
#20081=*
tokeninfo(#20081,8,#20001,33,"]")
#20082=@"loc,{#10000},6,20,6,20"
locations_default(#20082,#10000,6,20,6,20)
hasLocation(#20081,#20082)
#20083=*
tokeninfo(#20083,8,#20001,7,",")
#20084=@"loc,{#10000},1,17,1,17"
locations_default(#20084,#10000,1,17,1,17)
tokeninfo(#20083,8,#20001,34,")")
#20084=@"loc,{#10000},6,21,6,21"
locations_default(#20084,#10000,6,21,6,21)
hasLocation(#20083,#20084)
#20085=*
tokeninfo(#20085,3,#20001,8,"2")
hasLocation(#20085,#20011)
#20086=*
tokeninfo(#20086,8,#20001,9,",")
#20087=@"loc,{#10000},1,19,1,19"
locations_default(#20087,#10000,1,19,1,19)
hasLocation(#20086,#20087)
tokeninfo(#20085,8,#20001,35,";")
#20086=@"loc,{#10000},6,22,6,22"
locations_default(#20086,#10000,6,22,6,22)
hasLocation(#20085,#20086)
#20087=*
tokeninfo(#20087,8,#20001,36,"}")
hasLocation(#20087,#20015)
#20088=*
tokeninfo(#20088,3,#20001,10,"3")
hasLocation(#20088,#20013)
#20089=*
tokeninfo(#20089,8,#20001,11,"]")
#20090=@"loc,{#10000},1,21,1,21"
locations_default(#20090,#10000,1,21,1,21)
hasLocation(#20089,#20090)
#20091=*
tokeninfo(#20091,8,#20001,12,")")
#20092=@"loc,{#10000},1,22,1,22"
locations_default(#20092,#10000,1,22,1,22)
hasLocation(#20091,#20092)
#20093=*
tokeninfo(#20093,8,#20001,13,"{")
#20094=@"loc,{#10000},1,24,1,24"
locations_default(#20094,#10000,1,24,1,24)
hasLocation(#20093,#20094)
#20095=*
tokeninfo(#20095,7,#20001,14,"let")
#20096=@"loc,{#10000},2,5,2,7"
locations_default(#20096,#10000,2,5,2,7)
hasLocation(#20095,#20096)
tokeninfo(#20088,0,#20001,37,"")
#20089=@"loc,{#10000},8,1,8,0"
locations_default(#20089,#10000,8,1,8,0)
hasLocation(#20088,#20089)
toplevels(#20001,0)
#20090=@"loc,{#10000},1,1,8,0"
locations_default(#20090,#10000,1,1,8,0)
hasLocation(#20001,#20090)
#20091=@"var;{f};{#20000}"
variables(#20091,"f",#20000)
#20092=*
stmts(#20092,21,#20001,0,"for (le ... x+1;\n}")
#20093=@"loc,{#10000},1,1,3,1"
locations_default(#20093,#10000,1,1,3,1)
hasLocation(#20092,#20093)
stmtContainers(#20092,#20001)
#20094=*
exprs(#20094,7,#20092,1,"[1,2,3]")
#20095=@"loc,{#10000},1,15,1,21"
locations_default(#20095,#10000,1,15,1,21)
hasLocation(#20094,#20095)
enclosingStmt(#20094,#20092)
exprContainers(#20094,#20001)
#20096=*
exprs(#20096,3,#20094,0,"1")
hasLocation(#20096,#20029)
enclosingStmt(#20096,#20092)
exprContainers(#20096,#20001)
literals("1","1",#20096)
#20097=*
tokeninfo(#20097,6,#20001,15,"y")
hasLocation(#20097,#20030)
exprs(#20097,3,#20094,1,"2")
hasLocation(#20097,#20033)
enclosingStmt(#20097,#20092)
exprContainers(#20097,#20001)
literals("2","2",#20097)
#20098=*
tokeninfo(#20098,8,#20001,16,"=")
#20099=@"loc,{#10000},2,11,2,11"
locations_default(#20099,#10000,2,11,2,11)
hasLocation(#20098,#20099)
#20100=*
tokeninfo(#20100,6,#20001,17,"x")
hasLocation(#20100,#20034)
exprs(#20098,3,#20094,2,"3")
hasLocation(#20098,#20037)
enclosingStmt(#20098,#20092)
exprContainers(#20098,#20001)
literals("3","3",#20098)
arraySize(#20094,3)
#20099=*
scopes(#20099,6)
scopenodes(#20092,#20099)
scopenesting(#20099,#20000)
#20100=@"var;{x};{#20099}"
variables(#20100,"x",#20099)
#20101=*
tokeninfo(#20101,8,#20001,18,"+")
#20102=@"loc,{#10000},2,14,2,14"
locations_default(#20102,#10000,2,14,2,14)
stmts(#20101,23,#20092,0,"let x")
#20102=@"loc,{#10000},1,6,1,10"
locations_default(#20102,#10000,1,6,1,10)
hasLocation(#20101,#20102)
stmtContainers(#20101,#20001)
#20103=*
tokeninfo(#20103,3,#20001,19,"1")
hasLocation(#20103,#20036)
exprs(#20103,64,#20101,0,"x")
hasLocation(#20103,#20023)
enclosingStmt(#20103,#20101)
exprContainers(#20103,#20001)
#20104=*
tokeninfo(#20104,8,#20001,20,";")
#20105=@"loc,{#10000},2,16,2,16"
locations_default(#20105,#10000,2,16,2,16)
hasLocation(#20104,#20105)
#20106=*
tokeninfo(#20106,8,#20001,21,"}")
hasLocation(#20106,#20062)
exprs(#20104,78,#20103,0,"x")
hasLocation(#20104,#20023)
enclosingStmt(#20104,#20101)
exprContainers(#20104,#20001)
literals("x","x",#20104)
decl(#20104,#20100)
#20105=*
stmts(#20105,1,#20092,2,"{\n let y = x+1;\n}")
#20106=@"loc,{#10000},1,24,3,1"
locations_default(#20106,#10000,1,24,3,1)
hasLocation(#20105,#20106)
stmtContainers(#20105,#20001)
#20107=*
tokeninfo(#20107,7,#20001,22,"function")
#20108=@"loc,{#10000},5,1,5,8"
locations_default(#20108,#10000,5,1,5,8)
hasLocation(#20107,#20108)
scopes(#20107,4)
scopenodes(#20105,#20107)
scopenesting(#20107,#20099)
#20108=@"var;{y};{#20107}"
variables(#20108,"y",#20107)
#20109=*
tokeninfo(#20109,6,#20001,23,"f")
hasLocation(#20109,#20040)
#20110=*
tokeninfo(#20110,8,#20001,24,"(")
#20111=@"loc,{#10000},5,11,5,11"
locations_default(#20111,#10000,5,11,5,11)
hasLocation(#20110,#20111)
#20112=*
tokeninfo(#20112,8,#20001,25,")")
#20113=@"loc,{#10000},5,12,5,12"
locations_default(#20113,#10000,5,12,5,12)
hasLocation(#20112,#20113)
stmts(#20109,23,#20105,0,"let y = x+1;")
#20110=@"loc,{#10000},2,5,2,16"
locations_default(#20110,#10000,2,5,2,16)
hasLocation(#20109,#20110)
stmtContainers(#20109,#20001)
#20111=*
exprs(#20111,64,#20109,0,"y = x+1")
#20112=@"loc,{#10000},2,9,2,15"
locations_default(#20112,#10000,2,9,2,15)
hasLocation(#20111,#20112)
enclosingStmt(#20111,#20109)
exprContainers(#20111,#20001)
#20113=*
exprs(#20113,78,#20111,0,"y")
hasLocation(#20113,#20047)
enclosingStmt(#20113,#20109)
exprContainers(#20113,#20001)
literals("y","y",#20113)
decl(#20113,#20108)
#20114=*
tokeninfo(#20114,8,#20001,26,"{")
#20115=@"loc,{#10000},5,14,5,14"
locations_default(#20115,#10000,5,14,5,14)
exprs(#20114,34,#20111,1,"x+1")
#20115=@"loc,{#10000},2,13,2,15"
locations_default(#20115,#10000,2,13,2,15)
hasLocation(#20114,#20115)
enclosingStmt(#20114,#20109)
exprContainers(#20114,#20001)
#20116=*
tokeninfo(#20116,7,#20001,27,"for")
#20117=@"loc,{#10000},6,5,6,7"
locations_default(#20117,#10000,6,5,6,7)
hasLocation(#20116,#20117)
exprs(#20116,79,#20114,0,"x")
hasLocation(#20116,#20051)
enclosingStmt(#20116,#20109)
exprContainers(#20116,#20001)
literals("x","x",#20116)
bind(#20116,#20100)
#20117=*
exprs(#20117,3,#20114,1,"1")
hasLocation(#20117,#20055)
enclosingStmt(#20117,#20109)
exprContainers(#20117,#20001)
literals("1","1",#20117)
#20118=*
tokeninfo(#20118,8,#20001,28,"(")
#20119=@"loc,{#10000},6,9,6,9"
locations_default(#20119,#10000,6,9,6,9)
stmts(#20118,17,#20001,1,"functio ... []);\n}")
#20119=@"loc,{#10000},5,1,7,1"
locations_default(#20119,#10000,5,1,7,1)
hasLocation(#20118,#20119)
stmtContainers(#20118,#20001)
#20120=*
tokeninfo(#20120,7,#20001,29,"var")
#20121=@"loc,{#10000},6,10,6,12"
locations_default(#20121,#10000,6,10,6,12)
hasLocation(#20120,#20121)
#20122=*
tokeninfo(#20122,6,#20001,30,"x")
hasLocation(#20122,#20053)
#20123=*
tokeninfo(#20123,6,#20001,31,"of")
#20124=@"loc,{#10000},6,16,6,17"
locations_default(#20124,#10000,6,16,6,17)
hasLocation(#20123,#20124)
#20125=*
tokeninfo(#20125,8,#20001,32,"[")
#20126=@"loc,{#10000},6,19,6,19"
locations_default(#20126,#10000,6,19,6,19)
hasLocation(#20125,#20126)
#20127=*
tokeninfo(#20127,8,#20001,33,"]")
#20128=@"loc,{#10000},6,20,6,20"
locations_default(#20128,#10000,6,20,6,20)
hasLocation(#20127,#20128)
#20129=*
tokeninfo(#20129,8,#20001,34,")")
#20130=@"loc,{#10000},6,21,6,21"
locations_default(#20130,#10000,6,21,6,21)
hasLocation(#20129,#20130)
#20131=*
tokeninfo(#20131,8,#20001,35,";")
hasLocation(#20131,#20056)
exprs(#20120,78,#20118,-1,"f")
hasLocation(#20120,#20062)
exprContainers(#20120,#20118)
literals("f","f",#20120)
decl(#20120,#20091)
#20121=*
scopes(#20121,1)
scopenodes(#20118,#20121)
scopenesting(#20121,#20000)
#20122=@"var;{x};{#20121}"
variables(#20122,"x",#20121)
#20123=@"var;{arguments};{#20121}"
variables(#20123,"arguments",#20121)
isArgumentsObject(#20123)
#20124=*
stmts(#20124,1,#20118,-2,"{\n f ... []);\n}")
#20125=@"loc,{#10000},5,14,7,1"
locations_default(#20125,#10000,5,14,7,1)
hasLocation(#20124,#20125)
stmtContainers(#20124,#20118)
#20126=*
stmts(#20126,21,#20124,0,"for (var x of []);")
#20127=@"loc,{#10000},6,5,6,22"
locations_default(#20127,#10000,6,5,6,22)
hasLocation(#20126,#20127)
stmtContainers(#20126,#20118)
#20128=*
exprs(#20128,7,#20126,1,"[]")
#20129=@"loc,{#10000},6,19,6,20"
locations_default(#20129,#10000,6,19,6,20)
hasLocation(#20128,#20129)
enclosingStmt(#20128,#20126)
exprContainers(#20128,#20118)
arraySize(#20128,0)
#20130=*
stmts(#20130,18,#20126,0,"var x")
#20131=@"loc,{#10000},6,10,6,14"
locations_default(#20131,#10000,6,10,6,14)
hasLocation(#20130,#20131)
stmtContainers(#20130,#20118)
#20132=*
tokeninfo(#20132,8,#20001,36,"}")
hasLocation(#20132,#20070)
exprs(#20132,64,#20130,0,"x")
hasLocation(#20132,#20076)
enclosingStmt(#20132,#20130)
exprContainers(#20132,#20118)
#20133=*
tokeninfo(#20133,0,#20001,37,"")
#20134=@"loc,{#10000},8,1,8,0"
locations_default(#20134,#10000,8,1,8,0)
hasLocation(#20133,#20134)
exprs(#20133,78,#20132,0,"x")
hasLocation(#20133,#20076)
enclosingStmt(#20133,#20130)
exprContainers(#20133,#20118)
literals("x","x",#20133)
decl(#20133,#20122)
#20134=*
stmts(#20134,0,#20126,2,";")
hasLocation(#20134,#20086)
stmtContainers(#20134,#20118)
#20135=*
entry_cfg_node(#20135,#20001)
#20136=@"loc,{#10000},1,1,1,0"
@@ -425,44 +424,44 @@ locations_default(#20136,#10000,1,1,1,0)
hasLocation(#20135,#20136)
#20137=*
exit_cfg_node(#20137,#20001)
hasLocation(#20137,#20134)
successor(#20037,#20137)
hasLocation(#20137,#20089)
successor(#20118,#20137)
#20138=*
entry_cfg_node(#20138,#20037)
entry_cfg_node(#20138,#20118)
#20139=@"loc,{#10000},5,1,5,0"
locations_default(#20139,#10000,5,1,5,0)
hasLocation(#20138,#20139)
#20140=*
exit_cfg_node(#20140,#20037)
exit_cfg_node(#20140,#20118)
#20141=@"loc,{#10000},7,2,7,1"
locations_default(#20141,#10000,7,2,7,1)
hasLocation(#20140,#20141)
successor(#20044,#20048)
successor(#20048,#20046)
successor(#20046,#20050)
successor(#20046,#20140)
successor(#20055,#20046)
successor(#20050,#20054)
successor(#20054,#20052)
successor(#20052,#20055)
successor(#20138,#20044)
successor(#20006,#20008)
successor(#20012,#20004)
successor(#20010,#20012)
successor(#20008,#20010)
successor(#20004,#20016)
successor(#20004,#20037)
successor(#20021,#20025)
successor(#20025,#20029)
successor(#20035,#20031)
successor(#20033,#20035)
successor(#20031,#20027)
successor(#20029,#20033)
successor(#20027,#20004)
successor(#20016,#20020)
successor(#20020,#20018)
successor(#20018,#20021)
successor(#20039,#20006)
successor(#20135,#20039)
successor(#20124,#20128)
successor(#20128,#20126)
successor(#20126,#20130)
successor(#20126,#20140)
successor(#20134,#20126)
successor(#20130,#20133)
successor(#20133,#20132)
successor(#20132,#20134)
successor(#20138,#20124)
successor(#20094,#20096)
successor(#20098,#20092)
successor(#20097,#20098)
successor(#20096,#20097)
successor(#20092,#20101)
successor(#20092,#20118)
successor(#20105,#20109)
successor(#20109,#20113)
successor(#20117,#20114)
successor(#20116,#20117)
successor(#20114,#20111)
successor(#20113,#20116)
successor(#20111,#20092)
successor(#20101,#20104)
successor(#20104,#20103)
successor(#20103,#20105)
successor(#20120,#20094)
successor(#20135,#20120)
numlines(#10000,7,6,0)
filetype(#10000,"javascript")

View File

@@ -9,82 +9,82 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,20"
locations_default(#20002,#10000,1,1,1,20)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{x};{#20003}"
variables(#20004,"x",#20003)
#20005=@"local_type_name;{x};{#20003}"
local_type_names(#20005,"x",#20003)
#20006=@"local_namespace_name;{x};{#20003}"
local_namespace_names(#20006,"x",#20003)
variables(#20004,"x",#20003)
local_type_names(#20005,"x",#20003)
local_namespace_names(#20006,"x",#20003)
#20007=*
stmts(#20007,27,#20001,0,"import x from 'foo';")
hasLocation(#20007,#20002)
stmtContainers(#20007,#20001)
#20008=*
exprs(#20008,4,#20007,-1,"'foo'")
#20009=@"loc,{#10000},1,15,1,19"
locations_default(#20009,#10000,1,15,1,19)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20007)
exprContainers(#20008,#20001)
literals("foo","'foo'",#20008)
#20010=*
exprs(#20010,84,#20007,0,"x")
#20011=@"loc,{#10000},1,8,1,8"
locations_default(#20011,#10000,1,8,1,8)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20007)
exprContainers(#20010,#20001)
#20012=*
exprs(#20012,78,#20010,1,"x")
hasLocation(#20012,#20011)
enclosingStmt(#20012,#20007)
exprContainers(#20012,#20001)
literals("x","x",#20012)
decl(#20012,#20004)
typedecl(#20012,#20005)
namespacedecl(#20012,#20006)
#20013=*
lines(#20013,#20001,"import x from 'foo';","")
hasLocation(#20013,#20002)
#20002=*
lines(#20002,#20001,"import x from 'foo';","")
#20003=@"loc,{#10000},1,1,1,20"
locations_default(#20003,#10000,1,1,1,20)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"import")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,6,#20001,1,"x")
#20007=@"loc,{#10000},1,8,1,8"
locations_default(#20007,#10000,1,8,1,8)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"from")
#20009=@"loc,{#10000},1,10,1,13"
locations_default(#20009,#10000,1,10,1,13)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,4,#20001,3,"'foo'")
#20011=@"loc,{#10000},1,15,1,19"
locations_default(#20011,#10000,1,15,1,19)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,4,";")
#20013=@"loc,{#10000},1,20,1,20"
locations_default(#20013,#10000,1,20,1,20)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,7,#20001,0,"import")
#20015=@"loc,{#10000},1,1,1,6"
locations_default(#20015,#10000,1,1,1,6)
tokeninfo(#20014,0,#20001,5,"")
#20015=@"loc,{#10000},1,21,1,20"
locations_default(#20015,#10000,1,21,1,20)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,6,#20001,1,"x")
hasLocation(#20016,#20011)
#20017=*
tokeninfo(#20017,6,#20001,2,"from")
#20018=@"loc,{#10000},1,10,1,13"
locations_default(#20018,#10000,1,10,1,13)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,4,#20001,3,"'foo'")
hasLocation(#20019,#20009)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20016=@"module;{#10000},1,1"
scopes(#20016,3)
scopenodes(#20001,#20016)
scopenesting(#20016,#20000)
isModule(#20001)
#20017=@"var;{x};{#20016}"
variables(#20017,"x",#20016)
#20018=@"local_type_name;{x};{#20016}"
local_type_names(#20018,"x",#20016)
#20019=@"local_namespace_name;{x};{#20016}"
local_namespace_names(#20019,"x",#20016)
variables(#20017,"x",#20016)
local_type_names(#20018,"x",#20016)
local_namespace_names(#20019,"x",#20016)
#20020=*
tokeninfo(#20020,8,#20001,4,";")
#20021=@"loc,{#10000},1,20,1,20"
locations_default(#20021,#10000,1,20,1,20)
hasLocation(#20020,#20021)
stmts(#20020,27,#20001,0,"import x from 'foo';")
hasLocation(#20020,#20003)
stmtContainers(#20020,#20001)
#20021=*
exprs(#20021,4,#20020,-1,"'foo'")
hasLocation(#20021,#20011)
enclosingStmt(#20021,#20020)
exprContainers(#20021,#20001)
literals("foo","'foo'",#20021)
#20022=*
tokeninfo(#20022,0,#20001,5,"")
#20023=@"loc,{#10000},1,21,1,20"
locations_default(#20023,#10000,1,21,1,20)
hasLocation(#20022,#20023)
exprs(#20022,84,#20020,0,"x")
hasLocation(#20022,#20007)
enclosingStmt(#20022,#20020)
exprContainers(#20022,#20001)
#20023=*
exprs(#20023,78,#20022,1,"x")
hasLocation(#20023,#20007)
enclosingStmt(#20023,#20020)
exprContainers(#20023,#20001)
literals("x","x",#20023)
decl(#20023,#20017)
typedecl(#20023,#20018)
namespacedecl(#20023,#20019)
#20024=*
entry_cfg_node(#20024,#20001)
#20025=@"loc,{#10000},1,1,1,0"
@@ -92,9 +92,9 @@ locations_default(#20025,#10000,1,1,1,0)
hasLocation(#20024,#20025)
#20026=*
exit_cfg_node(#20026,#20001)
hasLocation(#20026,#20023)
successor(#20007,#20026)
successor(#20010,#20007)
successor(#20024,#20010)
hasLocation(#20026,#20015)
successor(#20020,#20026)
successor(#20022,#20020)
successor(#20024,#20022)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,98 +9,98 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,24"
locations_default(#20002,#10000,1,1,1,24)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{y};{#20003}"
variables(#20004,"y",#20003)
#20005=@"local_type_name;{y};{#20003}"
local_type_names(#20005,"y",#20003)
#20006=@"local_namespace_name;{y};{#20003}"
local_namespace_names(#20006,"y",#20003)
variables(#20004,"y",#20003)
local_type_names(#20005,"y",#20003)
local_namespace_names(#20006,"y",#20003)
#20007=*
stmts(#20007,27,#20001,0,"import ... 'foo';")
hasLocation(#20007,#20002)
stmtContainers(#20007,#20001)
#20008=*
exprs(#20008,4,#20007,-1,"'foo'")
#20009=@"loc,{#10000},1,19,1,23"
locations_default(#20009,#10000,1,19,1,23)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20007)
exprContainers(#20008,#20001)
literals("foo","'foo'",#20008)
#20010=*
exprs(#20010,83,#20007,0,"y")
#20011=@"loc,{#10000},1,10,1,10"
locations_default(#20011,#10000,1,10,1,10)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20007)
exprContainers(#20010,#20001)
#20012=*
exprs(#20012,0,#20010,0,"y")
hasLocation(#20012,#20011)
enclosingStmt(#20012,#20007)
exprContainers(#20012,#20001)
literals("y","y",#20012)
#20013=*
exprs(#20013,78,#20010,1,"y")
hasLocation(#20013,#20011)
enclosingStmt(#20013,#20007)
exprContainers(#20013,#20001)
literals("y","y",#20013)
decl(#20013,#20004)
typedecl(#20013,#20005)
namespacedecl(#20013,#20006)
#20014=*
lines(#20014,#20001,"import { y } from 'foo';","")
hasLocation(#20014,#20002)
#20002=*
lines(#20002,#20001,"import { y } from 'foo';","")
#20003=@"loc,{#10000},1,1,1,24"
locations_default(#20003,#10000,1,1,1,24)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20015=*
tokeninfo(#20015,7,#20001,0,"import")
#20016=@"loc,{#10000},1,1,1,6"
locations_default(#20016,#10000,1,1,1,6)
hasLocation(#20015,#20016)
#20017=*
tokeninfo(#20017,8,#20001,1,"{")
#20018=@"loc,{#10000},1,8,1,8"
locations_default(#20018,#10000,1,8,1,8)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,6,#20001,2,"y")
hasLocation(#20019,#20011)
#20020=*
tokeninfo(#20020,8,#20001,3,"}")
#20021=@"loc,{#10000},1,12,1,12"
locations_default(#20021,#10000,1,12,1,12)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,4,"from")
#20023=@"loc,{#10000},1,14,1,17"
locations_default(#20023,#10000,1,14,1,17)
hasLocation(#20022,#20023)
#20004=*
tokeninfo(#20004,7,#20001,0,"import")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,8,#20001,1,"{")
#20007=@"loc,{#10000},1,8,1,8"
locations_default(#20007,#10000,1,8,1,8)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"y")
#20009=@"loc,{#10000},1,10,1,10"
locations_default(#20009,#10000,1,10,1,10)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"}")
#20011=@"loc,{#10000},1,12,1,12"
locations_default(#20011,#10000,1,12,1,12)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,4,"from")
#20013=@"loc,{#10000},1,14,1,17"
locations_default(#20013,#10000,1,14,1,17)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,4,#20001,5,"'foo'")
#20015=@"loc,{#10000},1,19,1,23"
locations_default(#20015,#10000,1,19,1,23)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,6,";")
#20017=@"loc,{#10000},1,24,1,24"
locations_default(#20017,#10000,1,24,1,24)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,0,#20001,7,"")
#20019=@"loc,{#10000},1,25,1,24"
locations_default(#20019,#10000,1,25,1,24)
hasLocation(#20018,#20019)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20020=@"module;{#10000},1,1"
scopes(#20020,3)
scopenodes(#20001,#20020)
scopenesting(#20020,#20000)
isModule(#20001)
#20021=@"var;{y};{#20020}"
variables(#20021,"y",#20020)
#20022=@"local_type_name;{y};{#20020}"
local_type_names(#20022,"y",#20020)
#20023=@"local_namespace_name;{y};{#20020}"
local_namespace_names(#20023,"y",#20020)
variables(#20021,"y",#20020)
local_type_names(#20022,"y",#20020)
local_namespace_names(#20023,"y",#20020)
#20024=*
tokeninfo(#20024,4,#20001,5,"'foo'")
hasLocation(#20024,#20009)
stmts(#20024,27,#20001,0,"import ... 'foo';")
hasLocation(#20024,#20003)
stmtContainers(#20024,#20001)
#20025=*
tokeninfo(#20025,8,#20001,6,";")
#20026=@"loc,{#10000},1,24,1,24"
locations_default(#20026,#10000,1,24,1,24)
hasLocation(#20025,#20026)
exprs(#20025,4,#20024,-1,"'foo'")
hasLocation(#20025,#20015)
enclosingStmt(#20025,#20024)
exprContainers(#20025,#20001)
literals("foo","'foo'",#20025)
#20026=*
exprs(#20026,83,#20024,0,"y")
hasLocation(#20026,#20009)
enclosingStmt(#20026,#20024)
exprContainers(#20026,#20001)
#20027=*
tokeninfo(#20027,0,#20001,7,"")
#20028=@"loc,{#10000},1,25,1,24"
locations_default(#20028,#10000,1,25,1,24)
hasLocation(#20027,#20028)
exprs(#20027,0,#20026,0,"y")
hasLocation(#20027,#20009)
enclosingStmt(#20027,#20024)
exprContainers(#20027,#20001)
literals("y","y",#20027)
#20028=*
exprs(#20028,78,#20026,1,"y")
hasLocation(#20028,#20009)
enclosingStmt(#20028,#20024)
exprContainers(#20028,#20001)
literals("y","y",#20028)
decl(#20028,#20021)
typedecl(#20028,#20022)
namespacedecl(#20028,#20023)
#20029=*
entry_cfg_node(#20029,#20001)
#20030=@"loc,{#10000},1,1,1,0"
@@ -108,9 +108,9 @@ locations_default(#20030,#10000,1,1,1,0)
hasLocation(#20029,#20030)
#20031=*
exit_cfg_node(#20031,#20001)
hasLocation(#20031,#20028)
successor(#20007,#20031)
successor(#20010,#20007)
successor(#20029,#20010)
hasLocation(#20031,#20019)
successor(#20024,#20031)
successor(#20026,#20024)
successor(#20029,#20026)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,110 +9,110 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,29"
locations_default(#20002,#10000,1,1,1,29)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{z};{#20003}"
variables(#20004,"z",#20003)
#20005=@"local_type_name;{z};{#20003}"
local_type_names(#20005,"z",#20003)
#20006=@"local_namespace_name;{z};{#20003}"
local_namespace_names(#20006,"z",#20003)
variables(#20004,"z",#20003)
local_type_names(#20005,"z",#20003)
local_namespace_names(#20006,"z",#20003)
#20007=*
stmts(#20007,27,#20001,0,"import ... 'foo';")
hasLocation(#20007,#20002)
stmtContainers(#20007,#20001)
#20008=*
exprs(#20008,4,#20007,-1,"'foo'")
#20009=@"loc,{#10000},1,24,1,28"
locations_default(#20009,#10000,1,24,1,28)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20007)
exprContainers(#20008,#20001)
literals("foo","'foo'",#20008)
#20010=*
exprs(#20010,83,#20007,0,"y as z")
#20011=@"loc,{#10000},1,10,1,15"
locations_default(#20011,#10000,1,10,1,15)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20007)
exprContainers(#20010,#20001)
#20012=*
exprs(#20012,0,#20010,0,"y")
#20013=@"loc,{#10000},1,10,1,10"
locations_default(#20013,#10000,1,10,1,10)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20007)
exprContainers(#20012,#20001)
literals("y","y",#20012)
#20014=*
exprs(#20014,78,#20010,1,"z")
#20015=@"loc,{#10000},1,15,1,15"
locations_default(#20015,#10000,1,15,1,15)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20007)
exprContainers(#20014,#20001)
literals("z","z",#20014)
decl(#20014,#20004)
typedecl(#20014,#20005)
namespacedecl(#20014,#20006)
#20016=*
lines(#20016,#20001,"import { y as z } from 'foo';","")
hasLocation(#20016,#20002)
#20002=*
lines(#20002,#20001,"import { y as z } from 'foo';","")
#20003=@"loc,{#10000},1,1,1,29"
locations_default(#20003,#10000,1,1,1,29)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20017=*
tokeninfo(#20017,7,#20001,0,"import")
#20018=@"loc,{#10000},1,1,1,6"
locations_default(#20018,#10000,1,1,1,6)
hasLocation(#20017,#20018)
#20019=*
tokeninfo(#20019,8,#20001,1,"{")
#20020=@"loc,{#10000},1,8,1,8"
locations_default(#20020,#10000,1,8,1,8)
hasLocation(#20019,#20020)
#20021=*
tokeninfo(#20021,6,#20001,2,"y")
hasLocation(#20021,#20013)
#20004=*
tokeninfo(#20004,7,#20001,0,"import")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,8,#20001,1,"{")
#20007=@"loc,{#10000},1,8,1,8"
locations_default(#20007,#10000,1,8,1,8)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"y")
#20009=@"loc,{#10000},1,10,1,10"
locations_default(#20009,#10000,1,10,1,10)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"as")
#20011=@"loc,{#10000},1,12,1,13"
locations_default(#20011,#10000,1,12,1,13)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,4,"z")
#20013=@"loc,{#10000},1,15,1,15"
locations_default(#20013,#10000,1,15,1,15)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,5,"}")
#20015=@"loc,{#10000},1,17,1,17"
locations_default(#20015,#10000,1,17,1,17)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,6,#20001,6,"from")
#20017=@"loc,{#10000},1,19,1,22"
locations_default(#20017,#10000,1,19,1,22)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,4,#20001,7,"'foo'")
#20019=@"loc,{#10000},1,24,1,28"
locations_default(#20019,#10000,1,24,1,28)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,8,";")
#20021=@"loc,{#10000},1,29,1,29"
locations_default(#20021,#10000,1,29,1,29)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,6,#20001,3,"as")
#20023=@"loc,{#10000},1,12,1,13"
locations_default(#20023,#10000,1,12,1,13)
tokeninfo(#20022,0,#20001,9,"")
#20023=@"loc,{#10000},1,30,1,29"
locations_default(#20023,#10000,1,30,1,29)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,4,"z")
hasLocation(#20024,#20015)
#20025=*
tokeninfo(#20025,8,#20001,5,"}")
#20026=@"loc,{#10000},1,17,1,17"
locations_default(#20026,#10000,1,17,1,17)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,6,#20001,6,"from")
#20028=@"loc,{#10000},1,19,1,22"
locations_default(#20028,#10000,1,19,1,22)
hasLocation(#20027,#20028)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20024=@"module;{#10000},1,1"
scopes(#20024,3)
scopenodes(#20001,#20024)
scopenesting(#20024,#20000)
isModule(#20001)
#20025=@"var;{z};{#20024}"
variables(#20025,"z",#20024)
#20026=@"local_type_name;{z};{#20024}"
local_type_names(#20026,"z",#20024)
#20027=@"local_namespace_name;{z};{#20024}"
local_namespace_names(#20027,"z",#20024)
variables(#20025,"z",#20024)
local_type_names(#20026,"z",#20024)
local_namespace_names(#20027,"z",#20024)
#20028=*
stmts(#20028,27,#20001,0,"import ... 'foo';")
hasLocation(#20028,#20003)
stmtContainers(#20028,#20001)
#20029=*
tokeninfo(#20029,4,#20001,7,"'foo'")
hasLocation(#20029,#20009)
exprs(#20029,4,#20028,-1,"'foo'")
hasLocation(#20029,#20019)
enclosingStmt(#20029,#20028)
exprContainers(#20029,#20001)
literals("foo","'foo'",#20029)
#20030=*
tokeninfo(#20030,8,#20001,8,";")
#20031=@"loc,{#10000},1,29,1,29"
locations_default(#20031,#10000,1,29,1,29)
exprs(#20030,83,#20028,0,"y as z")
#20031=@"loc,{#10000},1,10,1,15"
locations_default(#20031,#10000,1,10,1,15)
hasLocation(#20030,#20031)
enclosingStmt(#20030,#20028)
exprContainers(#20030,#20001)
#20032=*
tokeninfo(#20032,0,#20001,9,"")
#20033=@"loc,{#10000},1,30,1,29"
locations_default(#20033,#10000,1,30,1,29)
hasLocation(#20032,#20033)
exprs(#20032,0,#20030,0,"y")
hasLocation(#20032,#20009)
enclosingStmt(#20032,#20028)
exprContainers(#20032,#20001)
literals("y","y",#20032)
#20033=*
exprs(#20033,78,#20030,1,"z")
hasLocation(#20033,#20013)
enclosingStmt(#20033,#20028)
exprContainers(#20033,#20001)
literals("z","z",#20033)
decl(#20033,#20025)
typedecl(#20033,#20026)
namespacedecl(#20033,#20027)
#20034=*
entry_cfg_node(#20034,#20001)
#20035=@"loc,{#10000},1,1,1,0"
@@ -120,9 +120,9 @@ locations_default(#20035,#10000,1,1,1,0)
hasLocation(#20034,#20035)
#20036=*
exit_cfg_node(#20036,#20001)
hasLocation(#20036,#20033)
successor(#20007,#20036)
successor(#20010,#20007)
successor(#20034,#20010)
hasLocation(#20036,#20023)
successor(#20028,#20036)
successor(#20030,#20028)
successor(#20034,#20030)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,143 +9,143 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,32"
locations_default(#20002,#10000,1,1,1,32)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{x};{#20003}"
variables(#20004,"x",#20003)
#20005=@"var;{z};{#20003}"
variables(#20005,"z",#20003)
#20006=@"local_type_name;{x};{#20003}"
local_type_names(#20006,"x",#20003)
#20007=@"local_type_name;{z};{#20003}"
local_type_names(#20007,"z",#20003)
#20008=@"local_namespace_name;{x};{#20003}"
local_namespace_names(#20008,"x",#20003)
#20009=@"local_namespace_name;{z};{#20003}"
local_namespace_names(#20009,"z",#20003)
variables(#20004,"x",#20003)
variables(#20005,"z",#20003)
local_type_names(#20006,"x",#20003)
local_type_names(#20007,"z",#20003)
local_namespace_names(#20008,"x",#20003)
local_namespace_names(#20009,"z",#20003)
#20010=*
stmts(#20010,27,#20001,0,"import ... 'foo';")
hasLocation(#20010,#20002)
stmtContainers(#20010,#20001)
#20011=*
exprs(#20011,4,#20010,-1,"'foo'")
#20012=@"loc,{#10000},1,27,1,31"
locations_default(#20012,#10000,1,27,1,31)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20010)
exprContainers(#20011,#20001)
literals("foo","'foo'",#20011)
#20013=*
exprs(#20013,84,#20010,0,"x")
#20014=@"loc,{#10000},1,8,1,8"
locations_default(#20014,#10000,1,8,1,8)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20010)
exprContainers(#20013,#20001)
#20015=*
exprs(#20015,78,#20013,1,"x")
hasLocation(#20015,#20014)
enclosingStmt(#20015,#20010)
exprContainers(#20015,#20001)
literals("x","x",#20015)
decl(#20015,#20004)
typedecl(#20015,#20006)
namespacedecl(#20015,#20008)
#20016=*
exprs(#20016,83,#20010,1,"y as z")
#20017=@"loc,{#10000},1,13,1,18"
locations_default(#20017,#10000,1,13,1,18)
hasLocation(#20016,#20017)
enclosingStmt(#20016,#20010)
exprContainers(#20016,#20001)
#20018=*
exprs(#20018,0,#20016,0,"y")
#20019=@"loc,{#10000},1,13,1,13"
locations_default(#20019,#10000,1,13,1,13)
hasLocation(#20018,#20019)
enclosingStmt(#20018,#20010)
exprContainers(#20018,#20001)
literals("y","y",#20018)
#20020=*
exprs(#20020,78,#20016,1,"z")
#20021=@"loc,{#10000},1,18,1,18"
locations_default(#20021,#10000,1,18,1,18)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20010)
exprContainers(#20020,#20001)
literals("z","z",#20020)
decl(#20020,#20005)
typedecl(#20020,#20007)
namespacedecl(#20020,#20009)
#20022=*
lines(#20022,#20001,"import x, { y as z } from 'foo';","")
hasLocation(#20022,#20002)
#20002=*
lines(#20002,#20001,"import x, { y as z } from 'foo';","")
#20003=@"loc,{#10000},1,1,1,32"
locations_default(#20003,#10000,1,1,1,32)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20023=*
tokeninfo(#20023,7,#20001,0,"import")
#20024=@"loc,{#10000},1,1,1,6"
locations_default(#20024,#10000,1,1,1,6)
hasLocation(#20023,#20024)
#20025=*
tokeninfo(#20025,6,#20001,1,"x")
hasLocation(#20025,#20014)
#20004=*
tokeninfo(#20004,7,#20001,0,"import")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,6,#20001,1,"x")
#20007=@"loc,{#10000},1,8,1,8"
locations_default(#20007,#10000,1,8,1,8)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,2,",")
#20009=@"loc,{#10000},1,9,1,9"
locations_default(#20009,#10000,1,9,1,9)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,8,#20001,3,"{")
#20011=@"loc,{#10000},1,11,1,11"
locations_default(#20011,#10000,1,11,1,11)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,4,"y")
#20013=@"loc,{#10000},1,13,1,13"
locations_default(#20013,#10000,1,13,1,13)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,6,#20001,5,"as")
#20015=@"loc,{#10000},1,15,1,16"
locations_default(#20015,#10000,1,15,1,16)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,6,#20001,6,"z")
#20017=@"loc,{#10000},1,18,1,18"
locations_default(#20017,#10000,1,18,1,18)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,7,"}")
#20019=@"loc,{#10000},1,20,1,20"
locations_default(#20019,#10000,1,20,1,20)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,6,#20001,8,"from")
#20021=@"loc,{#10000},1,22,1,25"
locations_default(#20021,#10000,1,22,1,25)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,4,#20001,9,"'foo'")
#20023=@"loc,{#10000},1,27,1,31"
locations_default(#20023,#10000,1,27,1,31)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,8,#20001,10,";")
#20025=@"loc,{#10000},1,32,1,32"
locations_default(#20025,#10000,1,32,1,32)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,2,",")
#20027=@"loc,{#10000},1,9,1,9"
locations_default(#20027,#10000,1,9,1,9)
tokeninfo(#20026,0,#20001,11,"")
#20027=@"loc,{#10000},1,33,1,32"
locations_default(#20027,#10000,1,33,1,32)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,3,"{")
#20029=@"loc,{#10000},1,11,1,11"
locations_default(#20029,#10000,1,11,1,11)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,6,#20001,4,"y")
hasLocation(#20030,#20019)
#20031=*
tokeninfo(#20031,6,#20001,5,"as")
#20032=@"loc,{#10000},1,15,1,16"
locations_default(#20032,#10000,1,15,1,16)
hasLocation(#20031,#20032)
#20033=*
tokeninfo(#20033,6,#20001,6,"z")
hasLocation(#20033,#20021)
#20034=*
tokeninfo(#20034,8,#20001,7,"}")
#20035=@"loc,{#10000},1,20,1,20"
locations_default(#20035,#10000,1,20,1,20)
hasLocation(#20034,#20035)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20028=@"module;{#10000},1,1"
scopes(#20028,3)
scopenodes(#20001,#20028)
scopenesting(#20028,#20000)
isModule(#20001)
#20029=@"var;{x};{#20028}"
variables(#20029,"x",#20028)
#20030=@"var;{z};{#20028}"
variables(#20030,"z",#20028)
#20031=@"local_type_name;{x};{#20028}"
local_type_names(#20031,"x",#20028)
#20032=@"local_type_name;{z};{#20028}"
local_type_names(#20032,"z",#20028)
#20033=@"local_namespace_name;{x};{#20028}"
local_namespace_names(#20033,"x",#20028)
#20034=@"local_namespace_name;{z};{#20028}"
local_namespace_names(#20034,"z",#20028)
variables(#20029,"x",#20028)
variables(#20030,"z",#20028)
local_type_names(#20031,"x",#20028)
local_type_names(#20032,"z",#20028)
local_namespace_names(#20033,"x",#20028)
local_namespace_names(#20034,"z",#20028)
#20035=*
stmts(#20035,27,#20001,0,"import ... 'foo';")
hasLocation(#20035,#20003)
stmtContainers(#20035,#20001)
#20036=*
tokeninfo(#20036,6,#20001,8,"from")
#20037=@"loc,{#10000},1,22,1,25"
locations_default(#20037,#10000,1,22,1,25)
hasLocation(#20036,#20037)
exprs(#20036,4,#20035,-1,"'foo'")
hasLocation(#20036,#20023)
enclosingStmt(#20036,#20035)
exprContainers(#20036,#20001)
literals("foo","'foo'",#20036)
#20037=*
exprs(#20037,84,#20035,0,"x")
hasLocation(#20037,#20007)
enclosingStmt(#20037,#20035)
exprContainers(#20037,#20001)
#20038=*
tokeninfo(#20038,4,#20001,9,"'foo'")
hasLocation(#20038,#20012)
exprs(#20038,78,#20037,1,"x")
hasLocation(#20038,#20007)
enclosingStmt(#20038,#20035)
exprContainers(#20038,#20001)
literals("x","x",#20038)
decl(#20038,#20029)
typedecl(#20038,#20031)
namespacedecl(#20038,#20033)
#20039=*
tokeninfo(#20039,8,#20001,10,";")
#20040=@"loc,{#10000},1,32,1,32"
locations_default(#20040,#10000,1,32,1,32)
exprs(#20039,83,#20035,1,"y as z")
#20040=@"loc,{#10000},1,13,1,18"
locations_default(#20040,#10000,1,13,1,18)
hasLocation(#20039,#20040)
enclosingStmt(#20039,#20035)
exprContainers(#20039,#20001)
#20041=*
tokeninfo(#20041,0,#20001,11,"")
#20042=@"loc,{#10000},1,33,1,32"
locations_default(#20042,#10000,1,33,1,32)
hasLocation(#20041,#20042)
exprs(#20041,0,#20039,0,"y")
hasLocation(#20041,#20013)
enclosingStmt(#20041,#20035)
exprContainers(#20041,#20001)
literals("y","y",#20041)
#20042=*
exprs(#20042,78,#20039,1,"z")
hasLocation(#20042,#20017)
enclosingStmt(#20042,#20035)
exprContainers(#20042,#20001)
literals("z","z",#20042)
decl(#20042,#20030)
typedecl(#20042,#20032)
namespacedecl(#20042,#20034)
#20043=*
entry_cfg_node(#20043,#20001)
#20044=@"loc,{#10000},1,1,1,0"
@@ -153,10 +153,10 @@ locations_default(#20044,#10000,1,1,1,0)
hasLocation(#20043,#20044)
#20045=*
exit_cfg_node(#20045,#20001)
hasLocation(#20045,#20042)
successor(#20010,#20045)
successor(#20016,#20010)
successor(#20013,#20016)
successor(#20043,#20013)
hasLocation(#20045,#20027)
successor(#20035,#20045)
successor(#20039,#20035)
successor(#20037,#20039)
successor(#20043,#20037)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,90 +9,90 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,27"
locations_default(#20002,#10000,1,1,1,27)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{foo};{#20003}"
variables(#20004,"foo",#20003)
#20005=@"local_namespace_name;{foo};{#20003}"
local_namespace_names(#20005,"foo",#20003)
variables(#20004,"foo",#20003)
local_namespace_names(#20005,"foo",#20003)
#20006=*
stmts(#20006,27,#20001,0,"import ... 'foo';")
hasLocation(#20006,#20002)
stmtContainers(#20006,#20001)
#20007=*
exprs(#20007,4,#20006,-1,"'foo'")
#20008=@"loc,{#10000},1,22,1,26"
locations_default(#20008,#10000,1,22,1,26)
hasLocation(#20007,#20008)
enclosingStmt(#20007,#20006)
exprContainers(#20007,#20001)
literals("foo","'foo'",#20007)
#20009=*
exprs(#20009,85,#20006,0,"* as foo")
#20010=@"loc,{#10000},1,8,1,15"
locations_default(#20010,#10000,1,8,1,15)
hasLocation(#20009,#20010)
enclosingStmt(#20009,#20006)
exprContainers(#20009,#20001)
#20011=*
exprs(#20011,78,#20009,1,"foo")
#20012=@"loc,{#10000},1,13,1,15"
locations_default(#20012,#10000,1,13,1,15)
hasLocation(#20011,#20012)
enclosingStmt(#20011,#20006)
exprContainers(#20011,#20001)
literals("foo","foo",#20011)
decl(#20011,#20004)
namespacedecl(#20011,#20005)
#20013=*
lines(#20013,#20001,"import * as foo from 'foo';","")
hasLocation(#20013,#20002)
#20002=*
lines(#20002,#20001,"import * as foo from 'foo';","")
#20003=@"loc,{#10000},1,1,1,27"
locations_default(#20003,#10000,1,1,1,27)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"import")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,8,#20001,1,"*")
#20007=@"loc,{#10000},1,8,1,8"
locations_default(#20007,#10000,1,8,1,8)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,6,#20001,2,"as")
#20009=@"loc,{#10000},1,10,1,11"
locations_default(#20009,#10000,1,10,1,11)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,3,"foo")
#20011=@"loc,{#10000},1,13,1,15"
locations_default(#20011,#10000,1,13,1,15)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,4,"from")
#20013=@"loc,{#10000},1,17,1,20"
locations_default(#20013,#10000,1,17,1,20)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,7,#20001,0,"import")
#20015=@"loc,{#10000},1,1,1,6"
locations_default(#20015,#10000,1,1,1,6)
tokeninfo(#20014,4,#20001,5,"'foo'")
#20015=@"loc,{#10000},1,22,1,26"
locations_default(#20015,#10000,1,22,1,26)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,1,"*")
#20017=@"loc,{#10000},1,8,1,8"
locations_default(#20017,#10000,1,8,1,8)
tokeninfo(#20016,8,#20001,6,";")
#20017=@"loc,{#10000},1,27,1,27"
locations_default(#20017,#10000,1,27,1,27)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,6,#20001,2,"as")
#20019=@"loc,{#10000},1,10,1,11"
locations_default(#20019,#10000,1,10,1,11)
tokeninfo(#20018,0,#20001,7,"")
#20019=@"loc,{#10000},1,28,1,27"
locations_default(#20019,#10000,1,28,1,27)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,6,#20001,3,"foo")
hasLocation(#20020,#20012)
#20021=*
tokeninfo(#20021,6,#20001,4,"from")
#20022=@"loc,{#10000},1,17,1,20"
locations_default(#20022,#10000,1,17,1,20)
hasLocation(#20021,#20022)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20020=@"module;{#10000},1,1"
scopes(#20020,3)
scopenodes(#20001,#20020)
scopenesting(#20020,#20000)
isModule(#20001)
#20021=@"var;{foo};{#20020}"
variables(#20021,"foo",#20020)
#20022=@"local_namespace_name;{foo};{#20020}"
local_namespace_names(#20022,"foo",#20020)
variables(#20021,"foo",#20020)
local_namespace_names(#20022,"foo",#20020)
#20023=*
tokeninfo(#20023,4,#20001,5,"'foo'")
hasLocation(#20023,#20008)
stmts(#20023,27,#20001,0,"import ... 'foo';")
hasLocation(#20023,#20003)
stmtContainers(#20023,#20001)
#20024=*
tokeninfo(#20024,8,#20001,6,";")
#20025=@"loc,{#10000},1,27,1,27"
locations_default(#20025,#10000,1,27,1,27)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,0,#20001,7,"")
#20027=@"loc,{#10000},1,28,1,27"
locations_default(#20027,#10000,1,28,1,27)
hasLocation(#20026,#20027)
exprs(#20024,4,#20023,-1,"'foo'")
hasLocation(#20024,#20015)
enclosingStmt(#20024,#20023)
exprContainers(#20024,#20001)
literals("foo","'foo'",#20024)
#20025=*
exprs(#20025,85,#20023,0,"* as foo")
#20026=@"loc,{#10000},1,8,1,15"
locations_default(#20026,#10000,1,8,1,15)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20023)
exprContainers(#20025,#20001)
#20027=*
exprs(#20027,78,#20025,1,"foo")
hasLocation(#20027,#20011)
enclosingStmt(#20027,#20023)
exprContainers(#20027,#20001)
literals("foo","foo",#20027)
decl(#20027,#20021)
namespacedecl(#20027,#20022)
#20028=*
entry_cfg_node(#20028,#20001)
#20029=@"loc,{#10000},1,1,1,0"
@@ -100,9 +100,9 @@ locations_default(#20029,#10000,1,1,1,0)
hasLocation(#20028,#20029)
#20030=*
exit_cfg_node(#20030,#20001)
hasLocation(#20030,#20027)
successor(#20006,#20030)
successor(#20009,#20006)
successor(#20028,#20009)
hasLocation(#20030,#20019)
successor(#20023,#20030)
successor(#20025,#20023)
successor(#20028,#20025)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,49 +9,49 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,1,13"
locations_default(#20002,#10000,1,1,1,13)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=*
stmts(#20004,27,#20001,0,"import 'foo';")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,4,#20004,-1,"'foo'")
#20006=@"loc,{#10000},1,8,1,12"
locations_default(#20006,#10000,1,8,1,12)
hasLocation(#20005,#20006)
enclosingStmt(#20005,#20004)
exprContainers(#20005,#20001)
literals("foo","'foo'",#20005)
#20007=*
lines(#20007,#20001,"import 'foo';","")
hasLocation(#20007,#20002)
#20002=*
lines(#20002,#20001,"import 'foo';","")
#20003=@"loc,{#10000},1,1,1,13"
locations_default(#20003,#10000,1,1,1,13)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20004=*
tokeninfo(#20004,7,#20001,0,"import")
#20005=@"loc,{#10000},1,1,1,6"
locations_default(#20005,#10000,1,1,1,6)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,4,#20001,1,"'foo'")
#20007=@"loc,{#10000},1,8,1,12"
locations_default(#20007,#10000,1,8,1,12)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,7,#20001,0,"import")
#20009=@"loc,{#10000},1,1,1,6"
locations_default(#20009,#10000,1,1,1,6)
tokeninfo(#20008,8,#20001,2,";")
#20009=@"loc,{#10000},1,13,1,13"
locations_default(#20009,#10000,1,13,1,13)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,4,#20001,1,"'foo'")
hasLocation(#20010,#20006)
#20011=*
tokeninfo(#20011,8,#20001,2,";")
#20012=@"loc,{#10000},1,13,1,13"
locations_default(#20012,#10000,1,13,1,13)
hasLocation(#20011,#20012)
tokeninfo(#20010,0,#20001,3,"")
#20011=@"loc,{#10000},1,14,1,13"
locations_default(#20011,#10000,1,14,1,13)
hasLocation(#20010,#20011)
toplevels(#20001,0)
hasLocation(#20001,#20003)
#20012=@"module;{#10000},1,1"
scopes(#20012,3)
scopenodes(#20001,#20012)
scopenesting(#20012,#20000)
isModule(#20001)
#20013=*
tokeninfo(#20013,0,#20001,3,"")
#20014=@"loc,{#10000},1,14,1,13"
locations_default(#20014,#10000,1,14,1,13)
hasLocation(#20013,#20014)
stmts(#20013,27,#20001,0,"import 'foo';")
hasLocation(#20013,#20003)
stmtContainers(#20013,#20001)
#20014=*
exprs(#20014,4,#20013,-1,"'foo'")
hasLocation(#20014,#20007)
enclosingStmt(#20014,#20013)
exprContainers(#20014,#20001)
literals("foo","'foo'",#20014)
#20015=*
entry_cfg_node(#20015,#20001)
#20016=@"loc,{#10000},1,1,1,0"
@@ -59,8 +59,8 @@ locations_default(#20016,#10000,1,1,1,0)
hasLocation(#20015,#20016)
#20017=*
exit_cfg_node(#20017,#20001)
hasLocation(#20017,#20014)
successor(#20004,#20017)
successor(#20015,#20004)
hasLocation(#20017,#20011)
successor(#20013,#20017)
successor(#20015,#20013)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,207 +9,207 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,3,29"
locations_default(#20002,#10000,1,1,3,29)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{x};{#20003}"
variables(#20004,"x",#20003)
#20005=@"var;{z};{#20003}"
variables(#20005,"z",#20003)
#20006=@"local_type_name;{x};{#20003}"
local_type_names(#20006,"x",#20003)
#20007=@"local_type_name;{z};{#20003}"
local_type_names(#20007,"z",#20003)
#20008=@"local_namespace_name;{x};{#20003}"
local_namespace_names(#20008,"x",#20003)
#20009=@"local_namespace_name;{z};{#20003}"
local_namespace_names(#20009,"z",#20003)
variables(#20004,"x",#20003)
variables(#20005,"z",#20003)
local_type_names(#20006,"x",#20003)
local_type_names(#20007,"z",#20003)
local_namespace_names(#20008,"x",#20003)
local_namespace_names(#20009,"z",#20003)
#20010=*
stmts(#20010,27,#20001,0,"import x from 'foo';")
#20011=@"loc,{#10000},1,1,1,20"
locations_default(#20011,#10000,1,1,1,20)
hasLocation(#20010,#20011)
stmtContainers(#20010,#20001)
#20012=*
exprs(#20012,4,#20010,-1,"'foo'")
#20013=@"loc,{#10000},1,15,1,19"
locations_default(#20013,#10000,1,15,1,19)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20010)
exprContainers(#20012,#20001)
literals("foo","'foo'",#20012)
#20014=*
exprs(#20014,84,#20010,0,"x")
#20015=@"loc,{#10000},1,8,1,8"
locations_default(#20015,#10000,1,8,1,8)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20010)
exprContainers(#20014,#20001)
#20016=*
exprs(#20016,78,#20014,1,"x")
hasLocation(#20016,#20015)
enclosingStmt(#20016,#20010)
exprContainers(#20016,#20001)
literals("x","x",#20016)
decl(#20016,#20004)
typedecl(#20016,#20006)
namespacedecl(#20016,#20008)
#20017=*
stmts(#20017,27,#20001,1,"import 'bar';")
#20018=@"loc,{#10000},2,1,2,13"
locations_default(#20018,#10000,2,1,2,13)
hasLocation(#20017,#20018)
stmtContainers(#20017,#20001)
#20019=*
exprs(#20019,4,#20017,-1,"'bar'")
#20020=@"loc,{#10000},2,8,2,12"
locations_default(#20020,#10000,2,8,2,12)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20017)
exprContainers(#20019,#20001)
literals("bar","'bar'",#20019)
#20021=*
stmts(#20021,27,#20001,2,"import ... 'baz';")
#20022=@"loc,{#10000},3,1,3,29"
locations_default(#20022,#10000,3,1,3,29)
hasLocation(#20021,#20022)
stmtContainers(#20021,#20001)
#20023=*
exprs(#20023,4,#20021,-1,"'baz'")
#20024=@"loc,{#10000},3,24,3,28"
locations_default(#20024,#10000,3,24,3,28)
hasLocation(#20023,#20024)
enclosingStmt(#20023,#20021)
exprContainers(#20023,#20001)
literals("baz","'baz'",#20023)
#20025=*
exprs(#20025,83,#20021,0,"y as z")
#20026=@"loc,{#10000},3,10,3,15"
locations_default(#20026,#10000,3,10,3,15)
hasLocation(#20025,#20026)
enclosingStmt(#20025,#20021)
exprContainers(#20025,#20001)
#20027=*
exprs(#20027,0,#20025,0,"y")
#20028=@"loc,{#10000},3,10,3,10"
locations_default(#20028,#10000,3,10,3,10)
hasLocation(#20027,#20028)
enclosingStmt(#20027,#20021)
exprContainers(#20027,#20001)
literals("y","y",#20027)
#20029=*
exprs(#20029,78,#20025,1,"z")
#20030=@"loc,{#10000},3,15,3,15"
locations_default(#20030,#10000,3,15,3,15)
hasLocation(#20029,#20030)
enclosingStmt(#20029,#20021)
exprContainers(#20029,#20001)
literals("z","z",#20029)
decl(#20029,#20005)
typedecl(#20029,#20007)
namespacedecl(#20029,#20009)
#20031=*
lines(#20031,#20001,"import x from 'foo';","
#20002=*
lines(#20002,#20001,"import x from 'foo';","
")
hasLocation(#20031,#20011)
#20032=*
lines(#20032,#20001,"import 'bar';","
#20003=@"loc,{#10000},1,1,1,20"
locations_default(#20003,#10000,1,1,1,20)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001,"import 'bar';","
")
hasLocation(#20032,#20018)
#20033=*
lines(#20033,#20001,"import { y as z } from 'baz';","")
hasLocation(#20033,#20022)
#20005=@"loc,{#10000},2,1,2,13"
locations_default(#20005,#10000,2,1,2,13)
hasLocation(#20004,#20005)
#20006=*
lines(#20006,#20001,"import { y as z } from 'baz';","")
#20007=@"loc,{#10000},3,1,3,29"
locations_default(#20007,#10000,3,1,3,29)
hasLocation(#20006,#20007)
numlines(#20001,3,3,0)
#20008=*
tokeninfo(#20008,7,#20001,0,"import")
#20009=@"loc,{#10000},1,1,1,6"
locations_default(#20009,#10000,1,1,1,6)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,1,"x")
#20011=@"loc,{#10000},1,8,1,8"
locations_default(#20011,#10000,1,8,1,8)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,2,"from")
#20013=@"loc,{#10000},1,10,1,13"
locations_default(#20013,#10000,1,10,1,13)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,4,#20001,3,"'foo'")
#20015=@"loc,{#10000},1,15,1,19"
locations_default(#20015,#10000,1,15,1,19)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,4,";")
#20017=@"loc,{#10000},1,20,1,20"
locations_default(#20017,#10000,1,20,1,20)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,7,#20001,5,"import")
#20019=@"loc,{#10000},2,1,2,6"
locations_default(#20019,#10000,2,1,2,6)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,4,#20001,6,"'bar'")
#20021=@"loc,{#10000},2,8,2,12"
locations_default(#20021,#10000,2,8,2,12)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,7,";")
#20023=@"loc,{#10000},2,13,2,13"
locations_default(#20023,#10000,2,13,2,13)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,7,#20001,8,"import")
#20025=@"loc,{#10000},3,1,3,6"
locations_default(#20025,#10000,3,1,3,6)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,9,"{")
#20027=@"loc,{#10000},3,8,3,8"
locations_default(#20027,#10000,3,8,3,8)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,6,#20001,10,"y")
#20029=@"loc,{#10000},3,10,3,10"
locations_default(#20029,#10000,3,10,3,10)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,6,#20001,11,"as")
#20031=@"loc,{#10000},3,12,3,13"
locations_default(#20031,#10000,3,12,3,13)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,12,"z")
#20033=@"loc,{#10000},3,15,3,15"
locations_default(#20033,#10000,3,15,3,15)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,7,#20001,0,"import")
#20035=@"loc,{#10000},1,1,1,6"
locations_default(#20035,#10000,1,1,1,6)
tokeninfo(#20034,8,#20001,13,"}")
#20035=@"loc,{#10000},3,17,3,17"
locations_default(#20035,#10000,3,17,3,17)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,6,#20001,1,"x")
hasLocation(#20036,#20015)
#20037=*
tokeninfo(#20037,6,#20001,2,"from")
#20038=@"loc,{#10000},1,10,1,13"
locations_default(#20038,#10000,1,10,1,13)
hasLocation(#20037,#20038)
#20039=*
tokeninfo(#20039,4,#20001,3,"'foo'")
hasLocation(#20039,#20013)
tokeninfo(#20036,6,#20001,14,"from")
#20037=@"loc,{#10000},3,19,3,22"
locations_default(#20037,#10000,3,19,3,22)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,4,#20001,15,"'baz'")
#20039=@"loc,{#10000},3,24,3,28"
locations_default(#20039,#10000,3,24,3,28)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,8,#20001,4,";")
#20041=@"loc,{#10000},1,20,1,20"
locations_default(#20041,#10000,1,20,1,20)
tokeninfo(#20040,8,#20001,16,";")
#20041=@"loc,{#10000},3,29,3,29"
locations_default(#20041,#10000,3,29,3,29)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,7,#20001,5,"import")
#20043=@"loc,{#10000},2,1,2,6"
locations_default(#20043,#10000,2,1,2,6)
tokeninfo(#20042,0,#20001,17,"")
#20043=@"loc,{#10000},3,30,3,29"
locations_default(#20043,#10000,3,30,3,29)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,4,#20001,6,"'bar'")
hasLocation(#20044,#20020)
#20045=*
tokeninfo(#20045,8,#20001,7,";")
#20046=@"loc,{#10000},2,13,2,13"
locations_default(#20046,#10000,2,13,2,13)
hasLocation(#20045,#20046)
#20047=*
tokeninfo(#20047,7,#20001,8,"import")
#20048=@"loc,{#10000},3,1,3,6"
locations_default(#20048,#10000,3,1,3,6)
hasLocation(#20047,#20048)
#20049=*
tokeninfo(#20049,8,#20001,9,"{")
#20050=@"loc,{#10000},3,8,3,8"
locations_default(#20050,#10000,3,8,3,8)
hasLocation(#20049,#20050)
#20051=*
tokeninfo(#20051,6,#20001,10,"y")
hasLocation(#20051,#20028)
toplevels(#20001,0)
#20044=@"loc,{#10000},1,1,3,29"
locations_default(#20044,#10000,1,1,3,29)
hasLocation(#20001,#20044)
#20045=@"module;{#10000},1,1"
scopes(#20045,3)
scopenodes(#20001,#20045)
scopenesting(#20045,#20000)
isModule(#20001)
#20046=@"var;{x};{#20045}"
variables(#20046,"x",#20045)
#20047=@"var;{z};{#20045}"
variables(#20047,"z",#20045)
#20048=@"local_type_name;{x};{#20045}"
local_type_names(#20048,"x",#20045)
#20049=@"local_type_name;{z};{#20045}"
local_type_names(#20049,"z",#20045)
#20050=@"local_namespace_name;{x};{#20045}"
local_namespace_names(#20050,"x",#20045)
#20051=@"local_namespace_name;{z};{#20045}"
local_namespace_names(#20051,"z",#20045)
variables(#20046,"x",#20045)
variables(#20047,"z",#20045)
local_type_names(#20048,"x",#20045)
local_type_names(#20049,"z",#20045)
local_namespace_names(#20050,"x",#20045)
local_namespace_names(#20051,"z",#20045)
#20052=*
tokeninfo(#20052,6,#20001,11,"as")
#20053=@"loc,{#10000},3,12,3,13"
locations_default(#20053,#10000,3,12,3,13)
hasLocation(#20052,#20053)
stmts(#20052,27,#20001,0,"import x from 'foo';")
hasLocation(#20052,#20003)
stmtContainers(#20052,#20001)
#20053=*
exprs(#20053,4,#20052,-1,"'foo'")
hasLocation(#20053,#20015)
enclosingStmt(#20053,#20052)
exprContainers(#20053,#20001)
literals("foo","'foo'",#20053)
#20054=*
tokeninfo(#20054,6,#20001,12,"z")
hasLocation(#20054,#20030)
exprs(#20054,84,#20052,0,"x")
hasLocation(#20054,#20011)
enclosingStmt(#20054,#20052)
exprContainers(#20054,#20001)
#20055=*
tokeninfo(#20055,8,#20001,13,"}")
#20056=@"loc,{#10000},3,17,3,17"
locations_default(#20056,#10000,3,17,3,17)
hasLocation(#20055,#20056)
exprs(#20055,78,#20054,1,"x")
hasLocation(#20055,#20011)
enclosingStmt(#20055,#20052)
exprContainers(#20055,#20001)
literals("x","x",#20055)
decl(#20055,#20046)
typedecl(#20055,#20048)
namespacedecl(#20055,#20050)
#20056=*
stmts(#20056,27,#20001,1,"import 'bar';")
hasLocation(#20056,#20005)
stmtContainers(#20056,#20001)
#20057=*
tokeninfo(#20057,6,#20001,14,"from")
#20058=@"loc,{#10000},3,19,3,22"
locations_default(#20058,#10000,3,19,3,22)
hasLocation(#20057,#20058)
exprs(#20057,4,#20056,-1,"'bar'")
hasLocation(#20057,#20021)
enclosingStmt(#20057,#20056)
exprContainers(#20057,#20001)
literals("bar","'bar'",#20057)
#20058=*
stmts(#20058,27,#20001,2,"import ... 'baz';")
hasLocation(#20058,#20007)
stmtContainers(#20058,#20001)
#20059=*
tokeninfo(#20059,4,#20001,15,"'baz'")
hasLocation(#20059,#20024)
exprs(#20059,4,#20058,-1,"'baz'")
hasLocation(#20059,#20039)
enclosingStmt(#20059,#20058)
exprContainers(#20059,#20001)
literals("baz","'baz'",#20059)
#20060=*
tokeninfo(#20060,8,#20001,16,";")
#20061=@"loc,{#10000},3,29,3,29"
locations_default(#20061,#10000,3,29,3,29)
exprs(#20060,83,#20058,0,"y as z")
#20061=@"loc,{#10000},3,10,3,15"
locations_default(#20061,#10000,3,10,3,15)
hasLocation(#20060,#20061)
enclosingStmt(#20060,#20058)
exprContainers(#20060,#20001)
#20062=*
tokeninfo(#20062,0,#20001,17,"")
#20063=@"loc,{#10000},3,30,3,29"
locations_default(#20063,#10000,3,30,3,29)
hasLocation(#20062,#20063)
exprs(#20062,0,#20060,0,"y")
hasLocation(#20062,#20029)
enclosingStmt(#20062,#20058)
exprContainers(#20062,#20001)
literals("y","y",#20062)
#20063=*
exprs(#20063,78,#20060,1,"z")
hasLocation(#20063,#20033)
enclosingStmt(#20063,#20058)
exprContainers(#20063,#20001)
literals("z","z",#20063)
decl(#20063,#20047)
typedecl(#20063,#20049)
namespacedecl(#20063,#20051)
#20064=*
entry_cfg_node(#20064,#20001)
#20065=@"loc,{#10000},1,1,1,0"
@@ -217,12 +217,12 @@ locations_default(#20065,#10000,1,1,1,0)
hasLocation(#20064,#20065)
#20066=*
exit_cfg_node(#20066,#20001)
hasLocation(#20066,#20063)
successor(#20021,#20066)
successor(#20017,#20021)
successor(#20010,#20017)
successor(#20025,#20010)
successor(#20014,#20025)
successor(#20064,#20014)
hasLocation(#20066,#20043)
successor(#20058,#20066)
successor(#20056,#20058)
successor(#20052,#20056)
successor(#20060,#20052)
successor(#20054,#20060)
successor(#20064,#20054)
numlines(#10000,3,3,0)
filetype(#10000,"javascript")

File diff suppressed because it is too large Load Diff

View File

@@ -9,79 +9,79 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=@"var;{x};{#20000}"
variables(#20003,"x",#20000)
#20002=*
comments(#20002,1,#20001," *","/* **/")
#20003=@"loc,{#10000},1,5,1,10"
locations_default(#20003,#10000,1,5,1,10)
hasLocation(#20002,#20003)
#20004=*
stmts(#20004,23,#20001,0,"let /* **/ x = 42;")
lines(#20004,#20001,"let /* **/ x = 42;","
")
#20005=@"loc,{#10000},1,1,1,18"
locations_default(#20005,#10000,1,1,1,18)
hasLocation(#20004,#20005)
stmtContainers(#20004,#20001)
numlines(#20001,1,1,1)
#20006=*
exprs(#20006,64,#20004,0,"x = 42")
#20007=@"loc,{#10000},1,12,1,17"
locations_default(#20007,#10000,1,12,1,17)
tokeninfo(#20006,7,#20001,0,"let")
#20007=@"loc,{#10000},1,1,1,3"
locations_default(#20007,#10000,1,1,1,3)
hasLocation(#20006,#20007)
enclosingStmt(#20006,#20004)
exprContainers(#20006,#20001)
#20008=*
exprs(#20008,78,#20006,0,"x")
tokeninfo(#20008,6,#20001,1,"x")
#20009=@"loc,{#10000},1,12,1,12"
locations_default(#20009,#10000,1,12,1,12)
hasLocation(#20008,#20009)
enclosingStmt(#20008,#20004)
exprContainers(#20008,#20001)
literals("x","x",#20008)
decl(#20008,#20003)
next_token(#20002,#20008)
#20010=*
exprs(#20010,3,#20006,1,"42")
#20011=@"loc,{#10000},1,16,1,17"
locations_default(#20011,#10000,1,16,1,17)
tokeninfo(#20010,8,#20001,2,"=")
#20011=@"loc,{#10000},1,14,1,14"
locations_default(#20011,#10000,1,14,1,14)
hasLocation(#20010,#20011)
enclosingStmt(#20010,#20004)
exprContainers(#20010,#20001)
literals("42","42",#20010)
#20012=*
comments(#20012,1,#20001," *","/* **/")
#20013=@"loc,{#10000},1,5,1,10"
locations_default(#20013,#10000,1,5,1,10)
tokeninfo(#20012,3,#20001,3,"42")
#20013=@"loc,{#10000},1,16,1,17"
locations_default(#20013,#10000,1,16,1,17)
hasLocation(#20012,#20013)
#20014=*
lines(#20014,#20001,"let /* **/ x = 42;","
")
hasLocation(#20014,#20005)
numlines(#20001,1,1,1)
#20015=*
tokeninfo(#20015,7,#20001,0,"let")
#20016=@"loc,{#10000},1,1,1,3"
locations_default(#20016,#10000,1,1,1,3)
hasLocation(#20015,#20016)
#20017=*
tokeninfo(#20017,6,#20001,1,"x")
hasLocation(#20017,#20009)
next_token(#20012,#20017)
#20018=*
tokeninfo(#20018,8,#20001,2,"=")
#20019=@"loc,{#10000},1,14,1,14"
locations_default(#20019,#10000,1,14,1,14)
hasLocation(#20018,#20019)
tokeninfo(#20014,8,#20001,4,";")
#20015=@"loc,{#10000},1,18,1,18"
locations_default(#20015,#10000,1,18,1,18)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,0,#20001,5,"")
#20017=@"loc,{#10000},2,1,2,0"
locations_default(#20017,#10000,2,1,2,0)
hasLocation(#20016,#20017)
toplevels(#20001,0)
#20018=@"loc,{#10000},1,1,2,0"
locations_default(#20018,#10000,1,1,2,0)
hasLocation(#20001,#20018)
#20019=@"var;{x};{#20000}"
variables(#20019,"x",#20000)
#20020=*
tokeninfo(#20020,3,#20001,3,"42")
hasLocation(#20020,#20011)
stmts(#20020,23,#20001,0,"let /* **/ x = 42;")
hasLocation(#20020,#20005)
stmtContainers(#20020,#20001)
#20021=*
tokeninfo(#20021,8,#20001,4,";")
#20022=@"loc,{#10000},1,18,1,18"
locations_default(#20022,#10000,1,18,1,18)
exprs(#20021,64,#20020,0,"x = 42")
#20022=@"loc,{#10000},1,12,1,17"
locations_default(#20022,#10000,1,12,1,17)
hasLocation(#20021,#20022)
enclosingStmt(#20021,#20020)
exprContainers(#20021,#20001)
#20023=*
tokeninfo(#20023,0,#20001,5,"")
#20024=@"loc,{#10000},2,1,2,0"
locations_default(#20024,#10000,2,1,2,0)
hasLocation(#20023,#20024)
exprs(#20023,78,#20021,0,"x")
hasLocation(#20023,#20009)
enclosingStmt(#20023,#20020)
exprContainers(#20023,#20001)
literals("x","x",#20023)
decl(#20023,#20019)
#20024=*
exprs(#20024,3,#20021,1,"42")
hasLocation(#20024,#20013)
enclosingStmt(#20024,#20020)
exprContainers(#20024,#20001)
literals("42","42",#20024)
#20025=*
entry_cfg_node(#20025,#20001)
#20026=@"loc,{#10000},1,1,1,0"
@@ -89,11 +89,11 @@ locations_default(#20026,#10000,1,1,1,0)
hasLocation(#20025,#20026)
#20027=*
exit_cfg_node(#20027,#20001)
hasLocation(#20027,#20024)
successor(#20004,#20008)
successor(#20010,#20006)
successor(#20008,#20010)
successor(#20006,#20027)
successor(#20025,#20004)
hasLocation(#20027,#20017)
successor(#20020,#20023)
successor(#20024,#20021)
successor(#20023,#20024)
successor(#20021,#20027)
successor(#20025,#20020)
numlines(#10000,1,1,1)
filetype(#10000,"javascript")

View File

@@ -9,316 +9,316 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,6,0"
locations_default(#20002,#10000,1,1,6,0)
hasLocation(#20001,#20002)
#20003=@"module;{#10000},1,1"
scopes(#20003,3)
scopenodes(#20001,#20003)
scopenesting(#20003,#20000)
isModule(#20001)
#20004=@"var;{x};{#20003}"
variables(#20004,"x",#20003)
#20005=@"var;{y};{#20003}"
variables(#20005,"y",#20003)
#20006=@"local_type_name;{x};{#20003}"
local_type_names(#20006,"x",#20003)
#20007=@"local_type_name;{y};{#20003}"
local_type_names(#20007,"y",#20003)
#20008=@"local_namespace_name;{x};{#20003}"
local_namespace_names(#20008,"x",#20003)
#20009=@"local_namespace_name;{y};{#20003}"
local_namespace_names(#20009,"y",#20003)
variables(#20004,"x",#20003)
local_type_names(#20006,"x",#20003)
local_namespace_names(#20008,"x",#20003)
#20010=*
stmts(#20010,27,#20001,0,"import ... om 'm';")
#20011=@"loc,{#10000},1,1,1,22"
locations_default(#20011,#10000,1,1,1,22)
hasLocation(#20010,#20011)
stmtContainers(#20010,#20001)
#20012=*
exprs(#20012,4,#20010,-1,"'m'")
#20013=@"loc,{#10000},1,19,1,21"
locations_default(#20013,#10000,1,19,1,21)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20010)
exprContainers(#20012,#20001)
literals("m","'m'",#20012)
#20014=*
exprs(#20014,83,#20010,0,"x")
#20015=@"loc,{#10000},1,10,1,10"
locations_default(#20015,#10000,1,10,1,10)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20010)
exprContainers(#20014,#20001)
#20016=*
exprs(#20016,0,#20014,0,"x")
hasLocation(#20016,#20015)
enclosingStmt(#20016,#20010)
exprContainers(#20016,#20001)
literals("x","x",#20016)
#20017=*
exprs(#20017,78,#20014,1,"x")
hasLocation(#20017,#20015)
enclosingStmt(#20017,#20010)
exprContainers(#20017,#20001)
literals("x","x",#20017)
decl(#20017,#20004)
typedecl(#20017,#20006)
namespacedecl(#20017,#20008)
#20018=*
stmts(#20018,3,#20001,1,"if (!x) ... = y;\n}")
#20019=@"loc,{#10000},2,1,5,1"
locations_default(#20019,#10000,2,1,5,1)
hasLocation(#20018,#20019)
stmtContainers(#20018,#20001)
#20020=*
exprs(#20020,18,#20018,0,"!x")
#20021=@"loc,{#10000},2,5,2,6"
locations_default(#20021,#10000,2,5,2,6)
hasLocation(#20020,#20021)
enclosingStmt(#20020,#20018)
exprContainers(#20020,#20001)
#20022=*
exprs(#20022,79,#20020,0,"x")
#20023=@"loc,{#10000},2,6,2,6"
locations_default(#20023,#10000,2,6,2,6)
hasLocation(#20022,#20023)
enclosingStmt(#20022,#20018)
exprContainers(#20022,#20001)
literals("x","x",#20022)
bind(#20022,#20004)
#20024=*
stmts(#20024,1,#20018,1,"{\n imp ... = y;\n}")
#20025=@"loc,{#10000},2,9,5,1"
locations_default(#20025,#10000,2,9,5,1)
hasLocation(#20024,#20025)
stmtContainers(#20024,#20001)
#20026=*
scopes(#20026,4)
scopenodes(#20024,#20026)
scopenesting(#20026,#20003)
#20027=@"var;{y};{#20026}"
variables(#20027,"y",#20026)
#20028=@"local_type_name;{y};{#20026}"
local_type_names(#20028,"y",#20026)
#20029=@"local_namespace_name;{y};{#20026}"
local_namespace_names(#20029,"y",#20026)
#20030=*
stmts(#20030,27,#20024,0,"import ... om 'm';")
#20031=@"loc,{#10000},3,3,3,24"
locations_default(#20031,#10000,3,3,3,24)
hasLocation(#20030,#20031)
stmtContainers(#20030,#20001)
#20032=*
exprs(#20032,4,#20030,-1,"'m'")
#20033=@"loc,{#10000},3,21,3,23"
locations_default(#20033,#10000,3,21,3,23)
hasLocation(#20032,#20033)
enclosingStmt(#20032,#20030)
exprContainers(#20032,#20001)
literals("m","'m'",#20032)
#20034=*
exprs(#20034,83,#20030,0,"y")
#20035=@"loc,{#10000},3,12,3,12"
locations_default(#20035,#10000,3,12,3,12)
hasLocation(#20034,#20035)
enclosingStmt(#20034,#20030)
exprContainers(#20034,#20001)
#20036=*
exprs(#20036,0,#20034,0,"y")
hasLocation(#20036,#20035)
enclosingStmt(#20036,#20030)
exprContainers(#20036,#20001)
literals("y","y",#20036)
#20037=*
exprs(#20037,78,#20034,1,"y")
hasLocation(#20037,#20035)
enclosingStmt(#20037,#20030)
exprContainers(#20037,#20001)
literals("y","y",#20037)
decl(#20037,#20027)
typedecl(#20037,#20028)
namespacedecl(#20037,#20029)
#20038=*
stmts(#20038,2,#20024,1,"x = y;")
#20039=@"loc,{#10000},4,3,4,8"
locations_default(#20039,#10000,4,3,4,8)
hasLocation(#20038,#20039)
stmtContainers(#20038,#20001)
#20040=*
exprs(#20040,47,#20038,0,"x = y")
#20041=@"loc,{#10000},4,3,4,7"
locations_default(#20041,#10000,4,3,4,7)
hasLocation(#20040,#20041)
enclosingStmt(#20040,#20038)
exprContainers(#20040,#20001)
#20042=*
exprs(#20042,79,#20040,0,"x")
#20043=@"loc,{#10000},4,3,4,3"
locations_default(#20043,#10000,4,3,4,3)
hasLocation(#20042,#20043)
enclosingStmt(#20042,#20038)
exprContainers(#20042,#20001)
literals("x","x",#20042)
bind(#20042,#20004)
#20044=*
exprs(#20044,79,#20040,1,"y")
#20045=@"loc,{#10000},4,7,4,7"
locations_default(#20045,#10000,4,7,4,7)
hasLocation(#20044,#20045)
enclosingStmt(#20044,#20038)
exprContainers(#20044,#20001)
literals("y","y",#20044)
bind(#20044,#20027)
#20046=*
lines(#20046,#20001,"import { x } from 'm';","
#20002=*
lines(#20002,#20001,"import { x } from 'm';","
")
hasLocation(#20046,#20011)
#20047=*
lines(#20047,#20001,"if (!x) {","
#20003=@"loc,{#10000},1,1,1,22"
locations_default(#20003,#10000,1,1,1,22)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001,"if (!x) {","
")
#20048=@"loc,{#10000},2,1,2,9"
locations_default(#20048,#10000,2,1,2,9)
hasLocation(#20047,#20048)
#20049=*
lines(#20049,#20001," import { y } from 'm';","
#20005=@"loc,{#10000},2,1,2,9"
locations_default(#20005,#10000,2,1,2,9)
hasLocation(#20004,#20005)
#20006=*
lines(#20006,#20001," import { y } from 'm';","
")
#20050=@"loc,{#10000},3,1,3,24"
locations_default(#20050,#10000,3,1,3,24)
hasLocation(#20049,#20050)
#20007=@"loc,{#10000},3,1,3,24"
locations_default(#20007,#10000,3,1,3,24)
hasLocation(#20006,#20007)
indentation(#10000,3," ",2)
#20051=*
lines(#20051,#20001," x = y;","
#20008=*
lines(#20008,#20001," x = y;","
")
#20052=@"loc,{#10000},4,1,4,8"
locations_default(#20052,#10000,4,1,4,8)
hasLocation(#20051,#20052)
#20009=@"loc,{#10000},4,1,4,8"
locations_default(#20009,#10000,4,1,4,8)
hasLocation(#20008,#20009)
indentation(#10000,4," ",2)
#20053=*
lines(#20053,#20001,"}","
#20010=*
lines(#20010,#20001,"}","
")
#20054=@"loc,{#10000},5,1,5,1"
locations_default(#20054,#10000,5,1,5,1)
hasLocation(#20053,#20054)
#20011=@"loc,{#10000},5,1,5,1"
locations_default(#20011,#10000,5,1,5,1)
hasLocation(#20010,#20011)
numlines(#20001,5,5,0)
#20055=*
tokeninfo(#20055,7,#20001,0,"import")
#20056=@"loc,{#10000},1,1,1,6"
locations_default(#20056,#10000,1,1,1,6)
hasLocation(#20055,#20056)
#20057=*
tokeninfo(#20057,8,#20001,1,"{")
#20058=@"loc,{#10000},1,8,1,8"
locations_default(#20058,#10000,1,8,1,8)
hasLocation(#20057,#20058)
#20059=*
tokeninfo(#20059,6,#20001,2,"x")
hasLocation(#20059,#20015)
#20012=*
tokeninfo(#20012,7,#20001,0,"import")
#20013=@"loc,{#10000},1,1,1,6"
locations_default(#20013,#10000,1,1,1,6)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,1,"{")
#20015=@"loc,{#10000},1,8,1,8"
locations_default(#20015,#10000,1,8,1,8)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,6,#20001,2,"x")
#20017=@"loc,{#10000},1,10,1,10"
locations_default(#20017,#10000,1,10,1,10)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,3,"}")
#20019=@"loc,{#10000},1,12,1,12"
locations_default(#20019,#10000,1,12,1,12)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,6,#20001,4,"from")
#20021=@"loc,{#10000},1,14,1,17"
locations_default(#20021,#10000,1,14,1,17)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,4,#20001,5,"'m'")
#20023=@"loc,{#10000},1,19,1,21"
locations_default(#20023,#10000,1,19,1,21)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,8,#20001,6,";")
#20025=@"loc,{#10000},1,22,1,22"
locations_default(#20025,#10000,1,22,1,22)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,7,#20001,7,"if")
#20027=@"loc,{#10000},2,1,2,2"
locations_default(#20027,#10000,2,1,2,2)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,8,"(")
#20029=@"loc,{#10000},2,4,2,4"
locations_default(#20029,#10000,2,4,2,4)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,9,"!")
#20031=@"loc,{#10000},2,5,2,5"
locations_default(#20031,#10000,2,5,2,5)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,6,#20001,10,"x")
#20033=@"loc,{#10000},2,6,2,6"
locations_default(#20033,#10000,2,6,2,6)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,8,#20001,11,")")
#20035=@"loc,{#10000},2,7,2,7"
locations_default(#20035,#10000,2,7,2,7)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,8,#20001,12,"{")
#20037=@"loc,{#10000},2,9,2,9"
locations_default(#20037,#10000,2,9,2,9)
hasLocation(#20036,#20037)
#20038=*
tokeninfo(#20038,7,#20001,13,"import")
#20039=@"loc,{#10000},3,3,3,8"
locations_default(#20039,#10000,3,3,3,8)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,8,#20001,14,"{")
#20041=@"loc,{#10000},3,10,3,10"
locations_default(#20041,#10000,3,10,3,10)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,6,#20001,15,"y")
#20043=@"loc,{#10000},3,12,3,12"
locations_default(#20043,#10000,3,12,3,12)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,8,#20001,16,"}")
#20045=@"loc,{#10000},3,14,3,14"
locations_default(#20045,#10000,3,14,3,14)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,6,#20001,17,"from")
#20047=@"loc,{#10000},3,16,3,19"
locations_default(#20047,#10000,3,16,3,19)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,4,#20001,18,"'m'")
#20049=@"loc,{#10000},3,21,3,23"
locations_default(#20049,#10000,3,21,3,23)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,8,#20001,19,";")
#20051=@"loc,{#10000},3,24,3,24"
locations_default(#20051,#10000,3,24,3,24)
hasLocation(#20050,#20051)
#20052=*
tokeninfo(#20052,6,#20001,20,"x")
#20053=@"loc,{#10000},4,3,4,3"
locations_default(#20053,#10000,4,3,4,3)
hasLocation(#20052,#20053)
#20054=*
tokeninfo(#20054,8,#20001,21,"=")
#20055=@"loc,{#10000},4,5,4,5"
locations_default(#20055,#10000,4,5,4,5)
hasLocation(#20054,#20055)
#20056=*
tokeninfo(#20056,6,#20001,22,"y")
#20057=@"loc,{#10000},4,7,4,7"
locations_default(#20057,#10000,4,7,4,7)
hasLocation(#20056,#20057)
#20058=*
tokeninfo(#20058,8,#20001,23,";")
#20059=@"loc,{#10000},4,8,4,8"
locations_default(#20059,#10000,4,8,4,8)
hasLocation(#20058,#20059)
#20060=*
tokeninfo(#20060,8,#20001,3,"}")
#20061=@"loc,{#10000},1,12,1,12"
locations_default(#20061,#10000,1,12,1,12)
hasLocation(#20060,#20061)
#20062=*
tokeninfo(#20062,6,#20001,4,"from")
#20063=@"loc,{#10000},1,14,1,17"
locations_default(#20063,#10000,1,14,1,17)
hasLocation(#20062,#20063)
#20064=*
tokeninfo(#20064,4,#20001,5,"'m'")
hasLocation(#20064,#20013)
#20065=*
tokeninfo(#20065,8,#20001,6,";")
#20066=@"loc,{#10000},1,22,1,22"
locations_default(#20066,#10000,1,22,1,22)
hasLocation(#20065,#20066)
#20067=*
tokeninfo(#20067,7,#20001,7,"if")
#20068=@"loc,{#10000},2,1,2,2"
locations_default(#20068,#10000,2,1,2,2)
hasLocation(#20067,#20068)
#20069=*
tokeninfo(#20069,8,#20001,8,"(")
#20070=@"loc,{#10000},2,4,2,4"
locations_default(#20070,#10000,2,4,2,4)
hasLocation(#20069,#20070)
tokeninfo(#20060,8,#20001,24,"}")
hasLocation(#20060,#20011)
#20061=*
tokeninfo(#20061,0,#20001,25,"")
#20062=@"loc,{#10000},6,1,6,0"
locations_default(#20062,#10000,6,1,6,0)
hasLocation(#20061,#20062)
toplevels(#20001,0)
#20063=@"loc,{#10000},1,1,6,0"
locations_default(#20063,#10000,1,1,6,0)
hasLocation(#20001,#20063)
#20064=@"module;{#10000},1,1"
scopes(#20064,3)
scopenodes(#20001,#20064)
scopenesting(#20064,#20000)
isModule(#20001)
#20065=@"var;{x};{#20064}"
variables(#20065,"x",#20064)
#20066=@"var;{y};{#20064}"
variables(#20066,"y",#20064)
#20067=@"local_type_name;{x};{#20064}"
local_type_names(#20067,"x",#20064)
#20068=@"local_type_name;{y};{#20064}"
local_type_names(#20068,"y",#20064)
#20069=@"local_namespace_name;{x};{#20064}"
local_namespace_names(#20069,"x",#20064)
#20070=@"local_namespace_name;{y};{#20064}"
local_namespace_names(#20070,"y",#20064)
variables(#20065,"x",#20064)
local_type_names(#20067,"x",#20064)
local_namespace_names(#20069,"x",#20064)
#20071=*
tokeninfo(#20071,8,#20001,9,"!")
#20072=@"loc,{#10000},2,5,2,5"
locations_default(#20072,#10000,2,5,2,5)
hasLocation(#20071,#20072)
stmts(#20071,27,#20001,0,"import ... om 'm';")
hasLocation(#20071,#20003)
stmtContainers(#20071,#20001)
#20072=*
exprs(#20072,4,#20071,-1,"'m'")
hasLocation(#20072,#20023)
enclosingStmt(#20072,#20071)
exprContainers(#20072,#20001)
literals("m","'m'",#20072)
#20073=*
tokeninfo(#20073,6,#20001,10,"x")
hasLocation(#20073,#20023)
exprs(#20073,83,#20071,0,"x")
hasLocation(#20073,#20017)
enclosingStmt(#20073,#20071)
exprContainers(#20073,#20001)
#20074=*
tokeninfo(#20074,8,#20001,11,")")
#20075=@"loc,{#10000},2,7,2,7"
locations_default(#20075,#10000,2,7,2,7)
hasLocation(#20074,#20075)
exprs(#20074,0,#20073,0,"x")
hasLocation(#20074,#20017)
enclosingStmt(#20074,#20071)
exprContainers(#20074,#20001)
literals("x","x",#20074)
#20075=*
exprs(#20075,78,#20073,1,"x")
hasLocation(#20075,#20017)
enclosingStmt(#20075,#20071)
exprContainers(#20075,#20001)
literals("x","x",#20075)
decl(#20075,#20065)
typedecl(#20075,#20067)
namespacedecl(#20075,#20069)
#20076=*
tokeninfo(#20076,8,#20001,12,"{")
#20077=@"loc,{#10000},2,9,2,9"
locations_default(#20077,#10000,2,9,2,9)
stmts(#20076,3,#20001,1,"if (!x) ... = y;\n}")
#20077=@"loc,{#10000},2,1,5,1"
locations_default(#20077,#10000,2,1,5,1)
hasLocation(#20076,#20077)
stmtContainers(#20076,#20001)
#20078=*
tokeninfo(#20078,7,#20001,13,"import")
#20079=@"loc,{#10000},3,3,3,8"
locations_default(#20079,#10000,3,3,3,8)
exprs(#20078,18,#20076,0,"!x")
#20079=@"loc,{#10000},2,5,2,6"
locations_default(#20079,#10000,2,5,2,6)
hasLocation(#20078,#20079)
enclosingStmt(#20078,#20076)
exprContainers(#20078,#20001)
#20080=*
tokeninfo(#20080,8,#20001,14,"{")
#20081=@"loc,{#10000},3,10,3,10"
locations_default(#20081,#10000,3,10,3,10)
hasLocation(#20080,#20081)
#20082=*
tokeninfo(#20082,6,#20001,15,"y")
hasLocation(#20082,#20035)
exprs(#20080,79,#20078,0,"x")
hasLocation(#20080,#20033)
enclosingStmt(#20080,#20076)
exprContainers(#20080,#20001)
literals("x","x",#20080)
bind(#20080,#20065)
#20081=*
stmts(#20081,1,#20076,1,"{\n imp ... = y;\n}")
#20082=@"loc,{#10000},2,9,5,1"
locations_default(#20082,#10000,2,9,5,1)
hasLocation(#20081,#20082)
stmtContainers(#20081,#20001)
#20083=*
tokeninfo(#20083,8,#20001,16,"}")
#20084=@"loc,{#10000},3,14,3,14"
locations_default(#20084,#10000,3,14,3,14)
hasLocation(#20083,#20084)
#20085=*
tokeninfo(#20085,6,#20001,17,"from")
#20086=@"loc,{#10000},3,16,3,19"
locations_default(#20086,#10000,3,16,3,19)
hasLocation(#20085,#20086)
scopes(#20083,4)
scopenodes(#20081,#20083)
scopenesting(#20083,#20064)
#20084=@"var;{y};{#20083}"
variables(#20084,"y",#20083)
#20085=@"local_type_name;{y};{#20083}"
local_type_names(#20085,"y",#20083)
#20086=@"local_namespace_name;{y};{#20083}"
local_namespace_names(#20086,"y",#20083)
#20087=*
tokeninfo(#20087,4,#20001,18,"'m'")
hasLocation(#20087,#20033)
#20088=*
tokeninfo(#20088,8,#20001,19,";")
#20089=@"loc,{#10000},3,24,3,24"
locations_default(#20089,#10000,3,24,3,24)
hasLocation(#20088,#20089)
stmts(#20087,27,#20081,0,"import ... om 'm';")
#20088=@"loc,{#10000},3,3,3,24"
locations_default(#20088,#10000,3,3,3,24)
hasLocation(#20087,#20088)
stmtContainers(#20087,#20001)
#20089=*
exprs(#20089,4,#20087,-1,"'m'")
hasLocation(#20089,#20049)
enclosingStmt(#20089,#20087)
exprContainers(#20089,#20001)
literals("m","'m'",#20089)
#20090=*
tokeninfo(#20090,6,#20001,20,"x")
exprs(#20090,83,#20087,0,"y")
hasLocation(#20090,#20043)
enclosingStmt(#20090,#20087)
exprContainers(#20090,#20001)
#20091=*
tokeninfo(#20091,8,#20001,21,"=")
#20092=@"loc,{#10000},4,5,4,5"
locations_default(#20092,#10000,4,5,4,5)
hasLocation(#20091,#20092)
exprs(#20091,0,#20090,0,"y")
hasLocation(#20091,#20043)
enclosingStmt(#20091,#20087)
exprContainers(#20091,#20001)
literals("y","y",#20091)
#20092=*
exprs(#20092,78,#20090,1,"y")
hasLocation(#20092,#20043)
enclosingStmt(#20092,#20087)
exprContainers(#20092,#20001)
literals("y","y",#20092)
decl(#20092,#20084)
typedecl(#20092,#20085)
namespacedecl(#20092,#20086)
#20093=*
tokeninfo(#20093,6,#20001,22,"y")
hasLocation(#20093,#20045)
#20094=*
tokeninfo(#20094,8,#20001,23,";")
#20095=@"loc,{#10000},4,8,4,8"
locations_default(#20095,#10000,4,8,4,8)
hasLocation(#20094,#20095)
#20096=*
tokeninfo(#20096,8,#20001,24,"}")
hasLocation(#20096,#20054)
stmts(#20093,2,#20081,1,"x = y;")
#20094=@"loc,{#10000},4,3,4,8"
locations_default(#20094,#10000,4,3,4,8)
hasLocation(#20093,#20094)
stmtContainers(#20093,#20001)
#20095=*
exprs(#20095,47,#20093,0,"x = y")
#20096=@"loc,{#10000},4,3,4,7"
locations_default(#20096,#10000,4,3,4,7)
hasLocation(#20095,#20096)
enclosingStmt(#20095,#20093)
exprContainers(#20095,#20001)
#20097=*
tokeninfo(#20097,0,#20001,25,"")
#20098=@"loc,{#10000},6,1,6,0"
locations_default(#20098,#10000,6,1,6,0)
hasLocation(#20097,#20098)
exprs(#20097,79,#20095,0,"x")
hasLocation(#20097,#20053)
enclosingStmt(#20097,#20093)
exprContainers(#20097,#20001)
literals("x","x",#20097)
bind(#20097,#20065)
#20098=*
exprs(#20098,79,#20095,1,"y")
hasLocation(#20098,#20057)
enclosingStmt(#20098,#20093)
exprContainers(#20098,#20001)
literals("y","y",#20098)
bind(#20098,#20084)
#20099=*
entry_cfg_node(#20099,#20001)
#20100=@"loc,{#10000},1,1,1,0"
@@ -326,28 +326,28 @@ locations_default(#20100,#10000,1,1,1,0)
hasLocation(#20099,#20100)
#20101=*
exit_cfg_node(#20101,#20001)
hasLocation(#20101,#20098)
successor(#20018,#20022)
successor(#20022,#20020)
hasLocation(#20101,#20062)
successor(#20076,#20080)
successor(#20080,#20078)
#20102=*
guard_node(#20102,0,#20022)
hasLocation(#20102,#20023)
successor(#20102,#20024)
guard_node(#20102,0,#20080)
hasLocation(#20102,#20033)
successor(#20102,#20081)
#20103=*
guard_node(#20103,1,#20022)
hasLocation(#20103,#20023)
guard_node(#20103,1,#20080)
hasLocation(#20103,#20033)
successor(#20103,#20101)
successor(#20020,#20102)
successor(#20020,#20103)
successor(#20024,#20030)
successor(#20038,#20042)
successor(#20044,#20040)
successor(#20042,#20044)
successor(#20040,#20101)
successor(#20030,#20034)
successor(#20034,#20038)
successor(#20010,#20018)
successor(#20014,#20010)
successor(#20099,#20014)
successor(#20078,#20102)
successor(#20078,#20103)
successor(#20081,#20087)
successor(#20093,#20097)
successor(#20098,#20095)
successor(#20097,#20098)
successor(#20095,#20101)
successor(#20087,#20090)
successor(#20090,#20093)
successor(#20071,#20076)
successor(#20073,#20071)
successor(#20099,#20073)
numlines(#10000,5,5,0)
filetype(#10000,"javascript")

View File

@@ -9,150 +9,149 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,3,1"
locations_default(#20002,#10000,1,1,3,1)
hasLocation(#20001,#20002)
#20003=@"var;{f};{#20000}"
variables(#20003,"f",#20000)
#20002=*
lines(#20002,#20001,"function f() {","
")
#20003=@"loc,{#10000},1,1,1,14"
locations_default(#20003,#10000,1,1,1,14)
hasLocation(#20002,#20003)
#20004=*
stmts(#20004,17,#20001,0,"functio ... rget;\n}")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,78,#20004,-1,"f")
#20006=@"loc,{#10000},1,10,1,10"
locations_default(#20006,#10000,1,10,1,10)
hasLocation(#20005,#20006)
exprContainers(#20005,#20004)
literals("f","f",#20005)
decl(#20005,#20003)
#20007=*
scopes(#20007,1)
scopenodes(#20004,#20007)
scopenesting(#20007,#20000)
#20008=@"var;{arguments};{#20007}"
variables(#20008,"arguments",#20007)
isArgumentsObject(#20008)
#20009=*
stmts(#20009,1,#20004,-2,"{\n ret ... rget;\n}")
#20010=@"loc,{#10000},1,14,3,1"
locations_default(#20010,#10000,1,14,3,1)
hasLocation(#20009,#20010)
stmtContainers(#20009,#20004)
#20011=*
stmts(#20011,9,#20009,0,"return !!new.target;")
#20012=@"loc,{#10000},2,3,2,22"
locations_default(#20012,#10000,2,3,2,22)
hasLocation(#20011,#20012)
stmtContainers(#20011,#20004)
#20013=*
exprs(#20013,18,#20011,0,"!!new.target")
#20014=@"loc,{#10000},2,10,2,21"
locations_default(#20014,#10000,2,10,2,21)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20011)
exprContainers(#20013,#20004)
#20015=*
exprs(#20015,18,#20013,0,"!new.target")
#20016=@"loc,{#10000},2,11,2,21"
locations_default(#20016,#10000,2,11,2,21)
hasLocation(#20015,#20016)
enclosingStmt(#20015,#20011)
exprContainers(#20015,#20004)
#20017=*
exprs(#20017,82,#20015,0,"new.target")
#20018=@"loc,{#10000},2,12,2,21"
locations_default(#20018,#10000,2,12,2,21)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20011)
exprContainers(#20017,#20004)
numlines(#20004,3,3,0)
#20019=*
lines(#20019,#20001,"function f() {","
lines(#20004,#20001," return !!new.target;","
")
#20020=@"loc,{#10000},1,1,1,14"
locations_default(#20020,#10000,1,1,1,14)
hasLocation(#20019,#20020)
#20021=*
lines(#20021,#20001," return !!new.target;","
")
#20022=@"loc,{#10000},2,1,2,22"
locations_default(#20022,#10000,2,1,2,22)
hasLocation(#20021,#20022)
#20005=@"loc,{#10000},2,1,2,22"
locations_default(#20005,#10000,2,1,2,22)
hasLocation(#20004,#20005)
indentation(#10000,2," ",2)
#20023=*
lines(#20023,#20001,"}","")
#20024=@"loc,{#10000},3,1,3,1"
locations_default(#20024,#10000,3,1,3,1)
hasLocation(#20023,#20024)
#20006=*
lines(#20006,#20001,"}","")
#20007=@"loc,{#10000},3,1,3,1"
locations_default(#20007,#10000,3,1,3,1)
hasLocation(#20006,#20007)
numlines(#20001,3,3,0)
#20025=*
tokeninfo(#20025,7,#20001,0,"function")
#20026=@"loc,{#10000},1,1,1,8"
locations_default(#20026,#10000,1,1,1,8)
hasLocation(#20025,#20026)
#20027=*
tokeninfo(#20027,6,#20001,1,"f")
hasLocation(#20027,#20006)
#20008=*
tokeninfo(#20008,7,#20001,0,"function")
#20009=@"loc,{#10000},1,1,1,8"
locations_default(#20009,#10000,1,1,1,8)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,6,#20001,1,"f")
#20011=@"loc,{#10000},1,10,1,10"
locations_default(#20011,#10000,1,10,1,10)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,8,#20001,2,"(")
#20013=@"loc,{#10000},1,11,1,11"
locations_default(#20013,#10000,1,11,1,11)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,3,")")
#20015=@"loc,{#10000},1,12,1,12"
locations_default(#20015,#10000,1,12,1,12)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,4,"{")
#20017=@"loc,{#10000},1,14,1,14"
locations_default(#20017,#10000,1,14,1,14)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,7,#20001,5,"return")
#20019=@"loc,{#10000},2,3,2,8"
locations_default(#20019,#10000,2,3,2,8)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,8,#20001,6,"!")
#20021=@"loc,{#10000},2,10,2,10"
locations_default(#20021,#10000,2,10,2,10)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,7,"!")
#20023=@"loc,{#10000},2,11,2,11"
locations_default(#20023,#10000,2,11,2,11)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,7,#20001,8,"new")
#20025=@"loc,{#10000},2,12,2,14"
locations_default(#20025,#10000,2,12,2,14)
hasLocation(#20024,#20025)
#20026=*
tokeninfo(#20026,8,#20001,9,".")
#20027=@"loc,{#10000},2,15,2,15"
locations_default(#20027,#10000,2,15,2,15)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,2,"(")
#20029=@"loc,{#10000},1,11,1,11"
locations_default(#20029,#10000,1,11,1,11)
tokeninfo(#20028,6,#20001,10,"target")
#20029=@"loc,{#10000},2,16,2,21"
locations_default(#20029,#10000,2,16,2,21)
hasLocation(#20028,#20029)
#20030=*
tokeninfo(#20030,8,#20001,3,")")
#20031=@"loc,{#10000},1,12,1,12"
locations_default(#20031,#10000,1,12,1,12)
tokeninfo(#20030,8,#20001,11,";")
#20031=@"loc,{#10000},2,22,2,22"
locations_default(#20031,#10000,2,22,2,22)
hasLocation(#20030,#20031)
#20032=*
tokeninfo(#20032,8,#20001,4,"{")
#20033=@"loc,{#10000},1,14,1,14"
locations_default(#20033,#10000,1,14,1,14)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,7,#20001,5,"return")
#20035=@"loc,{#10000},2,3,2,8"
locations_default(#20035,#10000,2,3,2,8)
hasLocation(#20034,#20035)
#20036=*
tokeninfo(#20036,8,#20001,6,"!")
#20037=@"loc,{#10000},2,10,2,10"
locations_default(#20037,#10000,2,10,2,10)
hasLocation(#20036,#20037)
tokeninfo(#20032,8,#20001,12,"}")
hasLocation(#20032,#20007)
#20033=*
tokeninfo(#20033,0,#20001,13,"")
#20034=@"loc,{#10000},3,2,3,1"
locations_default(#20034,#10000,3,2,3,1)
hasLocation(#20033,#20034)
toplevels(#20001,0)
#20035=@"loc,{#10000},1,1,3,1"
locations_default(#20035,#10000,1,1,3,1)
hasLocation(#20001,#20035)
#20036=@"var;{f};{#20000}"
variables(#20036,"f",#20000)
#20037=*
stmts(#20037,17,#20001,0,"functio ... rget;\n}")
hasLocation(#20037,#20035)
stmtContainers(#20037,#20001)
#20038=*
tokeninfo(#20038,8,#20001,7,"!")
#20039=@"loc,{#10000},2,11,2,11"
locations_default(#20039,#10000,2,11,2,11)
hasLocation(#20038,#20039)
#20040=*
tokeninfo(#20040,7,#20001,8,"new")
#20041=@"loc,{#10000},2,12,2,14"
locations_default(#20041,#10000,2,12,2,14)
hasLocation(#20040,#20041)
#20042=*
tokeninfo(#20042,8,#20001,9,".")
#20043=@"loc,{#10000},2,15,2,15"
locations_default(#20043,#10000,2,15,2,15)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,6,#20001,10,"target")
#20045=@"loc,{#10000},2,16,2,21"
locations_default(#20045,#10000,2,16,2,21)
hasLocation(#20044,#20045)
#20046=*
tokeninfo(#20046,8,#20001,11,";")
#20047=@"loc,{#10000},2,22,2,22"
locations_default(#20047,#10000,2,22,2,22)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,8,#20001,12,"}")
hasLocation(#20048,#20024)
exprs(#20038,78,#20037,-1,"f")
hasLocation(#20038,#20011)
exprContainers(#20038,#20037)
literals("f","f",#20038)
decl(#20038,#20036)
#20039=*
scopes(#20039,1)
scopenodes(#20037,#20039)
scopenesting(#20039,#20000)
#20040=@"var;{arguments};{#20039}"
variables(#20040,"arguments",#20039)
isArgumentsObject(#20040)
#20041=*
stmts(#20041,1,#20037,-2,"{\n ret ... rget;\n}")
#20042=@"loc,{#10000},1,14,3,1"
locations_default(#20042,#10000,1,14,3,1)
hasLocation(#20041,#20042)
stmtContainers(#20041,#20037)
#20043=*
stmts(#20043,9,#20041,0,"return !!new.target;")
#20044=@"loc,{#10000},2,3,2,22"
locations_default(#20044,#10000,2,3,2,22)
hasLocation(#20043,#20044)
stmtContainers(#20043,#20037)
#20045=*
exprs(#20045,18,#20043,0,"!!new.target")
#20046=@"loc,{#10000},2,10,2,21"
locations_default(#20046,#10000,2,10,2,21)
hasLocation(#20045,#20046)
enclosingStmt(#20045,#20043)
exprContainers(#20045,#20037)
#20047=*
exprs(#20047,18,#20045,0,"!new.target")
#20048=@"loc,{#10000},2,11,2,21"
locations_default(#20048,#10000,2,11,2,21)
hasLocation(#20047,#20048)
enclosingStmt(#20047,#20043)
exprContainers(#20047,#20037)
#20049=*
tokeninfo(#20049,0,#20001,13,"")
#20050=@"loc,{#10000},3,2,3,1"
locations_default(#20050,#10000,3,2,3,1)
exprs(#20049,82,#20047,0,"new.target")
#20050=@"loc,{#10000},2,12,2,21"
locations_default(#20050,#10000,2,12,2,21)
hasLocation(#20049,#20050)
enclosingStmt(#20049,#20043)
exprContainers(#20049,#20037)
#20051=*
entry_cfg_node(#20051,#20001)
#20052=@"loc,{#10000},1,1,1,0"
@@ -160,21 +159,21 @@ locations_default(#20052,#10000,1,1,1,0)
hasLocation(#20051,#20052)
#20053=*
exit_cfg_node(#20053,#20001)
hasLocation(#20053,#20050)
successor(#20004,#20053)
hasLocation(#20053,#20034)
successor(#20037,#20053)
#20054=*
entry_cfg_node(#20054,#20004)
entry_cfg_node(#20054,#20037)
hasLocation(#20054,#20052)
#20055=*
exit_cfg_node(#20055,#20004)
hasLocation(#20055,#20050)
successor(#20009,#20017)
successor(#20017,#20015)
successor(#20015,#20013)
successor(#20013,#20011)
successor(#20011,#20055)
successor(#20054,#20009)
successor(#20005,#20004)
successor(#20051,#20005)
exit_cfg_node(#20055,#20037)
hasLocation(#20055,#20034)
successor(#20041,#20049)
successor(#20049,#20047)
successor(#20047,#20045)
successor(#20045,#20043)
successor(#20043,#20055)
successor(#20054,#20041)
successor(#20038,#20037)
successor(#20051,#20038)
numlines(#10000,3,3,0)
filetype(#10000,"javascript")

View File

@@ -9,46 +9,46 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,2,0"
locations_default(#20002,#10000,1,1,2,0)
hasLocation(#20001,#20002)
#20003=*
stmts(#20003,2,#20001,0,"``")
#20004=@"loc,{#10000},1,1,1,2"
locations_default(#20004,#10000,1,1,1,2)
hasLocation(#20003,#20004)
stmtContainers(#20003,#20001)
#20005=*
exprs(#20005,71,#20003,0,"``")
hasLocation(#20005,#20004)
enclosingStmt(#20005,#20003)
exprContainers(#20005,#20001)
#20006=*
lines(#20006,#20001,"``","
#20002=*
lines(#20002,#20001,"``","
")
hasLocation(#20006,#20004)
#20003=@"loc,{#10000},1,1,1,2"
locations_default(#20003,#10000,1,1,1,2)
hasLocation(#20002,#20003)
numlines(#20001,1,1,0)
#20007=*
tokeninfo(#20007,8,#20001,0,"`")
#20008=@"loc,{#10000},1,1,1,1"
locations_default(#20008,#10000,1,1,1,1)
hasLocation(#20007,#20008)
#20009=*
tokeninfo(#20009,4,#20001,1,"")
#20010=@"loc,{#10000},1,2,1,1"
locations_default(#20010,#10000,1,2,1,1)
hasLocation(#20009,#20010)
#20011=*
tokeninfo(#20011,8,#20001,2,"`")
#20012=@"loc,{#10000},1,2,1,2"
locations_default(#20012,#10000,1,2,1,2)
hasLocation(#20011,#20012)
#20004=*
tokeninfo(#20004,8,#20001,0,"`")
#20005=@"loc,{#10000},1,1,1,1"
locations_default(#20005,#10000,1,1,1,1)
hasLocation(#20004,#20005)
#20006=*
tokeninfo(#20006,4,#20001,1,"")
#20007=@"loc,{#10000},1,2,1,1"
locations_default(#20007,#10000,1,2,1,1)
hasLocation(#20006,#20007)
#20008=*
tokeninfo(#20008,8,#20001,2,"`")
#20009=@"loc,{#10000},1,2,1,2"
locations_default(#20009,#10000,1,2,1,2)
hasLocation(#20008,#20009)
#20010=*
tokeninfo(#20010,0,#20001,3,"")
#20011=@"loc,{#10000},2,1,2,0"
locations_default(#20011,#10000,2,1,2,0)
hasLocation(#20010,#20011)
toplevels(#20001,0)
#20012=@"loc,{#10000},1,1,2,0"
locations_default(#20012,#10000,1,1,2,0)
hasLocation(#20001,#20012)
#20013=*
tokeninfo(#20013,0,#20001,3,"")
#20014=@"loc,{#10000},2,1,2,0"
locations_default(#20014,#10000,2,1,2,0)
hasLocation(#20013,#20014)
stmts(#20013,2,#20001,0,"``")
hasLocation(#20013,#20003)
stmtContainers(#20013,#20001)
#20014=*
exprs(#20014,71,#20013,0,"``")
hasLocation(#20014,#20003)
enclosingStmt(#20014,#20013)
exprContainers(#20014,#20001)
#20015=*
entry_cfg_node(#20015,#20001)
#20016=@"loc,{#10000},1,1,1,0"
@@ -56,9 +56,9 @@ locations_default(#20016,#10000,1,1,1,0)
hasLocation(#20015,#20016)
#20017=*
exit_cfg_node(#20017,#20001)
hasLocation(#20017,#20014)
successor(#20003,#20005)
successor(#20005,#20017)
successor(#20015,#20003)
hasLocation(#20017,#20011)
successor(#20013,#20014)
successor(#20014,#20017)
successor(#20015,#20013)
numlines(#10000,1,1,0)
filetype(#10000,"javascript")

View File

@@ -9,191 +9,189 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,4,0"
locations_default(#20002,#10000,1,1,4,0)
hasLocation(#20001,#20002)
#20003=@"var;{C};{#20000}"
variables(#20003,"C",#20000)
#20004=@"local_type_name;{C};{#20000}"
local_type_names(#20004,"C",#20000)
#20005=*
stmts(#20005,26,#20001,0,"class C ... ) { }\n}")
#20006=@"loc,{#10000},1,1,3,1"
locations_default(#20006,#10000,1,1,3,1)
hasLocation(#20005,#20006)
stmtContainers(#20005,#20001)
#20007=*
exprs(#20007,78,#20005,0,"C")
#20008=@"loc,{#10000},1,7,1,7"
locations_default(#20008,#10000,1,7,1,7)
hasLocation(#20007,#20008)
enclosingStmt(#20007,#20005)
exprContainers(#20007,#20001)
literals("C","C",#20007)
decl(#20007,#20003)
typedecl(#20007,#20004)
#20009=*
scopes(#20009,10)
scopenodes(#20005,#20009)
scopenesting(#20009,#20000)
#20002=*
lines(#20002,#20001,"class C {","
")
#20003=@"loc,{#10000},1,1,1,9"
locations_default(#20003,#10000,1,1,1,9)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001," set [null](v) { }","
")
#20005=@"loc,{#10000},2,1,2,19"
locations_default(#20005,#10000,2,1,2,19)
hasLocation(#20004,#20005)
indentation(#10000,2," ",2)
#20006=*
lines(#20006,#20001,"}","
")
#20007=@"loc,{#10000},3,1,3,1"
locations_default(#20007,#10000,3,1,3,1)
hasLocation(#20006,#20007)
numlines(#20001,3,3,0)
#20008=*
tokeninfo(#20008,7,#20001,0,"class")
#20009=@"loc,{#10000},1,1,1,5"
locations_default(#20009,#10000,1,1,1,5)
hasLocation(#20008,#20009)
#20010=*
properties(#20010,#20005,2,2,"set [null](v) { }")
#20011=@"loc,{#10000},2,3,2,19"
locations_default(#20011,#10000,2,3,2,19)
tokeninfo(#20010,6,#20001,1,"C")
#20011=@"loc,{#10000},1,7,1,7"
locations_default(#20011,#10000,1,7,1,7)
hasLocation(#20010,#20011)
#20012=*
exprs(#20012,1,#20010,0,"null")
#20013=@"loc,{#10000},2,8,2,11"
locations_default(#20013,#10000,2,8,2,11)
tokeninfo(#20012,8,#20001,2,"{")
#20013=@"loc,{#10000},1,9,1,9"
locations_default(#20013,#10000,1,9,1,9)
hasLocation(#20012,#20013)
enclosingStmt(#20012,#20005)
exprContainers(#20012,#20001)
literals("null","null",#20012)
#20014=*
exprs(#20014,9,#20010,1,"(v) { }")
#20015=@"loc,{#10000},2,13,2,19"
locations_default(#20015,#10000,2,13,2,19)
tokeninfo(#20014,6,#20001,3,"set")
#20015=@"loc,{#10000},2,3,2,5"
locations_default(#20015,#10000,2,3,2,5)
hasLocation(#20014,#20015)
enclosingStmt(#20014,#20005)
exprContainers(#20014,#20001)
#20016=*
scopes(#20016,1)
scopenodes(#20014,#20016)
scopenesting(#20016,#20009)
#20017=@"var;{v};{#20016}"
variables(#20017,"v",#20016)
tokeninfo(#20016,8,#20001,4,"[")
#20017=@"loc,{#10000},2,7,2,7"
locations_default(#20017,#10000,2,7,2,7)
hasLocation(#20016,#20017)
#20018=*
exprs(#20018,78,#20014,0,"v")
#20019=@"loc,{#10000},2,14,2,14"
locations_default(#20019,#10000,2,14,2,14)
tokeninfo(#20018,1,#20001,5,"null")
#20019=@"loc,{#10000},2,8,2,11"
locations_default(#20019,#10000,2,8,2,11)
hasLocation(#20018,#20019)
exprContainers(#20018,#20014)
literals("v","v",#20018)
decl(#20018,#20017)
#20020=@"var;{arguments};{#20016}"
variables(#20020,"arguments",#20016)
isArgumentsObject(#20020)
#20021=*
stmts(#20021,1,#20014,-2,"{ }")
#20022=@"loc,{#10000},2,17,2,19"
locations_default(#20022,#10000,2,17,2,19)
hasLocation(#20021,#20022)
stmtContainers(#20021,#20014)
numlines(#20014,1,1,0)
isMethod(#20010)
isComputed(#20010)
#20023=*
properties(#20023,#20005,3,0,"constructor() {}")
#20024=@"loc,{#10000},1,9,1,8"
locations_default(#20024,#10000,1,9,1,8)
hasLocation(#20023,#20024)
#20025=*
exprs(#20025,0,#20023,0,"constructor")
hasLocation(#20025,#20024)
enclosingStmt(#20025,#20005)
exprContainers(#20025,#20001)
literals("constructor","constructor",#20025)
#20020=*
tokeninfo(#20020,8,#20001,6,"]")
#20021=@"loc,{#10000},2,12,2,12"
locations_default(#20021,#10000,2,12,2,12)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,7,"(")
#20023=@"loc,{#10000},2,13,2,13"
locations_default(#20023,#10000,2,13,2,13)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,6,#20001,8,"v")
#20025=@"loc,{#10000},2,14,2,14"
locations_default(#20025,#10000,2,14,2,14)
hasLocation(#20024,#20025)
#20026=*
exprs(#20026,9,#20023,1,"() {}")
hasLocation(#20026,#20024)
enclosingStmt(#20026,#20005)
exprContainers(#20026,#20001)
#20027=*
scopes(#20027,1)
scopenodes(#20026,#20027)
scopenesting(#20027,#20009)
#20028=@"var;{arguments};{#20027}"
variables(#20028,"arguments",#20027)
isArgumentsObject(#20028)
#20029=*
stmts(#20029,1,#20026,-2,"{}")
hasLocation(#20029,#20024)
stmtContainers(#20029,#20026)
numlines(#20026,1,0,0)
isMethod(#20023)
tokeninfo(#20026,8,#20001,9,")")
#20027=@"loc,{#10000},2,15,2,15"
locations_default(#20027,#10000,2,15,2,15)
hasLocation(#20026,#20027)
#20028=*
tokeninfo(#20028,8,#20001,10,"{")
#20029=@"loc,{#10000},2,17,2,17"
locations_default(#20029,#10000,2,17,2,17)
hasLocation(#20028,#20029)
#20030=*
lines(#20030,#20001,"class C {","
")
#20031=@"loc,{#10000},1,1,1,9"
locations_default(#20031,#10000,1,1,1,9)
tokeninfo(#20030,8,#20001,11,"}")
#20031=@"loc,{#10000},2,19,2,19"
locations_default(#20031,#10000,2,19,2,19)
hasLocation(#20030,#20031)
#20032=*
lines(#20032,#20001," set [null](v) { }","
")
#20033=@"loc,{#10000},2,1,2,19"
locations_default(#20033,#10000,2,1,2,19)
hasLocation(#20032,#20033)
indentation(#10000,2," ",2)
#20034=*
lines(#20034,#20001,"}","
")
#20035=@"loc,{#10000},3,1,3,1"
locations_default(#20035,#10000,3,1,3,1)
hasLocation(#20034,#20035)
numlines(#20001,3,3,0)
#20036=*
tokeninfo(#20036,7,#20001,0,"class")
#20037=@"loc,{#10000},1,1,1,5"
locations_default(#20037,#10000,1,1,1,5)
hasLocation(#20036,#20037)
tokeninfo(#20032,8,#20001,12,"}")
hasLocation(#20032,#20007)
#20033=*
tokeninfo(#20033,0,#20001,13,"")
#20034=@"loc,{#10000},4,1,4,0"
locations_default(#20034,#10000,4,1,4,0)
hasLocation(#20033,#20034)
toplevels(#20001,0)
#20035=@"loc,{#10000},1,1,4,0"
locations_default(#20035,#10000,1,1,4,0)
hasLocation(#20001,#20035)
#20036=@"var;{C};{#20000}"
variables(#20036,"C",#20000)
#20037=@"local_type_name;{C};{#20000}"
local_type_names(#20037,"C",#20000)
#20038=*
tokeninfo(#20038,6,#20001,1,"C")
hasLocation(#20038,#20008)
#20039=*
tokeninfo(#20039,8,#20001,2,"{")
#20040=@"loc,{#10000},1,9,1,9"
locations_default(#20040,#10000,1,9,1,9)
hasLocation(#20039,#20040)
stmts(#20038,26,#20001,0,"class C ... ) { }\n}")
#20039=@"loc,{#10000},1,1,3,1"
locations_default(#20039,#10000,1,1,3,1)
hasLocation(#20038,#20039)
stmtContainers(#20038,#20001)
#20040=*
exprs(#20040,78,#20038,0,"C")
hasLocation(#20040,#20011)
enclosingStmt(#20040,#20038)
exprContainers(#20040,#20001)
literals("C","C",#20040)
decl(#20040,#20036)
typedecl(#20040,#20037)
#20041=*
tokeninfo(#20041,6,#20001,3,"set")
#20042=@"loc,{#10000},2,3,2,5"
locations_default(#20042,#10000,2,3,2,5)
hasLocation(#20041,#20042)
#20043=*
tokeninfo(#20043,8,#20001,4,"[")
#20044=@"loc,{#10000},2,7,2,7"
locations_default(#20044,#10000,2,7,2,7)
hasLocation(#20043,#20044)
scopes(#20041,10)
scopenodes(#20038,#20041)
scopenesting(#20041,#20000)
#20042=*
properties(#20042,#20038,2,2,"set [null](v) { }")
#20043=@"loc,{#10000},2,3,2,19"
locations_default(#20043,#10000,2,3,2,19)
hasLocation(#20042,#20043)
#20044=*
exprs(#20044,1,#20042,0,"null")
hasLocation(#20044,#20019)
enclosingStmt(#20044,#20038)
exprContainers(#20044,#20001)
literals("null","null",#20044)
#20045=*
tokeninfo(#20045,1,#20001,5,"null")
hasLocation(#20045,#20013)
#20046=*
tokeninfo(#20046,8,#20001,6,"]")
#20047=@"loc,{#10000},2,12,2,12"
locations_default(#20047,#10000,2,12,2,12)
hasLocation(#20046,#20047)
#20048=*
tokeninfo(#20048,8,#20001,7,"(")
#20049=@"loc,{#10000},2,13,2,13"
locations_default(#20049,#10000,2,13,2,13)
hasLocation(#20048,#20049)
#20050=*
tokeninfo(#20050,6,#20001,8,"v")
hasLocation(#20050,#20019)
exprs(#20045,9,#20042,1,"(v) { }")
#20046=@"loc,{#10000},2,13,2,19"
locations_default(#20046,#10000,2,13,2,19)
hasLocation(#20045,#20046)
enclosingStmt(#20045,#20038)
exprContainers(#20045,#20001)
#20047=*
scopes(#20047,1)
scopenodes(#20045,#20047)
scopenesting(#20047,#20041)
#20048=@"var;{v};{#20047}"
variables(#20048,"v",#20047)
#20049=*
exprs(#20049,78,#20045,0,"v")
hasLocation(#20049,#20025)
exprContainers(#20049,#20045)
literals("v","v",#20049)
decl(#20049,#20048)
#20050=@"var;{arguments};{#20047}"
variables(#20050,"arguments",#20047)
isArgumentsObject(#20050)
#20051=*
tokeninfo(#20051,8,#20001,9,")")
#20052=@"loc,{#10000},2,15,2,15"
locations_default(#20052,#10000,2,15,2,15)
stmts(#20051,1,#20045,-2,"{ }")
#20052=@"loc,{#10000},2,17,2,19"
locations_default(#20052,#10000,2,17,2,19)
hasLocation(#20051,#20052)
stmtContainers(#20051,#20045)
isMethod(#20042)
isComputed(#20042)
#20053=*
tokeninfo(#20053,8,#20001,10,"{")
#20054=@"loc,{#10000},2,17,2,17"
locations_default(#20054,#10000,2,17,2,17)
properties(#20053,#20038,3,0,"constructor() {}")
#20054=@"loc,{#10000},1,9,1,8"
locations_default(#20054,#10000,1,9,1,8)
hasLocation(#20053,#20054)
#20055=*
tokeninfo(#20055,8,#20001,11,"}")
#20056=@"loc,{#10000},2,19,2,19"
locations_default(#20056,#10000,2,19,2,19)
hasLocation(#20055,#20056)
exprs(#20055,0,#20053,0,"constructor")
hasLocation(#20055,#20054)
enclosingStmt(#20055,#20038)
exprContainers(#20055,#20001)
literals("constructor","constructor",#20055)
#20056=*
exprs(#20056,9,#20053,1,"() {}")
hasLocation(#20056,#20054)
enclosingStmt(#20056,#20038)
exprContainers(#20056,#20001)
#20057=*
tokeninfo(#20057,8,#20001,12,"}")
hasLocation(#20057,#20035)
#20058=*
tokeninfo(#20058,0,#20001,13,"")
#20059=@"loc,{#10000},4,1,4,0"
locations_default(#20059,#10000,4,1,4,0)
hasLocation(#20058,#20059)
scopes(#20057,1)
scopenodes(#20056,#20057)
scopenesting(#20057,#20041)
#20058=@"var;{arguments};{#20057}"
variables(#20058,"arguments",#20057)
isArgumentsObject(#20058)
#20059=*
stmts(#20059,1,#20056,-2,"{}")
hasLocation(#20059,#20054)
stmtContainers(#20059,#20056)
isMethod(#20053)
#20060=*
entry_cfg_node(#20060,#20001)
#20061=@"loc,{#10000},1,1,1,0"
@@ -201,36 +199,36 @@ locations_default(#20061,#10000,1,1,1,0)
hasLocation(#20060,#20061)
#20062=*
exit_cfg_node(#20062,#20001)
hasLocation(#20062,#20059)
successor(#20026,#20023)
hasLocation(#20062,#20034)
successor(#20056,#20053)
#20063=*
entry_cfg_node(#20063,#20026)
hasLocation(#20063,#20024)
entry_cfg_node(#20063,#20056)
hasLocation(#20063,#20054)
#20064=*
exit_cfg_node(#20064,#20026)
hasLocation(#20064,#20024)
successor(#20029,#20064)
successor(#20063,#20029)
successor(#20025,#20026)
successor(#20023,#20005)
successor(#20014,#20010)
exit_cfg_node(#20064,#20056)
hasLocation(#20064,#20054)
successor(#20059,#20064)
successor(#20063,#20059)
successor(#20055,#20056)
successor(#20053,#20038)
successor(#20045,#20042)
#20065=*
entry_cfg_node(#20065,#20014)
entry_cfg_node(#20065,#20045)
#20066=@"loc,{#10000},2,13,2,12"
locations_default(#20066,#10000,2,13,2,12)
hasLocation(#20065,#20066)
#20067=*
exit_cfg_node(#20067,#20014)
exit_cfg_node(#20067,#20045)
#20068=@"loc,{#10000},2,20,2,19"
locations_default(#20068,#10000,2,20,2,19)
hasLocation(#20067,#20068)
successor(#20021,#20067)
successor(#20018,#20021)
successor(#20065,#20018)
successor(#20012,#20014)
successor(#20010,#20025)
successor(#20007,#20012)
successor(#20005,#20062)
successor(#20060,#20007)
successor(#20051,#20067)
successor(#20049,#20051)
successor(#20065,#20049)
successor(#20044,#20045)
successor(#20042,#20055)
successor(#20040,#20044)
successor(#20038,#20062)
successor(#20060,#20040)
numlines(#10000,3,3,0)
filetype(#10000,"javascript")

View File

@@ -9,172 +9,171 @@ hasLocation(#10000,#10002)
#20000=@"global_scope"
scopes(#20000,0)
#20001=@"script;{#10000},1,1"
toplevels(#20001,0)
#20002=@"loc,{#10000},1,1,4,1"
locations_default(#20002,#10000,1,1,4,1)
hasLocation(#20001,#20002)
#20003=@"var;{test};{#20000}"
variables(#20003,"test",#20000)
#20004=*
stmts(#20004,17,#20001,0,"functio ... nts);\n}")
hasLocation(#20004,#20002)
stmtContainers(#20004,#20001)
#20005=*
exprs(#20005,78,#20004,-1,"test")
#20006=@"loc,{#10000},1,10,1,13"
locations_default(#20006,#10000,1,10,1,13)
hasLocation(#20005,#20006)
exprContainers(#20005,#20004)
literals("test","test",#20005)
decl(#20005,#20003)
#20007=*
scopes(#20007,1)
scopenodes(#20004,#20007)
scopenesting(#20007,#20000)
#20008=@"var;{arguments};{#20007}"
variables(#20008,"arguments",#20007)
isArgumentsObject(#20008)
#20009=*
stmts(#20009,1,#20004,-2,"{\n a ... nts);\n}")
#20010=@"loc,{#10000},1,17,4,1"
locations_default(#20010,#10000,1,17,4,1)
hasLocation(#20009,#20010)
stmtContainers(#20009,#20004)
#20011=*
stmts(#20011,2,#20009,0,"arguments;")
#20012=@"loc,{#10000},2,5,2,14"
locations_default(#20012,#10000,2,5,2,14)
hasLocation(#20011,#20012)
stmtContainers(#20011,#20004)
#20013=*
exprs(#20013,79,#20011,0,"arguments")
#20014=@"loc,{#10000},2,5,2,13"
locations_default(#20014,#10000,2,5,2,13)
hasLocation(#20013,#20014)
enclosingStmt(#20013,#20011)
exprContainers(#20013,#20004)
literals("arguments","arguments",#20013)
bind(#20013,#20008)
#20015=*
stmts(#20015,2,#20009,1,"let (arguments);")
#20016=@"loc,{#10000},3,5,3,20"
locations_default(#20016,#10000,3,5,3,20)
hasLocation(#20015,#20016)
stmtContainers(#20015,#20004)
#20017=*
exprs(#20017,13,#20015,0,"let (arguments)")
#20018=@"loc,{#10000},3,5,3,19"
locations_default(#20018,#10000,3,5,3,19)
hasLocation(#20017,#20018)
enclosingStmt(#20017,#20015)
exprContainers(#20017,#20004)
#20019=*
exprs(#20019,79,#20017,-1,"let")
#20020=@"loc,{#10000},3,5,3,7"
locations_default(#20020,#10000,3,5,3,7)
hasLocation(#20019,#20020)
enclosingStmt(#20019,#20015)
exprContainers(#20019,#20004)
literals("let","let",#20019)
#20021=@"var;{let};{#20000}"
variables(#20021,"let",#20000)
bind(#20019,#20021)
#20022=*
exprs(#20022,79,#20017,0,"arguments")
#20023=@"loc,{#10000},3,10,3,18"
locations_default(#20023,#10000,3,10,3,18)
hasLocation(#20022,#20023)
enclosingStmt(#20022,#20015)
exprContainers(#20022,#20004)
literals("arguments","arguments",#20022)
bind(#20022,#20008)
numlines(#20004,4,4,0)
#20024=*
lines(#20024,#20001,"function test() {","
#20002=*
lines(#20002,#20001,"function test() {","
")
#20025=@"loc,{#10000},1,1,1,17"
locations_default(#20025,#10000,1,1,1,17)
#20003=@"loc,{#10000},1,1,1,17"
locations_default(#20003,#10000,1,1,1,17)
hasLocation(#20002,#20003)
#20004=*
lines(#20004,#20001," arguments;","
")
#20005=@"loc,{#10000},2,1,2,14"
locations_default(#20005,#10000,2,1,2,14)
hasLocation(#20004,#20005)
indentation(#10000,2," ",4)
#20006=*
lines(#20006,#20001," let (arguments);","
")
#20007=@"loc,{#10000},3,1,3,20"
locations_default(#20007,#10000,3,1,3,20)
hasLocation(#20006,#20007)
indentation(#10000,3," ",4)
#20008=*
lines(#20008,#20001,"}","")
#20009=@"loc,{#10000},4,1,4,1"
locations_default(#20009,#10000,4,1,4,1)
hasLocation(#20008,#20009)
numlines(#20001,4,4,0)
#20010=*
tokeninfo(#20010,7,#20001,0,"function")
#20011=@"loc,{#10000},1,1,1,8"
locations_default(#20011,#10000,1,1,1,8)
hasLocation(#20010,#20011)
#20012=*
tokeninfo(#20012,6,#20001,1,"test")
#20013=@"loc,{#10000},1,10,1,13"
locations_default(#20013,#10000,1,10,1,13)
hasLocation(#20012,#20013)
#20014=*
tokeninfo(#20014,8,#20001,2,"(")
#20015=@"loc,{#10000},1,14,1,14"
locations_default(#20015,#10000,1,14,1,14)
hasLocation(#20014,#20015)
#20016=*
tokeninfo(#20016,8,#20001,3,")")
#20017=@"loc,{#10000},1,15,1,15"
locations_default(#20017,#10000,1,15,1,15)
hasLocation(#20016,#20017)
#20018=*
tokeninfo(#20018,8,#20001,4,"{")
#20019=@"loc,{#10000},1,17,1,17"
locations_default(#20019,#10000,1,17,1,17)
hasLocation(#20018,#20019)
#20020=*
tokeninfo(#20020,6,#20001,5,"arguments")
#20021=@"loc,{#10000},2,5,2,13"
locations_default(#20021,#10000,2,5,2,13)
hasLocation(#20020,#20021)
#20022=*
tokeninfo(#20022,8,#20001,6,";")
#20023=@"loc,{#10000},2,14,2,14"
locations_default(#20023,#10000,2,14,2,14)
hasLocation(#20022,#20023)
#20024=*
tokeninfo(#20024,7,#20001,7,"let")
#20025=@"loc,{#10000},3,5,3,7"
locations_default(#20025,#10000,3,5,3,7)
hasLocation(#20024,#20025)
#20026=*
lines(#20026,#20001," arguments;","
")
#20027=@"loc,{#10000},2,1,2,14"
locations_default(#20027,#10000,2,1,2,14)
tokeninfo(#20026,8,#20001,8,"(")
#20027=@"loc,{#10000},3,9,3,9"
locations_default(#20027,#10000,3,9,3,9)
hasLocation(#20026,#20027)
indentation(#10000,2," ",4)
#20028=*
lines(#20028,#20001," let (arguments);","
")
#20029=@"loc,{#10000},3,1,3,20"
locations_default(#20029,#10000,3,1,3,20)
tokeninfo(#20028,6,#20001,9,"arguments")
#20029=@"loc,{#10000},3,10,3,18"
locations_default(#20029,#10000,3,10,3,18)
hasLocation(#20028,#20029)
indentation(#10000,3," ",4)
#20030=*
lines(#20030,#20001,"}","")
#20031=@"loc,{#10000},4,1,4,1"
locations_default(#20031,#10000,4,1,4,1)
tokeninfo(#20030,8,#20001,10,")")
#20031=@"loc,{#10000},3,19,3,19"
locations_default(#20031,#10000,3,19,3,19)
hasLocation(#20030,#20031)
numlines(#20001,4,4,0)
#20032=*
tokeninfo(#20032,7,#20001,0,"function")
#20033=@"loc,{#10000},1,1,1,8"
locations_default(#20033,#10000,1,1,1,8)
tokeninfo(#20032,8,#20001,11,";")
#20033=@"loc,{#10000},3,20,3,20"
locations_default(#20033,#10000,3,20,3,20)
hasLocation(#20032,#20033)
#20034=*
tokeninfo(#20034,6,#20001,1,"test")
hasLocation(#20034,#20006)
tokeninfo(#20034,8,#20001,12,"}")
hasLocation(#20034,#20009)
#20035=*
tokeninfo(#20035,8,#20001,2,"(")
#20036=@"loc,{#10000},1,14,1,14"
locations_default(#20036,#10000,1,14,1,14)
tokeninfo(#20035,0,#20001,13,"")
#20036=@"loc,{#10000},4,2,4,1"
locations_default(#20036,#10000,4,2,4,1)
hasLocation(#20035,#20036)
#20037=*
tokeninfo(#20037,8,#20001,3,")")
#20038=@"loc,{#10000},1,15,1,15"
locations_default(#20038,#10000,1,15,1,15)
hasLocation(#20037,#20038)
toplevels(#20001,0)
#20037=@"loc,{#10000},1,1,4,1"
locations_default(#20037,#10000,1,1,4,1)
hasLocation(#20001,#20037)
#20038=@"var;{test};{#20000}"
variables(#20038,"test",#20000)
#20039=*
tokeninfo(#20039,8,#20001,4,"{")
#20040=@"loc,{#10000},1,17,1,17"
locations_default(#20040,#10000,1,17,1,17)
hasLocation(#20039,#20040)
stmts(#20039,17,#20001,0,"functio ... nts);\n}")
hasLocation(#20039,#20037)
stmtContainers(#20039,#20001)
#20040=*
exprs(#20040,78,#20039,-1,"test")
hasLocation(#20040,#20013)
exprContainers(#20040,#20039)
literals("test","test",#20040)
decl(#20040,#20038)
#20041=*
tokeninfo(#20041,6,#20001,5,"arguments")
hasLocation(#20041,#20014)
#20042=*
tokeninfo(#20042,8,#20001,6,";")
#20043=@"loc,{#10000},2,14,2,14"
locations_default(#20043,#10000,2,14,2,14)
hasLocation(#20042,#20043)
#20044=*
tokeninfo(#20044,7,#20001,7,"let")
hasLocation(#20044,#20020)
scopes(#20041,1)
scopenodes(#20039,#20041)
scopenesting(#20041,#20000)
#20042=@"var;{arguments};{#20041}"
variables(#20042,"arguments",#20041)
isArgumentsObject(#20042)
#20043=*
stmts(#20043,1,#20039,-2,"{\n a ... nts);\n}")
#20044=@"loc,{#10000},1,17,4,1"
locations_default(#20044,#10000,1,17,4,1)
hasLocation(#20043,#20044)
stmtContainers(#20043,#20039)
#20045=*
tokeninfo(#20045,8,#20001,8,"(")
#20046=@"loc,{#10000},3,9,3,9"
locations_default(#20046,#10000,3,9,3,9)
stmts(#20045,2,#20043,0,"arguments;")
#20046=@"loc,{#10000},2,5,2,14"
locations_default(#20046,#10000,2,5,2,14)
hasLocation(#20045,#20046)
stmtContainers(#20045,#20039)
#20047=*
tokeninfo(#20047,6,#20001,9,"arguments")
hasLocation(#20047,#20023)
exprs(#20047,79,#20045,0,"arguments")
hasLocation(#20047,#20021)
enclosingStmt(#20047,#20045)
exprContainers(#20047,#20039)
literals("arguments","arguments",#20047)
bind(#20047,#20042)
#20048=*
tokeninfo(#20048,8,#20001,10,")")
#20049=@"loc,{#10000},3,19,3,19"
locations_default(#20049,#10000,3,19,3,19)
stmts(#20048,2,#20043,1,"let (arguments);")
#20049=@"loc,{#10000},3,5,3,20"
locations_default(#20049,#10000,3,5,3,20)
hasLocation(#20048,#20049)
stmtContainers(#20048,#20039)
#20050=*
tokeninfo(#20050,8,#20001,11,";")
#20051=@"loc,{#10000},3,20,3,20"
locations_default(#20051,#10000,3,20,3,20)
exprs(#20050,13,#20048,0,"let (arguments)")
#20051=@"loc,{#10000},3,5,3,19"
locations_default(#20051,#10000,3,5,3,19)
hasLocation(#20050,#20051)
enclosingStmt(#20050,#20048)
exprContainers(#20050,#20039)
#20052=*
tokeninfo(#20052,8,#20001,12,"}")
hasLocation(#20052,#20031)
#20053=*
tokeninfo(#20053,0,#20001,13,"")
#20054=@"loc,{#10000},4,2,4,1"
locations_default(#20054,#10000,4,2,4,1)
hasLocation(#20053,#20054)
exprs(#20052,79,#20050,-1,"let")
hasLocation(#20052,#20025)
enclosingStmt(#20052,#20048)
exprContainers(#20052,#20039)
literals("let","let",#20052)
#20053=@"var;{let};{#20000}"
variables(#20053,"let",#20000)
bind(#20052,#20053)
#20054=*
exprs(#20054,79,#20050,0,"arguments")
hasLocation(#20054,#20029)
enclosingStmt(#20054,#20048)
exprContainers(#20054,#20039)
literals("arguments","arguments",#20054)
bind(#20054,#20042)
#20055=*
entry_cfg_node(#20055,#20001)
#20056=@"loc,{#10000},1,1,1,0"
@@ -182,23 +181,23 @@ locations_default(#20056,#10000,1,1,1,0)
hasLocation(#20055,#20056)
#20057=*
exit_cfg_node(#20057,#20001)
hasLocation(#20057,#20054)
successor(#20004,#20057)
hasLocation(#20057,#20036)
successor(#20039,#20057)
#20058=*
entry_cfg_node(#20058,#20004)
entry_cfg_node(#20058,#20039)
hasLocation(#20058,#20056)
#20059=*
exit_cfg_node(#20059,#20004)
hasLocation(#20059,#20054)
successor(#20009,#20011)
successor(#20015,#20019)
successor(#20022,#20017)
successor(#20019,#20022)
successor(#20017,#20059)
successor(#20011,#20013)
successor(#20013,#20015)
successor(#20058,#20009)
successor(#20005,#20004)
successor(#20055,#20005)
exit_cfg_node(#20059,#20039)
hasLocation(#20059,#20036)
successor(#20043,#20045)
successor(#20048,#20052)
successor(#20054,#20050)
successor(#20052,#20054)
successor(#20050,#20059)
successor(#20045,#20047)
successor(#20047,#20048)
successor(#20058,#20043)
successor(#20040,#20039)
successor(#20055,#20040)
numlines(#10000,4,4,0)
filetype(#10000,"javascript")

Some files were not shown because too many files have changed in this diff Show More